aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index da2a259..aa19105 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -348,11 +348,24 @@ impl DialogBox for Question {
}
}
+/// The type of a file selection dialog.
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum FileSelectionMode {
+ /// An Open File dialog, meaning that the user can only select an existing file.
+ Open,
+ /// A Save File dialog, meaning that the user is allowed to select a non-existing file.
+ Save,
+}
+
/// A file chooser dialog box.
///
-/// This dialog box opens a file chooser with an optional title in the specified path. If the path
+/// This dialog box opens a file choser with an optional title in the specified path. If the path
/// is not specified, it defaults to the user’s home directory.
///
+/// The backends might support multiple operation modes, for example open or save dialogs. You can
+/// select a mode using the [`FileSelectionMode`][] enum, though the backend might ignore the mode
+/// and just display a simple file dialog. Per default, the mode is set to `Open`.
+///
/// # Example
///
/// ```no_run
@@ -365,10 +378,13 @@ impl DialogBox for Question {
/// .expect("Could not display dialog box");
/// println!("The user chose: {:?}", choice);
/// ```
+///
+/// [`FileSelectionMode`]: enum.FileSelectionMode.html
pub struct FileSelection {
text: String,
title: Option<String>,
path: Option<PathBuf>,
+ mode: FileSelectionMode,
}
impl FileSelection {
@@ -378,6 +394,7 @@ impl FileSelection {
text: text.into(),
title: None,
path: dirs::home_dir(),
+ mode: FileSelectionMode::Open,
}
}
@@ -409,6 +426,14 @@ impl FileSelection {
_ => None,
}
}
+
+ /// Sets the operation mode of the file chooser.
+ ///
+ /// This method returns a reference to `self` to enable chaining.
+ pub fn mode(&mut self, mode: FileSelectionMode) -> &mut FileSelection {
+ self.mode = mode;
+ self
+ }
}
impl DialogBox for FileSelection {