Proiectul GNOME a publicat versiunea 1.8 a bibliotecii Libadwaita, care include un set de componente pentru stilizarea interfeței utilizatorului, conform recomandărilor GNOME HIG (Ghiduri de Interfață Umană). Biblioteca include widget-uri și obiecte gata făcute pentru construirea aplicațiilor care respectă stilul general GNOME, interfața cărora se poate adapta dinamic la ecrane de orice dimensiune. Codul bibliotecii este scris în limbajul C și este distribuit sub licența LGPL 2.1+.
Biblioteca libadwaita este utilizată împreună cu GTK4 și include componente ale temei de design Adwaita utilizată în GNOME, care au fost separate din GTK într-o bibliotecă de sine stătătoare. Separarea elementelor de design vizual GNOME într-o bibliotecă separată permite dezvoltarea modificărilor necesare pentru GNOME independent de GTK, oferind dezvoltatorilor GTK posibilitatea de a se concentra asupra aspectelor fundamentale, iar dezvoltatorilor GNOME să implementeze mai rapid și flexibil modificările dorite în stilul de design, fără a afecta GTK în sine.
Biblioteca include widgeturi standard care acoperă diverse elemente ale interfeței, cum ar fi listele, panourile, blocurile de editare, butoanele, tab-urile, formularele de căutare, feronurile de dialog etc. Widgeturile propuse permit crearea de interfețe universale, care funcționează organic atât pe ecrane mari de PC-uri și laptopuri, cât și pe ecrane mici tactile de smartphone-uri. Interfața aplicațiilor se schimbă dinamic în funcție de dimensiunea ecranului și de dispozitivele de intrare disponibile. Biblioteca include, de asemenea, un set de stiluri Adwaita, care aduce aspectul în conformitate cu recomandările GNOME, fără a necesita adaptări manuale.

În noua versiune:
- Înlocuind clasa GtkShortcutsWindow, declarată învechită în GTK 4.18, Libadwaita a implementat o nouă clasă AdwShortcutsDialog cu o dialog pentru navigarea în combinațiile de taste disponibile. Noua implementare se deosebește printr-o reproiectare completă și simplificarea logicii de divizare în secțiuni și grupuri. Dezvoltatorul are la dispoziție un API minimal, iar pentru definirea structurii și conținutului dialogului se folosesc fișierele UI.
În locul GtkShortcutLabel pentru reprezentarea elementelor, a fost propusă o nouă clasă AwsShortcutLabel, care nu suportă specificarea informațiilor despre gesturi pe ecran și integrarea pictogramelor, deoarece utilizarea acestora ducea la confuzie, iar aplicarea era limitată (de exemplu, pictogramele erau folosite doar în aplicația gnome-games pentru a indica butoanele gamepad-urilor).

- A fost adăugată posibilitatea utilizării media queries CSS pentru a defini stilurile modului întunecat și deschis, precum și pentru a prezenta același element în modul obișnuit și contrastant. Dimensiunile fonturilor pentru conținut (Adwaita Sans 12pt) și interfață (Adwaita Sans 11pt) au fost separate. A fost adăugat clasa de stil „.document”, în care, pentru o citire mai bună, se folosește fontul Adwaita Sans 12pt și s-a mărit spațiul între rânduri. Spațiul între rânduri a fost mărit în clasa de stil „.body”, care acum se aplică implicit în unele widget-uri standard.

- Clasa AdwPreferencesGroup poate fi utilizată cu modelele de liste prin metoda adw_preferences_group_bind_model(). De asemenea, a fost adăugată posibilitatea de a adăuga în lista internă linii care nu sunt de tip AdwPreferencesRow.
- În clasa AdwPreferencesPage, a fost permisă inserarea grupurilor în orice loc, nu doar la sfârșitul paginii.
- În clasele AdwPreferencesGroup și AdwPreferencesPage au fost adăugate metodele adw_preferences_page_get_group() și adw_preferences_group_get_row() pentru inspectarea grupurilor și liniilor.
- În clasa AdwWrapBox a fost adăugat metoda adw_wrap_box_remove_all() pentru a elimina toate elementele copil.
- Pentru elementele copil ale clasei GtkFlowBox, stilurile de evidențiere la trecerea cursorului și pentru activarea elementului sunt oferite implicit.
- În clasa AdwHeaderBar a fost implementat suportul pentru elementele de control native ale ferestrelor pe macOS.
- Pentru a îmbunătăți performanța, utilizarea umbrelor pentru feronete, dialoguri și feronete suplimentare a fost redusă.
Sursa: opennet.ro


