Нашри китобхонаи Libadwaita 1.5 барои эҷоди интерфейсҳои услуби GNOME

Лоиҳаи GNOME нашри китобхонаи Libadwaita 1.5-ро нашр кард, ки маҷмӯи ҷузъҳо барои тарҳрезии интерфейси корбарро тибқи тавсияҳои GNOME HIG (Дастурҳои Интерфейси инсонӣ) дар бар мегирад. Китобхона виджетҳо ва объектҳои тайёрро барои сохтани барномаҳо дар бар мегирад, ки ба услуби умумии GNOME мувофиқанд, ки интерфейси онҳо метавонад ба экранҳои ҳама гуна андоза мутобиқат кунад. Рамзи китобхона бо забони C навишта шудааст ва таҳти иҷозатномаи LGPL 2.1+ паҳн карда мешавад.

Китобхонаи либадвайта дар якҷоягӣ бо GTK4 истифода мешавад ва ҷузъҳои пӯсти Adwaita-ро дар бар мегирад, ки дар GNOME истифода мешаванд, ки аз GTK ба китобхонаи алоҳида интиқол дода шудаанд. Гузаронидани визуалии GNOME ба китобхонаи алоҳида имкон медиҳад, ки тағиротҳои барои GNOME лозимшуда аз GTK алоҳида таҳия карда шаванд, ки ба таҳиягарони GTK имкон медиҳад, ки ба асосҳо тамаркуз кунанд ва таҳиягарони GNOME бидуни таъсир ба худи GTK тағиротҳои ороиширо барои худ зудтар ва чандир пеш баранд.

Китобхона виҷетҳои стандартиро дар бар мегирад, ки унсурҳои гуногуни интерфейсро дар бар мегиранд, ба монанди рӯйхатҳо, панелҳо, блокҳои таҳриркунӣ, тугмаҳо, ҷадвалҳо, шаклҳои ҷустуҷӯ, қуттиҳои муколама ва ғайра. Виҷетҳои пешниҳодшуда ба шумо имкон медиҳанд, ки интерфейсҳои универсалӣ эҷод кунед, ки ҳам дар экранҳои калони компютерҳо ва ноутбукҳо ва ҳам дар экранҳои хурди сенсории смартфонҳо бефосила кор мекунанд. Интерфейси барнома вобаста ба андозаи экран ва дастгоҳҳои вурудии дастрас ба таври динамикӣ тағир меёбад. Китобхона инчунин маҷмӯи услубҳои Adwaita-ро дар бар мегирад, ки намуди зоҳирӣ ва эҳсосро ба дастурҳои GNOME бидуни ниёз ба мутобиқсозии дастӣ меорад.

Нашри китобхонаи Libadwaita 1.5 барои эҷоди интерфейсҳои услуби GNOME

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

Нашри китобхонаи Libadwaita 1.5 барои эҷоди интерфейсҳои услуби GNOMEНашри китобхонаи Libadwaita 1.5 барои эҷоди интерфейсҳои услуби GNOME

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

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

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

Манбаъ: opennet.ru

Илова Эзоҳ