imfile

Crates.ioimfile
lib.rsimfile
version0.1.0
sourcesrc
created_at2023-05-07 07:31:20.303755
updated_at2023-05-07 07:31:20.303755
descriptionA simple and customizable file dialog for imgui-rs written entirely in Rust.
homepage
repositoryhttps://github.com/tseli0s/imfile
max_upload_size
id858996
size74,289
Aggelos Tselios (tseli0s)

documentation

README

Rust-only file dialog for ImGui

NOTE: This crate is still a work in progress. Some functionality is still not implemented.
This crate offers a 100% Rust file dialog for ImGui. I created this library as there are basically no other solutions for this matter. While this crate primarily targets [imgui-rs](https://crates.io/crates/imgui/), it should be possible to port it to C++ with a some modifications. This may be important for projects striving for 100% safety.

Features

  • Lightweight and simple file dialog with embedded file browser
  • Compatible with imgui-rs >= 0.11.0
  • No extra dependencies

Example

Basic usage:

use imfile::FileDialog;

fn main() -> {
    // set up your imgui::Ui here

    // This returns None if no file was selected
    if let Some(file) = FileDialog::new()
        .for_save() // Default is open
        .title("Title") // Default is "Open File" or "Save file" depending on the dialog type
        .accept_text("Open file") // Default is open
        .dir_only() // Only allow directories instead of files
        .spawn(&ui); // Create the dialog using the imgui::Ui
    {
        println!("File chosen: {}", file.display());
    } else {
        println!("No file selected.");
    }
}

TODOs

  • Add icons for the widgets
  • Add file filters
  • Set side panel navigator (eg. Disk, Recents, ...)

License

The crate is licensed under the MIT license.

Commit count: 2

cargo fmt