Le kit d'outils proposé par le projet GNOME pour le développement d'applications (GNOME SDK) inclut un compilateur blueprint-compiler, permettant d'utiliser le langage Blueprint pour définir l'interface des applications. La prise en charge de Blueprint dans GNOME SDK permettra d'appliquer ce langage de description d'interface dans les applications GNOME sans nécessiter l'installation manuelle de dépendances supplémentaires. Actuellement, Blueprint est ajouté dans les versions nocturnes de GNOME SDK et fera partie des versions à partir de la sortie automnale de GNOME 49.
Blueprint simplifie la création d'interfaces en utilisant la bibliothèque GTK4 et se distingue par un syntaxe déclarative simple, reprenant le modèle de widgets GTK, tout en supportant des modèles typiques, des types et des gestionnaires. Contrairement au format des fichiers ui de GTK, Blueprint n'utilise pas le balisage XML, considéré comme encombrant et difficile à éditer manuellement.
Pour l'intégration avec les environnements de développement intégrés et les éditeurs de code, un serveur LSP (Language Server Protocol) est fourni, pouvant être utilisé pour la coloration syntaxique, l'analyse des erreurs, l'affichage de suggestions et l'autocomplétion du code. La prise en charge de Blueprint est déjà intégrée dans GNOME Builder et disponible sous forme de plugins pour Vim, GNU Emacs et Visual Studio Code. Un utilitaire est également disponible pour simplifier le portage des définitions d'interfaces de XML vers Blueprint.
Grâce à sa syntaxe lisible, le format Blueprint permet de se passer d'éditeurs visuels spécialisés pour les interfaces. De plus, Blueprint ne nécessite aucune modification de GTK et est positionné comme une surcouche, compilant le balisage au format XML standard de GtkBuilder. Les fonctionnalités de Blueprint correspondent entièrement à celles de GtkBuilder, seule la méthode de présentation des informations diffère. Le code de l'outil est écrit en Python et est distribué sous la licence 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; } }
Source : opennet.ru
