#clap #generator #builder

claui

使用 egui 的 clap GUI 生成器

4 个版本

0.2.0 2023年2月13日
0.1.2 2022年7月25日
0.1.1 2022年5月20日
0.1.0 2022年5月20日

400GUI 分类中

每月下载量 25

GPL-3.0 许可证

105KB
308

claui

命令行参数(到图形)用户界面

一个使用 clapegui 的 GUI 生成器。

fizzbuzz screenshot

构建器示例

use clap::{arg, Command};

fn main() {
    let app = Command::new("Builder Greeter")
        .author("Grant Handy <[email protected]>")
        .version("1.2.3")
        .about("A builder example for claui")
        .arg(arg!(--name "Your name").default_value("Joe"))
        .arg(arg!(--goodbye "Say goodbye"));

    claui::run(app, |matches| {
        println!("Hello, {}!", matches.get_one::<String>("name").unwrap());

        if matches.get_flag("goodbye") {
            println!("Goodbye!");
        }
    });
}

builder screenshot

派生示例

use clap::{CommandFactory, Parser};

#[derive(Parser, Debug)]
#[clap(
    name = "Derive Greeter",
    author = "Grant Handy <[email protected]>",
    version = "1.2.3",
    about = "A derive example for claui"
)]
struct Args {
    #[clap(long, default_value = "Joe", help = "Your name")]
    name: String,
    #[clap(long, help = "Say goodbye")]
    goodbye: bool,
}

fn main() {
    let app = Args::command();

    claui::run(app, |matches| {
        println!("Hello, {}!", matches.get_one::<String>("name").unwrap());

        if matches.get_flag("goodbye") {
            println!("Goodbye!");
        }
    });
}

derive example

klask 的比较

Klask 是另一个用于 clap 的 GUI 生成器,它也使用 egui,但 claui 和 klask 的工作方式不同。Klask 通过以子进程的方式运行自己的代码,并设置环境变量来忽略其 GUI,然后捕获子进程的 stdout 来运行你的代码。Claui 只运行一个进程;它在另一个线程中启动你的代码,然后通过 shh 将所有 stdout 重定向到每个帧的缓冲区。

依赖项

~8–27MB
~372K SLoC