Veröffentlichung der Libadwaita 1.5-Bibliothek zur Erstellung von Schnittstellen im GNOME-Stil

Das GNOME-Projekt hat die Version von Libadwaita 1.5 veröffentlicht, die eine Reihe von Komponenten für die Gestaltung der Benutzeroberfläche enthält, die den GNOME HIG (Human Interface Guidelines) folgen. Die Bibliothek umfasst vorgefertigte Widgets und Objekte zum Erstellen von Anwendungen, die dem allgemeinen GNOME-Stil entsprechen und deren Oberfläche adaptiv an Bildschirme jeder Größe angepasst werden kann. Der Bibliothekscode ist in C geschrieben und wird unter der LGPL 2.1+-Lizenz vertrieben.

Die libadwaita-Bibliothek wird in Verbindung mit GTK4 verwendet und enthält Komponenten des in GNOME verwendeten Adwaita-Themas, die aus GTK in eine separate Bibliothek verschoben wurden. Durch das Verschieben von GNOME-Stilelementen in eine separate Bibliothek können GNOME-spezifische Änderungen getrennt von GTK entwickelt werden. Dadurch können sich GTK-Entwickler auf die Kernthemen konzentrieren und GNOME-Entwickler können gewünschte Stiländerungen schneller und flexibler vorantreiben, ohne GTK selbst zu beeinträchtigen.

Die Bibliothek umfasst Standard-Widgets, die verschiedene Elemente der Benutzeroberfläche abdecken, wie z. B. Listen, Bedienfelder, Bearbeitungsblöcke, Schaltflächen, Registerkarten, Suchformulare, Dialogfelder usw. Mit den vorgeschlagenen Widgets können Sie universelle Schnittstellen erstellen, die sowohl auf großen PC- und Laptop-Bildschirmen als auch auf kleinen Touchscreens von Smartphones nahtlos funktionieren. Die Anwendungsoberfläche ändert sich dynamisch abhängig von der Bildschirmgröße und den verfügbaren Eingabegeräten. Die Bibliothek enthält außerdem eine Reihe von Adwaita-Stilen, die das Erscheinungsbild an die GNOME-Richtlinien anpassen, ohne dass eine manuelle Anpassung erforderlich ist.

Veröffentlichung der Libadwaita 1.5-Bibliothek zur Erstellung von Schnittstellen im GNOME-Stil

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

Veröffentlichung der Libadwaita 1.5-Bibliothek zur Erstellung von Schnittstellen im GNOME-StilVeröffentlichung der Libadwaita 1.5-Bibliothek zur Erstellung von Schnittstellen im GNOME-Stil

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

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

Veröffentlichung der Libadwaita 1.5-Bibliothek zur Erstellung von Schnittstellen im GNOME-Stil

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

Kommentar hinzufügen