#图形 #用户界面 #用户 #图形节点 #UI #接口

gazpatcho

Rust 的简单基于节点的图形编辑器。注册节点,让用户与之交互,读取结果。

8 个稳定版本

1.4.2 2021年2月26日
1.4.1 2021年2月7日
1.4.0 2021年1月9日
1.0.1 2020年11月28日
0.1.0 2020年11月19日

#162 in 可视化

GPL-3.0-or-later

170KB
4K SLoC

Gazpatcho

提供基于图形节点的图形编辑器的 Rust 库。

Example

此库可以用作绘制用户界面,允许用户创建图,这些图最终将被应用程序的后端解释和执行。

API 有四个主要部分

  • 在应用程序开始时定义的 Config 结构。此结构指定所有可用的节点类型、它们的输入、输出和关联数据的小部件。
  • 由 Gazpatcho 运行实例返回的 Report 结构,在每次对图进行的更改时(添加或删除节点、更改值、添加或删除补丁)都会返回。此结构描述了图及其关联数据。
  • 具有两个参数的 run 函数:一个是 Config,另一个是接受当前 Report 作为参数的闭包。
  • 可向运行中的图实例发送以改变其状态的 Request 枚举中定义的所有操作。

文档

使用

将以下内容添加到您的 Cargo.toml

[dependencies]
gazpatcho = "1.4"

以下代码运行 Gazpatcho UI 的实例。将只有一个类型的节点可用,具有一个输入和一个输出引脚,以及用户可以将其设置为开或关的开关。当用户进行任何更改时,将向 run 回调发送一个新的报告,描述图的当前状态。在实际应用程序中,dbg! 调用将替换为更有用的内容。

use gazpatcho::config::*;

fn main() {
    let config = Config {
        node_templates: vec![
            NodeTemplate {
                label: "Example node".to_owned(),
                class: "example_node".to_owned(),
                pins: vec![
                    Pin {
                        label: "Input".to_owned(),
                        class: "in".to_owned(),
                        direction: Input,
                    },
                    Pin {
                        label: "Output".to_owned(),
                        class: "out".to_owned(),
                        direction: Output,
                    },
                ],
                widgets: vec![Switch {
                    label: "Switch".to_owned(),
                    key: "switch".to_owned(),
                }],
            }
        ],
    };

    gazpatcho::run_with_callback("Application Name", config, |report| {
        // Act upon the current report
        dbg!(report);

        // Respond with change requests
        vec![
            // Request::SetValue { ... }
        ]
    });
}

请参阅 文档 以了解有关 ConfigReport 结构的更多信息。如果您更喜欢通过阅读文档来调整代码,请查看并尝试包含的 示例

cargo run --example main

许可证

Gazpatcho 根据 General Public License 版本 3 的条款分发。有关详细信息,请参阅 LICENSE

更新日志

读取 CHANGELOG.md 以了解每个版本中引入的更改。

依赖关系

~23MB
~448K SLoC