Izdanje biblioteke Libadwaita 1.5 za kreiranje interfejsa u GNOME stilu

Projekat GNOME objavio je izdanje Libadwaita 1.5, koje uključuje skup komponenti za stilizovanje korisničkog interfejsa koji prati GNOME HIG (Smernice za ljudski interfejs). Biblioteka uključuje gotove widgete i objekte za pravljenje aplikacija koje su u skladu sa opštim GNOME stilom, čiji interfejs se može prilagodljivo prilagoditi ekranima bilo koje veličine. Kôd biblioteke je napisan u C i distribuira se pod licencom LGPL 2.1+.

Biblioteka libadwaita se koristi zajedno sa GTK4 i uključuje komponente Adwaita teme koje se koriste u GNOME-u, a koje su premeštene iz GTK-a u zasebnu biblioteku. Premještanje GNOME stilskih elemenata u zasebnu biblioteku omogućava da se promjene specifične za GNOME razvijaju odvojeno od GTK-a, omogućavajući GTK programerima da se fokusiraju na osnovne stvari, a GNOME programerima da brže i fleksibilnije guraju naprijed promjene stila koje žele bez utjecaja na sam GTK.

Biblioteka uključuje standardne widgete koji pokrivaju različite elemente interfejsa, kao što su liste, paneli, blokovi za uređivanje, dugmad, kartice, forme za pretragu, dijaloški okviri itd. Predloženi widgeti vam omogućavaju da kreirate univerzalna sučelja koja besprijekorno funkcionišu kako na velikim ekranima računara i laptopa, tako i na malim ekranima osjetljivim na dodir pametnih telefona. Sučelje aplikacije se dinamički mijenja ovisno o veličini ekrana i dostupnim ulaznim uređajima. Biblioteka takođe uključuje skup Adwaita stilova koji dovode izgled u skladu sa GNOME smernicama bez potrebe za ručnim prilagođavanjem.

Izdanje biblioteke Libadwaita 1.5 za kreiranje interfejsa u GNOME stilu

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

Izdanje biblioteke Libadwaita 1.5 za kreiranje interfejsa u GNOME stiluIzdanje biblioteke Libadwaita 1.5 za kreiranje interfejsa u GNOME stilu

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

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

Izdanje biblioteke Libadwaita 1.5 za kreiranje interfejsa u GNOME stilu

Управление новыми диалогами производится при помощи класса 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