#扩展 #tui #tui-rs

tui-file-dialog

为 tui-rs crate 提供的文件对话框扩展

1 个不稳定版本

0.1.0 2023年7月16日

#538命令行界面

MIT 许可协议

16KB
224

tui-rs 文件对话框

这是一个用于文件对话框弹出的 tui-rs 扩展

用法

请参阅 examples 目录了解如何使用此扩展。运行

cargo run --example demo

以查看其效果。

首先,将文件对话框添加到 TUI 应用程序

use tui_file_dialog::FileDialog;

struct App {
    // Other fields of the App...

    file_dialog: FileDialog
}

如果您想使用此 crate 提供的默认键绑定,只需将您的应用程序的事件处理程序包裹在 bind_keys! 宏中即可

use tui_file_dialog::bind_keys;

fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<()> {
    loop {
        terminal.draw(|f| ui(f, &mut app))?;

        bind_keys!(
            // Expression to use to access the file dialog.
            app.file_dialog,
            // Event handler of the app, when the file dialog is closed.
            if let Event::Key(key) = event::read()? {
                match key.code {
                    KeyCode::Char('q') => {
                        return Ok(());
                    }
                    _ => {}
                }
            }
        )
    }
}

最后,绘制文件对话框

fn ui<B: Backend>(f: &mut Frame<B>, app: &mut App) {
    // Other UI drawing code...

    app.file_dialog.draw(f);
}

局限性

我以简约的方式开始这个 crate,并根据使用情况添加新功能。例如,目前无法为文件对话框添加样式,只能使用一个无聊的、简约的列表块来渲染它。

贡献

此 crate 是基于使用情况开发的。如果您也想使用此 crate,但目前它还没有涵盖您的用例,请随时提出问题或为此创建 PR。我欢迎任何想法和改进。

许可协议

版权所有 2023 Philipp Krones

在 MIT 许可协议下发布。除非根据这些条款,否则不得复制、修改或分发项目中的文件。

依赖项

~3–14MB
~107K SLoC