Ntọhapụ nke ọbá akwụkwọ Libadwaita 1.5 maka ịmepụta oghere ụdị GNOME

Ihe oru GNOME ebipụtala ntọhapụ nke Libadwaita 1.5, nke gụnyere ihe nhazi maka nhazi nhazi onye ọrụ na-agbaso GNOME HIG (Ntuziaka Interface Human). Ọbá akwụkwọ ahụ gụnyere wijetị emebere emebere na ihe maka iwulite ngwa ndị na-agbaso ụdị GNOME izugbe, nke enwere ike ịhazigharị interface ya na ihuenyo nke nha ọ bụla. Edere koodu ọba akwụkwọ ahụ na C ma kesaa ya n'okpuru ikike LGPL 2.1+.

A na-eji ọba akwụkwọ libadwaita na njikọ GTK4 ma gụnye akụkụ nke isiokwu Adwaita ejiri na GNOME, nke ebupụrụ na GTK n'ọbá akwụkwọ dị iche. Ịbugharị ihe nhazi GNOME n'ime ọbá akwụkwọ dị iche na-enye ohere ịmepụta mgbanwe GNOME dị iche iche na GTK, na-enye ndị mmepe GTK ohere ilekwasị anya na isi ihe na ndị na-emepụta GNOME ngwa ngwa na mgbanwe mgbanwe mgbanwe mgbanwe nhazi ha chọrọ na-enweghị emetụta GTK n'onwe ya.

Ọbá akwụkwọ ahụ gụnyere wijetị ọkọlọtọ na-ekpuchi ihe interface dị iche iche, dị ka ndepụta, ogwe, ngọngọ ndezi, bọtịnụ, taabụ, ụdị ọchụchọ, igbe okwu, wdg. Ngwa wijetị ndị a tụrụ aro na-enye gị ohere ịmepụta oghere zuru ụwa ọnụ nke na-arụ ọrụ n'enweghị nsogbu ma na nnukwu ihuenyo PC na laptọọpụ, yana na obere ihuenyo mmetụ nke smartphones. Ngwa ahụ na-agbanwe n'ike n'ike dabere na nha ihuenyo yana ngwaọrụ ntinye dị. Ọbá akwụkwọ ahụ gụnyekwara ụdị ụdị Adwaita nke na-eweta ọdịdị kwekọrọ na ụkpụrụ GNOME na-enweghị mkpa maka mmegharị akwụkwọ ntuziaka.

Ntọhapụ nke ọbá akwụkwọ Libadwaita 1.5 maka ịmepụta oghere ụdị GNOME

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

Ntọhapụ nke ọbá akwụkwọ Libadwaita 1.5 maka ịmepụta oghere ụdị GNOMENtọhapụ nke ọbá akwụkwọ Libadwaita 1.5 maka ịmepụta oghere ụdị GNOME

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

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

Ntọhapụ nke ọbá akwụkwọ Libadwaita 1.5 maka ịmepụta oghere ụdị 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», допускающий пролистывание поверх верхней панели (используется в листах, прикреплённых к нижнему краю).
  • Повышена яркость цветов, используемых при затенении окон при тёмном стиле оформления.

isi: opennet.ru

Tinye a comment