James Westman, programer aplikacije GNOME Maps, predstavio je novi označni jezik, Blueprint, dizajniran za izgradnju sučelja pomoću biblioteke GTK. Kod prevoditelja za pretvaranje oznake Blueprint u GTK UI datoteke napisan je u Pythonu i distribuiran pod licencom LGPLv3.
Razlog za stvaranje projekta je vezanje datoteka opisa UI sučelja korištenih u GTK-u na XML format, koji je preopterećen i nije prikladan za ručno pisanje ili uređivanje oznaka. Format Blueprint odlikuje se jasnom prezentacijom informacija i, zahvaljujući čitljivoj sintaksi, omogućuje bez upotrebe specijaliziranih uređivača vizualnih sučelja pri stvaranju, uređivanju i ocjenjivanju promjena u elementima sučelja.
U isto vrijeme, Blueprint ne zahtijeva promjene u GTK-u, u potpunosti replicira model GTK widgeta i pozicioniran je kao dodatak koji kompilira oznake u standardni XML format za GtkBuilder. Funkcionalnost Blueprinta u potpunosti je u skladu s GtkBuilderom, samo se razlikuje način prezentiranja informacija. Da biste premjestili projekt na Blueprint, samo dodajte poziv kompilatora nacrta u skriptu za izgradnju bez mijenjanja koda. koristeći Gtk 4.0; predložak MyAppWindow : Gtk.ApplicationWindow { title: _("Naslov moje aplikacije"); [titlebar] HeaderBar header_bar {} Label { styles ["heading"] label: _("Hello, world!"); }}
Uz prevodilac u standardni GTK XML format, u razvoju je i dodatak s podrškom za Blueprint za integrirano razvojno okruženje GNOME Builder. Za Blueprint se razvija zasebni LSP poslužitelj (Language Server Protocol) koji se može koristiti za označavanje, analizu pogrešaka, prikazivanje savjeta i dovršavanje koda u uređivačima koda koji podržavaju LSP, uključujući Visual Studio Code.
Planovi razvoja nacrta uključuju dodavanje reaktivnih programskih elemenata u označavanje, implementirano korištenjem klase Gtk.Expression koja se nalazi u GTK4. Predložena metoda poznatija je programerima JavaScript web sučelja i omogućuje automatsku sinkronizaciju prezentacije sučelja s pridruženim podatkovnim modelom, bez potrebe za prisilnim ažuriranjem korisničkog sučelja nakon svake promjene podataka.
Izvor: opennet.ru