Llançament de la biblioteca Libadwaita 1.5 per crear interfícies d'estil GNOME

El projecte GNOME ha publicat el llançament de Libadwaita 1.5, que inclou un conjunt de components per a l'estil de la interfície d'usuari que segueix les directrius de la interfície humana de GNOME HIG. La biblioteca inclou ginys i objectes ja fets per crear aplicacions que compleixin l'estil general de GNOME, la interfície de les quals es pot ajustar de manera adaptativa a pantalles de qualsevol mida. El codi de la biblioteca està escrit en C i es distribueix sota la llicència LGPL 2.1+.

La biblioteca libadwaita s'utilitza conjuntament amb GTK4 i inclou components del tema Adwaita utilitzats a GNOME, que s'han mogut de GTK a una biblioteca separada. Moure els elements d'estil de GNOME a una biblioteca separada permet desenvolupar canvis específics de GNOME per separat de GTK, permetent als desenvolupadors de GTK centrar-se en les coses bàsiques i als desenvolupadors de GNOME avançar amb més rapidesa i flexibilitat els canvis d'estil que volen sense afectar el propi GTK.

La biblioteca inclou ginys estàndard que cobreixen diversos elements de la interfície, com ara llistes, panells, blocs d'edició, botons, pestanyes, formularis de cerca, quadres de diàleg, etc. Els ginys proposats us permeten crear interfícies universals que funcionen perfectament tant en pantalles grans de PC i portàtils com en petites pantalles tàctils de telèfons intel·ligents. La interfície de l'aplicació canvia dinàmicament en funció de la mida de la pantalla i dels dispositius d'entrada disponibles. La biblioteca també inclou un conjunt d'estils Adwaita que alineen l'aparença amb les directrius de GNOME sense necessitat d'una adaptació manual.

Llançament de la biblioteca Libadwaita 1.5 per crear interfícies d'estil GNOME

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

Llançament de la biblioteca Libadwaita 1.5 per crear interfícies d'estil GNOMELlançament de la biblioteca Libadwaita 1.5 per crear interfícies d'estil GNOME

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

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

Llançament de la biblioteca Libadwaita 1.5 per crear interfícies d'estil GNOME

Управление новыми диалогами производится при помощи класса 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», допускающий пролистывание поверх верхней панели (используется в листах, прикреплённых к нижнему краю).
  • Повышена яркость цветов, используемых при затенении окон при тёмном стиле оформления.

Font: opennet.ru

Afegeix comentari