Lanzamento da biblioteca Libadwaita 1.5 para crear interfaces de estilo GNOME

O Proxecto GNOME publicou o lanzamento de Libadwaita 1.5, que inclúe un conxunto de compoñentes para o estilo da interface de usuario que segue as directrices de interface humana de GNOME HIG. A biblioteca inclúe widgets e obxectos preparados para crear aplicacións que cumpran co estilo xeral de GNOME, cuxa interface se pode axustar de forma adaptativa a pantallas de calquera tamaño. O código da biblioteca está escrito en C e distribúese baixo a licenza LGPL 2.1+.

A biblioteca libadwaita utilízase en conxunto con GTK4 e inclúe compoñentes do tema Adwaita usados ​​en GNOME, que se moveron fóra de GTK a unha biblioteca separada. Mover os elementos de estilo de GNOME a unha biblioteca separada permite que os cambios específicos de GNOME se desenvolvan por separado de GTK, o que permite aos desenvolvedores de GTK centrarse nas cousas básicas e aos desenvolvedores de GNOME avanzar de xeito máis rápido e flexible os cambios de estilo que queiran sen afectar o propio GTK.

A biblioteca inclúe widgets estándar que abarcan varios elementos da interface, como listas, paneis, bloques de edición, botóns, pestanas, formularios de busca, caixas de diálogo, etc. Os widgets propostos permítenche crear interfaces universais que funcionan perfectamente tanto en grandes pantallas de PC e portátiles como en pequenas pantallas táctiles de teléfonos intelixentes. A interface da aplicación cambia de forma dinámica dependendo do tamaño da pantalla e dos dispositivos de entrada dispoñibles. A biblioteca tamén inclúe un conxunto de estilos Adwaita que axustan a aparencia ás directrices de GNOME sen necesidade de adaptación manual.

Lanzamento da biblioteca Libadwaita 1.5 para crear interfaces de estilo GNOME

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

Lanzamento da biblioteca Libadwaita 1.5 para crear interfaces de estilo GNOMELanzamento da biblioteca Libadwaita 1.5 para crear interfaces de estilo GNOME

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

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

Lanzamento da biblioteca Libadwaita 1.5 para crear interfaces de estilo 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», допускающий пролистывание поверх верхней панели (используется в листах, прикреплённых к нижнему краю).
  • Повышена яркость цветов, используемых при затенении окон при тёмном стиле оформления.

Fonte: opennet.ru

Engadir un comentario