#extension #tui #tui-rs

已删除 tuirs-file-dialog

tuirs crate 的文件对话框扩展

0.1.0 2023年7月16日

#9 in #tui-rs

MIT 协议

16KB
224

tuirs 文件对话框

这是一个 tuirs 的文件对话框弹出扩展。

用法

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

cargo run --example demo

以查看其效果。

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

use tui_rs_file_dialog::FileDialog;

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

    file_dialog: FileDialog
}

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

use tui_rs_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–13MB
~94K SLoC