1#![allow(deprecated)]
5
6use crate::{
7 ffi, Accessible, AccessibleRole, Align, Buildable, ConstraintTarget, FileChooser,
8 FileChooserAction, FileFilter, LayoutManager, Overflow, Widget,
9};
10use glib::{
11 object::ObjectType as _,
12 prelude::*,
13 signal::{connect_raw, SignalHandlerId},
14 translate::*,
15};
16use std::boxed::Box as Box_;
17
18glib::wrapper! {
19 #[doc(alias = "GtkFileChooserWidget")]
20 pub struct FileChooserWidget(Object<ffi::GtkFileChooserWidget>) @extends Widget, @implements Accessible, Buildable, ConstraintTarget, FileChooser;
21
22 match fn {
23 type_ => || ffi::gtk_file_chooser_widget_get_type(),
24 }
25}
26
27impl FileChooserWidget {
28 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
29 #[allow(deprecated)]
30 #[doc(alias = "gtk_file_chooser_widget_new")]
31 pub fn new(action: FileChooserAction) -> FileChooserWidget {
32 assert_initialized_main_thread!();
33 unsafe {
34 Widget::from_glib_none(ffi::gtk_file_chooser_widget_new(action.into_glib()))
35 .unsafe_cast()
36 }
37 }
38
39 pub fn builder() -> FileChooserWidgetBuilder {
44 FileChooserWidgetBuilder::new()
45 }
46
47 #[doc(alias = "search-mode")]
48 pub fn is_search_mode(&self) -> bool {
49 ObjectExt::property(self, "search-mode")
50 }
51
52 #[doc(alias = "search-mode")]
53 pub fn set_search_mode(&self, search_mode: bool) {
54 ObjectExt::set_property(self, "search-mode", search_mode)
55 }
56
57 #[cfg(feature = "v4_10")]
58 #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
59 #[doc(alias = "show-time")]
60 pub fn shows_time(&self) -> bool {
61 ObjectExt::property(self, "show-time")
62 }
63
64 pub fn subtitle(&self) -> Option<glib::GString> {
65 ObjectExt::property(self, "subtitle")
66 }
67
68 #[doc(alias = "desktop-folder")]
69 pub fn connect_desktop_folder<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
70 unsafe extern "C" fn desktop_folder_trampoline<F: Fn(&FileChooserWidget) + 'static>(
71 this: *mut ffi::GtkFileChooserWidget,
72 f: glib::ffi::gpointer,
73 ) {
74 let f: &F = &*(f as *const F);
75 f(&from_glib_borrow(this))
76 }
77 unsafe {
78 let f: Box_<F> = Box_::new(f);
79 connect_raw(
80 self.as_ptr() as *mut _,
81 c"desktop-folder".as_ptr() as *const _,
82 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
83 desktop_folder_trampoline::<F> as *const (),
84 )),
85 Box_::into_raw(f),
86 )
87 }
88 }
89
90 pub fn emit_desktop_folder(&self) {
91 self.emit_by_name::<()>("desktop-folder", &[]);
92 }
93
94 #[doc(alias = "down-folder")]
95 pub fn connect_down_folder<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
96 unsafe extern "C" fn down_folder_trampoline<F: Fn(&FileChooserWidget) + 'static>(
97 this: *mut ffi::GtkFileChooserWidget,
98 f: glib::ffi::gpointer,
99 ) {
100 let f: &F = &*(f as *const F);
101 f(&from_glib_borrow(this))
102 }
103 unsafe {
104 let f: Box_<F> = Box_::new(f);
105 connect_raw(
106 self.as_ptr() as *mut _,
107 c"down-folder".as_ptr() as *const _,
108 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
109 down_folder_trampoline::<F> as *const (),
110 )),
111 Box_::into_raw(f),
112 )
113 }
114 }
115
116 pub fn emit_down_folder(&self) {
117 self.emit_by_name::<()>("down-folder", &[]);
118 }
119
120 #[doc(alias = "home-folder")]
121 pub fn connect_home_folder<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
122 unsafe extern "C" fn home_folder_trampoline<F: Fn(&FileChooserWidget) + 'static>(
123 this: *mut ffi::GtkFileChooserWidget,
124 f: glib::ffi::gpointer,
125 ) {
126 let f: &F = &*(f as *const F);
127 f(&from_glib_borrow(this))
128 }
129 unsafe {
130 let f: Box_<F> = Box_::new(f);
131 connect_raw(
132 self.as_ptr() as *mut _,
133 c"home-folder".as_ptr() as *const _,
134 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
135 home_folder_trampoline::<F> as *const (),
136 )),
137 Box_::into_raw(f),
138 )
139 }
140 }
141
142 pub fn emit_home_folder(&self) {
143 self.emit_by_name::<()>("home-folder", &[]);
144 }
145
146 #[doc(alias = "location-popup")]
147 pub fn connect_location_popup<F: Fn(&Self, &str) + 'static>(&self, f: F) -> SignalHandlerId {
148 unsafe extern "C" fn location_popup_trampoline<
149 F: Fn(&FileChooserWidget, &str) + 'static,
150 >(
151 this: *mut ffi::GtkFileChooserWidget,
152 path: *mut std::ffi::c_char,
153 f: glib::ffi::gpointer,
154 ) {
155 let f: &F = &*(f as *const F);
156 f(
157 &from_glib_borrow(this),
158 &glib::GString::from_glib_borrow(path),
159 )
160 }
161 unsafe {
162 let f: Box_<F> = Box_::new(f);
163 connect_raw(
164 self.as_ptr() as *mut _,
165 c"location-popup".as_ptr() as *const _,
166 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
167 location_popup_trampoline::<F> as *const (),
168 )),
169 Box_::into_raw(f),
170 )
171 }
172 }
173
174 pub fn emit_location_popup(&self, path: &str) {
175 self.emit_by_name::<()>("location-popup", &[&path]);
176 }
177
178 #[doc(alias = "location-popup-on-paste")]
179 pub fn connect_location_popup_on_paste<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
180 unsafe extern "C" fn location_popup_on_paste_trampoline<
181 F: Fn(&FileChooserWidget) + 'static,
182 >(
183 this: *mut ffi::GtkFileChooserWidget,
184 f: glib::ffi::gpointer,
185 ) {
186 let f: &F = &*(f as *const F);
187 f(&from_glib_borrow(this))
188 }
189 unsafe {
190 let f: Box_<F> = Box_::new(f);
191 connect_raw(
192 self.as_ptr() as *mut _,
193 c"location-popup-on-paste".as_ptr() as *const _,
194 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
195 location_popup_on_paste_trampoline::<F> as *const (),
196 )),
197 Box_::into_raw(f),
198 )
199 }
200 }
201
202 pub fn emit_location_popup_on_paste(&self) {
203 self.emit_by_name::<()>("location-popup-on-paste", &[]);
204 }
205
206 #[doc(alias = "location-toggle-popup")]
207 pub fn connect_location_toggle_popup<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
208 unsafe extern "C" fn location_toggle_popup_trampoline<
209 F: Fn(&FileChooserWidget) + 'static,
210 >(
211 this: *mut ffi::GtkFileChooserWidget,
212 f: glib::ffi::gpointer,
213 ) {
214 let f: &F = &*(f as *const F);
215 f(&from_glib_borrow(this))
216 }
217 unsafe {
218 let f: Box_<F> = Box_::new(f);
219 connect_raw(
220 self.as_ptr() as *mut _,
221 c"location-toggle-popup".as_ptr() as *const _,
222 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
223 location_toggle_popup_trampoline::<F> as *const (),
224 )),
225 Box_::into_raw(f),
226 )
227 }
228 }
229
230 pub fn emit_location_toggle_popup(&self) {
231 self.emit_by_name::<()>("location-toggle-popup", &[]);
232 }
233
234 #[doc(alias = "places-shortcut")]
235 pub fn connect_places_shortcut<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
236 unsafe extern "C" fn places_shortcut_trampoline<F: Fn(&FileChooserWidget) + 'static>(
237 this: *mut ffi::GtkFileChooserWidget,
238 f: glib::ffi::gpointer,
239 ) {
240 let f: &F = &*(f as *const F);
241 f(&from_glib_borrow(this))
242 }
243 unsafe {
244 let f: Box_<F> = Box_::new(f);
245 connect_raw(
246 self.as_ptr() as *mut _,
247 c"places-shortcut".as_ptr() as *const _,
248 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
249 places_shortcut_trampoline::<F> as *const (),
250 )),
251 Box_::into_raw(f),
252 )
253 }
254 }
255
256 pub fn emit_places_shortcut(&self) {
257 self.emit_by_name::<()>("places-shortcut", &[]);
258 }
259
260 #[doc(alias = "quick-bookmark")]
261 pub fn connect_quick_bookmark<F: Fn(&Self, i32) + 'static>(&self, f: F) -> SignalHandlerId {
262 unsafe extern "C" fn quick_bookmark_trampoline<F: Fn(&FileChooserWidget, i32) + 'static>(
263 this: *mut ffi::GtkFileChooserWidget,
264 bookmark_index: std::ffi::c_int,
265 f: glib::ffi::gpointer,
266 ) {
267 let f: &F = &*(f as *const F);
268 f(&from_glib_borrow(this), bookmark_index)
269 }
270 unsafe {
271 let f: Box_<F> = Box_::new(f);
272 connect_raw(
273 self.as_ptr() as *mut _,
274 c"quick-bookmark".as_ptr() as *const _,
275 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
276 quick_bookmark_trampoline::<F> as *const (),
277 )),
278 Box_::into_raw(f),
279 )
280 }
281 }
282
283 pub fn emit_quick_bookmark(&self, bookmark_index: i32) {
284 self.emit_by_name::<()>("quick-bookmark", &[&bookmark_index]);
285 }
286
287 #[doc(alias = "recent-shortcut")]
288 pub fn connect_recent_shortcut<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
289 unsafe extern "C" fn recent_shortcut_trampoline<F: Fn(&FileChooserWidget) + 'static>(
290 this: *mut ffi::GtkFileChooserWidget,
291 f: glib::ffi::gpointer,
292 ) {
293 let f: &F = &*(f as *const F);
294 f(&from_glib_borrow(this))
295 }
296 unsafe {
297 let f: Box_<F> = Box_::new(f);
298 connect_raw(
299 self.as_ptr() as *mut _,
300 c"recent-shortcut".as_ptr() as *const _,
301 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
302 recent_shortcut_trampoline::<F> as *const (),
303 )),
304 Box_::into_raw(f),
305 )
306 }
307 }
308
309 pub fn emit_recent_shortcut(&self) {
310 self.emit_by_name::<()>("recent-shortcut", &[]);
311 }
312
313 #[doc(alias = "search-shortcut")]
314 pub fn connect_search_shortcut<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
315 unsafe extern "C" fn search_shortcut_trampoline<F: Fn(&FileChooserWidget) + 'static>(
316 this: *mut ffi::GtkFileChooserWidget,
317 f: glib::ffi::gpointer,
318 ) {
319 let f: &F = &*(f as *const F);
320 f(&from_glib_borrow(this))
321 }
322 unsafe {
323 let f: Box_<F> = Box_::new(f);
324 connect_raw(
325 self.as_ptr() as *mut _,
326 c"search-shortcut".as_ptr() as *const _,
327 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
328 search_shortcut_trampoline::<F> as *const (),
329 )),
330 Box_::into_raw(f),
331 )
332 }
333 }
334
335 pub fn emit_search_shortcut(&self) {
336 self.emit_by_name::<()>("search-shortcut", &[]);
337 }
338
339 #[doc(alias = "show-hidden")]
340 pub fn connect_show_hidden<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
341 unsafe extern "C" fn show_hidden_trampoline<F: Fn(&FileChooserWidget) + 'static>(
342 this: *mut ffi::GtkFileChooserWidget,
343 f: glib::ffi::gpointer,
344 ) {
345 let f: &F = &*(f as *const F);
346 f(&from_glib_borrow(this))
347 }
348 unsafe {
349 let f: Box_<F> = Box_::new(f);
350 connect_raw(
351 self.as_ptr() as *mut _,
352 c"show-hidden".as_ptr() as *const _,
353 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
354 show_hidden_trampoline::<F> as *const (),
355 )),
356 Box_::into_raw(f),
357 )
358 }
359 }
360
361 pub fn emit_show_hidden(&self) {
362 self.emit_by_name::<()>("show-hidden", &[]);
363 }
364
365 #[doc(alias = "up-folder")]
366 pub fn connect_up_folder<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
367 unsafe extern "C" fn up_folder_trampoline<F: Fn(&FileChooserWidget) + 'static>(
368 this: *mut ffi::GtkFileChooserWidget,
369 f: glib::ffi::gpointer,
370 ) {
371 let f: &F = &*(f as *const F);
372 f(&from_glib_borrow(this))
373 }
374 unsafe {
375 let f: Box_<F> = Box_::new(f);
376 connect_raw(
377 self.as_ptr() as *mut _,
378 c"up-folder".as_ptr() as *const _,
379 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
380 up_folder_trampoline::<F> as *const (),
381 )),
382 Box_::into_raw(f),
383 )
384 }
385 }
386
387 pub fn emit_up_folder(&self) {
388 self.emit_by_name::<()>("up-folder", &[]);
389 }
390
391 #[doc(alias = "search-mode")]
392 pub fn connect_search_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
393 unsafe extern "C" fn notify_search_mode_trampoline<F: Fn(&FileChooserWidget) + 'static>(
394 this: *mut ffi::GtkFileChooserWidget,
395 _param_spec: glib::ffi::gpointer,
396 f: glib::ffi::gpointer,
397 ) {
398 let f: &F = &*(f as *const F);
399 f(&from_glib_borrow(this))
400 }
401 unsafe {
402 let f: Box_<F> = Box_::new(f);
403 connect_raw(
404 self.as_ptr() as *mut _,
405 c"notify::search-mode".as_ptr() as *const _,
406 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
407 notify_search_mode_trampoline::<F> as *const (),
408 )),
409 Box_::into_raw(f),
410 )
411 }
412 }
413
414 #[cfg(feature = "v4_10")]
415 #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
416 #[doc(alias = "show-time")]
417 pub fn connect_show_time_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
418 unsafe extern "C" fn notify_show_time_trampoline<F: Fn(&FileChooserWidget) + 'static>(
419 this: *mut ffi::GtkFileChooserWidget,
420 _param_spec: glib::ffi::gpointer,
421 f: glib::ffi::gpointer,
422 ) {
423 let f: &F = &*(f as *const F);
424 f(&from_glib_borrow(this))
425 }
426 unsafe {
427 let f: Box_<F> = Box_::new(f);
428 connect_raw(
429 self.as_ptr() as *mut _,
430 c"notify::show-time".as_ptr() as *const _,
431 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
432 notify_show_time_trampoline::<F> as *const (),
433 )),
434 Box_::into_raw(f),
435 )
436 }
437 }
438
439 #[doc(alias = "subtitle")]
440 pub fn connect_subtitle_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
441 unsafe extern "C" fn notify_subtitle_trampoline<F: Fn(&FileChooserWidget) + 'static>(
442 this: *mut ffi::GtkFileChooserWidget,
443 _param_spec: glib::ffi::gpointer,
444 f: glib::ffi::gpointer,
445 ) {
446 let f: &F = &*(f as *const F);
447 f(&from_glib_borrow(this))
448 }
449 unsafe {
450 let f: Box_<F> = Box_::new(f);
451 connect_raw(
452 self.as_ptr() as *mut _,
453 c"notify::subtitle".as_ptr() as *const _,
454 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
455 notify_subtitle_trampoline::<F> as *const (),
456 )),
457 Box_::into_raw(f),
458 )
459 }
460 }
461}
462
463impl Default for FileChooserWidget {
464 fn default() -> Self {
465 glib::object::Object::new::<Self>()
466 }
467}
468
469#[must_use = "The builder must be built to be used"]
474pub struct FileChooserWidgetBuilder {
475 builder: glib::object::ObjectBuilder<'static, FileChooserWidget>,
476}
477
478impl FileChooserWidgetBuilder {
479 fn new() -> Self {
480 Self {
481 builder: glib::object::Object::builder(),
482 }
483 }
484
485 pub fn search_mode(self, search_mode: bool) -> Self {
486 Self {
487 builder: self.builder.property("search-mode", search_mode),
488 }
489 }
490
491 pub fn can_focus(self, can_focus: bool) -> Self {
492 Self {
493 builder: self.builder.property("can-focus", can_focus),
494 }
495 }
496
497 pub fn can_target(self, can_target: bool) -> Self {
498 Self {
499 builder: self.builder.property("can-target", can_target),
500 }
501 }
502
503 pub fn css_classes(self, css_classes: impl Into<glib::StrV>) -> Self {
504 Self {
505 builder: self.builder.property("css-classes", css_classes.into()),
506 }
507 }
508
509 pub fn css_name(self, css_name: impl Into<glib::GString>) -> Self {
510 Self {
511 builder: self.builder.property("css-name", css_name.into()),
512 }
513 }
514
515 pub fn cursor(self, cursor: &gdk::Cursor) -> Self {
516 Self {
517 builder: self.builder.property("cursor", cursor.clone()),
518 }
519 }
520
521 pub fn focus_on_click(self, focus_on_click: bool) -> Self {
522 Self {
523 builder: self.builder.property("focus-on-click", focus_on_click),
524 }
525 }
526
527 pub fn focusable(self, focusable: bool) -> Self {
528 Self {
529 builder: self.builder.property("focusable", focusable),
530 }
531 }
532
533 pub fn halign(self, halign: Align) -> Self {
534 Self {
535 builder: self.builder.property("halign", halign),
536 }
537 }
538
539 pub fn has_tooltip(self, has_tooltip: bool) -> Self {
540 Self {
541 builder: self.builder.property("has-tooltip", has_tooltip),
542 }
543 }
544
545 pub fn height_request(self, height_request: i32) -> Self {
546 Self {
547 builder: self.builder.property("height-request", height_request),
548 }
549 }
550
551 pub fn hexpand(self, hexpand: bool) -> Self {
552 Self {
553 builder: self.builder.property("hexpand", hexpand),
554 }
555 }
556
557 pub fn hexpand_set(self, hexpand_set: bool) -> Self {
558 Self {
559 builder: self.builder.property("hexpand-set", hexpand_set),
560 }
561 }
562
563 pub fn layout_manager(self, layout_manager: &impl IsA<LayoutManager>) -> Self {
564 Self {
565 builder: self
566 .builder
567 .property("layout-manager", layout_manager.clone().upcast()),
568 }
569 }
570
571 #[cfg(feature = "v4_18")]
572 #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
573 pub fn limit_events(self, limit_events: bool) -> Self {
574 Self {
575 builder: self.builder.property("limit-events", limit_events),
576 }
577 }
578
579 pub fn margin_bottom(self, margin_bottom: i32) -> Self {
580 Self {
581 builder: self.builder.property("margin-bottom", margin_bottom),
582 }
583 }
584
585 pub fn margin_end(self, margin_end: i32) -> Self {
586 Self {
587 builder: self.builder.property("margin-end", margin_end),
588 }
589 }
590
591 pub fn margin_start(self, margin_start: i32) -> Self {
592 Self {
593 builder: self.builder.property("margin-start", margin_start),
594 }
595 }
596
597 pub fn margin_top(self, margin_top: i32) -> Self {
598 Self {
599 builder: self.builder.property("margin-top", margin_top),
600 }
601 }
602
603 pub fn name(self, name: impl Into<glib::GString>) -> Self {
604 Self {
605 builder: self.builder.property("name", name.into()),
606 }
607 }
608
609 pub fn opacity(self, opacity: f64) -> Self {
610 Self {
611 builder: self.builder.property("opacity", opacity),
612 }
613 }
614
615 pub fn overflow(self, overflow: Overflow) -> Self {
616 Self {
617 builder: self.builder.property("overflow", overflow),
618 }
619 }
620
621 pub fn receives_default(self, receives_default: bool) -> Self {
622 Self {
623 builder: self.builder.property("receives-default", receives_default),
624 }
625 }
626
627 pub fn sensitive(self, sensitive: bool) -> Self {
628 Self {
629 builder: self.builder.property("sensitive", sensitive),
630 }
631 }
632
633 pub fn tooltip_markup(self, tooltip_markup: impl Into<glib::GString>) -> Self {
634 Self {
635 builder: self
636 .builder
637 .property("tooltip-markup", tooltip_markup.into()),
638 }
639 }
640
641 pub fn tooltip_text(self, tooltip_text: impl Into<glib::GString>) -> Self {
642 Self {
643 builder: self.builder.property("tooltip-text", tooltip_text.into()),
644 }
645 }
646
647 pub fn valign(self, valign: Align) -> Self {
648 Self {
649 builder: self.builder.property("valign", valign),
650 }
651 }
652
653 pub fn vexpand(self, vexpand: bool) -> Self {
654 Self {
655 builder: self.builder.property("vexpand", vexpand),
656 }
657 }
658
659 pub fn vexpand_set(self, vexpand_set: bool) -> Self {
660 Self {
661 builder: self.builder.property("vexpand-set", vexpand_set),
662 }
663 }
664
665 pub fn visible(self, visible: bool) -> Self {
666 Self {
667 builder: self.builder.property("visible", visible),
668 }
669 }
670
671 pub fn width_request(self, width_request: i32) -> Self {
672 Self {
673 builder: self.builder.property("width-request", width_request),
674 }
675 }
676
677 pub fn accessible_role(self, accessible_role: AccessibleRole) -> Self {
678 Self {
679 builder: self.builder.property("accessible-role", accessible_role),
680 }
681 }
682
683 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
684 pub fn action(self, action: FileChooserAction) -> Self {
685 Self {
686 builder: self.builder.property("action", action),
687 }
688 }
689
690 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
691 pub fn create_folders(self, create_folders: bool) -> Self {
692 Self {
693 builder: self.builder.property("create-folders", create_folders),
694 }
695 }
696
697 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
698 pub fn filter(self, filter: &FileFilter) -> Self {
699 Self {
700 builder: self.builder.property("filter", filter.clone()),
701 }
702 }
703
704 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
705 pub fn select_multiple(self, select_multiple: bool) -> Self {
706 Self {
707 builder: self.builder.property("select-multiple", select_multiple),
708 }
709 }
710
711 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
714 pub fn build(self) -> FileChooserWidget {
715 assert_initialized_main_thread!();
716 self.builder.build()
717 }
718}