Wydanie biblioteki Libadwaita 1.5 do tworzenia interfejsów w stylu GNOME

Projekt GNOME opublikował wydanie biblioteki Libadwaita 1.5, która zawiera zestaw komponentów do stylizacji interfejsu użytkownika, zgodnych z zaleceniami GNOME HIG (Human Interface Guidelines). Biblioteka zawiera gotowe widżety i obiekty do tworzenia aplikacji, które pasują do ogólnego stylu GNOME, a ich interfejs może dostosowywać się do ekranów o różnych rozmiarach. Kod biblioteki jest napisany w języku C i jest rozpowszechniany na licencji LGPL 2.1+.

Biblioteka libadwaita jest używana w połączeniu z GTK4 i zawiera komponenty wykorzystywane w GNOME motywie Adwaita, które zostały przeniesione z GTK do osobnej biblioteki. Przeniesienie elementów wizualnych GNOME do osobnej biblioteki pozwala rozwijać zmiany niezbędne dla GNOME niezależnie od GTK, co umożliwia programistom GTK skoncentrowanie się na podstawowych kwestiach, a programistom GNOME szybsze i bardziej elastyczne wprowadzanie potrzebnych zmian w stylizacji bez wpływania na samo GTK.

Biblioteka zawiera typowe widżety obejmujące różne elementy interfejsu, takie jak listy, panele, pola edycji, przyciski, zakładki, formularze wyszukiwania, okna dialogowe itp. Proponowane widżety pozwalają na tworzenie uniwersalnych interfejsów, które sprawnie działają zarówno na dużych ekranach komputerów i laptopów, jak i na małych ekranach dotykowych smartfonów. Interfejs aplikacji dynamicznie zmienia się w zależności od rozmiaru ekranu i dostępnych urządzeń wejściowych. Biblioteka zawiera również zestaw stylów Adwaita, które dostosowują wygląd do wytycznych GNOME, bez konieczności ręcznej adaptacji.

Wydanie biblioteki Libadwaita 1.5 do tworzenia interfejsów w stylu GNOME

Główną zmianą w libadwaita 1.5 jest przeprojektowanie adaptacyjnych widżetów do tworzenia okien dialogowych, które dostosowują się do rozmiaru widocznego obszaru. W przeciwieństwie do tradycyjnych dialogów, które pojawiają się w osobnych oknach, nowe dialogi formowane są po stronie klienta, rysowane w ramach istniejących okien i nie mogą wychodzić poza granice okna rodzica. Takie podejście upraszcza tworzenie uniwersalnych dialogów, które współpracują z interfejsami mobilnymi i desktopowymi, oraz oferuje dodatkowe możliwości zarządzania dialogami (na przykład nie ma potrzeby śledzenia wyjścia za granicę okna, można wybrać zachowanie przycisków zamykających, zapewnia automatyczne rozszerzanie na cały ekran w wersjach mobilnych aplikacji, bierze pod uwagę styl bieżącego okna, a nie systemu, podczas przyciemniania dialogu).

Wydanie biblioteki Libadwaita 1.5 do tworzenia interfejsów w stylu GNOME Wydanie biblioteki Libadwaita 1.5 do tworzenia interfejsów w stylu GNOME

W przyszłości planowane jest wdrożenie kolejnej wersji takich dialogów, powiązanych nie z oknami, lecz z zakładkami w obrębie okna, co może być przydatne w takich aplikacjach jak przeglądarki, aby dialogi związane z zakładkami nie zasłaniały głównego okna podczas przełączania między zakładkami.

Dla urządzeń mobilnych wprowadzono wsparcie dla umieszczania dialogów w formie dolnych arkuszy (bottom sheets), a nie w formie arkuszy wyśrodkowanych. Dialogi przyczepione do dolnej części ekranu eliminują dezorientację użytkowników związaną z zamykaniem okien — w takich dialogach część okna rodzica pozostaje widoczna, a przyciski zamykające okno rodzica i samego dialogu są wyraźnie rozdzielone, przez co trudno je teraz pomylić.

Wydanie biblioteki Libadwaita 1.5 do tworzenia interfejsów w stylu GNOME

Zarządzanie nowymi oknami dialogowymi odbywa się za pomocą klasy AdwDialog, której zastosowanie w większości sytuacji przypomina korzystanie z klasy GtkWindow, a różnice ograniczają się do operacji wyświetlania i zamykania. Na przykład, właściwość „:transient-for” została zastąpiona parametrem w funkcji adw_dialog_present(), dodano nowy sygnał „::close-attempt”, zmieniono sposób obsługi parametru „:can-close”. Zamiast klas AdwPreferencesWindow, AdwAboutWindow i AdwMessageDialog z nowymi oknami dialogowymi zaproponowano użycie klas AdwPreferencesDialog, AdwAboutDialog i AdwAlertDialog.

Dialogi, które nie mają okna rodzica, nadal będą obsługiwane jako osobne okna. Jako okna będą też działały dialogi, których okna rodzica nie mogą być używane do umieszczania dialogów, na przykład, gdy nie pozwalają na zmianę rozmiaru lub nie mają klas AdwWindow i AdwApplicationWindow.

Niezwiązane z przebudową dialogów zmiany w Libadwaita 1.5:

  • Do klasy AdwEntryRow dodano właściwość „:text-length” w celu ograniczenia wielkości tekstu w polu wejściowym.
  • Do klasy AdwMessageDialog dodano metodę remove_response().
  • Do klasy AdwBreakpointBin, która pozwala na dowolną zmianę interfejsu użytkownika w zależności od rozmiaru okna, dodano możliwość programowego usuwania punktów zatrzymania.
  • Do klasy AdwSwipeTracker dodano flagę „:allow-window-handle”, umożliwiającą przewijanie nad górną belką (używaną w arkuszach przymocowanych do dolnej krawędzi).
  • Zwiększono jasność kolorów używanych do cieniowania okien w ciemnym stylu.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster