Liberasyon bibliyotèk Libadwaita 1.5 pou kreye entèfas GNOME-style

Pwojè GNOME te pibliye liberasyon Libadwaita 1.5, ki gen ladann yon seri konpozan pou style koòdone itilizatè ki swiv GNOME HIG (Gid Entèfas Imèn). Bibliyotèk la gen ladan widgets pare yo ak objè pou bati aplikasyon ki konfòme yo ak style jeneral GNOME, koòdone nan ki ka adaptiveman ajiste a ekran nenpòt gwosè. Kòd bibliyotèk la ekri an C epi distribye anba lisans LGPL 2.1+.

Bibliyotèk libadwaita yo itilize ansanm ak GTK4 epi li gen ladann eleman tèm Adwaita yo itilize nan GNOME, ki te deplase soti nan GTK nan yon bibliyotèk separe. Deplase eleman stil GNOME nan yon bibliyotèk separe pèmèt chanjman GNOME espesifik yo dwe devlope separeman de GTK, sa ki pèmèt devlopè GTK yo konsantre sou bagay debaz yo ak devlopè GNOME yo pouse pi vit ak fleksibilite chanjman style yo vle san yo pa afekte GTK tèt li.

Bibliyotèk la gen ladan widgets estanda ki kouvri plizyè eleman koòdone, tankou lis, panno, blòk koreksyon, bouton, onglè, fòm rechèch, bwat dyalòg, elatriye. Widget yo pwopoze yo pèmèt ou kreye interfaces inivèsèl ki fonksyone san pwoblèm tou de sou gwo ekran PC ak laptop, ak sou ti ekran tactile nan smartphones. Koòdone aplikasyon an chanje dinamik depann sou gwosè ekran an ak aparèy opinyon ki disponib. Bibliyotèk la gen ladan tou yon seri estil Adwaita ki pote aparans nan liy ak direktiv GNOME san yo pa bezwen adaptasyon manyèl.

Liberasyon bibliyotèk Libadwaita 1.5 pou kreye entèfas GNOME-style

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

Liberasyon bibliyotèk Libadwaita 1.5 pou kreye entèfas GNOME-styleLiberasyon bibliyotèk Libadwaita 1.5 pou kreye entèfas GNOME-style

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

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

Liberasyon bibliyotèk Libadwaita 1.5 pou kreye entèfas GNOME-style

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

Sous: opennet.ru

Add nouvo kòmantè