Verëffentlechung vun der Libadwaita 1.5 Bibliothéik fir GNOME-Stil Interfaces ze kreéieren

De GNOME-Projet huet d'Verëffentlechung vu Libadwaita 1.5 publizéiert, déi e Set vu Komponenten fir User Interface Styling enthält, déi dem GNOME HIG (Human Interface Guidelines) follegt. D'Bibliothéik enthält fäerdeg Widgets an Objekter fir Uwendungen ze bauen déi dem allgemenge GNOME-Stil entspriechen, d'Interface vun deenen adaptiv op Schiirme vun all Gréisst ugepasst ka ginn. De Bibliothéikscode ass a C geschriwwen a gëtt ënner der LGPL 2.1+ Lizenz verdeelt.

D'Libadwaita-Bibliothéik gëtt a Verbindung mat GTK4 benotzt an enthält Komponenten vum Adwaita-Thema, deen an GNOME benotzt gëtt, déi aus GTK an eng separat Bibliothéik geplënnert goufen. Beweegt GNOME Styling Elementer an eng separat Bibliothéik erlaabt GNOME-spezifesch Ännerungen getrennt vum GTK entwéckelt ze ginn, sou datt GTK Entwéckler sech op d'Kärstuff konzentréiere kënnen an d'GNOME Entwéckler méi séier a flexibel Styling Ännerungen no vir drécken, déi se wëllen ouni GTK selwer ze beaflossen.

D'Bibliothéik enthält Standard Widgets déi verschidden Interfaceelementer ofdecken, sou wéi Lëschten, Panelen, Redaktiounsblocken, Knäppercher, Tabs, Sichformularen, Dialogboxen, asw. Déi proposéiert Widgets erlaben Iech universell Schnëttplazen ze kreéieren déi nahtlos funktionnéieren souwuel op grousse PC an Laptop Schiirme, an op kleng Touchscreens vu Smartphones. D'Applikatiounsinterface ännert sech dynamesch ofhängeg vun der Écrangréisst an verfügbaren Input-Geräter. D'Bibliothéik enthält och eng Rei vun Adwaita Stiler, déi d'Erscheinung an d'Gnome Richtlinnen bréngen ouni de Besoin fir manuell Adaptatioun.

Verëffentlechung vun der Libadwaita 1.5 Bibliothéik fir GNOME-Stil Interfaces ze kreéieren

Основным изменением в libadwaita 1.5 стала переработка адаптивных виджетов для создания диалоговых окон, подстраивающихся под размер видимой области. В отличие от традиционных диалогов, которые размещаются в отдельных окнах, новые диалоги формируются на стороне клиента, отрисовываются внутри существующих окон и не могут выходить за пределы родительского окна. Подобный подход упрощает создание универсальных диалогов, сочетаемых с интерфейсами для мобильных и настольных систем, а также предоставляет дополнительные возможности для управления диалогами (например, не нужно отслеживать выход за границу окна, можно выбирать поведение в отношении кнопок закрытия, обеспечивается автоматическое развёртывание на весь экран в мобильных версиях приложений, учитывается стиль текущего окна, а не системы, при затемнении диалога).

Verëffentlechung vun der Libadwaita 1.5 Bibliothéik fir GNOME-Stil Interfaces ze kreéierenVerëffentlechung vun der Libadwaita 1.5 Bibliothéik fir GNOME-Stil Interfaces ze kreéieren

В дальнейшем планируется реализовать ещё один вариант подобных диалогов, привязанных не к окнам, а ко вкладкам внутри окна, что может быть востребовано в таких приложениях, как браузеры для того, чтобы связанные со вкладкой диалоги не перекрывали основное окно при переключении между вкладками.

Для мобильных устройств реализована поддержка размещения диалогов в форме листов, закреплённых в нижней части экрана (bottom sheets), а не в форме листов, выровненных по центру. Прикреплённые к нижней части диалоги избавляют пользователей от путаницы с закрытием окон — в подобных диалогах часть родительского окна остаётся видимой и кнопки закрытия родительского окна и самого диалога явно разделены, поэтому их теперь трудно спутать.

Verëffentlechung vun der Libadwaita 1.5 Bibliothéik fir GNOME-Stil Interfaces ze kreéieren

Управление новыми диалогами производится при помощи класса AdwDialog, работа с которым в большинстве ситуаций походит на использование класса GtkWindow, а различия сводятся к операциям отображения и закрытию. Например, свойство «:transient-for» заменено на параметр в функции adw_dialog_present(), добавлен новый сигнал «::close-attempt», изменена обработка параметра «:can-close». Вместо классов AdwPreferencesWindow, AdwAboutWindow и AdwMessageDialog с новыми диалогами предложено использовать классы AdwPreferencesDialog, AdwAboutDialog и AdwAlertDialog.

Диалоги, которые не имеют родительского окна, по-прежнему будут обрабатываться в форме отдельных окон. Как окна также будут функционировать диалоги, родительские окна которых не могут быть использованы для размещения диалогов, например, если они не допускают изменения размера или для них отсутствуют классы AdwWindow и AdwApplicationWindow.

Не связанные с переработкой диалогов изменения в Libadwaita 1.5:

  • В класс AdwEntryRow добавлено свойство «:text-length» для ограничения размера текста в поле ввода.
  • В класс AdwMessageDialog добавлен метод remove_response().
  • В класс AdwBreakpointBin, позволяющий менять интерфейс пользователя произвольным образом в зависимости от размера окна, добавлена возможность программного удаления точек останова.
  • В класс AdwSwipeTracker добавлен флаг «:allow-window-handle», допускающий пролистывание поверх верхней панели (используется в листах, прикреплённых к нижнему краю).
  • Повышена яркость цветов, используемых при затенении окон при тёмном стиле оформления.

Source: opennet.ru

Setzt e Commentaire