Il toolkit per lo sviluppo di applicazioni proposto dal progetto GNOME (GNOME SDK) include il compilatore blueprint-compiler, che consente di utilizzare la markup Blueprint per definire l'interfaccia delle applicazioni. Il supporto di Blueprint nel GNOME SDK permetterà di utilizzare questo linguaggio di descrizione dell'interfaccia nelle applicazioni GNOME senza bisogno di installare manualmente dipendenze aggiuntive. Attualmente, Blueprint è stato aggiunto nelle build notturne del GNOME SDK e sarà incluso nei rilasci a partire dalla versione autunnale di GNOME 49.
Blueprint semplifica la creazione dell'interfaccia utilizzando la libreria GTK4 e si distingue per l'uso di una sintassi dichiarativa semplice, che riflette il modello dei widget GTK, supportando modelli tipici, tipi e gestori. A differenza del formato dei file ui di GTK, Blueprint non utilizza markup XML, considerato gravoso e scomodo da modificare manualmente.
Per integrare con ambienti di sviluppo integrati e editor di codice, è fornito un server LSP (Language Server Protocol), che può essere utilizzato per l'evidenziazione della sintassi, l'analisi degli errori, la visualizzazione di suggerimenti e l'autocompletamento del codice. Il supporto per Blueprint è già integrato in GNOME Builder ed è disponibile in forma di plugin per Vim, GNU Emacs e Visual Studio Code. È disponibile uno strumento per semplificare il porting delle definizioni dell'interfaccia da XML a Blueprint.
Grazie alla sintassi leggibile, il formato Blueprint consente di evitare l'uso di editor visivi specializzati per l'interfaccia. Inoltre, Blueprint non richiede modifiche a GTK ed è posizionato come un'estensione che compila il markup nel formato XML standard di GtkBuilder. Le funzionalità di Blueprint corrispondono completamente a quelle di GtkBuilder, differendo solo nel metodo di presentazione delle informazioni. Il codice del toolkit è scritto in Python ed è distribuito sotto licenza LGPLv3. using Gtk 4.0; template $MyAppWindow: ApplicationWindow { default-width: 600; default-height: 300; title: _(«Hello, Blueprint!»); [titlebar] HeaderBar {} Label { label: bind template.main_text; } }
Fonte: opennet.ru
