GNOME маягийн интерфэйсүүдийг бүтээхэд зориулсан Libadwaita 1.5 номын санг гаргасан

GNOME Төсөл нь GNOME HIG (Хүний интерфэйсийн удирдамж) дагуу хэрэглэгчийн интерфэйсийн загварчлалын багц бүрэлдэхүүн хэсгүүдийг багтаасан Libadwaita 1.5 хувилбарыг нийтэллээ. Номын сан нь GNOME-ийн ерөнхий хэв маягт нийцсэн програм бүтээхэд зориулагдсан бэлэн виджетүүд болон объектуудыг агуулдаг бөгөөд тэдгээрийн интерфэйсийг ямар ч хэмжээтэй дэлгэцэнд тохируулан тохируулах боломжтой. Номын сангийн код нь C хэл дээр бичигдсэн бөгөөд LGPL 2.1+ лицензийн дагуу түгээгддэг.

Либадвайта номын санг GTK4-тэй хамт ашигладаг бөгөөд GNOME-д ашигласан Adwaita сэдвийн бүрэлдэхүүн хэсгүүдийг GTK-ээс тусдаа номын санд шилжүүлсэн. GNOME загварчлалын элементүүдийг тусдаа номын санд шилжүүлснээр GNOME-д хамаарах өөрчлөлтүүдийг GTK-ээс тусад нь боловсруулах боломжийг олгож, GTK хөгжүүлэгчдэд үндсэн зүйл дээр анхаарлаа төвлөрүүлж, GNOME хөгжүүлэгчдэд GTK-д нөлөөлөхгүйгээр хүссэн загварын өөрчлөлтийг илүү хурдан бөгөөд уян хатан байдлаар урагшлуулах боломжийг олгоно.

Номын сан нь жагсаалт, самбар, засварлах блок, товчлуур, таб, хайлтын хэлбэр, харилцах цонх гэх мэт интерфэйсийн янз бүрийн элементүүдийг хамарсан стандарт виджетүүдийг агуулдаг. Санал болгож буй виджетүүд нь том компьютер болон зөөврийн компьютерын дэлгэц, ухаалаг гар утасны жижиг мэдрэгчтэй дэлгэц дээр хоёуланд нь саадгүй ажилладаг бүх нийтийн интерфейсийг бий болгох боломжийг олгодог. Програмын интерфэйс нь дэлгэцийн хэмжээ болон боломжтой оролтын төхөөрөмжөөс хамааран динамикаар өөрчлөгддөг. Номын санд мөн гар дасан зохицох шаардлагагүйгээр гадаад төрхийг GNOME-ийн удирдамжид нийцүүлэх Adwaita загварын багц багтсан болно.

GNOME маягийн интерфэйсүүдийг бүтээхэд зориулсан Libadwaita 1.5 номын санг гаргасан

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

GNOME маягийн интерфэйсүүдийг бүтээхэд зориулсан Libadwaita 1.5 номын санг гаргасанGNOME маягийн интерфэйсүүдийг бүтээхэд зориулсан Libadwaita 1.5 номын санг гаргасан

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

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

GNOME маягийн интерфэйсүүдийг бүтээхэд зориулсан Libadwaita 1.5 номын санг гаргасан

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх