summaryrefslogtreecommitdiff
path: root/src/backends/zenity.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2019-12-10 18:46:44 +0000
committerRobin Krahl <robin.krahl@ireas.org>2019-12-10 19:56:32 +0100
commit89afcb4844dd484f0c9cdfef7e5ff8d751647c43 (patch)
treef23e994a66ec562685ca44caa6ba939de34acdf1 /src/backends/zenity.rs
parent7d1a146003117694e9d970b0cf08c514ffad1c6e (diff)
downloaddialog-rs-89afcb4844dd484f0c9cdfef7e5ff8d751647c43.tar.gz
dialog-rs-89afcb4844dd484f0c9cdfef7e5ff8d751647c43.tar.bz2
Add Open/Save mode to the file selection dialogfile-selection
This patch adds the option to set a FileSelectionMode, either Open or Save. Not all backends might support this – currently, only zenity and kdialog do. Per default, the Open mode is used (as before).
Diffstat (limited to 'src/backends/zenity.rs')
-rw-r--r--src/backends/zenity.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backends/zenity.rs b/src/backends/zenity.rs
index 4ee7785..ac0f98f 100644
--- a/src/backends/zenity.rs
+++ b/src/backends/zenity.rs
@@ -3,7 +3,9 @@
use std::process;
-use crate::{Choice, Error, FileSelection, Input, Message, Password, Question, Result};
+use crate::{
+ Choice, Error, FileSelection, FileSelectionMode, Input, Message, Password, Question, Result,
+};
/// The `zenity` backend.
///
@@ -166,7 +168,10 @@ impl super::Backend for Zenity {
fn show_file_selection(&self, file_selection: &FileSelection) -> Result<Option<String>> {
let dir = file_selection.path_to_string().ok_or("path not valid")?;
- let args = vec!["--file-selection", "--filename", &dir];
+ let mut args = vec!["--file-selection", "--filename", &dir];
+ if file_selection.mode == FileSelectionMode::Save {
+ args.push("--save");
+ }
self.execute(args, &file_selection.title)
.and_then(get_stdout)
}