diff --git a/examples/dialog.rs b/examples/dialog.rs index bc64519..687d070 100644 --- a/examples/dialog.rs +++ b/examples/dialog.rs @@ -22,6 +22,7 @@ fn main() -> Result<(), Box> { pub enum Message { DialogMessage(DialogMessage), DialogOpen(DialogKind), + DialogOpenImages, DialogResult(DialogResult), } @@ -105,6 +106,31 @@ impl Application for App { return Task::batch(tasks); } } + Message::DialogOpenImages => { + if self.dialog_opt.is_none() { + let (mut dialog, task) = Dialog::new( + DialogSettings::new().kind(DialogKind::OpenFile), + Message::DialogMessage, + Message::DialogResult, + ); + let mut tasks = vec![task]; + tasks.push(dialog.set_filters( + vec![ + DialogFilter { + label: "Images".into(), + patterns: vec![DialogFilterPattern::Mime("image/*".into())], + }, + DialogFilter { + label: "Any file".into(), + patterns: vec![DialogFilterPattern::Glob("*".into())], + }, + ], + Some(0), + )); + self.dialog_opt = Some(dialog); + return Task::batch(tasks); + } + } Message::DialogResult(result) => { self.dialog_opt = None; self.result_opt = Some(result); @@ -130,6 +156,13 @@ impl Application for App { } column = column.push(button); } + { + let mut button = widget::button::standard("Open Image"); + if self.dialog_opt.is_none() { + button = button.on_press(Message::DialogOpenImages); + } + column = column.push(button); + } { let mut button = widget::button::standard("Open Multiple Files"); if self.dialog_opt.is_none() {