Fa'asa'olotoina o le faletusi Libadwaita 1.5 mo le fa'atupuina o feso'ota'iga fa'atusa GNOME

Ua lomia e le GNOME Project le tatalaina o le Libadwaita 1.5, lea e aofia ai se seti o vaega mo le faʻaogaina o fesoʻotaʻiga faʻaoga e mulimulitaʻia le GNOME HIG (Human Interface Guidelines). O le faletusi e aofia ai widget ua saunia ma meafaitino mo le fausiaina o talosaga e ogatusa ma le masani GNOME sitaili, o le faʻaoga e mafai ona fetuutuunai faʻafetaui i lau o soʻo se tele. O le fa'ailoga faletusi o lo'o tusia i le C ma fa'asoa i lalo ole laisene LGPL 2.1+.

O le faletusi libadwaita o loʻo faʻaogaina faʻatasi ma le GTK4 ma e aofia ai vaega o le autu o le Adwaita o loʻo faʻaaogaina i le GNOME, lea ua aveese mai le GTK i se isi faletusi. O le faʻanofoina o elemene elemene GNOME i totonu o se faletusi eseese e mafai ai e GNOME-faʻapitoa suiga e atiaʻe ese mai le GTK, e mafai ai e le au atinaʻe GTK ona taulaʻi atu i mea autu ma le atinaʻe GNOME e sili atu ona vave ma fetuutuunai suiga o le styling latou te manaʻo ai e aunoa ma le afaina ai o le GTK lava ia.

O le faletusi e aofia ai widget masani e aofia ai elemene fesoʻotaʻiga eseese, e pei o lisi, panels, faʻataʻitaʻiga poloka, faʻamau, laupepa, fomu suʻesuʻe, pusa talatalanoa, ma isi. O widget ua fuafuaina e mafai ai ona e faia ni fesoʻotaʻiga lautele e faʻaogaina lelei i luga ole PC lapopoa ma lau komepiuta feaveaʻi, ma luga o lau paʻi paʻi o smartphones. O le faʻaoga faʻaoga e suia malosi e faʻatatau i le tele o le lau ma masini faʻaoga avanoa. O le faletusi o loʻo aofia ai foʻi se seti o sitaili Adwaita e faʻafeiloaʻi ai foliga faʻatasi ma taʻiala GNOME e aunoa ma le manaʻomia o le faʻaogaina o tusi lesona.

Fa'asa'olotoina o le faletusi Libadwaita 1.5 mo le fa'atupuina o feso'ota'iga fa'atusa GNOME

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

Fa'asa'olotoina o le faletusi Libadwaita 1.5 mo le fa'atupuina o feso'ota'iga fa'atusa GNOMEFa'asa'olotoina o le faletusi Libadwaita 1.5 mo le fa'atupuina o feso'ota'iga fa'atusa GNOME

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

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

Fa'asa'olotoina o le faletusi Libadwaita 1.5 mo le fa'atupuina o feso'ota'iga fa'atusa 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», допускающий пролистывание поверх верхней панели (используется в листах, прикреплённых к нижнему краю).
  • Повышена яркость цветов, используемых при затенении окон при тёмном стиле оформления.

puna: opennet.ru

Faaopoopo i ai se faamatalaga