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 zgodny z zaleceniami GNOME HIG (Human Interface Guidelines). Biblioteka zawiera gotowe widżety i obiekty do budowania aplikacji zgodnych z ogólnym stylem GNOME, których interfejs można responsywnie dostosowywać do ekranów o dowolnej wielkości. Kod biblioteki jest napisany w języku C i rozpowszechniany na licencji LGPL 2.1+.

Biblioteka libadwaita jest używana w połączeniu z GTK4 i zawiera komponenty skórki Adwaita używanej w GNOME, które zostały przeniesione z GTK do osobnej biblioteki. Przeniesienie elementów wizualnych GNOME do oddzielnej biblioteki umożliwia opracowywanie zmian wymaganych przez GNOME niezależnie od GTK, dzięki czemu programiści GTK mogą skupić się na podstawach, a programiści GNOME mogą szybciej i elastyczniej wprowadzać zmiany stylów bez wpływu na samo GTK.

Biblioteka zawiera standardowe widżety obejmujące różne elementy interfejsu, takie jak listy, panele, bloki edycyjne, przyciski, zakładki, formularze wyszukiwania, okna dialogowe itp. Proponowane widżety pozwalają na tworzenie uniwersalnych interfejsów, które bezproblemowo funkcjonują zarówno na dużych ekranach komputerów PC i laptopów, jak i na małych ekranach dotykowych smartfonów. Interfejs aplikacji zmienia się dynamicznie w zależności od wielkości 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 potrzeby ręcznego dostosowywania.

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

Główną zmianą w libadwaita 1.5 była przeróbka adaptacyjnych widżetów w celu stworzenia okien dialogowych dopasowujących się do rozmiaru widocznego obszaru. W przeciwieństwie do tradycyjnych okien dialogowych, które są umieszczone w oddzielnych oknach, nowe okna dialogowe są renderowane po stronie klienta, renderowane w istniejących oknach i nie mogą wychodzić poza okno nadrzędne. Takie podejście upraszcza tworzenie uniwersalnych okien dialogowych, które można łączyć z interfejsami dla systemów mobilnych i stacjonarnych, a także zapewnia dodatkowe opcje zarządzania oknami dialogowymi (np. nie ma potrzeby monitorowania wyjścia z krawędzi okna, można wybrać zachowanie przyciski zamykania, w mobilnych wersjach aplikacji zapewnione jest automatyczne rozwinięcie do pełnego ekranu, przy przyciemnianiu okna dialogowego brany jest pod uwagę styl bieżącego okna, a nie systemu).

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

W przyszłości planowane jest wdrożenie kolejnej wersji takich okien dialogowych, powiązanych nie z oknami, ale z zakładkami wewnątrz okna, co może być potrzebne w aplikacjach takich jak przeglądarki, aby okna dialogowe skojarzone z zakładką nie nachodziły na okno główne podczas przełączanie pomiędzy zakładkami.

W przypadku urządzeń mobilnych zaimplementowano obsługę umieszczania okien dialogowych w formie arkuszy zadokowanych u dołu ekranu (arkusze dolne), a nie w formie arkuszy wyrównanych do środka. Okna dialogowe dołączone na dole chronią użytkowników przed pomyleniem z zamykaniem okien - w takich oknach część okna nadrzędnego pozostaje widoczna, a przyciski zamykania okna nadrzędnego i samego okna dialogowego są wyraźnie oddzielone, więc 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óra w większości sytuacji przypomina klasę GtkWindow, z tą różnicą, że istnieją operacje wyświetlania i zamykania. Przykładowo właściwość „:transient-for” została zastąpiona parametrem w funkcji adw_dialog_present(), dodano nowy sygnał „::close-attempt” oraz zmieniono przetwarzanie parametru „:can-close” . Zamiast klas AdwPreferencesWindow, AdwAboutWindow i AdwMessageDialog proponuje się wykorzystanie klas AdwPreferencesDialog, AdwAboutDialog i AdwAlertDialog z nowymi oknami dialogowymi.

Okna dialogowe, które nie mają okna nadrzędnego, nadal będą traktowane jako osobne okna. Okna dialogowe, których okien nadrzędnych nie można używać do hostowania okien dialogowych, będą również działać jako okna, na przykład jeśli nie pozwalają na zmianę rozmiaru lub nie mają dla nich klas AdwWindow i AdwApplicationWindow.

Zmiany niezwiązane z przeróbką dialogów w Libadwaita 1.5:

  • Do klasy AdwEntryRow dodano właściwość „:text-length” w celu ograniczenia rozmiaru tekstu w polu wejściowym.
  • Dodano metodę usuwania_response() do klasy AdwMessageDialog.
  • Do klasy AdwBreakpointBin dodana została możliwość programowego usuwania breakpointów, co pozwala na dowolną zmianę interfejsu użytkownika w zależności od wielkości okna.
  • Dodano flagę „:allow-window-handle” do klasy AdwSwipeTracker, aby umożliwić przesuwanie na górze górnego paska (używana w arkuszach przymocowanych do dolnej krawędzi).
  • Zwiększono jasność kolorów używanych podczas cieniowania okien w ciemnym stylu.

Źródło: opennet.ru

Dodaj komentarz