Pjesa e ofruar nga projekti GNOME e mjetit për zhvillimin e aplikacioneve (GNOME SDK) përfshin kompiluesin blueprint-compiler, i cili lejon përdorimin e markup-it Blueprint për përcaktimin e ndërfaqeve të aplikacioneve. Mbështetja e Blueprint në GNOME SDK do të mundësojë përdorimin e këtij gjuhe për përshkrimin e ndërfaqeve në aplikacionet GNOME pa pasur nevojë për instalimin manual të varësive shtesë. Aktualisht, Blueprint është shtuar në ndërtimet e natës të GNOME SDK dhe do të përfshihet në lëshimet, duke filluar nga edicioni vjeshtor i GNOME 49.
Blueprint thjeshtëson krijimin e ndërfaqeve duke përdorur bibliotekën GTK4 dhe karakterizohet nga angazhimi i një sintakse deklarative të thjeshtë, e cila përsërit modelin e widget-eve GTK, duke mbështetur shabllonet tipike, llojet dhe trajtuesit. Ndryshe nga formati i skedarëve ui të GTK, në Blueprint nuk përdoret markup-u XML, i cili perceptohet si i ngarkuar dhe i papërshtatshëm për redaktim manual.
Për integrimin me ambientet e zhvillimit të integruara dhe redaktorët e kodit ofrohet një server LSP (Language Server Protocol), i cili mund të përdoret për ndriçimin, analizimin e gabimeve, shfaqjen e sugjerimeve dhe autocompletimin e kodit. Mbështetje për Blueprint është e integruar tashmë në GNOME Builder dhe është e disponueshme në formën e plugineve për Vim, GNU Emacs dhe Visual Studio Code. Ekziston një utilitar për thjeshtësimin e portimit të përcaktimeve të ndërfaqes nga XML në Blueprint.
Falë sintaksës së lexueshme, formati Blueprint lejon që të evitohen editorët vizualë të specializuar të ndërfaqes. Në të njëjtën kohë, Blueprint nuk kërkon ndryshime në GTK dhe pozicionohet si një shtresë që kompilon markup-un në formatin standard XML për GtkBuilder. Aftësitë funksionale të Blueprint përputhen plotësisht me GtkBuilder, ndryshimi është vetëm në metodën e paraqitjes së informacionit. Kodi i veglës është shkruar në gjuhën Python dhe shpërndahet nën licencën 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; } }
Burimi: opennet.ru
