Enkondukis Blueprint, novan uzantinterfacan lingvon por GTK

James Westman, programisto de la aplikaĵo GNOME Maps, lanĉis novan markadlingvon, Blueprint, dizajnitan por konstrui interfacojn uzante la GTK-bibliotekon. La kompilkodo por konverti Blueprint-markadon en GTK UI-dosierojn estas skribita en Python kaj distribuita sub la permesilo LGPLv3.

La kialo por krei la projekton estas la ligado de la priskribaj dosieroj de UI-interfaco uzataj en GTK al la XML-formato, kiu estas troŝarĝita kaj ne oportuna por skribi aŭ redakti markadon permane. La Blueprint-formato distingiĝas per sia klara prezento de informoj kaj, danke al sia legebla sintakso, ebligas malhavi la uzon de specialaj vidaj interfacaj redaktiloj dum kreado, redaktado kaj taksado de ŝanĝoj en interfacaj elementoj.

Samtempe, Blueprint ne postulas ŝanĝojn al GTK, tute reproduktas la GTK-fenestraĵmodelon kaj estas poziciigita kiel aldonaĵo kiu kompilas markadon en la norman XML-formaton por GtkBuilder. La funkcieco de Blueprint estas plene kongrua kun GtkBuilder, nur la metodo de prezento de informoj malsamas. Por migri projekton al Blueprint, simple aldonu blueprint-kompilan vokon al la konstrua skripto sen ŝanĝi la kodon. uzante Gtk 4.0; template MiaAppWindow : Gtk.ApplicationWindow { title: _("Mia Aplika Titolo"); [titolobreto] HeaderBar header_bar {} Etikedo { stiloj ["titolo"] etikedo: _("Saluton, mondo!"); }}

Skizo enkondukita - nova lingvo por konstrui uzantinterfacojn por GTK

Krom la kompililo en la norman GTK XML-formaton, kromaĵo kun Blueprint-subteno por la integra evolumedio de GNOME Builder estas ankaŭ en evoluo. Aparta LSP-servilo (Language Server Protocol) estas evoluigita por Blueprint, kiu povas esti uzita por reliefigo, eraranalizo, montrado de sugestoj kaj kodkompletigo en kodredaktiloj kiuj subtenas LSP, inkluzive de Visual Studio Code.

Disvolvaj planoj inkluzivas la aldonon de reaktivaj programaj elementoj al la markado, efektivigitaj uzante la Gtk.Expression-klason provizitan en GTK4. La proponita metodo estas pli konata al programistoj de JavaScript-retaj interfacoj kaj permesas aŭtomatan sinkronigon de la interfaca prezento kun la rilata datummodelo, sen la bezono forte ĝisdatigi la uzantinterfacon post ĉiu datumŝanĝo.

fonto: opennet.ru

Aldoni komenton