gtk4/file_chooser_dialog.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
// Take a look at the license at the top of the repository in the LICENSE file.
use std::ptr;
use glib::translate::*;
use libc::c_char;
use crate::{ffi, prelude::*, FileChooserAction, FileChooserDialog, ResponseType, Widget, Window};
impl FileChooserDialog {
/// Creates a new [`FileChooserDialog`][crate::FileChooserDialog].
///
/// This function is analogous to [`Dialog::with_buttons()`][crate::Dialog::with_buttons()].
///
/// # Deprecated since 4.10
///
/// Use [`FileDialog`][crate::FileDialog] instead
/// ## `title`
/// Title of the dialog
/// ## `parent`
/// Transient parent of the dialog
/// ## `action`
/// Open or save mode for the dialog
/// ## `first_button_text`
/// text to go in the first button
///
/// # Returns
///
/// a new [`FileChooserDialog`][crate::FileChooserDialog]
#[doc(alias = "gtk_file_chooser_dialog_new")]
#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
#[allow(deprecated)]
pub fn new(
title: impl IntoOptionalGStr,
parent: Option<&impl IsA<Window>>,
action: FileChooserAction,
buttons: &[(&str, ResponseType)],
) -> Self {
assert_initialized_main_thread!();
unsafe {
let dialog: Self = title.run_with_gstr(|title| {
Widget::from_glib_none(ffi::gtk_file_chooser_dialog_new(
title.to_glib_none().0,
parent.map(|p| p.as_ref()).to_glib_none().0,
action.into_glib(),
ptr::null::<c_char>(),
))
.unsafe_cast()
});
dialog.add_buttons(buttons);
dialog
}
}
}
impl Default for FileChooserDialog {
fn default() -> Self {
glib::Object::new()
}
}