gtk4/auto/
file_chooser.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4#![allow(deprecated)]
5
6use crate::{ffi, FileChooserAction, FileFilter};
7use glib::{
8    prelude::*,
9    signal::{connect_raw, SignalHandlerId},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    #[doc(alias = "GtkFileChooser")]
16    pub struct FileChooser(Interface<ffi::GtkFileChooser>);
17
18    match fn {
19        type_ => || ffi::gtk_file_chooser_get_type(),
20    }
21}
22
23impl FileChooser {
24    pub const NONE: Option<&'static FileChooser> = None;
25}
26
27mod sealed {
28    pub trait Sealed {}
29    impl<T: super::IsA<super::FileChooser>> Sealed for T {}
30}
31
32pub trait FileChooserExt: IsA<FileChooser> + sealed::Sealed + 'static {
33    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
34    #[allow(deprecated)]
35    #[doc(alias = "gtk_file_chooser_add_filter")]
36    fn add_filter(&self, filter: &FileFilter) {
37        unsafe {
38            ffi::gtk_file_chooser_add_filter(
39                self.as_ref().to_glib_none().0,
40                filter.to_glib_none().0,
41            );
42        }
43    }
44
45    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
46    #[allow(deprecated)]
47    #[doc(alias = "gtk_file_chooser_add_shortcut_folder")]
48    fn add_shortcut_folder(&self, folder: &impl IsA<gio::File>) -> Result<(), glib::Error> {
49        unsafe {
50            let mut error = std::ptr::null_mut();
51            let is_ok = ffi::gtk_file_chooser_add_shortcut_folder(
52                self.as_ref().to_glib_none().0,
53                folder.as_ref().to_glib_none().0,
54                &mut error,
55            );
56            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
57            if error.is_null() {
58                Ok(())
59            } else {
60                Err(from_glib_full(error))
61            }
62        }
63    }
64
65    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
66    #[allow(deprecated)]
67    #[doc(alias = "gtk_file_chooser_get_action")]
68    #[doc(alias = "get_action")]
69    fn action(&self) -> FileChooserAction {
70        unsafe {
71            from_glib(ffi::gtk_file_chooser_get_action(
72                self.as_ref().to_glib_none().0,
73            ))
74        }
75    }
76
77    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
78    #[allow(deprecated)]
79    #[doc(alias = "gtk_file_chooser_get_choice")]
80    #[doc(alias = "get_choice")]
81    fn choice(&self, id: &str) -> Option<glib::GString> {
82        unsafe {
83            from_glib_none(ffi::gtk_file_chooser_get_choice(
84                self.as_ref().to_glib_none().0,
85                id.to_glib_none().0,
86            ))
87        }
88    }
89
90    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
91    #[allow(deprecated)]
92    #[doc(alias = "gtk_file_chooser_get_create_folders")]
93    #[doc(alias = "get_create_folders")]
94    #[doc(alias = "create-folders")]
95    fn creates_folders(&self) -> bool {
96        unsafe {
97            from_glib(ffi::gtk_file_chooser_get_create_folders(
98                self.as_ref().to_glib_none().0,
99            ))
100        }
101    }
102
103    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
104    #[allow(deprecated)]
105    #[doc(alias = "gtk_file_chooser_get_current_folder")]
106    #[doc(alias = "get_current_folder")]
107    fn current_folder(&self) -> Option<gio::File> {
108        unsafe {
109            from_glib_full(ffi::gtk_file_chooser_get_current_folder(
110                self.as_ref().to_glib_none().0,
111            ))
112        }
113    }
114
115    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
116    #[allow(deprecated)]
117    #[doc(alias = "gtk_file_chooser_get_current_name")]
118    #[doc(alias = "get_current_name")]
119    fn current_name(&self) -> Option<glib::GString> {
120        unsafe {
121            from_glib_full(ffi::gtk_file_chooser_get_current_name(
122                self.as_ref().to_glib_none().0,
123            ))
124        }
125    }
126
127    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
128    #[allow(deprecated)]
129    #[doc(alias = "gtk_file_chooser_get_file")]
130    #[doc(alias = "get_file")]
131    fn file(&self) -> Option<gio::File> {
132        unsafe {
133            from_glib_full(ffi::gtk_file_chooser_get_file(
134                self.as_ref().to_glib_none().0,
135            ))
136        }
137    }
138
139    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
140    #[allow(deprecated)]
141    #[doc(alias = "gtk_file_chooser_get_files")]
142    #[doc(alias = "get_files")]
143    fn files(&self) -> gio::ListModel {
144        unsafe {
145            from_glib_full(ffi::gtk_file_chooser_get_files(
146                self.as_ref().to_glib_none().0,
147            ))
148        }
149    }
150
151    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
152    #[allow(deprecated)]
153    #[doc(alias = "gtk_file_chooser_get_filter")]
154    #[doc(alias = "get_filter")]
155    fn filter(&self) -> Option<FileFilter> {
156        unsafe {
157            from_glib_none(ffi::gtk_file_chooser_get_filter(
158                self.as_ref().to_glib_none().0,
159            ))
160        }
161    }
162
163    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
164    #[allow(deprecated)]
165    #[doc(alias = "gtk_file_chooser_get_filters")]
166    #[doc(alias = "get_filters")]
167    fn filters(&self) -> gio::ListModel {
168        unsafe {
169            from_glib_full(ffi::gtk_file_chooser_get_filters(
170                self.as_ref().to_glib_none().0,
171            ))
172        }
173    }
174
175    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
176    #[allow(deprecated)]
177    #[doc(alias = "gtk_file_chooser_get_select_multiple")]
178    #[doc(alias = "get_select_multiple")]
179    #[doc(alias = "select-multiple")]
180    fn selects_multiple(&self) -> bool {
181        unsafe {
182            from_glib(ffi::gtk_file_chooser_get_select_multiple(
183                self.as_ref().to_glib_none().0,
184            ))
185        }
186    }
187
188    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
189    #[allow(deprecated)]
190    #[doc(alias = "gtk_file_chooser_get_shortcut_folders")]
191    #[doc(alias = "get_shortcut_folders")]
192    #[doc(alias = "shortcut-folders")]
193    fn shortcut_folders(&self) -> gio::ListModel {
194        unsafe {
195            from_glib_full(ffi::gtk_file_chooser_get_shortcut_folders(
196                self.as_ref().to_glib_none().0,
197            ))
198        }
199    }
200
201    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
202    #[allow(deprecated)]
203    #[doc(alias = "gtk_file_chooser_remove_choice")]
204    fn remove_choice(&self, id: &str) {
205        unsafe {
206            ffi::gtk_file_chooser_remove_choice(
207                self.as_ref().to_glib_none().0,
208                id.to_glib_none().0,
209            );
210        }
211    }
212
213    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
214    #[allow(deprecated)]
215    #[doc(alias = "gtk_file_chooser_remove_filter")]
216    fn remove_filter(&self, filter: &FileFilter) {
217        unsafe {
218            ffi::gtk_file_chooser_remove_filter(
219                self.as_ref().to_glib_none().0,
220                filter.to_glib_none().0,
221            );
222        }
223    }
224
225    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
226    #[allow(deprecated)]
227    #[doc(alias = "gtk_file_chooser_remove_shortcut_folder")]
228    fn remove_shortcut_folder(&self, folder: &impl IsA<gio::File>) -> Result<(), glib::Error> {
229        unsafe {
230            let mut error = std::ptr::null_mut();
231            let is_ok = ffi::gtk_file_chooser_remove_shortcut_folder(
232                self.as_ref().to_glib_none().0,
233                folder.as_ref().to_glib_none().0,
234                &mut error,
235            );
236            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
237            if error.is_null() {
238                Ok(())
239            } else {
240                Err(from_glib_full(error))
241            }
242        }
243    }
244
245    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
246    #[allow(deprecated)]
247    #[doc(alias = "gtk_file_chooser_set_action")]
248    #[doc(alias = "action")]
249    fn set_action(&self, action: FileChooserAction) {
250        unsafe {
251            ffi::gtk_file_chooser_set_action(self.as_ref().to_glib_none().0, action.into_glib());
252        }
253    }
254
255    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
256    #[allow(deprecated)]
257    #[doc(alias = "gtk_file_chooser_set_choice")]
258    fn set_choice(&self, id: &str, option: &str) {
259        unsafe {
260            ffi::gtk_file_chooser_set_choice(
261                self.as_ref().to_glib_none().0,
262                id.to_glib_none().0,
263                option.to_glib_none().0,
264            );
265        }
266    }
267
268    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
269    #[allow(deprecated)]
270    #[doc(alias = "gtk_file_chooser_set_create_folders")]
271    #[doc(alias = "create-folders")]
272    fn set_create_folders(&self, create_folders: bool) {
273        unsafe {
274            ffi::gtk_file_chooser_set_create_folders(
275                self.as_ref().to_glib_none().0,
276                create_folders.into_glib(),
277            );
278        }
279    }
280
281    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
282    #[allow(deprecated)]
283    #[doc(alias = "gtk_file_chooser_set_current_name")]
284    fn set_current_name(&self, name: &str) {
285        unsafe {
286            ffi::gtk_file_chooser_set_current_name(
287                self.as_ref().to_glib_none().0,
288                name.to_glib_none().0,
289            );
290        }
291    }
292
293    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
294    #[allow(deprecated)]
295    #[doc(alias = "gtk_file_chooser_set_file")]
296    fn set_file(&self, file: &impl IsA<gio::File>) -> Result<(), glib::Error> {
297        unsafe {
298            let mut error = std::ptr::null_mut();
299            let is_ok = ffi::gtk_file_chooser_set_file(
300                self.as_ref().to_glib_none().0,
301                file.as_ref().to_glib_none().0,
302                &mut error,
303            );
304            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
305            if error.is_null() {
306                Ok(())
307            } else {
308                Err(from_glib_full(error))
309            }
310        }
311    }
312
313    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
314    #[allow(deprecated)]
315    #[doc(alias = "gtk_file_chooser_set_filter")]
316    #[doc(alias = "filter")]
317    fn set_filter(&self, filter: &FileFilter) {
318        unsafe {
319            ffi::gtk_file_chooser_set_filter(
320                self.as_ref().to_glib_none().0,
321                filter.to_glib_none().0,
322            );
323        }
324    }
325
326    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
327    #[allow(deprecated)]
328    #[doc(alias = "gtk_file_chooser_set_select_multiple")]
329    #[doc(alias = "select-multiple")]
330    fn set_select_multiple(&self, select_multiple: bool) {
331        unsafe {
332            ffi::gtk_file_chooser_set_select_multiple(
333                self.as_ref().to_glib_none().0,
334                select_multiple.into_glib(),
335            );
336        }
337    }
338
339    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
340    #[doc(alias = "action")]
341    fn connect_action_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
342        unsafe extern "C" fn notify_action_trampoline<P: IsA<FileChooser>, F: Fn(&P) + 'static>(
343            this: *mut ffi::GtkFileChooser,
344            _param_spec: glib::ffi::gpointer,
345            f: glib::ffi::gpointer,
346        ) {
347            let f: &F = &*(f as *const F);
348            f(FileChooser::from_glib_borrow(this).unsafe_cast_ref())
349        }
350        unsafe {
351            let f: Box_<F> = Box_::new(f);
352            connect_raw(
353                self.as_ptr() as *mut _,
354                b"notify::action\0".as_ptr() as *const _,
355                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
356                    notify_action_trampoline::<Self, F> as *const (),
357                )),
358                Box_::into_raw(f),
359            )
360        }
361    }
362
363    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
364    #[doc(alias = "create-folders")]
365    fn connect_create_folders_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
366        unsafe extern "C" fn notify_create_folders_trampoline<
367            P: IsA<FileChooser>,
368            F: Fn(&P) + 'static,
369        >(
370            this: *mut ffi::GtkFileChooser,
371            _param_spec: glib::ffi::gpointer,
372            f: glib::ffi::gpointer,
373        ) {
374            let f: &F = &*(f as *const F);
375            f(FileChooser::from_glib_borrow(this).unsafe_cast_ref())
376        }
377        unsafe {
378            let f: Box_<F> = Box_::new(f);
379            connect_raw(
380                self.as_ptr() as *mut _,
381                b"notify::create-folders\0".as_ptr() as *const _,
382                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
383                    notify_create_folders_trampoline::<Self, F> as *const (),
384                )),
385                Box_::into_raw(f),
386            )
387        }
388    }
389
390    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
391    #[doc(alias = "filter")]
392    fn connect_filter_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
393        unsafe extern "C" fn notify_filter_trampoline<P: IsA<FileChooser>, F: Fn(&P) + 'static>(
394            this: *mut ffi::GtkFileChooser,
395            _param_spec: glib::ffi::gpointer,
396            f: glib::ffi::gpointer,
397        ) {
398            let f: &F = &*(f as *const F);
399            f(FileChooser::from_glib_borrow(this).unsafe_cast_ref())
400        }
401        unsafe {
402            let f: Box_<F> = Box_::new(f);
403            connect_raw(
404                self.as_ptr() as *mut _,
405                b"notify::filter\0".as_ptr() as *const _,
406                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
407                    notify_filter_trampoline::<Self, F> as *const (),
408                )),
409                Box_::into_raw(f),
410            )
411        }
412    }
413
414    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
415    #[doc(alias = "filters")]
416    fn connect_filters_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
417        unsafe extern "C" fn notify_filters_trampoline<P: IsA<FileChooser>, F: Fn(&P) + 'static>(
418            this: *mut ffi::GtkFileChooser,
419            _param_spec: glib::ffi::gpointer,
420            f: glib::ffi::gpointer,
421        ) {
422            let f: &F = &*(f as *const F);
423            f(FileChooser::from_glib_borrow(this).unsafe_cast_ref())
424        }
425        unsafe {
426            let f: Box_<F> = Box_::new(f);
427            connect_raw(
428                self.as_ptr() as *mut _,
429                b"notify::filters\0".as_ptr() as *const _,
430                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
431                    notify_filters_trampoline::<Self, F> as *const (),
432                )),
433                Box_::into_raw(f),
434            )
435        }
436    }
437
438    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
439    #[doc(alias = "select-multiple")]
440    fn connect_select_multiple_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
441        unsafe extern "C" fn notify_select_multiple_trampoline<
442            P: IsA<FileChooser>,
443            F: Fn(&P) + 'static,
444        >(
445            this: *mut ffi::GtkFileChooser,
446            _param_spec: glib::ffi::gpointer,
447            f: glib::ffi::gpointer,
448        ) {
449            let f: &F = &*(f as *const F);
450            f(FileChooser::from_glib_borrow(this).unsafe_cast_ref())
451        }
452        unsafe {
453            let f: Box_<F> = Box_::new(f);
454            connect_raw(
455                self.as_ptr() as *mut _,
456                b"notify::select-multiple\0".as_ptr() as *const _,
457                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
458                    notify_select_multiple_trampoline::<Self, F> as *const (),
459                )),
460                Box_::into_raw(f),
461            )
462        }
463    }
464
465    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
466    #[doc(alias = "shortcut-folders")]
467    fn connect_shortcut_folders_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
468        unsafe extern "C" fn notify_shortcut_folders_trampoline<
469            P: IsA<FileChooser>,
470            F: Fn(&P) + 'static,
471        >(
472            this: *mut ffi::GtkFileChooser,
473            _param_spec: glib::ffi::gpointer,
474            f: glib::ffi::gpointer,
475        ) {
476            let f: &F = &*(f as *const F);
477            f(FileChooser::from_glib_borrow(this).unsafe_cast_ref())
478        }
479        unsafe {
480            let f: Box_<F> = Box_::new(f);
481            connect_raw(
482                self.as_ptr() as *mut _,
483                b"notify::shortcut-folders\0".as_ptr() as *const _,
484                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
485                    notify_shortcut_folders_trampoline::<Self, F> as *const (),
486                )),
487                Box_::into_raw(f),
488            )
489        }
490    }
491}
492
493impl<O: IsA<FileChooser>> FileChooserExt for O {}