8 个版本
0.2.6 | 2022年11月20日 |
---|---|
0.2.5 | 2022年11月20日 |
0.2.2 | 2022年10月28日 |
0.1.0 | 2022年10月15日 |
243 在 GUI 中排名
每月下载 28 次
56KB
1K SLoC
GtkUI
一种旨在提高 Gtk 应用程序开发可读性和整体效率的语言。
这种语言受到苹果公司 SwiftUI 语法的大力启发,通常是此项目的灵感来源。
这解决了什么问题?
看看这个非常基本的 "hello world"。
以下是您需要在标准的 "构建文件" 中编写的代码来获取这个。
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0" />
<object class="GtkWindow" id="window1">
<property name="title">My GTK App!</property>
<child>
<object class="GtkBox">
<property name="homogeneous">1</property>
<property name="visible">1</property>
<child>
<object class="GtkLabel">
<property name="label">Hello, world!</property>
<property name="visible">1</property>
<property name="margin-top">10</property>
<property name="margin-bottom">10</property>
</object>
</child>
</object>
</child>
</object>
</interface>
这不是表示 UI 的非常可读或紧凑的方式。它是多余的,非常冗长。现在让我们看看它在 GtkUI 语法中可能是什么样子。
#include "gtk-4.0"
@root {
GtkWindow {
GtkBox {
GtkLabel("Hello, world!")
.visible(true)
.align("center")
.margin-top(10)
.margin-bottom(10)
}
.homogeneous(true)
.visible(true)
}
.id("window1")
.title("My GTK App!")
}
这不仅代码更少,而且更准确地传达了 UI 的结构。您可以轻松地知道对象的子对象是什么,它有什么属性,更重要的是,像 GtkLabel 中的文本这样的信息,直接显示在对象旁边,这样您在浏览代码时可以很好地了解您在哪里。让我们尝试在我们的框中添加另一个 GtkLabel。它应该看起来像这样。
以下是需要对构建文件进行的更改。
// ...
<object class="GtkBox">
// ...
// Add this
<child>
<object class="GtkLabel">
<property name="label">My Second Label</property>
<property name="visible">1</property>
</object>
</child>
</object>
// ...
不多说,这对于最基本的标签来说就是大量的代码。如果我们看看一些 GtkUI 代码...
// ...
GtkBox {
GtkLabel("Hello, world!")
.visible(true)
.align("center")
.margin-top(10)
.margin-bottom(10)
// Add this
GtkLabel("My Second Label")
.visible(true)
}
// ...
它既易于阅读又节省空间。