想必大家对 GTK+ 跑在 HTML5 上 已经不感到惊讶了,那么用 XML 编写 GTK+ 界面呢?好吧,Glade 是这样做的,不过今天介绍的不是它,而是 gtkaml。

按照 官网的介绍 ,gtkaml 是基于 Vala 的一种标记语言,旨在使用简洁的 XML 语法来描述 GTK+ 界面,乍看起来和 Glade 没有什么区别。

不过 gtkaml 采用的是类似于 Glade 2 的转换代码方式,将 XML 转换成 Vala 代码再进行编译。不过,不用担心图形界面和实际代码分离的问题,因为 gtkaml 在 XML 中预留了 Vala 代码的空间,也就是说,你不需要面对自动转换得到的很可能难懂的代码进行修改,而只需要在 XML 中直接书写 Vala 代码即可!

另外,觉得标准的 XML 太过繁复? gtkaml 还提供了一种叫做 gtkon 的语法,允许你使用类似 JSON 的语法编写界面,语法一下子就简洁了好多,看个 Hello World 吧(来自 Vala Code ):

Window using=Gtk name=GtkHello type={WindowType.TOPLEVEL} title="First GTK+ Program"
        position={WindowPosition.CENTER} default-width=300 default-height=50 destroy=Gtk.main_quit
{
        Button label="Click me!" clicked={target.label="Thank you"};
        -{
                static int main (string[] args) {
                        Gtk.init (ref args);
                        var window = new GtkHello ();
                        window.show_all ();
                        Gtk.main ();
                        return 0;
                }
        }-
}

怎么样?在 Vala 代码中,根本就没有怎么写与界面相关的东西,是不是很 Cool?更多代码可以看 官方 Wiki 的样例

另外,虽然 gtkaml 现在仅支持 Vala 和 GTK+,不过根据官方介绍, Genie 的支持也在计划中,而只要有 vapi 的库,都可以使用 gtkaml 而不限于 GTK+,相信 gtkaml 的前景应该不赖。

评论