Skip to main content

gtk/auto/
font_chooser_dialog.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
5#[cfg(feature = "v3_24")]
6#[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
7use crate::FontChooserLevel;
8use crate::{
9    Align, Application, Bin, Buildable, Container, Dialog, FontChooser, ResizeMode, Widget, Window,
10    WindowPosition, WindowType,
11};
12use glib::{prelude::*, translate::*};
13use std::fmt;
14
15glib::wrapper! {
16    /// The [`FontChooserDialog`][crate::FontChooserDialog] widget is a dialog for selecting a font.
17    /// It implements the [`FontChooser`][crate::FontChooser] interface.
18    ///
19    /// # GtkFontChooserDialog as GtkBuildable
20    ///
21    /// The GtkFontChooserDialog implementation of the [`Buildable`][crate::Buildable]
22    /// interface exposes the buttons with the names “select_button”
23    /// and “cancel_button”.
24    ///
25    /// # Implements
26    ///
27    /// [`DialogExt`][trait@crate::prelude::DialogExt], [`GtkWindowExt`][trait@crate::prelude::GtkWindowExt], [`BinExt`][trait@crate::prelude::BinExt], [`ContainerExt`][trait@crate::prelude::ContainerExt], [`WidgetExt`][trait@crate::prelude::WidgetExt], [`trait@glib::ObjectExt`], [`BuildableExt`][trait@crate::prelude::BuildableExt], [`FontChooserExt`][trait@crate::prelude::FontChooserExt], [`DialogExtManual`][trait@crate::prelude::DialogExtManual], [`GtkWindowExtManual`][trait@crate::prelude::GtkWindowExtManual], [`ContainerExtManual`][trait@crate::prelude::ContainerExtManual], [`WidgetExtManual`][trait@crate::prelude::WidgetExtManual], [`BuildableExtManual`][trait@crate::prelude::BuildableExtManual]
28    #[doc(alias = "GtkFontChooserDialog")]
29    pub struct FontChooserDialog(Object<ffi::GtkFontChooserDialog, ffi::GtkFontChooserDialogClass>) @extends Dialog, Window, Bin, Container, Widget, @implements Buildable, FontChooser;
30
31    match fn {
32        type_ => || ffi::gtk_font_chooser_dialog_get_type(),
33    }
34}
35
36impl FontChooserDialog {
37    pub const NONE: Option<&'static FontChooserDialog> = None;
38
39    /// Creates a new [`FontChooserDialog`][crate::FontChooserDialog].
40    /// ## `title`
41    /// Title of the dialog, or [`None`]
42    /// ## `parent`
43    /// Transient parent of the dialog, or [`None`]
44    ///
45    /// # Returns
46    ///
47    /// a new [`FontChooserDialog`][crate::FontChooserDialog]
48    #[doc(alias = "gtk_font_chooser_dialog_new")]
49    pub fn new(title: Option<&str>, parent: Option<&impl IsA<Window>>) -> FontChooserDialog {
50        assert_initialized_main_thread!();
51        unsafe {
52            Widget::from_glib_none(ffi::gtk_font_chooser_dialog_new(
53                title.to_glib_none().0,
54                parent.map(|p| p.as_ref()).to_glib_none().0,
55            ))
56            .unsafe_cast()
57        }
58    }
59
60    // rustdoc-stripper-ignore-next
61    /// Creates a new builder-pattern struct instance to construct [`FontChooserDialog`] objects.
62    ///
63    /// This method returns an instance of [`FontChooserDialogBuilder`](crate::builders::FontChooserDialogBuilder) which can be used to create [`FontChooserDialog`] objects.
64    pub fn builder() -> FontChooserDialogBuilder {
65        FontChooserDialogBuilder::new()
66    }
67}
68
69impl Default for FontChooserDialog {
70    fn default() -> Self {
71        glib::object::Object::new::<Self>()
72    }
73}
74
75// rustdoc-stripper-ignore-next
76/// A [builder-pattern] type to construct [`FontChooserDialog`] objects.
77///
78/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
79#[must_use = "The builder must be built to be used"]
80pub struct FontChooserDialogBuilder {
81    builder: glib::object::ObjectBuilder<'static, FontChooserDialog>,
82}
83
84impl FontChooserDialogBuilder {
85    fn new() -> Self {
86        Self {
87            builder: glib::object::Object::builder(),
88        }
89    }
90
91    /// [`true`] if the dialog uses a [`HeaderBar`][crate::HeaderBar] for action buttons
92    /// instead of the action-area.
93    ///
94    /// For technical reasons, this property is declared as an integer
95    /// property, but you should only set it to [`true`] or [`false`].
96    pub fn use_header_bar(self, use_header_bar: i32) -> Self {
97        Self {
98            builder: self.builder.property("use-header-bar", use_header_bar),
99        }
100    }
101
102    /// Whether the window should receive the input focus.
103    pub fn accept_focus(self, accept_focus: bool) -> Self {
104        Self {
105            builder: self.builder.property("accept-focus", accept_focus),
106        }
107    }
108
109    /// The [`Application`][crate::Application] associated with the window.
110    ///
111    /// The application will be kept alive for at least as long as it
112    /// has any windows associated with it (see [`ApplicationExtManual::hold()`][crate::gio::prelude::ApplicationExtManual::hold()]
113    /// for a way to keep it alive without windows).
114    ///
115    /// Normally, the connection between the application and the window
116    /// will remain until the window is destroyed, but you can explicitly
117    /// remove it by setting the :application property to [`None`].
118    pub fn application(self, application: &impl IsA<Application>) -> Self {
119        Self {
120            builder: self
121                .builder
122                .property("application", application.clone().upcast()),
123        }
124    }
125
126    /// The widget to which this window is attached.
127    /// See [`GtkWindowExt::set_attached_to()`][crate::prelude::GtkWindowExt::set_attached_to()].
128    ///
129    /// Examples of places where specifying this relation is useful are
130    /// for instance a [`Menu`][crate::Menu] created by a [`ComboBox`][crate::ComboBox], a completion
131    /// popup window created by [`Entry`][crate::Entry] or a typeahead search entry
132    /// created by [`TreeView`][crate::TreeView].
133    pub fn attached_to(self, attached_to: &impl IsA<Widget>) -> Self {
134        Self {
135            builder: self
136                .builder
137                .property("attached-to", attached_to.clone().upcast()),
138        }
139    }
140
141    /// Whether the window should be decorated by the window manager.
142    pub fn decorated(self, decorated: bool) -> Self {
143        Self {
144            builder: self.builder.property("decorated", decorated),
145        }
146    }
147
148    pub fn default_height(self, default_height: i32) -> Self {
149        Self {
150            builder: self.builder.property("default-height", default_height),
151        }
152    }
153
154    pub fn default_width(self, default_width: i32) -> Self {
155        Self {
156            builder: self.builder.property("default-width", default_width),
157        }
158    }
159
160    /// Whether the window frame should have a close button.
161    pub fn deletable(self, deletable: bool) -> Self {
162        Self {
163            builder: self.builder.property("deletable", deletable),
164        }
165    }
166
167    pub fn destroy_with_parent(self, destroy_with_parent: bool) -> Self {
168        Self {
169            builder: self
170                .builder
171                .property("destroy-with-parent", destroy_with_parent),
172        }
173    }
174
175    /// Whether the window should receive the input focus when mapped.
176    pub fn focus_on_map(self, focus_on_map: bool) -> Self {
177        Self {
178            builder: self.builder.property("focus-on-map", focus_on_map),
179        }
180    }
181
182    /// Whether 'focus rectangles' are currently visible in this window.
183    ///
184    /// This property is maintained by GTK+ based on user input
185    /// and should not be set by applications.
186    pub fn focus_visible(self, focus_visible: bool) -> Self {
187        Self {
188            builder: self.builder.property("focus-visible", focus_visible),
189        }
190    }
191
192    /// The window gravity of the window. See [`GtkWindowExt::move_()`][crate::prelude::GtkWindowExt::move_()] and [`gdk::Gravity`][crate::gdk::Gravity] for
193    /// more details about window gravity.
194    pub fn gravity(self, gravity: gdk::Gravity) -> Self {
195        Self {
196            builder: self.builder.property("gravity", gravity),
197        }
198    }
199
200    /// Whether the titlebar should be hidden during maximization.
201    pub fn hide_titlebar_when_maximized(self, hide_titlebar_when_maximized: bool) -> Self {
202        Self {
203            builder: self
204                .builder
205                .property("hide-titlebar-when-maximized", hide_titlebar_when_maximized),
206        }
207    }
208
209    pub fn icon(self, icon: &gdk_pixbuf::Pixbuf) -> Self {
210        Self {
211            builder: self.builder.property("icon", icon.clone()),
212        }
213    }
214
215    /// The :icon-name property specifies the name of the themed icon to
216    /// use as the window icon. See [`IconTheme`][crate::IconTheme] for more details.
217    pub fn icon_name(self, icon_name: impl Into<glib::GString>) -> Self {
218        Self {
219            builder: self.builder.property("icon-name", icon_name.into()),
220        }
221    }
222
223    /// Whether mnemonics are currently visible in this window.
224    ///
225    /// This property is maintained by GTK+ based on user input,
226    /// and should not be set by applications.
227    pub fn mnemonics_visible(self, mnemonics_visible: bool) -> Self {
228        Self {
229            builder: self
230                .builder
231                .property("mnemonics-visible", mnemonics_visible),
232        }
233    }
234
235    pub fn modal(self, modal: bool) -> Self {
236        Self {
237            builder: self.builder.property("modal", modal),
238        }
239    }
240
241    pub fn resizable(self, resizable: bool) -> Self {
242        Self {
243            builder: self.builder.property("resizable", resizable),
244        }
245    }
246
247    pub fn role(self, role: impl Into<glib::GString>) -> Self {
248        Self {
249            builder: self.builder.property("role", role.into()),
250        }
251    }
252
253    pub fn screen(self, screen: &gdk::Screen) -> Self {
254        Self {
255            builder: self.builder.property("screen", screen.clone()),
256        }
257    }
258
259    pub fn skip_pager_hint(self, skip_pager_hint: bool) -> Self {
260        Self {
261            builder: self.builder.property("skip-pager-hint", skip_pager_hint),
262        }
263    }
264
265    pub fn skip_taskbar_hint(self, skip_taskbar_hint: bool) -> Self {
266        Self {
267            builder: self
268                .builder
269                .property("skip-taskbar-hint", skip_taskbar_hint),
270        }
271    }
272
273    /// The :startup-id is a write-only property for setting window's
274    /// startup notification identifier. See [`GtkWindowExt::set_startup_id()`][crate::prelude::GtkWindowExt::set_startup_id()]
275    /// for more details.
276    pub fn startup_id(self, startup_id: impl Into<glib::GString>) -> Self {
277        Self {
278            builder: self.builder.property("startup-id", startup_id.into()),
279        }
280    }
281
282    pub fn title(self, title: impl Into<glib::GString>) -> Self {
283        Self {
284            builder: self.builder.property("title", title.into()),
285        }
286    }
287
288    /// The transient parent of the window. See [`GtkWindowExt::set_transient_for()`][crate::prelude::GtkWindowExt::set_transient_for()] for
289    /// more details about transient windows.
290    pub fn transient_for(self, transient_for: &impl IsA<Window>) -> Self {
291        Self {
292            builder: self
293                .builder
294                .property("transient-for", transient_for.clone().upcast()),
295        }
296    }
297
298    pub fn type_(self, type_: WindowType) -> Self {
299        Self {
300            builder: self.builder.property("type", type_),
301        }
302    }
303
304    pub fn type_hint(self, type_hint: gdk::WindowTypeHint) -> Self {
305        Self {
306            builder: self.builder.property("type-hint", type_hint),
307        }
308    }
309
310    pub fn urgency_hint(self, urgency_hint: bool) -> Self {
311        Self {
312            builder: self.builder.property("urgency-hint", urgency_hint),
313        }
314    }
315
316    pub fn window_position(self, window_position: WindowPosition) -> Self {
317        Self {
318            builder: self.builder.property("window-position", window_position),
319        }
320    }
321
322    pub fn border_width(self, border_width: u32) -> Self {
323        Self {
324            builder: self.builder.property("border-width", border_width),
325        }
326    }
327
328    pub fn child(self, child: &impl IsA<Widget>) -> Self {
329        Self {
330            builder: self.builder.property("child", child.clone().upcast()),
331        }
332    }
333
334    pub fn resize_mode(self, resize_mode: ResizeMode) -> Self {
335        Self {
336            builder: self.builder.property("resize-mode", resize_mode),
337        }
338    }
339
340    pub fn app_paintable(self, app_paintable: bool) -> Self {
341        Self {
342            builder: self.builder.property("app-paintable", app_paintable),
343        }
344    }
345
346    pub fn can_default(self, can_default: bool) -> Self {
347        Self {
348            builder: self.builder.property("can-default", can_default),
349        }
350    }
351
352    pub fn can_focus(self, can_focus: bool) -> Self {
353        Self {
354            builder: self.builder.property("can-focus", can_focus),
355        }
356    }
357
358    pub fn events(self, events: gdk::EventMask) -> Self {
359        Self {
360            builder: self.builder.property("events", events),
361        }
362    }
363
364    /// Whether to expand in both directions. Setting this sets both [`hexpand`][struct@crate::Widget#hexpand] and [`vexpand`][struct@crate::Widget#vexpand]
365    pub fn expand(self, expand: bool) -> Self {
366        Self {
367            builder: self.builder.property("expand", expand),
368        }
369    }
370
371    /// Whether the widget should grab focus when it is clicked with the mouse.
372    ///
373    /// This property is only relevant for widgets that can take focus.
374    ///
375    /// Before 3.20, several widgets (GtkButton, GtkFileChooserButton,
376    /// GtkComboBox) implemented this property individually.
377    pub fn focus_on_click(self, focus_on_click: bool) -> Self {
378        Self {
379            builder: self.builder.property("focus-on-click", focus_on_click),
380        }
381    }
382
383    /// How to distribute horizontal space if widget gets extra space, see [`Align`][crate::Align]
384    pub fn halign(self, halign: Align) -> Self {
385        Self {
386            builder: self.builder.property("halign", halign),
387        }
388    }
389
390    pub fn has_default(self, has_default: bool) -> Self {
391        Self {
392            builder: self.builder.property("has-default", has_default),
393        }
394    }
395
396    pub fn has_focus(self, has_focus: bool) -> Self {
397        Self {
398            builder: self.builder.property("has-focus", has_focus),
399        }
400    }
401
402    /// Enables or disables the emission of [`query-tooltip`][struct@crate::Widget#query-tooltip] on `widget`.
403    /// A value of [`true`] indicates that `widget` can have a tooltip, in this case
404    /// the widget will be queried using [`query-tooltip`][struct@crate::Widget#query-tooltip] to determine
405    /// whether it will provide a tooltip or not.
406    ///
407    /// Note that setting this property to [`true`] for the first time will change
408    /// the event masks of the GdkWindows of this widget to include leave-notify
409    /// and motion-notify events. This cannot and will not be undone when the
410    /// property is set to [`false`] again.
411    pub fn has_tooltip(self, has_tooltip: bool) -> Self {
412        Self {
413            builder: self.builder.property("has-tooltip", has_tooltip),
414        }
415    }
416
417    pub fn height_request(self, height_request: i32) -> Self {
418        Self {
419            builder: self.builder.property("height-request", height_request),
420        }
421    }
422
423    /// Whether to expand horizontally. See [`WidgetExt::set_hexpand()`][crate::prelude::WidgetExt::set_hexpand()].
424    pub fn hexpand(self, hexpand: bool) -> Self {
425        Self {
426            builder: self.builder.property("hexpand", hexpand),
427        }
428    }
429
430    /// Whether to use the [`hexpand`][struct@crate::Widget#hexpand] property. See [`WidgetExt::is_hexpand_set()`][crate::prelude::WidgetExt::is_hexpand_set()].
431    pub fn hexpand_set(self, hexpand_set: bool) -> Self {
432        Self {
433            builder: self.builder.property("hexpand-set", hexpand_set),
434        }
435    }
436
437    pub fn is_focus(self, is_focus: bool) -> Self {
438        Self {
439            builder: self.builder.property("is-focus", is_focus),
440        }
441    }
442
443    /// Sets all four sides' margin at once. If read, returns max
444    /// margin on any side.
445    pub fn margin(self, margin: i32) -> Self {
446        Self {
447            builder: self.builder.property("margin", margin),
448        }
449    }
450
451    /// Margin on bottom side of widget.
452    ///
453    /// This property adds margin outside of the widget's normal size
454    /// request, the margin will be added in addition to the size from
455    /// [`WidgetExt::set_size_request()`][crate::prelude::WidgetExt::set_size_request()] for example.
456    pub fn margin_bottom(self, margin_bottom: i32) -> Self {
457        Self {
458            builder: self.builder.property("margin-bottom", margin_bottom),
459        }
460    }
461
462    /// Margin on end of widget, horizontally. This property supports
463    /// left-to-right and right-to-left text directions.
464    ///
465    /// This property adds margin outside of the widget's normal size
466    /// request, the margin will be added in addition to the size from
467    /// [`WidgetExt::set_size_request()`][crate::prelude::WidgetExt::set_size_request()] for example.
468    pub fn margin_end(self, margin_end: i32) -> Self {
469        Self {
470            builder: self.builder.property("margin-end", margin_end),
471        }
472    }
473
474    /// Margin on start of widget, horizontally. This property supports
475    /// left-to-right and right-to-left text directions.
476    ///
477    /// This property adds margin outside of the widget's normal size
478    /// request, the margin will be added in addition to the size from
479    /// [`WidgetExt::set_size_request()`][crate::prelude::WidgetExt::set_size_request()] for example.
480    pub fn margin_start(self, margin_start: i32) -> Self {
481        Self {
482            builder: self.builder.property("margin-start", margin_start),
483        }
484    }
485
486    /// Margin on top side of widget.
487    ///
488    /// This property adds margin outside of the widget's normal size
489    /// request, the margin will be added in addition to the size from
490    /// [`WidgetExt::set_size_request()`][crate::prelude::WidgetExt::set_size_request()] for example.
491    pub fn margin_top(self, margin_top: i32) -> Self {
492        Self {
493            builder: self.builder.property("margin-top", margin_top),
494        }
495    }
496
497    pub fn name(self, name: impl Into<glib::GString>) -> Self {
498        Self {
499            builder: self.builder.property("name", name.into()),
500        }
501    }
502
503    pub fn no_show_all(self, no_show_all: bool) -> Self {
504        Self {
505            builder: self.builder.property("no-show-all", no_show_all),
506        }
507    }
508
509    /// The requested opacity of the widget. See [`WidgetExt::set_opacity()`][crate::prelude::WidgetExt::set_opacity()] for
510    /// more details about window opacity.
511    ///
512    /// Before 3.8 this was only available in GtkWindow
513    pub fn opacity(self, opacity: f64) -> Self {
514        Self {
515            builder: self.builder.property("opacity", opacity),
516        }
517    }
518
519    pub fn parent(self, parent: &impl IsA<Container>) -> Self {
520        Self {
521            builder: self.builder.property("parent", parent.clone().upcast()),
522        }
523    }
524
525    pub fn receives_default(self, receives_default: bool) -> Self {
526        Self {
527            builder: self.builder.property("receives-default", receives_default),
528        }
529    }
530
531    pub fn sensitive(self, sensitive: bool) -> Self {
532        Self {
533            builder: self.builder.property("sensitive", sensitive),
534        }
535    }
536
537    /// Sets the text of tooltip to be the given string, which is marked up
538    /// with the [Pango text markup language][PangoMarkupFormat].
539    /// Also see [`Tooltip::set_markup()`][crate::Tooltip::set_markup()].
540    ///
541    /// This is a convenience property which will take care of getting the
542    /// tooltip shown if the given string is not [`None`]: [`has-tooltip`][struct@crate::Widget#has-tooltip]
543    /// will automatically be set to [`true`] and there will be taken care of
544    /// [`query-tooltip`][struct@crate::Widget#query-tooltip] in the default signal handler.
545    ///
546    /// Note that if both [`tooltip-text`][struct@crate::Widget#tooltip-text] and [`tooltip-markup`][struct@crate::Widget#tooltip-markup]
547    /// are set, the last one wins.
548    pub fn tooltip_markup(self, tooltip_markup: impl Into<glib::GString>) -> Self {
549        Self {
550            builder: self
551                .builder
552                .property("tooltip-markup", tooltip_markup.into()),
553        }
554    }
555
556    /// Sets the text of tooltip to be the given string.
557    ///
558    /// Also see [`Tooltip::set_text()`][crate::Tooltip::set_text()].
559    ///
560    /// This is a convenience property which will take care of getting the
561    /// tooltip shown if the given string is not [`None`]: [`has-tooltip`][struct@crate::Widget#has-tooltip]
562    /// will automatically be set to [`true`] and there will be taken care of
563    /// [`query-tooltip`][struct@crate::Widget#query-tooltip] in the default signal handler.
564    ///
565    /// Note that if both [`tooltip-text`][struct@crate::Widget#tooltip-text] and [`tooltip-markup`][struct@crate::Widget#tooltip-markup]
566    /// are set, the last one wins.
567    pub fn tooltip_text(self, tooltip_text: impl Into<glib::GString>) -> Self {
568        Self {
569            builder: self.builder.property("tooltip-text", tooltip_text.into()),
570        }
571    }
572
573    /// How to distribute vertical space if widget gets extra space, see [`Align`][crate::Align]
574    pub fn valign(self, valign: Align) -> Self {
575        Self {
576            builder: self.builder.property("valign", valign),
577        }
578    }
579
580    /// Whether to expand vertically. See [`WidgetExt::set_vexpand()`][crate::prelude::WidgetExt::set_vexpand()].
581    pub fn vexpand(self, vexpand: bool) -> Self {
582        Self {
583            builder: self.builder.property("vexpand", vexpand),
584        }
585    }
586
587    /// Whether to use the [`vexpand`][struct@crate::Widget#vexpand] property. See [`WidgetExt::is_vexpand_set()`][crate::prelude::WidgetExt::is_vexpand_set()].
588    pub fn vexpand_set(self, vexpand_set: bool) -> Self {
589        Self {
590            builder: self.builder.property("vexpand-set", vexpand_set),
591        }
592    }
593
594    pub fn visible(self, visible: bool) -> Self {
595        Self {
596            builder: self.builder.property("visible", visible),
597        }
598    }
599
600    pub fn width_request(self, width_request: i32) -> Self {
601        Self {
602            builder: self.builder.property("width-request", width_request),
603        }
604    }
605
606    /// The font description as a string, e.g. "Sans Italic 12".
607    pub fn font(self, font: impl Into<glib::GString>) -> Self {
608        Self {
609            builder: self.builder.property("font", font.into()),
610        }
611    }
612
613    /// The font description as a [`pango::FontDescription`][crate::pango::FontDescription].
614    pub fn font_desc(self, font_desc: &pango::FontDescription) -> Self {
615        Self {
616            builder: self.builder.property("font-desc", font_desc),
617        }
618    }
619
620    /// The language for which the [`font-features`][struct@crate::FontChooser#font-features] were
621    /// selected, in a format that is compatible with CSS and with Pango
622    /// attributes.
623    #[cfg(feature = "v3_24")]
624    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
625    pub fn language(self, language: impl Into<glib::GString>) -> Self {
626        Self {
627            builder: self.builder.property("language", language.into()),
628        }
629    }
630
631    /// The level of granularity to offer for selecting fonts.
632    #[cfg(feature = "v3_24")]
633    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
634    pub fn level(self, level: FontChooserLevel) -> Self {
635        Self {
636            builder: self.builder.property("level", level),
637        }
638    }
639
640    /// The string with which to preview the font.
641    pub fn preview_text(self, preview_text: impl Into<glib::GString>) -> Self {
642        Self {
643            builder: self.builder.property("preview-text", preview_text.into()),
644        }
645    }
646
647    /// Whether to show an entry to change the preview text.
648    pub fn show_preview_entry(self, show_preview_entry: bool) -> Self {
649        Self {
650            builder: self
651                .builder
652                .property("show-preview-entry", show_preview_entry),
653        }
654    }
655
656    // rustdoc-stripper-ignore-next
657    /// Build the [`FontChooserDialog`].
658    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
659    pub fn build(self) -> FontChooserDialog {
660        self.builder.build()
661    }
662}
663
664impl fmt::Display for FontChooserDialog {
665    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
666        f.write_str("FontChooserDialog")
667    }
668}