GNOME tipli interfeyslər yaratmaq üçün Libadwaita 1.5 kitabxanasının buraxılışı

GNOME Layihəsi, GNOME HIG (İnsan İnterfeysi Təlimatları) əsasında istifadəçi interfeysi üslubu üçün bir sıra komponentləri ehtiva edən Libadwaita 1.5 buraxılışını nəşr etdi. Kitabxana ümumi GNOME üslubuna uyğun proqramların qurulması üçün hazır vidjetlər və obyektləri ehtiva edir, interfeysi istənilən ölçülü ekranlara uyğunlaşdırıla bilər. Kitabxana kodu C dilində yazılmışdır və LGPL 2.1+ lisenziyası altında paylanmışdır.

Libadwaita kitabxanası GTK4 ilə birlikdə istifadə olunur və GNOME-da istifadə edilən, GTK-dan ayrıca kitabxanaya köçürülmüş Adwaita mövzusunun komponentlərini ehtiva edir. GNOME üslub elementlərinin ayrıca kitabxanaya köçürülməsi GNOME-a xas dəyişikliklərin GTK-dan ayrıca işlənib hazırlanmasına imkan verir ki, bu da GTK tərtibatçılarına əsas şeylərə diqqət yetirməyə və GNOME tərtibatçılarına GTK-nın özünə təsir etmədən istədikləri üslub dəyişikliklərini daha tez və çevik şəkildə irəliləməyə imkan verir.

Kitabxana müxtəlif interfeys elementlərini əhatə edən standart vidjetləri ehtiva edir, məsələn, siyahılar, panellər, redaktə blokları, düymələr, nişanlar, axtarış formaları, dialoq qutuları və s. Təklif olunan vidcetlər həm böyük PC və noutbuk ekranlarında, həm də smartfonların kiçik sensor ekranlarında problemsiz işləyən universal interfeyslər yaratmağa imkan verir. Tətbiq interfeysi ekran ölçüsündən və mövcud daxiletmə qurğularından asılı olaraq dinamik şəkildə dəyişir. Kitabxana, həmçinin əl ilə uyğunlaşmaya ehtiyac olmadan görünüşü GNOME qaydalarına uyğunlaşdıran bir sıra Adwaita üslublarını ehtiva edir.

GNOME tipli interfeyslər yaratmaq üçün Libadwaita 1.5 kitabxanasının buraxılışı

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

GNOME tipli interfeyslər yaratmaq üçün Libadwaita 1.5 kitabxanasının buraxılışıGNOME tipli interfeyslər yaratmaq üçün Libadwaita 1.5 kitabxanasının buraxılışı

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

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

GNOME tipli interfeyslər yaratmaq üçün Libadwaita 1.5 kitabxanasının buraxılışı

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

Mənbə: opennet.ru

Добавить комментарий