Rakirina pirtûkxaneya Libadwaita 1.5 ji bo afirandina navgînên şêwaza GNOME

Projeya GNOME serbestberdana Libadwaita 1.5 weşand, ku tê de komek pêkhateyên ji bo şêwaza navbera bikarhêner a ku GNOME HIG (Rêbernameyên Navbera Mirovan) dişopîne vedihewîne. Pirtûkxane ji bo avakirina sepanên ku li gorî şêwaza GNOME ya giştî tevdigerin, widgetên hazir û tiştên amade vedihewîne, ku navbeynkariya wê dikare bi rengekî adapteyî li ser ekranên her mezinahiyê were sererast kirin. Koda pirtûkxaneyê bi C hatiye nivîsandin û di bin lîsansa LGPL 2.1+ de tê belavkirin.

Pirtûkxaneya libadwaita bi GTK4 re tê bikaranîn û pêkhateyên mijara Adwaita ya ku di GNOME-ê de têne bikar anîn, yên ku ji GTK-ê hatine veguheztin nav pirtûkxaneyek cihê vedihewîne. Veguheztina hêmanên şêwazê GNOME di pirtûkxaneyek cihêreng de dihêle ku guhertinên GNOME-taybetî ji GTK-ê veqetandî werin pêşve xistin, rê dide pêşdebirên GTK ku bala xwe bidin ser tiştên bingehîn û pêşdebirên GNOME ku zûtir û nermtir guhertinên şêwazê ku ew dixwazin bi pêş ve bibin bêyî ku bandorê li GTK bike.

Pirtûkxane widgetên standard vedihewîne ku hêmanên cihêreng ên navberê vedihewîne, wekî navnîş, panel, blokên guherandinê, bişkok, tablo, formên lêgerînê, qutiyên diyalogê, hwd. Widgetên pêşniyar dihêlin ku hûn pêwendiyên gerdûnî biafirînin ku hem li ser ekranên mezin ên PC û laptopan, hem jî li ser ekranên piçûk ên têlefonê yên têlefonê bi rengek bêkêmasî tevbigerin. Navbera serîlêdanê bi rengek dînamîkî li gorî mezinahiya ekranê û amûrên têketina berdest diguhezîne. Pirtûkxane di heman demê de komek şêwazên Adwaita-yê jî vedihewîne ku bêyî hewcedariya xwerûkirina destan xuyang û hestê rêwerzên GNOME-yê tîne.

Rakirina pirtûkxaneya Libadwaita 1.5 ji bo afirandina navgînên şêwaza GNOME

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

Rakirina pirtûkxaneya Libadwaita 1.5 ji bo afirandina navgînên şêwaza GNOMERakirina pirtûkxaneya Libadwaita 1.5 ji bo afirandina navgînên şêwaza GNOME

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

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

Rakirina pirtûkxaneya Libadwaita 1.5 ji bo afirandina navgînên şêwaza 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: opennet.ru

Add a comment