3 个版本 (破坏性更新)
0.3.0 | 2024年6月3日 |
---|---|
0.2.0 | 2024年4月22日 |
0.1.3 | 2023年7月21日 |
#129 in GUI
每月 35 次下载
在 2 crates 中使用
94KB
2K SLoC
GTK Estate
X | Twitch | Youtube | Mastodon | GitHub | GitHub Sponsors
GTK Estate 是一个使用优秀的 GTK 4 和 libadwaita 库的 GTK 小部件状态关联库。
GTK Estate 的主要目的是提供一个方便的方法,将用户定义的状态对象与 GTK 和 libadwaita 容器小部件关联起来。使用用户定义的对象,您可以控制其关联小部件的用户中心状态并对其信号做出反应。GTK Estate 还包含 TimeOut 和辅助函数等对象,可以帮助您以编程方式构建动态 GTK 应用程序。
StateContainers 结构是一个单例,包含小部件状态关联哈希表,每种类型的小部件都得到自己的映射实例。
mod application_state;
use gtk_estate::{adw::{prelude::*, Application}, StateContainers};
use crate::application_state::ApplicationState;
fn main()
{
let app = Application::builder().application_id("org.example_gui").build();
//Explicit initialisation of the StateContainers object is no longer required as of v0.3.0.
//StateContainers::init();
//The ApplicationState (which you define) should add itself to the StateContainers instance from within its own constructor.
ApplicationState::new(&app);
//Run the application
_ = app.run();
}
在上面的示例中,首先构建了一个 adw::Application,然后实例化了 ApplicationState 并传递了对 Application 的引用(其克隆将成为其状态的一部分)。ApplicationState 对象必须实现 ApplicationStateContainer,同样,小部件状态容器对象(包括窗口)必须实现 WidgetStateContainer(请参阅 示例应用程序)。
StateContainers 是一个单线程单例,应仅包含处理 UI 和线程间通信相关任务的状态,可能使用类似于 act_rs 的 crate 来实现后者。
构建需求
需要在您的系统上安装 GTK4 库二进制文件(有关 GTK 安装说明,请参阅 GTK 书籍)。
如果您想使用任何 adw 功能,请在软件仓库中搜索 libadwaita 库。
功能
GTK4
功能 | 启用功能 |
---|---|
gtk_v4_14 | gtk4/v4_14 |
gtk_v4_12 | gtk4/v4_12 |
gtk_v4_10 | gtk4/v4_10 |
gtk_v4_8 | gtk4/v4_8 |
gtk_v4_6 | gtk4/v4_6 |
gtk_v4_4 | gtk4/v4_4 |
gtk_v4_2 | gtk4/v4_2 |
gtk_gnome_45 | gtk4/gnome_45 |
gtk_gnome_44 | gtk4/gnome_44 |
gtk_gnome_43 | gtk4/gnome_43 |
gtk_gnome_42 | gtk4/gnome_42 |
gtk_unsafe-assume-initialized | gtk4/unsafe-assume-initialized |
gtk_xml_validation | gtk4/xml_validation |
gtk_blueprint | gtk4/blueprint |
libadwaita
功能 | 启用功能 |
---|---|
adw | dep:adw |
adw_gtk_v4_2 | adw/gtk_v4_2 |
adw_gtk_v4_4 | adw/gtk_v4_4 |
adw_gtk_v4_6 | adw/gtk_v4_6 |
adw_gtk_v4_8 | adw/gtk_v4_8 |
adw_gtk_v4_10 | adw/gtk_v4_10 |
adw_gtk_v4_12 | adw/gtk_v4_12 |
adw_v1_2 | adw/v1_2 |
adw_v1_3 | adw/v1_3 |
adw_v1_4 | adw/v1_4 |
adw_v1_5 | adw/v1_5 |
此外
GTK 资产重新暴露
- GTK4 (gtk)
- libadwaita (adw (如果选择))
- Corlib (corlib)
待办事项
- 添加更多 GTK/adw 辅助函数和辅助对象。
- 添加更多文档。
示例应用程序
编码风格
该项目使用一种编码风格,强调使用空白而非尽可能降低行和列计数。
所以这个
fn foo()
{
bar();
}
不是这个
fn foo()
{
bar();
}
许可
许可方式为以下之一
- Apache 许可证,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0 (另请参阅:https://www.tldrlegal.com/license/apache-license-2-0-apache-2-0))
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT (另请参阅:https://www.tldrlegal.com/license/mit-license))
由您自行决定
贡献
请克隆仓库并创建一个问题,说明您想添加哪些功能或功能,或者您想修复哪些错误,以及您打算如何实现这些添加或修复。尽量包含详细信息,但不需要详尽无遗,我们将根据可用性来处理。
除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,都应按照上述方式双重许可,不附加任何其他条款或条件。
依赖关系
~16–24MB
~451K SLoC