James Westman, Entwickler der GNOME Maps-Anwendung, hat eine neue Markup-Sprache namens Blueprint vorgestellt, die fĂŒr den Aufbau von BenutzeroberflĂ€chen mit der GTK-Bibliothek gedacht ist. Der Compiler-Code, der das Blueprint-Layout in GTK-UI-Dateien umwandelt, ist in Python geschrieben und wird unter der LGPLv3-Lizenz vertrieben.
Als Grund fĂŒr die Entwicklung des Projekts wird die Bindung der in GTK verwendeten UI-Beschreibungsdateien an das XML-Format genannt, das ĂŒberladen ist und sich nicht gut fĂŒr das manuelle Schreiben oder Bearbeiten von Layouts eignet. Das Blueprint-Format zeichnet sich durch eine anschauliche Darstellung der Informationen aus und ermöglicht es dank seiner lesbaren Syntax, auf spezielle visuelle BenutzeroberflĂ€chen-Editoren beim Erstellen, Bearbeiten und Bewerten von Ănderungen an BenutzeroberflĂ€chenelementen zu verzichten.
Blueprint erfordert hierbei keine Ănderungen an GTK, spiegelt vollstĂ€ndig das Widget-Modell von GTK wider und positioniert sich als eine Erweiterung, die das Layout in das standardmĂ€Ăige XML-Format von GtkBuilder compiliert. Die funktionalen Möglichkeiten von Blueprint entsprechen vollstĂ€ndig denen von GtkBuilder, nur die Informationsdarstellung unterscheidet sich. Um ein Projekt auf Blueprint zu migrieren, genĂŒgt es, den Aufruf von blueprint-compiler in das Build-Skript hinzuzufĂŒgen, ohne den Code zu Ă€ndern. using Gtk 4.0; template MyAppWindow : Gtk.ApplicationWindow { title: _(âMy App Titleâ); [titlebar] HeaderBar header_bar {} Label { styles [âheadingâ] label: _(âHallo, Welt!â); } }

Neben dem Compiler fĂŒr das standardmĂ€Ăige XML-Format von GTK wird auch ein Plugin mit UnterstĂŒtzung fĂŒr Blueprint fĂŒr die integrierte Entwicklungsumgebung GNOME Builder entwickelt. Separat wird ein LSP-Server (Language Server Protocol) fĂŒr Blueprint entwickelt, der fĂŒr die Syntaxhervorhebung, Fehleranalyse, VorschlĂ€ge und die AutovervollstĂ€ndigung von Code in LSP-unterstĂŒtzenden Code-Editoren, einschlieĂlich Visual Studio Code, verwendet werden kann.
Zu den EntwicklungsplĂ€nen fĂŒr Blueprint gehört die HinzufĂŒgung von Elementen reaktiver Programmierung in die Markup-Sprache, die mit der Klasse Gtk.Expression implementiert wird, die in GTK4 bereitgestellt wird. Die vorgeschlagene Methode ist fĂŒr Entwickler von WeboberflĂ€chen in JavaScript vertrauter und ermöglicht eine automatische Synchronisierung der BenutzeroberflĂ€che mit dem verknĂŒpften Datenmodell, ohne dass eine forcierte Aktualisierung der BenutzeroberflĂ€che nach jeder Ănderung an den Daten erforderlich ist.
Quelle: opennet.ru
