Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flip1995/tui-rs-file-dialog
File Dialog extension for the tui-rs crate
https://github.com/flip1995/tui-rs-file-dialog
Last synced: about 1 month ago
JSON representation
File Dialog extension for the tui-rs crate
- Host: GitHub
- URL: https://github.com/flip1995/tui-rs-file-dialog
- Owner: flip1995
- License: mit
- Created: 2023-07-14T19:43:38.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-07-20T20:34:43.000Z (over 1 year ago)
- Last Synced: 2024-05-02T03:38:19.448Z (9 months ago)
- Language: Rust
- Size: 24.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tui-rs File Dialog
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:
```rust
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:```rust
use tui_file_dialog::bind_keys;fn run_app(terminal: &mut Terminal, 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:
```rust
fn ui(f: &mut Frame, 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.## Contribution
This crate is developed on a use-case basis. If you want to also use this crate,
but it currently doesn't cover your use case, feel free to open an issue or even
a PR for it. I'm open to ideas and improvements.## License
Copyright 2023 Philipp Krones
Licensed under the MIT license. Files in the project may not be copied,
modified, or distributed except according to those terms.