34 个版本 (16 个重大更改)
0.18.0 | 2024年7月4日 |
---|---|
0.17.0 | 2024年3月27日 |
0.16.3 | 2024年2月29日 |
0.13.0 | 2023年12月2日 |
0.3.1 | 2022年11月7日 |
#56 in GUI
1,976 个月下载
在 18 个工具包 中使用 (12 直接使用)
30KB
746 行
为 egui 提供的文件对话框(又称文件选择器)
来自 Dotrix 项目,制作成独立的库,并修改以适应更多用例。
示例
[dependencies]
egui_file = "0.17"
eframe = "0.27"
use eframe::{
egui::{CentralPanel, Context},
App, Frame,
};
use egui_file::FileDialog;
use std::{
ffi::OsStr,
path::{Path, PathBuf},
};
#[derive(Default)]
pub struct Demo {
opened_file: Option<PathBuf>,
open_file_dialog: Option<FileDialog>,
}
impl App for Demo {
fn update(&mut self, ctx: &Context, _frame: &mut Frame) {
CentralPanel::default().show(ctx, |ui| {
if (ui.button("Open")).clicked() {
// Show only files with the extension "txt".
let filter = Box::new({
let ext = Some(OsStr::new("txt"));
move |path: &Path| -> bool { path.extension() == ext }
});
let mut dialog = FileDialog::open_file(self.opened_file.clone()).show_files_filter(filter);
dialog.open();
self.open_file_dialog = Some(dialog);
}
if let Some(dialog) = &mut self.open_file_dialog {
if dialog.show(ctx).selected() {
if let Some(file) = dialog.path() {
self.opened_file = Some(file.to_path_buf());
}
}
}
});
}
}
fn main() {
let _ = eframe::run_native(
"File Dialog Demo",
eframe::NativeOptions::default(),
Box::new(|_cc| Box::new(Demo::default())),
);
}
依赖项
~4.5–10MB
~82K SLoC