[−][src]Module ashpd::desktop::file_chooser
Open/save file(s) chooser.
Examples
Opening a file
use ashpd::desktop::file_chooser::{ Choice, FileChooserProxy, FileFilter, SelectedFiles, OpenFileOptions, }; use ashpd::{RequestProxy, Response, WindowIdentifier}; use zbus::{fdo::Result, Connection}; fn main() -> Result<()> { let connection = Connection::new_session()?; let proxy = FileChooserProxy::new(&connection)?; let request_handle = proxy.open_file( WindowIdentifier::default(), "open a file to read", OpenFileOptions::default() .accept_label("read") .modal(true) .multiple(true) .choice( Choice::new("encoding", "Encoding", "latin15") .insert("utf8", "Unicode (UTF-8)") .insert("latin15", "Western"), ) // A trick to have a checkbox .choice(Choice::new("re-encode", "Re-encode", "false")) .filter(FileFilter::new("SVG Image").mimetype("image/svg+xml")), )?; let request = RequestProxy::new(&connection, &request_handle)?; request.on_response(|r: Response<SelectedFiles>| { println!("{:#?}", r.unwrap()); })?; Ok(()) }
Ask to save a file
use ashpd::desktop::file_chooser::{ FileChooserProxy, FileFilter, SelectedFiles, SaveFileOptions, }; use ashpd::{RequestProxy, Response, WindowIdentifier}; use zbus::{fdo::Result, Connection}; fn main() -> Result<()> { let connection = Connection::new_session()?; let proxy = FileChooserProxy::new(&connection)?; let request_handle = proxy.save_file( WindowIdentifier::default(), "open a file to write", SaveFileOptions::default() .accept_label("write") .current_name("image.jpg") .modal(true) .filter(FileFilter::new("JPEG Image").glob("*.jpg")), )?; let request = RequestProxy::new(&connection, &request_handle)?; request.on_response(|r: Response<SelectedFiles>| { println!("{:#?}", r.unwrap()); })?; Ok(()) }
Ask to save multiple files
use ashpd::desktop::file_chooser::{FileChooserProxy, SaveFilesOptions, SelectedFiles}; use ashpd::{RequestProxy, Response, WindowIdentifier}; use zbus::{fdo::Result, Connection}; fn main() -> Result<()> { let connection = Connection::new_session()?; let proxy = FileChooserProxy::new(&connection)?; let request_handle = proxy.save_files( WindowIdentifier::default(), "open files to write", SaveFilesOptions::default() .accept_label("write files") .modal(true) .current_folder("/home/bilelmoussaoui/Pictures") .files(vec!["test.jpg".to_string(), "awesome.png".to_string()]), )?; let request = RequestProxy::new(&connection, &request_handle)?; request.on_response(|r: Response<SelectedFiles>| { println!("{:#?}", r.unwrap()); })?; Ok(()) }
Structs
Choice | Presents the user with a choice to select from or as a checkbox. |
FileChooserProxy | The interface lets sandboxed applications ask the user for access to files outside the sandbox. The portal backend will present the user with a file chooser dialog. |
FileFilter | A file filter, to limit the available file choices to a mimetype or a glob pattern. |
OpenFileOptions | Specified options for a |
SaveFileOptions | Specified options for a save file request. |
SaveFilesOptions | Specified options for a save files request. |
SelectedFiles | A response to an open/save file request. |