Hoʻokuʻu ʻia o ka waihona Libadwaita 1.5 no ka hana ʻana i nā mea hoʻohana ʻano GNOME

Ua hoʻopuka ka GNOME Project i ka hoʻokuʻu ʻana o Libadwaita 1.5, kahi pūʻulu o nā ʻāpana no ka hoʻohana ʻana i nā mea hoʻohana e pili ana i ka GNOME HIG (Human Interface Guidelines). Aia i loko o ka waihona nā widget a me nā mea i hana ʻia no ke kūkulu ʻana i nā noi e pili ana i ke ʻano GNOME maʻamau, hiki ke hoʻololi ʻia ke kikowaena i nā pale o kēlā me kēia nui. Ua kākau ʻia ka code waihona ma C a ua māhele ʻia ma lalo o ka laikini LGPL 2.1+.

Hoʻohana pū ʻia ka waihona libadwaita me GTK4 a me nā ʻāpana o ke kumumanaʻo Adwaita i hoʻohana ʻia ma GNOME, i hoʻoneʻe ʻia mai GTK i kahi waihona ʻokoʻa. ʻO ka hoʻoneʻe ʻana i nā mea styling GNOME i loko o kahi waihona ʻokoʻa e hiki ai i nā hoʻololi kikoʻī GNOME ke hoʻomohala ʻokoʻa mai GTK, e ʻae ana i nā mea hoʻomohala GTK e kālele i nā mea nui a me nā mea hoʻomohala GNOME i ka wikiwiki a me ka maʻalahi o ka hoʻololi ʻana i nā hoʻololi styling a lākou e makemake ai me ka hoʻopilikia ʻole iā GTK ponoʻī.

Aia i loko o ka waihona nā widget maʻamau e uhi ana i nā mea kikowaena like ʻole, e like me nā papa inoa, nā panela, nā poloka hoʻoponopono, nā pihi, nā ʻaoʻao, nā ʻano hulina, nā pahu kamaʻilio, etc. ʻO nā widget i manaʻo ʻia e ʻae iā ʻoe e hana i nā pilina āpau e hana maʻalahi ma nā PC nui a me nā pale kamepiula, a ma nā pale liʻiliʻi liʻiliʻi o nā smartphones. Hoʻololi dynamically ka interface noi ma muli o ka nui o ka pale a me nā mea hoʻokomo i loaʻa. Aia pū ka waihona i nā ʻano Adwaita e hoʻohālikelike ai i nā hiʻohiʻona me nā alakaʻi GNOME me ka ʻole o ka pono o ka hoʻoponopono manual.

Hoʻokuʻu ʻia o ka waihona Libadwaita 1.5 no ka hana ʻana i nā mea hoʻohana ʻano GNOME

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

Hoʻokuʻu ʻia o ka waihona Libadwaita 1.5 no ka hana ʻana i nā mea hoʻohana ʻano GNOMEHoʻokuʻu ʻia o ka waihona Libadwaita 1.5 no ka hana ʻana i nā mea hoʻohana ʻano GNOME

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

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

Hoʻokuʻu ʻia o ka waihona Libadwaita 1.5 no ka hana ʻana i nā mea hoʻohana ʻano 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», допускающий пролистывание поверх верхней панели (используется в листах, прикреплённых к нижнему краю).
  • Повышена яркость цветов, используемых при затенении окон при тёмном стиле оформления.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka