Nel progetto GNOME, il toolkit proposto per lo sviluppo di applicazioni (GNOME SDK) include un compilatore blueprint-compiler, che consente di utilizzare la sintassi Blueprint per la definizione dell'interfaccia delle applicazioni. Il supporto per Blueprint nel GNOME SDK permetterà di utilizzare questo linguaggio di descrizione dell'interfaccia nelle applicazioni GNOME senza la necessità di installare manualmente dipendenze aggiuntive. Attualmente, Blueprint è stato aggiunto nelle build notturne del GNOME SDK e sarà incluso nelle versioni ufficiali, a partire dal rilascio autunnale di GNOME 49.
Blueprint semplifica la creazione di interfacce utilizzando la libreria GTK4 e si distingue per l'uso di una sintassi dichiarativa semplice, che riflette il modello dei widget GTK e supporta modelli tipici, tipi e gestori. A differenza del formato dei file ui di GTK, Blueprint non utilizza un markup XML, ritenuto eccessivamente complesso e scomodo per la modifica manuale.
Per l'integrazione 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 generazione di suggerimenti e l'autocompletamento del codice. Il supporto per Blueprint è già integrato in GNOME Builder e disponibile sotto forma di plugin per Vim, GNU Emacs e Visual Studio Code. È disponibile anche uno strumento per facilitare il porting delle definizioni dell'interfaccia da XML a Blueprint.
Grazie alla sua sintassi leggibile, il formato Blueprint consente di evitare l'uso di editor visivi specializzati per l'interfaccia. Allo stesso tempo, Blueprint non richiede modifiche a GTK e si propone 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 e distribuito con 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
