Izdanje biblioteke Libadwaita 1.5 za stvaranje sučelja u stilu GNOME-a

Projekt GNOME objavio je izdanje Libadwaita 1.5, koje uključuje skup komponenti za stiliziranje korisničkog sučelja koje slijedi GNOME HIG (Smjernice za ljudsko sučelje). Knjižnica uključuje gotove widgete i objekte za izradu aplikacija koje su u skladu s općim GNOME stilom, čije se sučelje može prilagoditi zaslonima bilo koje veličine. Kod knjižnice napisan je u C-u i distribuira se pod licencom LGPL 2.1+.

Biblioteka libadwaita koristi se zajedno s GTK4 i uključuje komponente teme Adwaita koja se koristi u GNOME-u, a koje su premještene iz GTK-a u zasebnu biblioteku. Premještanje stilskih elemenata GNOME-a u zasebnu biblioteku omogućuje da se promjene specifične za GNOME razvijaju odvojeno od GTK-a, omogućujući programerima GTK-a da se usredotoče na temeljne stvari, a programerima GNOME-a da brže i fleksibilnije poguraju promjene stila koje žele bez utjecaja na sam GTK.

Knjižnica uključuje standardne widgete koji pokrivaju različite elemente sučelja, kao što su popisi, ploče, blokovi za uređivanje, gumbi, kartice, obrasci za pretraživanje, dijaloški okviri itd. Predloženi widgeti omogućuju stvaranje univerzalnih sučelja koja besprijekorno funkcioniraju i na velikim zaslonima računala i prijenosnih računala te na malim zaslonima osjetljivim na dodir pametnih telefona. Sučelje aplikacije dinamički se mijenja ovisno o veličini zaslona i dostupnim uređajima za unos. Knjižnica također uključuje skup Adwaita stilova koji dovode izgled u sklad s GNOME smjernicama bez potrebe za ručnom prilagodbom.

Izdanje biblioteke Libadwaita 1.5 za stvaranje sučelja u stilu GNOME-a

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

Izdanje biblioteke Libadwaita 1.5 za stvaranje sučelja u stilu GNOME-aIzdanje biblioteke Libadwaita 1.5 za stvaranje sučelja u stilu GNOME-a

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

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

Izdanje biblioteke Libadwaita 1.5 za stvaranje sučelja u stilu GNOME-a

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

Izvor: opennet.ru

Dodajte komentar