9 个不稳定版本 (3 个破坏性更新)
0.4.2 | 2020年12月23日 |
---|---|
0.4.1 | 2020年11月24日 |
0.3.3 | 2020年7月4日 |
0.3.1 | 2020年6月28日 |
0.1.0 | 2020年6月25日 |
#568 in GUI
每月41次下载
在 pugl-ui 中使用
2MB
39K SLoC
pugl-sys – pugl 的 Rust 包装
pugl 是一个最小化、可嵌入的 GUI API https://gitlab.com/lv2/pugl/
本库旨在为 Rust 提供库绑定。
目标
小型轻量级自包含 GUI 工具包的基础,特别是实现 LV2 插件的 UI。LV2 插件的 GUI 需要自包含,即它们应该静态链接,并且不能动态链接任何其他 GUI 工具包。否则,不同插件在不同宿主中运行时,会冲突使用不同版本的同一样本。
状态
测试阶段。pugl 的所有功能尚未全部可用(见下文)。目前仅在 Linux/X11 上进行了测试。鼓励对编程小型可嵌入 GUI 感兴趣的 Rust 开发者尝试。
API 稳定性
在达到 1.0.0 版本之前,可能会发生不兼容的 API 变更。目前还没有大量应用程序使用 pugl-sys
,因此 API 的使用经验有限。1.0.0 版本的发布将不会在多个开发者使用 pugl-sys
并提供反馈之前进行。
如果发现更好的 API 设计方式,将会进行修改。
在 1.0.0 版本发布后,不兼容的 API 变更将很少发生。只有在 pugl
以不兼容的方式更改 API,且这不会在抽象层中隐藏的情况下,才会发生变更。
如何使用
它可在 crates.io 上找到,因此只需将其添加到您的 Cargo.toml
中的依赖项即可。
用法
本库的文档中只有一个最小示例。还有一个 pugl-ui 库,它是一个实现小部件布局和事件传播的 GUI 工具包的占位符。也许您想检查一下。
待办事项
并非 pugl 的所有功能都得到实现。
-
作为可单独访问的实体
到目前为止,World 只能通过 View 和不安全的 FFI 函数访问。目前仅封装了
puglUpdate()
这个 World 函数。要实现这一点,需要一个机制来在多个 View 之间共享对同一 World 的引用,确保在至少一个 View 仍然存在时不会销毁 World。
-
手动发送事件的支持
这基本上是对函数
puglSendEvent()
的封装。为了实现它,需要将pugl::Event
转换为PuglEvent
FFI 类型。 -
剪贴板支持
对于纯文本来说可能很简单。对于其他 MIME 数据,可能需要其他依赖项。
-
支持除 Cairo 之外的后端
目前,当发生曝光事件时,视图只需设置 Cairo 后端并将句柄转换为
cairo::Context
。 -
一些小函数尚未封装
-
正确实现
PuglViewHint
-
在其他平台(如 Linux)上测试(并使其工作)
依赖项
~2.1–4.5MB
~96K SLoC