30 个版本 (9 个重大更新)
新增 0.11.3 | 2024 年 8 月 22 日 |
---|---|
0.11.0 | 2024 年 7 月 26 日 |
#144 在 GUI
每月 594 次下载
7MB
130K SLoC
Zng 是一个跨平台 GUI 框架,它提供了高度可定制的预构建小部件、响应式布局、实时数据绑定、易于本地化、自动焦点导航和可访问性、异步和多线程任务、强大的多进程架构等功能。
Zng 发音为 "zing",或者作为缩写:ZNG (Z Nesting Graphics)。
用法
首先将 zng
添加到您的 Cargo.toml
,或者调用 cargo add zng -F view_prebuilt
[dependencies]
zng = { version = "0.11.3", features = ["view_prebuilt"] }
然后创建您的第一个窗口
use zng::prelude::*;
fn main() {
zng::env::init!();
APP.defaults().run_window(async {
let size = var(layout::Size::new(800, 600));
Window! {
title = size.map(|s| formatx!("Button Example - {s}"));
size;
child_align = Align::CENTER;
child = Button! {
on_click = hn!(|_| {
println!("Button clicked!");
});
text::font_size = 28;
child = Text!("Click Me!");
}
}
})
}
有关更多详细信息,请参阅文档
。
项目模板
您还可以使用 cargo zng new
生成一个带有有用样板代码和预配置的发行版包装的新项目。
cargo install cargo-zng
cargo zng new "My App!"
上面的示例安装了 cargo-zng
并使用它从默认模板生成一个名为 './my-app' 的新 crate。
Cargo 功能
此 crate 提供了 31 个功能标志,其中 4 个默认启用。
"view"
包含默认的视图处理实现。
仅在 not(target_arch = "wasm32")
构建
"view_prebuilt"
将默认视图处理实现作为嵌入式预编译的二进制文件包含在内。
仅在 not(any(target_arch = "wasm32", target_os = "android"))
构建
"http"
启用小部件和服务的 HTTP 任务和 Web 功能。
"debug_default"
在调试构建中启用 "dyn_*"
和 "inspector"
功能。
默认启用。
"dyn_node"
通过启用 UiNode::cfg_boxed
来使用节点级别的更多动态调度。
这会缩短编译时间,但会牺牲运行时性能。
"inspector"
使用“Inspector”节点对每个属性和窗口实例进行度量,并扩展到Ctrl+Shift+I时进行检查。
"hot_reload"
启用热重载构建。
请注意,您必须配置目标库以启用热重载,有关详细信息,请参阅 zng::hot_reload
。
仅在 not(any(target_arch = "wasm32", target_os = "android"))
构建
"dyn_app_extension"
在应用程序扩展级别使用动态调度。
这会缩短编译时间,但会牺牲运行时性能。
"dyn_closure"
在适当的位置(例如 Var::map
)包装闭包,减少单态化类型的数量。
这会缩短编译时间,但会牺牲运行时性能。
"test_util"
测试工具。
"multi_app"
允许每个进程有多个应用程序实例。
此功能允许同时运行多个应用程序,每次一个应用程序。 LocalContext
跟踪每个线程当前运行的应用程序,并且 app_local!
静态根据当前线程切换到每个应用程序的值。
默认未启用,但通过 feature="test_util"
启用。
"single_instance"
启用单个应用程序进程实例模式。
具有此功能构建的版本只允许一个应用程序进程,后续尝试生成应用程序将重定向到正在运行的应用程序进程。
仅在 not(any(target_arch = "wasm32", target_os = "android"))
构建
"crash_handler"
允许应用程序进程崩溃处理器。
具有此功能的构建将为每个应用程序进程生成一个崩溃监视器进程。
仅在 not(any(target_arch = "wasm32", target_os = "android"))
构建
默认启用。
"trace_widget"
对每个最外层节点进行度量以跟踪UI方法。
"trace_wgt_item"
对每个属性和内部节点进行度量以跟踪UI方法。
请注意,这可能导致非常大的跟踪文件和性能下降。
"deadlock_detection"
在应用程序创建时启动一个线程,检查并打印 parking_lot
死锁。
"hyphenation_embed_all"
嵌入所有受支持语言的连字符字典。
如果启用,将嵌入大约2.8MB的数据,您可以使用 HYPHENATION::init_data_source
方法提供替代字典源。
"material_icons"
在默认应用程序中包含所有 Material Icons 图标集。
"material_icons_outlined"
Material Icons Outlined 图标集。
如果启用,此集合中的一些图标用于某些命令。
"material_icons_filled"
Material Icons Filled 图标集。
"material_icons_rounded"
Material Icons Rounded 图标集。
"material_icons_sharp"
Material Icons Sharp 图标集。
"toml"
启用 TOML 配置。
"ron"
启用 RON 配置。
"yaml"
启用 YAML 配置。
"view_software"
在默认视图进程中启用软件渲染器回退。
如果启用并且没有可用的原生OpenGL 3.2驱动程序,则使用 swgl
软件渲染器。
默认启用。
"view_bundle_licenses"
收集并捆绑 zng-view
crate 使用的第三方许可证。
需要 cargo-about
和网络连接以进行构建。
默认未启用。请注意,"view_prebuilt"
总是捆绑许可证。
"ipc"
启用 IPC 任务,预构建视图以及连接到运行在另一个进程中的视图。
仅在 not(any(target_os = "android", target_arch = "wasm32"))
构建中启用。
默认启用。
"built_res"
首先检查 zng::env::res
路径是否在 init_built_res
中可用。
默认在调试构建中启用,在 Android 和 Wasm 中忽略。
"android_game_activity"
标准的 Android 后端,需要能够编译 Java 或 Kotlin 以及获取 Android 依赖项的构建系统。
有关更多详细信息,请参阅 https://docs.rs/winit/latest/winit/platform/android/
。
"android_native_activity"
不需要 Java 的基本 Android 后端。
有关更多详细信息,请参阅 https://docs.rs/winit/latest/winit/platform/android/
。
仓库
有关构建要求、示例和许可信息,请参阅 zng-ui/zng
仓库的 README。
依赖项
25–70MB
~1M SLoC