James Westman, de ontwikkelaar van de GNOME Maps-app, heeft een nieuwe opmaaktaal genaamd Blueprint gepresenteerd, die is ontworpen voor het bouwen van interfaces met behulp van de GTK-bibliotheek. De compiler-code voor het omzetten van Blueprint-opmaak naar GTK-ui-bestanden is geschreven in Python en wordt verspreid onder de LGPLv3-licentie.
Als reden voor het creëren van het project wordt genoemd dat de gebruikte GTK-ui-bestanden voor interfacebeschrijving zijn gekoppeld aan het XML-formaat, dat overbelast is en niet handig voor het handmatig schrijven of bewerken van opmaak. Het Blueprint-formaat verschilt door de duidelijke informatiepresentatie en biedt dankzij de leesbare syntaxis de mogelijkheid om zonder gespecialiseerde visuele interface-ontwikkeltools te werken bij het creëren, bewerken en beoordelen van wijzigingen in interface-elementen.
Blueprint vereist geen wijzigingen in GTK, herhaalt volledig het widgets-model van GTK en wordt gepositioneerd als een uitbreiding die de opmaak compileert naar het standaard voor GtkBuilder XML-formaat. De functionaliteit van Blueprint komt volledig overeen met die van GtkBuilder, het enige verschil is de manier van informatiepresentatie. Voor de migratie van een project naar Blueprint is het voldoende om een oproep naar blueprint-compiler aan het buildscript toe te voegen zonder de code te wijzigen. using Gtk 4.0; template MyAppWindow : Gtk.ApplicationWindow { title: _(«My App Title»); [titlebar] HeaderBar header_bar {} Label { styles [«heading»] label: _(«Hello, world!»); } }

Naast de compiler naar het standaard XML-formaat van GTK is er ook een plugin in ontwikkeling met ondersteuning voor Blueprint voor de geïntegreerde ontwikkelomgeving GNOME Builder. Daarnaast wordt er een LSP-server (Language Server Protocol) voor Blueprint ontwikkeld, die kan worden gebruikt voor syntaxisaccentuering, foutanalyse, suggesties en code-aanvullen in LSP-ondersteunende code-editors, waaronder Visual Studio Code.
In de ontwikkelingsplannen voor Blueprint wordt de toevoeging van elementen voor reactief programmeren benadrukt, geïmplementeerd met de Gtk.Expression-klasse die in GTK4 wordt aangeboden. De voorgestelde methode is bekender voor webinterface-ontwikkelaars in JavaScript en maakt automatische synchronisatie van de interfaceweergave met het gekoppelde datamodel mogelijk, zonder de noodzaak voor handmatige updates van de gebruikersinterface na elke gegevenswijziging.
Bron: opennet.ru
