Lançamento da biblioteca Libadwaita 1.5 para criar interfaces no estilo GNOME

O Projeto GNOME publicou o lançamento da biblioteca Libadwaita 1.5, que inclui um conjunto de componentes para estilizar a interface do usuário de acordo com as recomendações do GNOME HIG (Human Interface Guidelines). A biblioteca inclui widgets e objetos prontos para criar aplicativos que atendem ao estilo geral do GNOME, cuja interface pode se adaptar responsivamente a telas de qualquer tamanho. O código da biblioteca é escrito em linguagem C e distribuído sob a licença LGPL 2.1+.

A biblioteca libadwaita é usada em conjunto com GTK4 e inclui componentes da capa Adwaita usada no GNOME, que foram movidos do GTK para uma biblioteca separada. Mover os visuais do GNOME para uma biblioteca separada permite que as mudanças necessárias para o GNOME sejam desenvolvidas separadamente do GTK, permitindo que os desenvolvedores do GTK se concentrem no básico, e os desenvolvedores do GNOME façam alterações de estilo de forma mais rápida e flexível sem afetar o próprio GTK.

A biblioteca inclui widgets padrão que abrangem vários elementos da interface, como listas, painéis, blocos de edição, botões, guias, formulários de pesquisa, caixas de diálogo, etc. Os widgets propostos permitem criar interfaces universais que funcionam perfeitamente tanto em telas grandes de PCs e laptops quanto em pequenas telas sensíveis ao toque de smartphones. A interface do aplicativo muda dinamicamente dependendo do tamanho da tela e dos dispositivos de entrada disponíveis. A biblioteca também inclui um conjunto de estilos Adwaita que trazem a aparência das diretrizes do GNOME sem a necessidade de personalização manual.

Lançamento da biblioteca Libadwaita 1.5 para criar interfaces no estilo GNOME

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

Lançamento da biblioteca Libadwaita 1.5 para criar interfaces no estilo GNOMELançamento da biblioteca Libadwaita 1.5 para criar interfaces no estilo GNOME

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

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

Lançamento da biblioteca Libadwaita 1.5 para criar interfaces no 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

Adicionar um comentário