James Westman, utvecklare av GNOME Maps, har presenterat ett nytt mÀrkningssprÄk som kallas Blueprint, avsett för att bygga grÀnssnitt med hjÀlp av GTK-biblioteket. Koden för kompileraren som omvandlar Blueprint-mÀrkningen till GTK UI-filer Àr skriven i Python och distribueras under LGPLv3-licensen.
Som anledning till skapandet av projektet anges kopplingen mellan de GTK UI-filer som beskriver grÀnssnittet och XML-formatet, som Àr överbelastat och inte sÀrskilt anvÀndarvÀnligt för att skriva eller redigera mÀrkning manuellt. Blueprint-formatet kÀnnetecknas av tydlig information och har en lÀsbar syntax som gör att man kan undvika att anvÀnda specialiserade visuella grÀnssnittredigerare vid skapande, redigering och bedömning av förÀndringar i grÀnssnittselement.
Blueprint krÀver inga Àndringar i GTK, replicerar helt GTK:s widgetmodell och positioneras som ett lager som kompilerar mÀrkningen till det standard XML-formatet för GtkBuilder. Funktionaliteterna i Blueprint motsvarar helt och hÄllet GtkBuilder, det skiljer sig bara i informationspresentation. För att översÀtta projektet till Blueprint rÀcker det med att lÀgga till anropet blueprint-compiler i byggscenariot utan att Àndra koden. using Gtk 4.0; template MyAppWindow : Gtk.ApplicationWindow { title: _(«My App Title»); [titlebar] HeaderBar header_bar {} Label { styles [«heading»] label: _(«Hello, world!»); } }

Förutom kompileraren till det standard XML-formatet GTK utvecklas Àven en plugin med stöd för Blueprint för den integrerade utvecklingsmiljön GNOME Builder. En separat LSP-server (Language Server Protocol) för Blueprint utvecklas ocksÄ, vilket kommer att kunna anvÀndas för syntaxmarkering, felanalys, verktygstips och automatisk komplettering av kod i LSP-stödjande kodredigerare, inklusive Visual Studio Code.
Bland planerna för utvecklingen av Blueprint nÀmns tillÀgg av reaktiva programmeringselement i mÀrkningen, implementerat med hjÀlp av klassen Gtk.Expression, som tillhandahÄlls i GTK4. Den föreslagna metoden Àr mer bekant för utvecklare av webbgrÀnssnitt i JavaScript och möjliggör automatisk synkronisering av grÀnssnittets presentation med den relaterade datamodellen, utan att det krÀvs att anvÀndargrÀnssnittet uppdateras manuellt efter varje databasÀndring.
KĂ€lla: opennet.ru
