James Westman, Entwickler der GNOME Maps-Anwendung, hat eine neue Markup-Sprache namens Blueprint vorgestellt, die zur Erstellung von BenutzeroberflÀchen mit der GTK-Bibliothek gedacht ist. Der Compiler-Code zur Umwandlung der Blueprint-Markup in GTK-UI-Dateien ist in Python geschrieben und wird unter der Lizenz LGPLv3 verbreitet.
Als Grund fĂŒr die Entwicklung des Projekts wird die Bindung der in GTK verwendeten UI-Beschreibungsdateien an das XML-Format genannt, das ĂŒberladen und unpraktisch ist, um Markup manuell zu schreiben oder zu bearbeiten. Das Blueprint-Format zeichnet sich durch die anschauliche PrĂ€sentation von Informationen aus und ermöglicht, dank seiner leserlichen Syntax, die Erstellung, Bearbeitung und Bewertung von Ănderungen an Benutzerschnittstellenelementen, ohne spezialisierte visuelle Editoren verwenden zu mĂŒssen.
Dabei erfordert Blueprint keine Ănderungen an GTK, wiederholt vollstĂ€ndig das Modell der GTK-Widgets und wird als Erweiterung positioniert, die das Markup in das standardmĂ€Ăige GtkBuilder XML-Format kompiliert. Die FunktionalitĂ€ten von Blueprint entsprechen vollstĂ€ndig denen von GtkBuilder, einzig die Methode der InformationsprĂ€sentation unterscheidet sich. Um ein Projekt auf Blueprint zu migrieren, genĂŒgt es, den Aufruf des blueprint-compiler im Build-Skript hinzuzufĂŒgen, ohne den Code Ă€ndern zu mĂŒssen. using Gtk 4.0; template MyAppWindow : Gtk.ApplicationWindow { title: _("My App Title"); [titlebar] HeaderBar header_bar {} Label { styles ["heading"] label: _("Hello, world!"); } }

Neben dem Compiler fĂŒr das standardmĂ€Ăige XML-Format von GTK wird auch ein Plugin mit Blueprint-UnterstĂŒtzung fĂŒr die integrierte Entwicklungsumgebung GNOME Builder entwickelt. Separat wird ein LSP-Server (Language Server Protocol) fĂŒr Blueprint entwickelt, der zur Syntaxhervorhebung, Fehleranalyse, Bereitstellung von Hinweisen und CodevervollstĂ€ndigung in LSP-kompatiblen Code-Editoren wie Visual Studio Code verwendet werden kann.
In den PlĂ€nen zur Weiterentwicklung von Blueprint wird die HinzufĂŒgung von reaktiven Programmierungselementen hervorgehoben, die mit der Klasse Gtk.Expression, die in GTK4 bereitgestellt wird, umgesetzt werden. Die vorgeschlagene Methode ist fĂŒr Entwickler von WeboberflĂ€chen in JavaScript vertrauter und ermöglicht die automatische Synchronisierung der BenutzeroberflĂ€che mit dem zugehörigen Datenmodell, ohne dass der BenutzeroberflĂ€che nach jeder DatenĂ€nderung manuell aktualisiert werden muss.
Quelle: opennet.ru
