Sakin ɗakin karatu na Libadwaita 1.5 don ƙirƙirar mu'amalar salon GNOME

Aikin GNOME ya wallafa sakin ɗakin karatu na Libadwaita 1.5, wanda ya haɗa da saitin abubuwan da aka tsara don salo na mai amfani wanda ya dace da shawarwarin GNOME HIG (Sharuɗɗan Interface na Dan Adam). Laburaren ya haɗa da shirye-shiryen widgets da abubuwa don gina aikace-aikacen da suka dace da salon GNOME na gabaɗaya, abin da ke tattare da shi zai iya daidaitawa da amsa ga allo na kowane girman. An rubuta lambar ɗakin karatu cikin harshen C kuma an rarraba ta ƙarƙashin lasisin LGPL 2.1+.

Ana amfani da ɗakin karatu na libadwaita tare da GTK4 kuma ya haɗa da sassan fata Adwaita da aka yi amfani da su a cikin GNOME, waɗanda aka fitar da su daga GTK zuwa wani ɗakin karatu na daban. Matsar da abubuwan gani na GNOME zuwa ɗakin karatu na daban yana ba da damar sauye-sauyen da ake buƙata na GNOME don haɓaka daban daga GTK, yana barin masu haɓaka GTK su mai da hankali kan abubuwan yau da kullun, kuma masu haɓaka GNOME zuwa sauri da sassauci suna tura canje-canjen salo ga kansu ba tare da shafar GTK kanta ba.

Laburaren ya ƙunshi daidaitattun widget din da ke rufe abubuwa daban-daban na mu'amala, kamar jeri, bangarori, tubalan gyarawa, maɓalli, shafuka, siffofin bincike, akwatunan tattaunawa, da sauransu. Widgets ɗin da aka tsara suna ba ku damar ƙirƙirar musaya na duniya waɗanda ke aiki ba tare da wata matsala ba a kan manyan allon PC da kwamfyutoci, da kuma kan ƙananan allon taɓawa na wayoyin hannu. Tsarin aikace-aikacen yana canzawa da ƙarfi dangane da girman allo da na'urorin shigar da akwai. Laburaren kuma ya haɗa da saitin salon Adwaita waɗanda ke kawo kyan gani da jin daɗi ga jagororin GNOME ba tare da buƙatar keɓantawar hannu ba.

Sakin ɗakin karatu na Libadwaita 1.5 don ƙirƙirar mu'amalar salon GNOME

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

Sakin ɗakin karatu na Libadwaita 1.5 don ƙirƙirar mu'amalar salon GNOMESakin ɗakin karatu na Libadwaita 1.5 don ƙirƙirar mu'amalar salon GNOME

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

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

Sakin ɗakin karatu na Libadwaita 1.5 don ƙirƙirar mu'amalar salon 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: budenet.ru

Add a comment