Expand description
This is a tui-rs extension for a file dialog popup.
§Usage
See the examples
directory on how to use this extension. Run
cargo run --example demo
to see it in action.
First, add a file dialog to the TUI app:
use tui_file_dialog::FileDialog;
struct App {
// Other fields of the App...
file_dialog: FileDialog
}
If you want to use the default key bindings provided by this crate, just wrap
the event handler of your app in the bind_keys!
macro.
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(());
}
_ => {}
}
}
)
}
}
Finally, draw the file dialog:
fn ui<B: Backend>(f: &mut Frame<B>, app: &mut App) {
// Other UI drawing code...
app.file_dialog.draw(f);
}
§Limitations
I’ve started this crate with a minimalistic approach and new functionality will be added on a use-case basis. For example, it is currently not possible to add styling to the file dialog and just a boring, minimalist block with a list is used to render it.
Macros§
- bind_
keys - Macro to automatically overwrite the default key bindings of the app, when the file dialog is open.
Structs§
- File
Dialog - The file dialog.
Enums§
- File
Pattern - A pattern that can be used to filter the displayed files.