blocking_dialog/linux/
save_file.rs1use crate::{BlockingDialogError, BlockingSaveFileDialog};
5use raw_window_handle::{HasDisplayHandle, HasWindowHandle};
6use rfd::FileDialog;
7use std::path::PathBuf;
8
9impl<'a, W: HasWindowHandle + HasDisplayHandle> BlockingSaveFileDialog<'a, W> {
10 pub fn show(&self) -> Result<Option<PathBuf>, BlockingDialogError> {
11 let mut dialog = FileDialog::new()
12 .set_title(self.title)
13 .set_parent(&self.window);
14
15 if let Some(default_filename) = self.default_filename {
16 dialog = dialog.set_file_name(default_filename);
17 }
18
19 for filter in self.filter {
20 dialog = dialog.add_filter(filter.name, filter.extensions);
21 }
22
23 let result = dialog.save_file();
24 Ok(result)
25 }
26}