gtk4/auto/
enums.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
5use crate::ffi;
6use glib::{prelude::*, translate::*};
7
8/// The priority of an accessibility announcement.
9#[cfg(feature = "v4_14")]
10#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
11#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12#[non_exhaustive]
13#[doc(alias = "GtkAccessibleAnnouncementPriority")]
14pub enum AccessibleAnnouncementPriority {
15    /// The announcement is low priority,
16    ///   and might be read only on the user's request.
17    #[doc(alias = "GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_LOW")]
18    Low,
19    /// The announcement is of medium
20    ///   priority, and is usually spoken at the next opportunity, such as at the
21    ///   end of speaking the current sentence or when the user pauses typing.
22    #[doc(alias = "GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_MEDIUM")]
23    Medium,
24    /// The announcement is of high
25    ///   priority, and is usually spoken immediately. Because an interruption
26    ///   might disorient users or cause them to not complete their current task,
27    ///   authors SHOULD NOT use high priority announcements unless the
28    ///   interruption is imperative. An example would be a notification about a
29    ///   critical battery power level.
30    #[doc(alias = "GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_HIGH")]
31    High,
32    #[doc(hidden)]
33    __Unknown(i32),
34}
35
36#[cfg(feature = "v4_14")]
37#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
38#[doc(hidden)]
39impl IntoGlib for AccessibleAnnouncementPriority {
40    type GlibType = ffi::GtkAccessibleAnnouncementPriority;
41
42    #[inline]
43    fn into_glib(self) -> ffi::GtkAccessibleAnnouncementPriority {
44        match self {
45            Self::Low => ffi::GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_LOW,
46            Self::Medium => ffi::GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_MEDIUM,
47            Self::High => ffi::GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_HIGH,
48            Self::__Unknown(value) => value,
49        }
50    }
51}
52
53#[cfg(feature = "v4_14")]
54#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
55#[doc(hidden)]
56impl FromGlib<ffi::GtkAccessibleAnnouncementPriority> for AccessibleAnnouncementPriority {
57    #[inline]
58    unsafe fn from_glib(value: ffi::GtkAccessibleAnnouncementPriority) -> Self {
59        skip_assert_initialized!();
60
61        match value {
62            ffi::GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_LOW => Self::Low,
63            ffi::GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_MEDIUM => Self::Medium,
64            ffi::GTK_ACCESSIBLE_ANNOUNCEMENT_PRIORITY_HIGH => Self::High,
65            value => Self::__Unknown(value),
66        }
67    }
68}
69
70#[cfg(feature = "v4_14")]
71#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
72impl StaticType for AccessibleAnnouncementPriority {
73    #[inline]
74    #[doc(alias = "gtk_accessible_announcement_priority_get_type")]
75    fn static_type() -> glib::Type {
76        unsafe { from_glib(ffi::gtk_accessible_announcement_priority_get_type()) }
77    }
78}
79
80#[cfg(feature = "v4_14")]
81#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
82impl glib::HasParamSpec for AccessibleAnnouncementPriority {
83    type ParamSpec = glib::ParamSpecEnum;
84    type SetValue = Self;
85    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
86
87    fn param_spec_builder() -> Self::BuilderFn {
88        Self::ParamSpec::builder_with_default
89    }
90}
91
92#[cfg(feature = "v4_14")]
93#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
94impl glib::value::ValueType for AccessibleAnnouncementPriority {
95    type Type = Self;
96}
97
98#[cfg(feature = "v4_14")]
99#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
100unsafe impl<'a> glib::value::FromValue<'a> for AccessibleAnnouncementPriority {
101    type Checker = glib::value::GenericValueTypeChecker<Self>;
102
103    #[inline]
104    unsafe fn from_value(value: &'a glib::Value) -> Self {
105        skip_assert_initialized!();
106        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
107    }
108}
109
110#[cfg(feature = "v4_14")]
111#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
112impl ToValue for AccessibleAnnouncementPriority {
113    #[inline]
114    fn to_value(&self) -> glib::Value {
115        let mut value = glib::Value::for_value_type::<Self>();
116        unsafe {
117            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
118        }
119        value
120    }
121
122    #[inline]
123    fn value_type(&self) -> glib::Type {
124        Self::static_type()
125    }
126}
127
128#[cfg(feature = "v4_14")]
129#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
130impl From<AccessibleAnnouncementPriority> for glib::Value {
131    #[inline]
132    fn from(v: AccessibleAnnouncementPriority) -> Self {
133        skip_assert_initialized!();
134        ToValue::to_value(&v)
135    }
136}
137
138/// The possible values for the [`AccessibleProperty::Autocomplete`][crate::AccessibleProperty::Autocomplete]
139/// accessible property.
140#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
141#[non_exhaustive]
142#[doc(alias = "GtkAccessibleAutocomplete")]
143pub enum AccessibleAutocomplete {
144    /// Automatic suggestions are not displayed.
145    #[doc(alias = "GTK_ACCESSIBLE_AUTOCOMPLETE_NONE")]
146    None,
147    /// When a user is providing input, text
148    ///    suggesting one way to complete the provided input may be dynamically
149    ///    inserted after the caret.
150    #[doc(alias = "GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE")]
151    Inline,
152    /// When a user is providing input, an element
153    ///    containing a collection of values that could complete the provided input
154    ///    may be displayed.
155    #[doc(alias = "GTK_ACCESSIBLE_AUTOCOMPLETE_LIST")]
156    List,
157    /// When a user is providing input, an element
158    ///    containing a collection of values that could complete the provided input
159    ///    may be displayed. If displayed, one value in the collection is automatically
160    ///    selected, and the text needed to complete the automatically selected value
161    ///    appears after the caret in the input.
162    #[doc(alias = "GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH")]
163    Both,
164    #[doc(hidden)]
165    __Unknown(i32),
166}
167
168#[doc(hidden)]
169impl IntoGlib for AccessibleAutocomplete {
170    type GlibType = ffi::GtkAccessibleAutocomplete;
171
172    #[inline]
173    fn into_glib(self) -> ffi::GtkAccessibleAutocomplete {
174        match self {
175            Self::None => ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_NONE,
176            Self::Inline => ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE,
177            Self::List => ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_LIST,
178            Self::Both => ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH,
179            Self::__Unknown(value) => value,
180        }
181    }
182}
183
184#[doc(hidden)]
185impl FromGlib<ffi::GtkAccessibleAutocomplete> for AccessibleAutocomplete {
186    #[inline]
187    unsafe fn from_glib(value: ffi::GtkAccessibleAutocomplete) -> Self {
188        skip_assert_initialized!();
189
190        match value {
191            ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_NONE => Self::None,
192            ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE => Self::Inline,
193            ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_LIST => Self::List,
194            ffi::GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH => Self::Both,
195            value => Self::__Unknown(value),
196        }
197    }
198}
199
200impl StaticType for AccessibleAutocomplete {
201    #[inline]
202    #[doc(alias = "gtk_accessible_autocomplete_get_type")]
203    fn static_type() -> glib::Type {
204        unsafe { from_glib(ffi::gtk_accessible_autocomplete_get_type()) }
205    }
206}
207
208impl glib::HasParamSpec for AccessibleAutocomplete {
209    type ParamSpec = glib::ParamSpecEnum;
210    type SetValue = Self;
211    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
212
213    fn param_spec_builder() -> Self::BuilderFn {
214        Self::ParamSpec::builder_with_default
215    }
216}
217
218impl glib::value::ValueType for AccessibleAutocomplete {
219    type Type = Self;
220}
221
222unsafe impl<'a> glib::value::FromValue<'a> for AccessibleAutocomplete {
223    type Checker = glib::value::GenericValueTypeChecker<Self>;
224
225    #[inline]
226    unsafe fn from_value(value: &'a glib::Value) -> Self {
227        skip_assert_initialized!();
228        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
229    }
230}
231
232impl ToValue for AccessibleAutocomplete {
233    #[inline]
234    fn to_value(&self) -> glib::Value {
235        let mut value = glib::Value::for_value_type::<Self>();
236        unsafe {
237            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
238        }
239        value
240    }
241
242    #[inline]
243    fn value_type(&self) -> glib::Type {
244        Self::static_type()
245    }
246}
247
248impl From<AccessibleAutocomplete> for glib::Value {
249    #[inline]
250    fn from(v: AccessibleAutocomplete) -> Self {
251        skip_assert_initialized!();
252        ToValue::to_value(&v)
253    }
254}
255
256/// The possible values for the [`AccessibleState::Invalid`][crate::AccessibleState::Invalid]
257/// accessible state.
258///
259/// Note that the [`False`][Self::False] and
260/// [`True`][Self::True] have the same values
261/// as [`false`] and [`true`].
262#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
263#[non_exhaustive]
264#[doc(alias = "GtkAccessibleInvalidState")]
265pub enum AccessibleInvalidState {
266    /// There are no detected errors in the value
267    #[doc(alias = "GTK_ACCESSIBLE_INVALID_FALSE")]
268    False,
269    /// The value entered by the user has failed validation
270    #[doc(alias = "GTK_ACCESSIBLE_INVALID_TRUE")]
271    True,
272    /// A grammatical error was detected
273    #[doc(alias = "GTK_ACCESSIBLE_INVALID_GRAMMAR")]
274    Grammar,
275    /// A spelling error was detected
276    #[doc(alias = "GTK_ACCESSIBLE_INVALID_SPELLING")]
277    Spelling,
278    #[doc(hidden)]
279    __Unknown(i32),
280}
281
282#[doc(hidden)]
283impl IntoGlib for AccessibleInvalidState {
284    type GlibType = ffi::GtkAccessibleInvalidState;
285
286    #[inline]
287    fn into_glib(self) -> ffi::GtkAccessibleInvalidState {
288        match self {
289            Self::False => ffi::GTK_ACCESSIBLE_INVALID_FALSE,
290            Self::True => ffi::GTK_ACCESSIBLE_INVALID_TRUE,
291            Self::Grammar => ffi::GTK_ACCESSIBLE_INVALID_GRAMMAR,
292            Self::Spelling => ffi::GTK_ACCESSIBLE_INVALID_SPELLING,
293            Self::__Unknown(value) => value,
294        }
295    }
296}
297
298#[doc(hidden)]
299impl FromGlib<ffi::GtkAccessibleInvalidState> for AccessibleInvalidState {
300    #[inline]
301    unsafe fn from_glib(value: ffi::GtkAccessibleInvalidState) -> Self {
302        skip_assert_initialized!();
303
304        match value {
305            ffi::GTK_ACCESSIBLE_INVALID_FALSE => Self::False,
306            ffi::GTK_ACCESSIBLE_INVALID_TRUE => Self::True,
307            ffi::GTK_ACCESSIBLE_INVALID_GRAMMAR => Self::Grammar,
308            ffi::GTK_ACCESSIBLE_INVALID_SPELLING => Self::Spelling,
309            value => Self::__Unknown(value),
310        }
311    }
312}
313
314impl StaticType for AccessibleInvalidState {
315    #[inline]
316    #[doc(alias = "gtk_accessible_invalid_state_get_type")]
317    fn static_type() -> glib::Type {
318        unsafe { from_glib(ffi::gtk_accessible_invalid_state_get_type()) }
319    }
320}
321
322impl glib::HasParamSpec for AccessibleInvalidState {
323    type ParamSpec = glib::ParamSpecEnum;
324    type SetValue = Self;
325    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
326
327    fn param_spec_builder() -> Self::BuilderFn {
328        Self::ParamSpec::builder_with_default
329    }
330}
331
332impl glib::value::ValueType for AccessibleInvalidState {
333    type Type = Self;
334}
335
336unsafe impl<'a> glib::value::FromValue<'a> for AccessibleInvalidState {
337    type Checker = glib::value::GenericValueTypeChecker<Self>;
338
339    #[inline]
340    unsafe fn from_value(value: &'a glib::Value) -> Self {
341        skip_assert_initialized!();
342        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
343    }
344}
345
346impl ToValue for AccessibleInvalidState {
347    #[inline]
348    fn to_value(&self) -> glib::Value {
349        let mut value = glib::Value::for_value_type::<Self>();
350        unsafe {
351            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
352        }
353        value
354    }
355
356    #[inline]
357    fn value_type(&self) -> glib::Type {
358        Self::static_type()
359    }
360}
361
362impl From<AccessibleInvalidState> for glib::Value {
363    #[inline]
364    fn from(v: AccessibleInvalidState) -> Self {
365        skip_assert_initialized!();
366        ToValue::to_value(&v)
367    }
368}
369
370/// The various platform states which can be queried
371/// using [`AccessibleExt::platform_state()`][crate::prelude::AccessibleExt::platform_state()].
372#[cfg(feature = "v4_10")]
373#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
374#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
375#[non_exhaustive]
376#[doc(alias = "GtkAccessiblePlatformState")]
377pub enum AccessiblePlatformState {
378    /// whether the accessible can be focused
379    #[doc(alias = "GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE")]
380    Focusable,
381    /// whether the accessible has focus
382    #[doc(alias = "GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED")]
383    Focused,
384    /// whether the accessible is active
385    #[doc(alias = "GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE")]
386    Active,
387    #[doc(hidden)]
388    __Unknown(i32),
389}
390
391#[cfg(feature = "v4_10")]
392#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
393#[doc(hidden)]
394impl IntoGlib for AccessiblePlatformState {
395    type GlibType = ffi::GtkAccessiblePlatformState;
396
397    #[inline]
398    fn into_glib(self) -> ffi::GtkAccessiblePlatformState {
399        match self {
400            Self::Focusable => ffi::GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE,
401            Self::Focused => ffi::GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED,
402            Self::Active => ffi::GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE,
403            Self::__Unknown(value) => value,
404        }
405    }
406}
407
408#[cfg(feature = "v4_10")]
409#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
410#[doc(hidden)]
411impl FromGlib<ffi::GtkAccessiblePlatformState> for AccessiblePlatformState {
412    #[inline]
413    unsafe fn from_glib(value: ffi::GtkAccessiblePlatformState) -> Self {
414        skip_assert_initialized!();
415
416        match value {
417            ffi::GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE => Self::Focusable,
418            ffi::GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED => Self::Focused,
419            ffi::GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE => Self::Active,
420            value => Self::__Unknown(value),
421        }
422    }
423}
424
425#[cfg(feature = "v4_10")]
426#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
427impl StaticType for AccessiblePlatformState {
428    #[inline]
429    #[doc(alias = "gtk_accessible_platform_state_get_type")]
430    fn static_type() -> glib::Type {
431        unsafe { from_glib(ffi::gtk_accessible_platform_state_get_type()) }
432    }
433}
434
435#[cfg(feature = "v4_10")]
436#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
437impl glib::HasParamSpec for AccessiblePlatformState {
438    type ParamSpec = glib::ParamSpecEnum;
439    type SetValue = Self;
440    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
441
442    fn param_spec_builder() -> Self::BuilderFn {
443        Self::ParamSpec::builder_with_default
444    }
445}
446
447#[cfg(feature = "v4_10")]
448#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
449impl glib::value::ValueType for AccessiblePlatformState {
450    type Type = Self;
451}
452
453#[cfg(feature = "v4_10")]
454#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
455unsafe impl<'a> glib::value::FromValue<'a> for AccessiblePlatformState {
456    type Checker = glib::value::GenericValueTypeChecker<Self>;
457
458    #[inline]
459    unsafe fn from_value(value: &'a glib::Value) -> Self {
460        skip_assert_initialized!();
461        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
462    }
463}
464
465#[cfg(feature = "v4_10")]
466#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
467impl ToValue for AccessiblePlatformState {
468    #[inline]
469    fn to_value(&self) -> glib::Value {
470        let mut value = glib::Value::for_value_type::<Self>();
471        unsafe {
472            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
473        }
474        value
475    }
476
477    #[inline]
478    fn value_type(&self) -> glib::Type {
479        Self::static_type()
480    }
481}
482
483#[cfg(feature = "v4_10")]
484#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
485impl From<AccessiblePlatformState> for glib::Value {
486    #[inline]
487    fn from(v: AccessiblePlatformState) -> Self {
488        skip_assert_initialized!();
489        ToValue::to_value(&v)
490    }
491}
492
493/// The possible accessible properties of a [`Accessible`][crate::Accessible].
494#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
495#[non_exhaustive]
496#[doc(alias = "GtkAccessibleProperty")]
497pub enum AccessibleProperty {
498    /// Indicates whether inputting text
499    ///    could trigger display of one or more predictions of the user's intended
500    ///    value for a combobox, searchbox, or textbox and specifies how predictions
501    ///    would be presented if they were made. Value type: [`AccessibleAutocomplete`][crate::AccessibleAutocomplete]
502    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE")]
503    Autocomplete,
504    /// Defines a string value that describes
505    ///    or annotates the current element. Value type: string
506    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_DESCRIPTION")]
507    Description,
508    /// Indicates the availability of interactive
509    ///    popup element, such as menu or popover, that can be triggered by an
510    ///    element. Contrary to “aria-haspopup”, it doesn't indicate the type of the
511    ///    element, as such it cannot be used to indicate the availability of more
512    ///    complex elements such as dialog. Value type: boolean
513    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_HAS_POPUP")]
514    HasPopup,
515    /// Indicates keyboard shortcuts that an
516    ///    author has implemented to activate or give focus to an element. Value type:
517    ///    string. The format of the value is a space-separated list of shortcuts, with
518    ///    each shortcut consisting of one or more modifiers (`Control`, `Alt` or `Shift`),
519    ///    followed by a non-modifier key, all separated by `+`. The
520    ///    [WAI-ARIA](https://www.w3.org/TR/wai-aria/#aria-keyshortcuts) reference
521    ///    specifies how to build keyboard shortcuts strings, with specific values
522    ///    for each key which are the same regardless of the language, so these
523    ///    strings can't be built from localized key names. You can convert an
524    ///    accelerator into the matching key shortcuts label with
525    ///    [`accelerator_get_accessible_label()`][crate::accelerator_get_accessible_label()].
526    ///    Examples: `F2`, `Alt+F`, `Control+Shift+N`
527    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS")]
528    KeyShortcuts,
529    /// Defines a string value that labels the current
530    ///    element. Value type: string
531    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_LABEL")]
532    Label,
533    /// Defines the hierarchical level of an element
534    ///    within a structure. Value type: integer
535    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_LEVEL")]
536    Level,
537    /// Indicates whether an element is modal when
538    ///    displayed. Value type: boolean
539    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_MODAL")]
540    Modal,
541    /// Indicates whether a text box accepts
542    ///    multiple lines of input or only a single line. Value type: boolean
543    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_MULTI_LINE")]
544    MultiLine,
545    /// Indicates that the user may select
546    ///    more than one item from the current selectable descendants. Value type:
547    ///    boolean
548    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE")]
549    MultiSelectable,
550    /// Indicates whether the element's
551    ///    orientation is horizontal, vertical, or unknown/ambiguous. Value type:
552    ///    [`Orientation`][crate::Orientation]
553    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_ORIENTATION")]
554    Orientation,
555    /// Defines a short hint (a word or short
556    ///    phrase) intended to aid the user with data entry when the control has no
557    ///    value. A hint could be a sample value or a brief description of the expected
558    ///    format. Value type: string
559    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER")]
560    Placeholder,
561    /// Indicates that the element is not editable,
562    ///    but is otherwise operable. Value type: boolean
563    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_READ_ONLY")]
564    ReadOnly,
565    /// Indicates that user input is required on
566    ///    the element before a form may be submitted. Value type: boolean
567    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_REQUIRED")]
568    Required,
569    /// Defines a human-readable,
570    ///    author-localized description for the role of an element. Value type: string
571    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION")]
572    RoleDescription,
573    /// Indicates if items in a table or grid are
574    ///    sorted in ascending or descending order. Value type: [`AccessibleSort`][crate::AccessibleSort]
575    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_SORT")]
576    Sort,
577    /// Defines the maximum allowed value for a
578    ///    range widget. Value type: double
579    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_MAX")]
580    ValueMax,
581    /// Defines the minimum allowed value for a
582    ///    range widget. Value type: double
583    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_MIN")]
584    ValueMin,
585    /// Defines the current value for a range widget.
586    ///    Value type: double
587    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_NOW")]
588    ValueNow,
589    /// Defines the human readable text alternative
590    ///    of [enum@Gtk.AccessibleProperty.VALUE_NOW] for a range widget. Value type: string
591    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT")]
592    ValueText,
593    /// Defines a string value that provides a description of non-standard keyboard
594    /// interactions of the current element. Value type: string
595    #[cfg(feature = "v4_16")]
596    #[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
597    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_HELP_TEXT")]
598    HelpText,
599    #[doc(hidden)]
600    __Unknown(i32),
601}
602
603impl AccessibleProperty {
604    #[doc(alias = "gtk_accessible_property_init_value")]
605    pub fn init_value(self, value: &mut glib::Value) {
606        assert_initialized_main_thread!();
607        unsafe {
608            ffi::gtk_accessible_property_init_value(self.into_glib(), value.to_glib_none_mut().0);
609        }
610    }
611}
612
613#[doc(hidden)]
614impl IntoGlib for AccessibleProperty {
615    type GlibType = ffi::GtkAccessibleProperty;
616
617    fn into_glib(self) -> ffi::GtkAccessibleProperty {
618        match self {
619            Self::Autocomplete => ffi::GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE,
620            Self::Description => ffi::GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
621            Self::HasPopup => ffi::GTK_ACCESSIBLE_PROPERTY_HAS_POPUP,
622            Self::KeyShortcuts => ffi::GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS,
623            Self::Label => ffi::GTK_ACCESSIBLE_PROPERTY_LABEL,
624            Self::Level => ffi::GTK_ACCESSIBLE_PROPERTY_LEVEL,
625            Self::Modal => ffi::GTK_ACCESSIBLE_PROPERTY_MODAL,
626            Self::MultiLine => ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_LINE,
627            Self::MultiSelectable => ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE,
628            Self::Orientation => ffi::GTK_ACCESSIBLE_PROPERTY_ORIENTATION,
629            Self::Placeholder => ffi::GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER,
630            Self::ReadOnly => ffi::GTK_ACCESSIBLE_PROPERTY_READ_ONLY,
631            Self::Required => ffi::GTK_ACCESSIBLE_PROPERTY_REQUIRED,
632            Self::RoleDescription => ffi::GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION,
633            Self::Sort => ffi::GTK_ACCESSIBLE_PROPERTY_SORT,
634            Self::ValueMax => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MAX,
635            Self::ValueMin => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MIN,
636            Self::ValueNow => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_NOW,
637            Self::ValueText => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT,
638            #[cfg(feature = "v4_16")]
639            Self::HelpText => ffi::GTK_ACCESSIBLE_PROPERTY_HELP_TEXT,
640            Self::__Unknown(value) => value,
641        }
642    }
643}
644
645#[doc(hidden)]
646impl FromGlib<ffi::GtkAccessibleProperty> for AccessibleProperty {
647    unsafe fn from_glib(value: ffi::GtkAccessibleProperty) -> Self {
648        skip_assert_initialized!();
649
650        match value {
651            ffi::GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE => Self::Autocomplete,
652            ffi::GTK_ACCESSIBLE_PROPERTY_DESCRIPTION => Self::Description,
653            ffi::GTK_ACCESSIBLE_PROPERTY_HAS_POPUP => Self::HasPopup,
654            ffi::GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS => Self::KeyShortcuts,
655            ffi::GTK_ACCESSIBLE_PROPERTY_LABEL => Self::Label,
656            ffi::GTK_ACCESSIBLE_PROPERTY_LEVEL => Self::Level,
657            ffi::GTK_ACCESSIBLE_PROPERTY_MODAL => Self::Modal,
658            ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_LINE => Self::MultiLine,
659            ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE => Self::MultiSelectable,
660            ffi::GTK_ACCESSIBLE_PROPERTY_ORIENTATION => Self::Orientation,
661            ffi::GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER => Self::Placeholder,
662            ffi::GTK_ACCESSIBLE_PROPERTY_READ_ONLY => Self::ReadOnly,
663            ffi::GTK_ACCESSIBLE_PROPERTY_REQUIRED => Self::Required,
664            ffi::GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION => Self::RoleDescription,
665            ffi::GTK_ACCESSIBLE_PROPERTY_SORT => Self::Sort,
666            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MAX => Self::ValueMax,
667            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MIN => Self::ValueMin,
668            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_NOW => Self::ValueNow,
669            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT => Self::ValueText,
670            #[cfg(feature = "v4_16")]
671            ffi::GTK_ACCESSIBLE_PROPERTY_HELP_TEXT => Self::HelpText,
672            value => Self::__Unknown(value),
673        }
674    }
675}
676
677impl StaticType for AccessibleProperty {
678    #[inline]
679    #[doc(alias = "gtk_accessible_property_get_type")]
680    fn static_type() -> glib::Type {
681        unsafe { from_glib(ffi::gtk_accessible_property_get_type()) }
682    }
683}
684
685impl glib::HasParamSpec for AccessibleProperty {
686    type ParamSpec = glib::ParamSpecEnum;
687    type SetValue = Self;
688    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
689
690    fn param_spec_builder() -> Self::BuilderFn {
691        Self::ParamSpec::builder_with_default
692    }
693}
694
695impl glib::value::ValueType for AccessibleProperty {
696    type Type = Self;
697}
698
699unsafe impl<'a> glib::value::FromValue<'a> for AccessibleProperty {
700    type Checker = glib::value::GenericValueTypeChecker<Self>;
701
702    #[inline]
703    unsafe fn from_value(value: &'a glib::Value) -> Self {
704        skip_assert_initialized!();
705        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
706    }
707}
708
709impl ToValue for AccessibleProperty {
710    #[inline]
711    fn to_value(&self) -> glib::Value {
712        let mut value = glib::Value::for_value_type::<Self>();
713        unsafe {
714            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
715        }
716        value
717    }
718
719    #[inline]
720    fn value_type(&self) -> glib::Type {
721        Self::static_type()
722    }
723}
724
725impl From<AccessibleProperty> for glib::Value {
726    #[inline]
727    fn from(v: AccessibleProperty) -> Self {
728        skip_assert_initialized!();
729        ToValue::to_value(&v)
730    }
731}
732
733/// The possible accessible relations of a [`Accessible`][crate::Accessible].
734///
735/// Accessible relations can be references to other widgets,
736/// integers or strings.
737#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
738#[non_exhaustive]
739#[doc(alias = "GtkAccessibleRelation")]
740pub enum AccessibleRelation {
741    /// Identifies the currently active
742    ///    element when focus is on a composite widget, combobox, textbox, group,
743    ///    or application. Value type: reference
744    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT")]
745    ActiveDescendant,
746    /// Defines the total number of columns
747    ///    in a table, grid, or treegrid. Value type: integer
748    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_COUNT")]
749    ColCount,
750    /// Defines an element's column index or
751    ///    position with respect to the total number of columns within a table,
752    ///    grid, or treegrid. Value type: integer
753    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_INDEX")]
754    ColIndex,
755    /// Defines a human readable text
756    ///   alternative of [`ColIndex`][Self::ColIndex]. Value type: string
757    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT")]
758    ColIndexText,
759    /// Defines the number of columns spanned
760    ///   by a cell or gridcell within a table, grid, or treegrid. Value type: integer
761    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_SPAN")]
762    ColSpan,
763    /// Identifies the element (or elements) whose
764    ///    contents or presence are controlled by the current element. Value type: reference
765    #[doc(alias = "GTK_ACCESSIBLE_RELATION_CONTROLS")]
766    Controls,
767    /// Identifies the element (or elements)
768    ///    that describes the object. Value type: reference
769    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DESCRIBED_BY")]
770    DescribedBy,
771    /// Identifies the element (or elements) that
772    ///    provide additional information related to the object. Value type: reference
773    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DETAILS")]
774    Details,
775    /// Identifies the element (or elements) that
776    ///    provide an error message for an object. Value type: reference
777    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE")]
778    ErrorMessage,
779    /// Identifies the next element (or elements)
780    ///    in an alternate reading order of content which, at the user's discretion,
781    ///    allows assistive technology to override the general default of reading in
782    ///    document source order. Value type: reference
783    #[doc(alias = "GTK_ACCESSIBLE_RELATION_FLOW_TO")]
784    FlowTo,
785    /// Identifies the element (or elements)
786    ///    that labels the current element. Value type: reference
787    #[doc(alias = "GTK_ACCESSIBLE_RELATION_LABELLED_BY")]
788    LabelledBy,
789    /// Identifies an element (or elements) in order
790    ///    to define a visual, functional, or contextual parent/child relationship
791    ///    between elements where the widget hierarchy cannot be used to represent
792    ///    the relationship. Value type: reference
793    #[doc(alias = "GTK_ACCESSIBLE_RELATION_OWNS")]
794    Owns,
795    /// Defines an element's number or position
796    ///    in the current set of listitems or treeitems. Value type: integer
797    #[doc(alias = "GTK_ACCESSIBLE_RELATION_POS_IN_SET")]
798    PosInSet,
799    /// Defines the total number of rows in a table,
800    ///    grid, or treegrid. Value type: integer
801    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_COUNT")]
802    RowCount,
803    /// Defines an element's row index or position
804    ///    with respect to the total number of rows within a table, grid, or treegrid.
805    ///    Value type: integer
806    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_INDEX")]
807    RowIndex,
808    /// Defines a human readable text
809    ///    alternative of [enum@Gtk.AccessibleRelation.ROW_INDEX]. Value type: string
810    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT")]
811    RowIndexText,
812    /// Defines the number of rows spanned by a
813    ///    cell or gridcell within a table, grid, or treegrid. Value type: integer
814    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_SPAN")]
815    RowSpan,
816    /// Defines the number of items in the current
817    ///    set of listitems or treeitems. Value type: integer
818    #[doc(alias = "GTK_ACCESSIBLE_RELATION_SET_SIZE")]
819    SetSize,
820    /// Identifies the element (or elements) that are labeled by the
821    /// current element. Value type: reference
822    ///
823    /// This relation is managed by GTK and should not be set from application code.
824    #[cfg(feature = "v4_18")]
825    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
826    #[doc(alias = "GTK_ACCESSIBLE_RELATION_LABEL_FOR")]
827    LabelFor,
828    /// Identifies the element (or elements) that are described by
829    /// the current element. Value type: reference
830    ///
831    /// This relation is managed by GTK and should not be set from application code.
832    #[cfg(feature = "v4_18")]
833    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
834    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DESCRIPTION_FOR")]
835    DescriptionFor,
836    /// Identifies the element (or elements) that the current
837    /// element is controlled by. Value type: reference
838    ///
839    /// This relation is managed by GTK and should not be set from application code.
840    #[cfg(feature = "v4_18")]
841    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
842    #[doc(alias = "GTK_ACCESSIBLE_RELATION_CONTROLLED_BY")]
843    ControlledBy,
844    /// Identifies the element (or elements) for which the current
845    /// element provides additional information. Value type: reference
846    ///
847    /// This relation is managed by GTK and should not be set from application code.
848    #[cfg(feature = "v4_18")]
849    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
850    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DETAILS_FOR")]
851    DetailsFor,
852    /// Identifies the element (or elements) for which the current
853    /// element provides an error message. Value type: reference
854    ///
855    /// This relation is managed by GTK and should not be set from application code.
856    #[cfg(feature = "v4_18")]
857    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
858    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE_FOR")]
859    ErrorMessageFor,
860    /// Identifies the previous element (or elements) in an alternate
861    /// reading order of content which, at the user's discretion, allows
862    /// assistive technology to override the general default of reading in
863    /// document source order. Value type: reference
864    ///
865    /// This relation is managed by GTK and should not be set from application code.
866    #[cfg(feature = "v4_18")]
867    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
868    #[doc(alias = "GTK_ACCESSIBLE_RELATION_FLOW_FROM")]
869    FlowFrom,
870    #[doc(hidden)]
871    __Unknown(i32),
872}
873
874impl AccessibleRelation {
875    #[doc(alias = "gtk_accessible_relation_init_value")]
876    pub fn init_value(self, value: &mut glib::Value) {
877        assert_initialized_main_thread!();
878        unsafe {
879            ffi::gtk_accessible_relation_init_value(self.into_glib(), value.to_glib_none_mut().0);
880        }
881    }
882}
883
884#[doc(hidden)]
885impl IntoGlib for AccessibleRelation {
886    type GlibType = ffi::GtkAccessibleRelation;
887
888    fn into_glib(self) -> ffi::GtkAccessibleRelation {
889        match self {
890            Self::ActiveDescendant => ffi::GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT,
891            Self::ColCount => ffi::GTK_ACCESSIBLE_RELATION_COL_COUNT,
892            Self::ColIndex => ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX,
893            Self::ColIndexText => ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT,
894            Self::ColSpan => ffi::GTK_ACCESSIBLE_RELATION_COL_SPAN,
895            Self::Controls => ffi::GTK_ACCESSIBLE_RELATION_CONTROLS,
896            Self::DescribedBy => ffi::GTK_ACCESSIBLE_RELATION_DESCRIBED_BY,
897            Self::Details => ffi::GTK_ACCESSIBLE_RELATION_DETAILS,
898            Self::ErrorMessage => ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE,
899            Self::FlowTo => ffi::GTK_ACCESSIBLE_RELATION_FLOW_TO,
900            Self::LabelledBy => ffi::GTK_ACCESSIBLE_RELATION_LABELLED_BY,
901            Self::Owns => ffi::GTK_ACCESSIBLE_RELATION_OWNS,
902            Self::PosInSet => ffi::GTK_ACCESSIBLE_RELATION_POS_IN_SET,
903            Self::RowCount => ffi::GTK_ACCESSIBLE_RELATION_ROW_COUNT,
904            Self::RowIndex => ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX,
905            Self::RowIndexText => ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT,
906            Self::RowSpan => ffi::GTK_ACCESSIBLE_RELATION_ROW_SPAN,
907            Self::SetSize => ffi::GTK_ACCESSIBLE_RELATION_SET_SIZE,
908            #[cfg(feature = "v4_18")]
909            Self::LabelFor => ffi::GTK_ACCESSIBLE_RELATION_LABEL_FOR,
910            #[cfg(feature = "v4_18")]
911            Self::DescriptionFor => ffi::GTK_ACCESSIBLE_RELATION_DESCRIPTION_FOR,
912            #[cfg(feature = "v4_18")]
913            Self::ControlledBy => ffi::GTK_ACCESSIBLE_RELATION_CONTROLLED_BY,
914            #[cfg(feature = "v4_18")]
915            Self::DetailsFor => ffi::GTK_ACCESSIBLE_RELATION_DETAILS_FOR,
916            #[cfg(feature = "v4_18")]
917            Self::ErrorMessageFor => ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE_FOR,
918            #[cfg(feature = "v4_18")]
919            Self::FlowFrom => ffi::GTK_ACCESSIBLE_RELATION_FLOW_FROM,
920            Self::__Unknown(value) => value,
921        }
922    }
923}
924
925#[doc(hidden)]
926impl FromGlib<ffi::GtkAccessibleRelation> for AccessibleRelation {
927    unsafe fn from_glib(value: ffi::GtkAccessibleRelation) -> Self {
928        skip_assert_initialized!();
929
930        match value {
931            ffi::GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT => Self::ActiveDescendant,
932            ffi::GTK_ACCESSIBLE_RELATION_COL_COUNT => Self::ColCount,
933            ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX => Self::ColIndex,
934            ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT => Self::ColIndexText,
935            ffi::GTK_ACCESSIBLE_RELATION_COL_SPAN => Self::ColSpan,
936            ffi::GTK_ACCESSIBLE_RELATION_CONTROLS => Self::Controls,
937            ffi::GTK_ACCESSIBLE_RELATION_DESCRIBED_BY => Self::DescribedBy,
938            ffi::GTK_ACCESSIBLE_RELATION_DETAILS => Self::Details,
939            ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE => Self::ErrorMessage,
940            ffi::GTK_ACCESSIBLE_RELATION_FLOW_TO => Self::FlowTo,
941            ffi::GTK_ACCESSIBLE_RELATION_LABELLED_BY => Self::LabelledBy,
942            ffi::GTK_ACCESSIBLE_RELATION_OWNS => Self::Owns,
943            ffi::GTK_ACCESSIBLE_RELATION_POS_IN_SET => Self::PosInSet,
944            ffi::GTK_ACCESSIBLE_RELATION_ROW_COUNT => Self::RowCount,
945            ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX => Self::RowIndex,
946            ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT => Self::RowIndexText,
947            ffi::GTK_ACCESSIBLE_RELATION_ROW_SPAN => Self::RowSpan,
948            ffi::GTK_ACCESSIBLE_RELATION_SET_SIZE => Self::SetSize,
949            #[cfg(feature = "v4_18")]
950            ffi::GTK_ACCESSIBLE_RELATION_LABEL_FOR => Self::LabelFor,
951            #[cfg(feature = "v4_18")]
952            ffi::GTK_ACCESSIBLE_RELATION_DESCRIPTION_FOR => Self::DescriptionFor,
953            #[cfg(feature = "v4_18")]
954            ffi::GTK_ACCESSIBLE_RELATION_CONTROLLED_BY => Self::ControlledBy,
955            #[cfg(feature = "v4_18")]
956            ffi::GTK_ACCESSIBLE_RELATION_DETAILS_FOR => Self::DetailsFor,
957            #[cfg(feature = "v4_18")]
958            ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE_FOR => Self::ErrorMessageFor,
959            #[cfg(feature = "v4_18")]
960            ffi::GTK_ACCESSIBLE_RELATION_FLOW_FROM => Self::FlowFrom,
961            value => Self::__Unknown(value),
962        }
963    }
964}
965
966impl StaticType for AccessibleRelation {
967    #[inline]
968    #[doc(alias = "gtk_accessible_relation_get_type")]
969    fn static_type() -> glib::Type {
970        unsafe { from_glib(ffi::gtk_accessible_relation_get_type()) }
971    }
972}
973
974impl glib::HasParamSpec for AccessibleRelation {
975    type ParamSpec = glib::ParamSpecEnum;
976    type SetValue = Self;
977    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
978
979    fn param_spec_builder() -> Self::BuilderFn {
980        Self::ParamSpec::builder_with_default
981    }
982}
983
984impl glib::value::ValueType for AccessibleRelation {
985    type Type = Self;
986}
987
988unsafe impl<'a> glib::value::FromValue<'a> for AccessibleRelation {
989    type Checker = glib::value::GenericValueTypeChecker<Self>;
990
991    #[inline]
992    unsafe fn from_value(value: &'a glib::Value) -> Self {
993        skip_assert_initialized!();
994        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
995    }
996}
997
998impl ToValue for AccessibleRelation {
999    #[inline]
1000    fn to_value(&self) -> glib::Value {
1001        let mut value = glib::Value::for_value_type::<Self>();
1002        unsafe {
1003            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1004        }
1005        value
1006    }
1007
1008    #[inline]
1009    fn value_type(&self) -> glib::Type {
1010        Self::static_type()
1011    }
1012}
1013
1014impl From<AccessibleRelation> for glib::Value {
1015    #[inline]
1016    fn from(v: AccessibleRelation) -> Self {
1017        skip_assert_initialized!();
1018        ToValue::to_value(&v)
1019    }
1020}
1021
1022/// The accessible role for a [`Accessible`][crate::Accessible] implementation.
1023///
1024/// Abstract roles are only used as part of the ontology; application
1025/// developers must not use abstract roles in their code.
1026#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1027#[non_exhaustive]
1028#[doc(alias = "GtkAccessibleRole")]
1029pub enum AccessibleRole {
1030    /// An element with important, and usually
1031    ///   time-sensitive, information
1032    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ALERT")]
1033    Alert,
1034    /// A type of dialog that contains an
1035    ///   alert message
1036    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ALERT_DIALOG")]
1037    AlertDialog,
1038    /// Unused
1039    #[doc(alias = "GTK_ACCESSIBLE_ROLE_BANNER")]
1040    Banner,
1041    /// An input element that allows for
1042    ///   user-triggered actions when clicked or pressed
1043    #[doc(alias = "GTK_ACCESSIBLE_ROLE_BUTTON")]
1044    Button,
1045    /// Unused
1046    #[doc(alias = "GTK_ACCESSIBLE_ROLE_CAPTION")]
1047    Caption,
1048    /// Unused
1049    #[doc(alias = "GTK_ACCESSIBLE_ROLE_CELL")]
1050    Cell,
1051    /// A checkable input element that has
1052    ///   three possible values: `true`, `false`, or `mixed`
1053    #[doc(alias = "GTK_ACCESSIBLE_ROLE_CHECKBOX")]
1054    Checkbox,
1055    /// A header in a columned list.
1056    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COLUMN_HEADER")]
1057    ColumnHeader,
1058    /// An input that controls another element,
1059    ///   such as a list or a grid, that can dynamically pop up to help the user
1060    ///   set the value of the input
1061    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMBO_BOX")]
1062    ComboBox,
1063    /// Abstract role.
1064    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMMAND")]
1065    Command,
1066    /// Abstract role.
1067    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMPOSITE")]
1068    Composite,
1069    /// A dialog is a window that is designed to interrupt
1070    ///   the current processing of an application in order to prompt the user to enter
1071    ///   information or require a response.
1072    #[doc(alias = "GTK_ACCESSIBLE_ROLE_DIALOG")]
1073    Dialog,
1074    /// Content that assistive technology users may want to
1075    ///   browse in a reading mode.
1076    #[doc(alias = "GTK_ACCESSIBLE_ROLE_DOCUMENT")]
1077    Document,
1078    /// Unused
1079    #[doc(alias = "GTK_ACCESSIBLE_ROLE_FEED")]
1080    Feed,
1081    /// Unused
1082    #[doc(alias = "GTK_ACCESSIBLE_ROLE_FORM")]
1083    Form,
1084    /// A nameless container that has no semantic meaning
1085    ///   of its own. This is the role that GTK uses by default for widgets.
1086    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GENERIC")]
1087    Generic,
1088    /// A grid of items.
1089    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GRID")]
1090    Grid,
1091    /// An item in a grid or tree grid.
1092    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GRID_CELL")]
1093    GridCell,
1094    /// An element that groups multiple related widgets. GTK uses
1095    ///   this role for various containers, like [`HeaderBar`][crate::HeaderBar] or [`Notebook`][crate::Notebook].
1096    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GROUP")]
1097    Group,
1098    /// Unused
1099    #[doc(alias = "GTK_ACCESSIBLE_ROLE_HEADING")]
1100    Heading,
1101    /// An image.
1102    #[doc(alias = "GTK_ACCESSIBLE_ROLE_IMG")]
1103    Img,
1104    /// Abstract role.
1105    #[doc(alias = "GTK_ACCESSIBLE_ROLE_INPUT")]
1106    Input,
1107    /// A visible name or caption for a user interface component.
1108    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LABEL")]
1109    Label,
1110    /// Abstract role.
1111    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LANDMARK")]
1112    Landmark,
1113    /// Unused
1114    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LEGEND")]
1115    Legend,
1116    /// A clickable link.
1117    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LINK")]
1118    Link,
1119    /// A list of items.
1120    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LIST")]
1121    List,
1122    /// Unused.
1123    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LIST_BOX")]
1124    ListBox,
1125    /// An item in a list.
1126    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LIST_ITEM")]
1127    ListItem,
1128    /// Unused
1129    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LOG")]
1130    Log,
1131    /// Unused
1132    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MAIN")]
1133    Main,
1134    /// Unused
1135    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MARQUEE")]
1136    Marquee,
1137    /// Unused
1138    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MATH")]
1139    Math,
1140    /// An element that represents a value within a known range.
1141    #[doc(alias = "GTK_ACCESSIBLE_ROLE_METER")]
1142    Meter,
1143    /// A menu.
1144    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU")]
1145    Menu,
1146    /// A menubar.
1147    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_BAR")]
1148    MenuBar,
1149    /// An item in a menu.
1150    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_ITEM")]
1151    MenuItem,
1152    /// A check item in a menu.
1153    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX")]
1154    MenuItemCheckbox,
1155    /// A radio item in a menu.
1156    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO")]
1157    MenuItemRadio,
1158    /// Unused
1159    #[doc(alias = "GTK_ACCESSIBLE_ROLE_NAVIGATION")]
1160    Navigation,
1161    /// An element that is not represented to accessibility technologies.
1162    ///   This role is synonymous to @GTK_ACCESSIBLE_ROLE_PRESENTATION.
1163    #[doc(alias = "GTK_ACCESSIBLE_ROLE_NONE")]
1164    None,
1165    /// Unused
1166    #[doc(alias = "GTK_ACCESSIBLE_ROLE_NOTE")]
1167    Note,
1168    /// Unused
1169    #[doc(alias = "GTK_ACCESSIBLE_ROLE_OPTION")]
1170    Option,
1171    /// An element that is not represented to accessibility technologies.
1172    ///   This role is synonymous to @GTK_ACCESSIBLE_ROLE_NONE.
1173    #[doc(alias = "GTK_ACCESSIBLE_ROLE_PRESENTATION")]
1174    Presentation,
1175    /// An element that displays the progress
1176    ///   status for tasks that take a long time.
1177    #[doc(alias = "GTK_ACCESSIBLE_ROLE_PROGRESS_BAR")]
1178    ProgressBar,
1179    /// A checkable input in a group of radio roles,
1180    ///   only one of which can be checked at a time.
1181    #[doc(alias = "GTK_ACCESSIBLE_ROLE_RADIO")]
1182    Radio,
1183    /// Unused
1184    #[doc(alias = "GTK_ACCESSIBLE_ROLE_RADIO_GROUP")]
1185    RadioGroup,
1186    /// Abstract role.
1187    #[doc(alias = "GTK_ACCESSIBLE_ROLE_RANGE")]
1188    Range,
1189    /// Unused
1190    #[doc(alias = "GTK_ACCESSIBLE_ROLE_REGION")]
1191    Region,
1192    /// A row in a columned list.
1193    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ROW")]
1194    Row,
1195    /// Unused
1196    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ROW_GROUP")]
1197    RowGroup,
1198    /// Unused
1199    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ROW_HEADER")]
1200    RowHeader,
1201    /// A graphical object that controls the scrolling
1202    ///   of content within a viewing area, regardless of whether the content is fully
1203    ///   displayed within the viewing area.
1204    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SCROLLBAR")]
1205    Scrollbar,
1206    /// Unused
1207    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SEARCH")]
1208    Search,
1209    /// A type of textbox intended for specifying
1210    ///   search criteria.
1211    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SEARCH_BOX")]
1212    SearchBox,
1213    /// Abstract role.
1214    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SECTION")]
1215    Section,
1216    /// Abstract role.
1217    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SECTION_HEAD")]
1218    SectionHead,
1219    /// Abstract role.
1220    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SELECT")]
1221    Select,
1222    /// A divider that separates and distinguishes
1223    ///   sections of content or groups of menuitems.
1224    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SEPARATOR")]
1225    Separator,
1226    /// A user input where the user selects a value
1227    ///   from within a given range.
1228    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SLIDER")]
1229    Slider,
1230    /// A form of range that expects the user to
1231    ///   select from among discrete choices.
1232    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SPIN_BUTTON")]
1233    SpinButton,
1234    /// Unused
1235    #[doc(alias = "GTK_ACCESSIBLE_ROLE_STATUS")]
1236    Status,
1237    /// Abstract role.
1238    #[doc(alias = "GTK_ACCESSIBLE_ROLE_STRUCTURE")]
1239    Structure,
1240    /// A type of checkbox that represents on/off values,
1241    ///   as opposed to checked/unchecked values.
1242    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SWITCH")]
1243    Switch,
1244    /// An item in a list of tab used for switching pages.
1245    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TAB")]
1246    Tab,
1247    /// Unused
1248    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TABLE")]
1249    Table,
1250    /// A list of tabs for switching pages.
1251    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TAB_LIST")]
1252    TabList,
1253    /// A page in a notebook or stack.
1254    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TAB_PANEL")]
1255    TabPanel,
1256    /// A type of input that allows free-form text
1257    ///   as its value.
1258    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TEXT_BOX")]
1259    TextBox,
1260    /// Unused
1261    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TIME")]
1262    Time,
1263    /// Unused
1264    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TIMER")]
1265    Timer,
1266    /// Unused
1267    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TOOLBAR")]
1268    Toolbar,
1269    /// Unused
1270    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TOOLTIP")]
1271    Tooltip,
1272    /// Unused
1273    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TREE")]
1274    Tree,
1275    /// A treeview-like, columned list.
1276    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TREE_GRID")]
1277    TreeGrid,
1278    /// Unused
1279    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TREE_ITEM")]
1280    TreeItem,
1281    /// Abstract role for interactive components of a
1282    ///   graphical user interface
1283    #[doc(alias = "GTK_ACCESSIBLE_ROLE_WIDGET")]
1284    Widget,
1285    /// Abstract role for windows.
1286    #[doc(alias = "GTK_ACCESSIBLE_ROLE_WINDOW")]
1287    Window,
1288    /// A type of push button which stays pressed until depressed by a second
1289    /// activation.
1290    #[cfg(feature = "v4_10")]
1291    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
1292    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON")]
1293    ToggleButton,
1294    /// A toplevel element of a graphical user interface.
1295    ///
1296    /// This is the role that GTK uses by default for windows.
1297    #[cfg(feature = "v4_12")]
1298    #[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
1299    #[doc(alias = "GTK_ACCESSIBLE_ROLE_APPLICATION")]
1300    Application,
1301    /// A paragraph of content.
1302    #[cfg(feature = "v4_14")]
1303    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1304    #[doc(alias = "GTK_ACCESSIBLE_ROLE_PARAGRAPH")]
1305    Paragraph,
1306    /// A section of content that is quoted from another source.
1307    #[cfg(feature = "v4_14")]
1308    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1309    #[doc(alias = "GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE")]
1310    BlockQuote,
1311    /// A section of a page that consists of a composition that forms an independent
1312    /// part of a document, page, or site.
1313    #[cfg(feature = "v4_14")]
1314    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1315    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ARTICLE")]
1316    Article,
1317    /// A comment contains content expressing reaction to other content.
1318    #[cfg(feature = "v4_14")]
1319    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1320    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMMENT")]
1321    Comment,
1322    /// A virtual terminal.
1323    #[cfg(feature = "v4_14")]
1324    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1325    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TERMINAL")]
1326    Terminal,
1327    #[doc(hidden)]
1328    __Unknown(i32),
1329}
1330
1331#[doc(hidden)]
1332impl IntoGlib for AccessibleRole {
1333    type GlibType = ffi::GtkAccessibleRole;
1334
1335    fn into_glib(self) -> ffi::GtkAccessibleRole {
1336        match self {
1337            Self::Alert => ffi::GTK_ACCESSIBLE_ROLE_ALERT,
1338            Self::AlertDialog => ffi::GTK_ACCESSIBLE_ROLE_ALERT_DIALOG,
1339            Self::Banner => ffi::GTK_ACCESSIBLE_ROLE_BANNER,
1340            Self::Button => ffi::GTK_ACCESSIBLE_ROLE_BUTTON,
1341            Self::Caption => ffi::GTK_ACCESSIBLE_ROLE_CAPTION,
1342            Self::Cell => ffi::GTK_ACCESSIBLE_ROLE_CELL,
1343            Self::Checkbox => ffi::GTK_ACCESSIBLE_ROLE_CHECKBOX,
1344            Self::ColumnHeader => ffi::GTK_ACCESSIBLE_ROLE_COLUMN_HEADER,
1345            Self::ComboBox => ffi::GTK_ACCESSIBLE_ROLE_COMBO_BOX,
1346            Self::Command => ffi::GTK_ACCESSIBLE_ROLE_COMMAND,
1347            Self::Composite => ffi::GTK_ACCESSIBLE_ROLE_COMPOSITE,
1348            Self::Dialog => ffi::GTK_ACCESSIBLE_ROLE_DIALOG,
1349            Self::Document => ffi::GTK_ACCESSIBLE_ROLE_DOCUMENT,
1350            Self::Feed => ffi::GTK_ACCESSIBLE_ROLE_FEED,
1351            Self::Form => ffi::GTK_ACCESSIBLE_ROLE_FORM,
1352            Self::Generic => ffi::GTK_ACCESSIBLE_ROLE_GENERIC,
1353            Self::Grid => ffi::GTK_ACCESSIBLE_ROLE_GRID,
1354            Self::GridCell => ffi::GTK_ACCESSIBLE_ROLE_GRID_CELL,
1355            Self::Group => ffi::GTK_ACCESSIBLE_ROLE_GROUP,
1356            Self::Heading => ffi::GTK_ACCESSIBLE_ROLE_HEADING,
1357            Self::Img => ffi::GTK_ACCESSIBLE_ROLE_IMG,
1358            Self::Input => ffi::GTK_ACCESSIBLE_ROLE_INPUT,
1359            Self::Label => ffi::GTK_ACCESSIBLE_ROLE_LABEL,
1360            Self::Landmark => ffi::GTK_ACCESSIBLE_ROLE_LANDMARK,
1361            Self::Legend => ffi::GTK_ACCESSIBLE_ROLE_LEGEND,
1362            Self::Link => ffi::GTK_ACCESSIBLE_ROLE_LINK,
1363            Self::List => ffi::GTK_ACCESSIBLE_ROLE_LIST,
1364            Self::ListBox => ffi::GTK_ACCESSIBLE_ROLE_LIST_BOX,
1365            Self::ListItem => ffi::GTK_ACCESSIBLE_ROLE_LIST_ITEM,
1366            Self::Log => ffi::GTK_ACCESSIBLE_ROLE_LOG,
1367            Self::Main => ffi::GTK_ACCESSIBLE_ROLE_MAIN,
1368            Self::Marquee => ffi::GTK_ACCESSIBLE_ROLE_MARQUEE,
1369            Self::Math => ffi::GTK_ACCESSIBLE_ROLE_MATH,
1370            Self::Meter => ffi::GTK_ACCESSIBLE_ROLE_METER,
1371            Self::Menu => ffi::GTK_ACCESSIBLE_ROLE_MENU,
1372            Self::MenuBar => ffi::GTK_ACCESSIBLE_ROLE_MENU_BAR,
1373            Self::MenuItem => ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM,
1374            Self::MenuItemCheckbox => ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX,
1375            Self::MenuItemRadio => ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO,
1376            Self::Navigation => ffi::GTK_ACCESSIBLE_ROLE_NAVIGATION,
1377            Self::None => ffi::GTK_ACCESSIBLE_ROLE_NONE,
1378            Self::Note => ffi::GTK_ACCESSIBLE_ROLE_NOTE,
1379            Self::Option => ffi::GTK_ACCESSIBLE_ROLE_OPTION,
1380            Self::Presentation => ffi::GTK_ACCESSIBLE_ROLE_PRESENTATION,
1381            Self::ProgressBar => ffi::GTK_ACCESSIBLE_ROLE_PROGRESS_BAR,
1382            Self::Radio => ffi::GTK_ACCESSIBLE_ROLE_RADIO,
1383            Self::RadioGroup => ffi::GTK_ACCESSIBLE_ROLE_RADIO_GROUP,
1384            Self::Range => ffi::GTK_ACCESSIBLE_ROLE_RANGE,
1385            Self::Region => ffi::GTK_ACCESSIBLE_ROLE_REGION,
1386            Self::Row => ffi::GTK_ACCESSIBLE_ROLE_ROW,
1387            Self::RowGroup => ffi::GTK_ACCESSIBLE_ROLE_ROW_GROUP,
1388            Self::RowHeader => ffi::GTK_ACCESSIBLE_ROLE_ROW_HEADER,
1389            Self::Scrollbar => ffi::GTK_ACCESSIBLE_ROLE_SCROLLBAR,
1390            Self::Search => ffi::GTK_ACCESSIBLE_ROLE_SEARCH,
1391            Self::SearchBox => ffi::GTK_ACCESSIBLE_ROLE_SEARCH_BOX,
1392            Self::Section => ffi::GTK_ACCESSIBLE_ROLE_SECTION,
1393            Self::SectionHead => ffi::GTK_ACCESSIBLE_ROLE_SECTION_HEAD,
1394            Self::Select => ffi::GTK_ACCESSIBLE_ROLE_SELECT,
1395            Self::Separator => ffi::GTK_ACCESSIBLE_ROLE_SEPARATOR,
1396            Self::Slider => ffi::GTK_ACCESSIBLE_ROLE_SLIDER,
1397            Self::SpinButton => ffi::GTK_ACCESSIBLE_ROLE_SPIN_BUTTON,
1398            Self::Status => ffi::GTK_ACCESSIBLE_ROLE_STATUS,
1399            Self::Structure => ffi::GTK_ACCESSIBLE_ROLE_STRUCTURE,
1400            Self::Switch => ffi::GTK_ACCESSIBLE_ROLE_SWITCH,
1401            Self::Tab => ffi::GTK_ACCESSIBLE_ROLE_TAB,
1402            Self::Table => ffi::GTK_ACCESSIBLE_ROLE_TABLE,
1403            Self::TabList => ffi::GTK_ACCESSIBLE_ROLE_TAB_LIST,
1404            Self::TabPanel => ffi::GTK_ACCESSIBLE_ROLE_TAB_PANEL,
1405            Self::TextBox => ffi::GTK_ACCESSIBLE_ROLE_TEXT_BOX,
1406            Self::Time => ffi::GTK_ACCESSIBLE_ROLE_TIME,
1407            Self::Timer => ffi::GTK_ACCESSIBLE_ROLE_TIMER,
1408            Self::Toolbar => ffi::GTK_ACCESSIBLE_ROLE_TOOLBAR,
1409            Self::Tooltip => ffi::GTK_ACCESSIBLE_ROLE_TOOLTIP,
1410            Self::Tree => ffi::GTK_ACCESSIBLE_ROLE_TREE,
1411            Self::TreeGrid => ffi::GTK_ACCESSIBLE_ROLE_TREE_GRID,
1412            Self::TreeItem => ffi::GTK_ACCESSIBLE_ROLE_TREE_ITEM,
1413            Self::Widget => ffi::GTK_ACCESSIBLE_ROLE_WIDGET,
1414            Self::Window => ffi::GTK_ACCESSIBLE_ROLE_WINDOW,
1415            #[cfg(feature = "v4_10")]
1416            Self::ToggleButton => ffi::GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON,
1417            #[cfg(feature = "v4_12")]
1418            Self::Application => ffi::GTK_ACCESSIBLE_ROLE_APPLICATION,
1419            #[cfg(feature = "v4_14")]
1420            Self::Paragraph => ffi::GTK_ACCESSIBLE_ROLE_PARAGRAPH,
1421            #[cfg(feature = "v4_14")]
1422            Self::BlockQuote => ffi::GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE,
1423            #[cfg(feature = "v4_14")]
1424            Self::Article => ffi::GTK_ACCESSIBLE_ROLE_ARTICLE,
1425            #[cfg(feature = "v4_14")]
1426            Self::Comment => ffi::GTK_ACCESSIBLE_ROLE_COMMENT,
1427            #[cfg(feature = "v4_14")]
1428            Self::Terminal => ffi::GTK_ACCESSIBLE_ROLE_TERMINAL,
1429            Self::__Unknown(value) => value,
1430        }
1431    }
1432}
1433
1434#[doc(hidden)]
1435impl FromGlib<ffi::GtkAccessibleRole> for AccessibleRole {
1436    unsafe fn from_glib(value: ffi::GtkAccessibleRole) -> Self {
1437        skip_assert_initialized!();
1438
1439        match value {
1440            ffi::GTK_ACCESSIBLE_ROLE_ALERT => Self::Alert,
1441            ffi::GTK_ACCESSIBLE_ROLE_ALERT_DIALOG => Self::AlertDialog,
1442            ffi::GTK_ACCESSIBLE_ROLE_BANNER => Self::Banner,
1443            ffi::GTK_ACCESSIBLE_ROLE_BUTTON => Self::Button,
1444            ffi::GTK_ACCESSIBLE_ROLE_CAPTION => Self::Caption,
1445            ffi::GTK_ACCESSIBLE_ROLE_CELL => Self::Cell,
1446            ffi::GTK_ACCESSIBLE_ROLE_CHECKBOX => Self::Checkbox,
1447            ffi::GTK_ACCESSIBLE_ROLE_COLUMN_HEADER => Self::ColumnHeader,
1448            ffi::GTK_ACCESSIBLE_ROLE_COMBO_BOX => Self::ComboBox,
1449            ffi::GTK_ACCESSIBLE_ROLE_COMMAND => Self::Command,
1450            ffi::GTK_ACCESSIBLE_ROLE_COMPOSITE => Self::Composite,
1451            ffi::GTK_ACCESSIBLE_ROLE_DIALOG => Self::Dialog,
1452            ffi::GTK_ACCESSIBLE_ROLE_DOCUMENT => Self::Document,
1453            ffi::GTK_ACCESSIBLE_ROLE_FEED => Self::Feed,
1454            ffi::GTK_ACCESSIBLE_ROLE_FORM => Self::Form,
1455            ffi::GTK_ACCESSIBLE_ROLE_GENERIC => Self::Generic,
1456            ffi::GTK_ACCESSIBLE_ROLE_GRID => Self::Grid,
1457            ffi::GTK_ACCESSIBLE_ROLE_GRID_CELL => Self::GridCell,
1458            ffi::GTK_ACCESSIBLE_ROLE_GROUP => Self::Group,
1459            ffi::GTK_ACCESSIBLE_ROLE_HEADING => Self::Heading,
1460            ffi::GTK_ACCESSIBLE_ROLE_IMG => Self::Img,
1461            ffi::GTK_ACCESSIBLE_ROLE_INPUT => Self::Input,
1462            ffi::GTK_ACCESSIBLE_ROLE_LABEL => Self::Label,
1463            ffi::GTK_ACCESSIBLE_ROLE_LANDMARK => Self::Landmark,
1464            ffi::GTK_ACCESSIBLE_ROLE_LEGEND => Self::Legend,
1465            ffi::GTK_ACCESSIBLE_ROLE_LINK => Self::Link,
1466            ffi::GTK_ACCESSIBLE_ROLE_LIST => Self::List,
1467            ffi::GTK_ACCESSIBLE_ROLE_LIST_BOX => Self::ListBox,
1468            ffi::GTK_ACCESSIBLE_ROLE_LIST_ITEM => Self::ListItem,
1469            ffi::GTK_ACCESSIBLE_ROLE_LOG => Self::Log,
1470            ffi::GTK_ACCESSIBLE_ROLE_MAIN => Self::Main,
1471            ffi::GTK_ACCESSIBLE_ROLE_MARQUEE => Self::Marquee,
1472            ffi::GTK_ACCESSIBLE_ROLE_MATH => Self::Math,
1473            ffi::GTK_ACCESSIBLE_ROLE_METER => Self::Meter,
1474            ffi::GTK_ACCESSIBLE_ROLE_MENU => Self::Menu,
1475            ffi::GTK_ACCESSIBLE_ROLE_MENU_BAR => Self::MenuBar,
1476            ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM => Self::MenuItem,
1477            ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX => Self::MenuItemCheckbox,
1478            ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO => Self::MenuItemRadio,
1479            ffi::GTK_ACCESSIBLE_ROLE_NAVIGATION => Self::Navigation,
1480            ffi::GTK_ACCESSIBLE_ROLE_NONE => Self::None,
1481            ffi::GTK_ACCESSIBLE_ROLE_NOTE => Self::Note,
1482            ffi::GTK_ACCESSIBLE_ROLE_OPTION => Self::Option,
1483            ffi::GTK_ACCESSIBLE_ROLE_PRESENTATION => Self::Presentation,
1484            ffi::GTK_ACCESSIBLE_ROLE_PROGRESS_BAR => Self::ProgressBar,
1485            ffi::GTK_ACCESSIBLE_ROLE_RADIO => Self::Radio,
1486            ffi::GTK_ACCESSIBLE_ROLE_RADIO_GROUP => Self::RadioGroup,
1487            ffi::GTK_ACCESSIBLE_ROLE_RANGE => Self::Range,
1488            ffi::GTK_ACCESSIBLE_ROLE_REGION => Self::Region,
1489            ffi::GTK_ACCESSIBLE_ROLE_ROW => Self::Row,
1490            ffi::GTK_ACCESSIBLE_ROLE_ROW_GROUP => Self::RowGroup,
1491            ffi::GTK_ACCESSIBLE_ROLE_ROW_HEADER => Self::RowHeader,
1492            ffi::GTK_ACCESSIBLE_ROLE_SCROLLBAR => Self::Scrollbar,
1493            ffi::GTK_ACCESSIBLE_ROLE_SEARCH => Self::Search,
1494            ffi::GTK_ACCESSIBLE_ROLE_SEARCH_BOX => Self::SearchBox,
1495            ffi::GTK_ACCESSIBLE_ROLE_SECTION => Self::Section,
1496            ffi::GTK_ACCESSIBLE_ROLE_SECTION_HEAD => Self::SectionHead,
1497            ffi::GTK_ACCESSIBLE_ROLE_SELECT => Self::Select,
1498            ffi::GTK_ACCESSIBLE_ROLE_SEPARATOR => Self::Separator,
1499            ffi::GTK_ACCESSIBLE_ROLE_SLIDER => Self::Slider,
1500            ffi::GTK_ACCESSIBLE_ROLE_SPIN_BUTTON => Self::SpinButton,
1501            ffi::GTK_ACCESSIBLE_ROLE_STATUS => Self::Status,
1502            ffi::GTK_ACCESSIBLE_ROLE_STRUCTURE => Self::Structure,
1503            ffi::GTK_ACCESSIBLE_ROLE_SWITCH => Self::Switch,
1504            ffi::GTK_ACCESSIBLE_ROLE_TAB => Self::Tab,
1505            ffi::GTK_ACCESSIBLE_ROLE_TABLE => Self::Table,
1506            ffi::GTK_ACCESSIBLE_ROLE_TAB_LIST => Self::TabList,
1507            ffi::GTK_ACCESSIBLE_ROLE_TAB_PANEL => Self::TabPanel,
1508            ffi::GTK_ACCESSIBLE_ROLE_TEXT_BOX => Self::TextBox,
1509            ffi::GTK_ACCESSIBLE_ROLE_TIME => Self::Time,
1510            ffi::GTK_ACCESSIBLE_ROLE_TIMER => Self::Timer,
1511            ffi::GTK_ACCESSIBLE_ROLE_TOOLBAR => Self::Toolbar,
1512            ffi::GTK_ACCESSIBLE_ROLE_TOOLTIP => Self::Tooltip,
1513            ffi::GTK_ACCESSIBLE_ROLE_TREE => Self::Tree,
1514            ffi::GTK_ACCESSIBLE_ROLE_TREE_GRID => Self::TreeGrid,
1515            ffi::GTK_ACCESSIBLE_ROLE_TREE_ITEM => Self::TreeItem,
1516            ffi::GTK_ACCESSIBLE_ROLE_WIDGET => Self::Widget,
1517            ffi::GTK_ACCESSIBLE_ROLE_WINDOW => Self::Window,
1518            #[cfg(feature = "v4_10")]
1519            ffi::GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON => Self::ToggleButton,
1520            #[cfg(feature = "v4_12")]
1521            ffi::GTK_ACCESSIBLE_ROLE_APPLICATION => Self::Application,
1522            #[cfg(feature = "v4_14")]
1523            ffi::GTK_ACCESSIBLE_ROLE_PARAGRAPH => Self::Paragraph,
1524            #[cfg(feature = "v4_14")]
1525            ffi::GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE => Self::BlockQuote,
1526            #[cfg(feature = "v4_14")]
1527            ffi::GTK_ACCESSIBLE_ROLE_ARTICLE => Self::Article,
1528            #[cfg(feature = "v4_14")]
1529            ffi::GTK_ACCESSIBLE_ROLE_COMMENT => Self::Comment,
1530            #[cfg(feature = "v4_14")]
1531            ffi::GTK_ACCESSIBLE_ROLE_TERMINAL => Self::Terminal,
1532            value => Self::__Unknown(value),
1533        }
1534    }
1535}
1536
1537impl StaticType for AccessibleRole {
1538    #[inline]
1539    #[doc(alias = "gtk_accessible_role_get_type")]
1540    fn static_type() -> glib::Type {
1541        unsafe { from_glib(ffi::gtk_accessible_role_get_type()) }
1542    }
1543}
1544
1545impl glib::HasParamSpec for AccessibleRole {
1546    type ParamSpec = glib::ParamSpecEnum;
1547    type SetValue = Self;
1548    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1549
1550    fn param_spec_builder() -> Self::BuilderFn {
1551        Self::ParamSpec::builder_with_default
1552    }
1553}
1554
1555impl glib::value::ValueType for AccessibleRole {
1556    type Type = Self;
1557}
1558
1559unsafe impl<'a> glib::value::FromValue<'a> for AccessibleRole {
1560    type Checker = glib::value::GenericValueTypeChecker<Self>;
1561
1562    #[inline]
1563    unsafe fn from_value(value: &'a glib::Value) -> Self {
1564        skip_assert_initialized!();
1565        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1566    }
1567}
1568
1569impl ToValue for AccessibleRole {
1570    #[inline]
1571    fn to_value(&self) -> glib::Value {
1572        let mut value = glib::Value::for_value_type::<Self>();
1573        unsafe {
1574            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1575        }
1576        value
1577    }
1578
1579    #[inline]
1580    fn value_type(&self) -> glib::Type {
1581        Self::static_type()
1582    }
1583}
1584
1585impl From<AccessibleRole> for glib::Value {
1586    #[inline]
1587    fn from(v: AccessibleRole) -> Self {
1588        skip_assert_initialized!();
1589        ToValue::to_value(&v)
1590    }
1591}
1592
1593/// The possible values for the [`AccessibleProperty::Sort`][crate::AccessibleProperty::Sort]
1594/// accessible property.
1595#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1596#[non_exhaustive]
1597#[doc(alias = "GtkAccessibleSort")]
1598pub enum AccessibleSort {
1599    /// There is no defined sort applied to the column.
1600    #[doc(alias = "GTK_ACCESSIBLE_SORT_NONE")]
1601    None,
1602    /// Items are sorted in ascending order by this column.
1603    #[doc(alias = "GTK_ACCESSIBLE_SORT_ASCENDING")]
1604    Ascending,
1605    /// Items are sorted in descending order by this column.
1606    #[doc(alias = "GTK_ACCESSIBLE_SORT_DESCENDING")]
1607    Descending,
1608    /// A sort algorithm other than ascending or
1609    ///    descending has been applied.
1610    #[doc(alias = "GTK_ACCESSIBLE_SORT_OTHER")]
1611    Other,
1612    #[doc(hidden)]
1613    __Unknown(i32),
1614}
1615
1616#[doc(hidden)]
1617impl IntoGlib for AccessibleSort {
1618    type GlibType = ffi::GtkAccessibleSort;
1619
1620    #[inline]
1621    fn into_glib(self) -> ffi::GtkAccessibleSort {
1622        match self {
1623            Self::None => ffi::GTK_ACCESSIBLE_SORT_NONE,
1624            Self::Ascending => ffi::GTK_ACCESSIBLE_SORT_ASCENDING,
1625            Self::Descending => ffi::GTK_ACCESSIBLE_SORT_DESCENDING,
1626            Self::Other => ffi::GTK_ACCESSIBLE_SORT_OTHER,
1627            Self::__Unknown(value) => value,
1628        }
1629    }
1630}
1631
1632#[doc(hidden)]
1633impl FromGlib<ffi::GtkAccessibleSort> for AccessibleSort {
1634    #[inline]
1635    unsafe fn from_glib(value: ffi::GtkAccessibleSort) -> Self {
1636        skip_assert_initialized!();
1637
1638        match value {
1639            ffi::GTK_ACCESSIBLE_SORT_NONE => Self::None,
1640            ffi::GTK_ACCESSIBLE_SORT_ASCENDING => Self::Ascending,
1641            ffi::GTK_ACCESSIBLE_SORT_DESCENDING => Self::Descending,
1642            ffi::GTK_ACCESSIBLE_SORT_OTHER => Self::Other,
1643            value => Self::__Unknown(value),
1644        }
1645    }
1646}
1647
1648impl StaticType for AccessibleSort {
1649    #[inline]
1650    #[doc(alias = "gtk_accessible_sort_get_type")]
1651    fn static_type() -> glib::Type {
1652        unsafe { from_glib(ffi::gtk_accessible_sort_get_type()) }
1653    }
1654}
1655
1656impl glib::HasParamSpec for AccessibleSort {
1657    type ParamSpec = glib::ParamSpecEnum;
1658    type SetValue = Self;
1659    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1660
1661    fn param_spec_builder() -> Self::BuilderFn {
1662        Self::ParamSpec::builder_with_default
1663    }
1664}
1665
1666impl glib::value::ValueType for AccessibleSort {
1667    type Type = Self;
1668}
1669
1670unsafe impl<'a> glib::value::FromValue<'a> for AccessibleSort {
1671    type Checker = glib::value::GenericValueTypeChecker<Self>;
1672
1673    #[inline]
1674    unsafe fn from_value(value: &'a glib::Value) -> Self {
1675        skip_assert_initialized!();
1676        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1677    }
1678}
1679
1680impl ToValue for AccessibleSort {
1681    #[inline]
1682    fn to_value(&self) -> glib::Value {
1683        let mut value = glib::Value::for_value_type::<Self>();
1684        unsafe {
1685            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1686        }
1687        value
1688    }
1689
1690    #[inline]
1691    fn value_type(&self) -> glib::Type {
1692        Self::static_type()
1693    }
1694}
1695
1696impl From<AccessibleSort> for glib::Value {
1697    #[inline]
1698    fn from(v: AccessibleSort) -> Self {
1699        skip_assert_initialized!();
1700        ToValue::to_value(&v)
1701    }
1702}
1703
1704/// The possible accessible states of a [`Accessible`][crate::Accessible].
1705#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1706#[non_exhaustive]
1707#[doc(alias = "GtkAccessibleState")]
1708pub enum AccessibleState {
1709    /// A “busy” state. This state has boolean values
1710    #[doc(alias = "GTK_ACCESSIBLE_STATE_BUSY")]
1711    Busy,
1712    /// A “checked” state; indicates the current
1713    ///   state of a [`CheckButton`][crate::CheckButton]. Value type: [`AccessibleTristate`][crate::AccessibleTristate]
1714    #[doc(alias = "GTK_ACCESSIBLE_STATE_CHECKED")]
1715    Checked,
1716    /// A “disabled” state; corresponds to the
1717    ///   [`sensitive`][struct@crate::Widget#sensitive] property. It indicates a UI element
1718    ///   that is perceivable, but not editable or operable. Value type: boolean
1719    #[doc(alias = "GTK_ACCESSIBLE_STATE_DISABLED")]
1720    Disabled,
1721    /// An “expanded” state; corresponds to the
1722    ///   [`expanded`][struct@crate::Expander#expanded] property. Value type: boolean
1723    ///   or undefined
1724    #[doc(alias = "GTK_ACCESSIBLE_STATE_EXPANDED")]
1725    Expanded,
1726    /// A “hidden” state; corresponds to the
1727    ///   [`visible`][struct@crate::Widget#visible] property. You can use this state
1728    ///   explicitly on UI elements that should not be exposed to an assistive
1729    ///   technology. Value type: boolean
1730    ///   See also: [`Disabled`][Self::Disabled]
1731    #[doc(alias = "GTK_ACCESSIBLE_STATE_HIDDEN")]
1732    Hidden,
1733    /// An “invalid” state; set when a widget
1734    ///   is showing an error. Value type: [`AccessibleInvalidState`][crate::AccessibleInvalidState]
1735    #[doc(alias = "GTK_ACCESSIBLE_STATE_INVALID")]
1736    Invalid,
1737    /// A “pressed” state; indicates the current
1738    ///   state of a [`ToggleButton`][crate::ToggleButton]. Value type: [`AccessibleTristate`][crate::AccessibleTristate]
1739    ///   enumeration
1740    #[doc(alias = "GTK_ACCESSIBLE_STATE_PRESSED")]
1741    Pressed,
1742    /// A “selected” state; set when a widget
1743    ///   is selected. Value type: boolean or undefined
1744    #[doc(alias = "GTK_ACCESSIBLE_STATE_SELECTED")]
1745    Selected,
1746    /// Indicates that a widget with the GTK_ACCESSIBLE_ROLE_LINK has been visited.
1747    /// Value type: boolean.
1748    #[cfg(feature = "v4_12")]
1749    #[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
1750    #[doc(alias = "GTK_ACCESSIBLE_STATE_VISITED")]
1751    Visited,
1752    #[doc(hidden)]
1753    __Unknown(i32),
1754}
1755
1756impl AccessibleState {
1757    #[doc(alias = "gtk_accessible_state_init_value")]
1758    pub fn init_value(self, value: &mut glib::Value) {
1759        assert_initialized_main_thread!();
1760        unsafe {
1761            ffi::gtk_accessible_state_init_value(self.into_glib(), value.to_glib_none_mut().0);
1762        }
1763    }
1764}
1765
1766#[doc(hidden)]
1767impl IntoGlib for AccessibleState {
1768    type GlibType = ffi::GtkAccessibleState;
1769
1770    #[inline]
1771    fn into_glib(self) -> ffi::GtkAccessibleState {
1772        match self {
1773            Self::Busy => ffi::GTK_ACCESSIBLE_STATE_BUSY,
1774            Self::Checked => ffi::GTK_ACCESSIBLE_STATE_CHECKED,
1775            Self::Disabled => ffi::GTK_ACCESSIBLE_STATE_DISABLED,
1776            Self::Expanded => ffi::GTK_ACCESSIBLE_STATE_EXPANDED,
1777            Self::Hidden => ffi::GTK_ACCESSIBLE_STATE_HIDDEN,
1778            Self::Invalid => ffi::GTK_ACCESSIBLE_STATE_INVALID,
1779            Self::Pressed => ffi::GTK_ACCESSIBLE_STATE_PRESSED,
1780            Self::Selected => ffi::GTK_ACCESSIBLE_STATE_SELECTED,
1781            #[cfg(feature = "v4_12")]
1782            Self::Visited => ffi::GTK_ACCESSIBLE_STATE_VISITED,
1783            Self::__Unknown(value) => value,
1784        }
1785    }
1786}
1787
1788#[doc(hidden)]
1789impl FromGlib<ffi::GtkAccessibleState> for AccessibleState {
1790    #[inline]
1791    unsafe fn from_glib(value: ffi::GtkAccessibleState) -> Self {
1792        skip_assert_initialized!();
1793
1794        match value {
1795            ffi::GTK_ACCESSIBLE_STATE_BUSY => Self::Busy,
1796            ffi::GTK_ACCESSIBLE_STATE_CHECKED => Self::Checked,
1797            ffi::GTK_ACCESSIBLE_STATE_DISABLED => Self::Disabled,
1798            ffi::GTK_ACCESSIBLE_STATE_EXPANDED => Self::Expanded,
1799            ffi::GTK_ACCESSIBLE_STATE_HIDDEN => Self::Hidden,
1800            ffi::GTK_ACCESSIBLE_STATE_INVALID => Self::Invalid,
1801            ffi::GTK_ACCESSIBLE_STATE_PRESSED => Self::Pressed,
1802            ffi::GTK_ACCESSIBLE_STATE_SELECTED => Self::Selected,
1803            #[cfg(feature = "v4_12")]
1804            ffi::GTK_ACCESSIBLE_STATE_VISITED => Self::Visited,
1805            value => Self::__Unknown(value),
1806        }
1807    }
1808}
1809
1810impl StaticType for AccessibleState {
1811    #[inline]
1812    #[doc(alias = "gtk_accessible_state_get_type")]
1813    fn static_type() -> glib::Type {
1814        unsafe { from_glib(ffi::gtk_accessible_state_get_type()) }
1815    }
1816}
1817
1818impl glib::HasParamSpec for AccessibleState {
1819    type ParamSpec = glib::ParamSpecEnum;
1820    type SetValue = Self;
1821    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1822
1823    fn param_spec_builder() -> Self::BuilderFn {
1824        Self::ParamSpec::builder_with_default
1825    }
1826}
1827
1828impl glib::value::ValueType for AccessibleState {
1829    type Type = Self;
1830}
1831
1832unsafe impl<'a> glib::value::FromValue<'a> for AccessibleState {
1833    type Checker = glib::value::GenericValueTypeChecker<Self>;
1834
1835    #[inline]
1836    unsafe fn from_value(value: &'a glib::Value) -> Self {
1837        skip_assert_initialized!();
1838        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1839    }
1840}
1841
1842impl ToValue for AccessibleState {
1843    #[inline]
1844    fn to_value(&self) -> glib::Value {
1845        let mut value = glib::Value::for_value_type::<Self>();
1846        unsafe {
1847            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1848        }
1849        value
1850    }
1851
1852    #[inline]
1853    fn value_type(&self) -> glib::Type {
1854        Self::static_type()
1855    }
1856}
1857
1858impl From<AccessibleState> for glib::Value {
1859    #[inline]
1860    fn from(v: AccessibleState) -> Self {
1861        skip_assert_initialized!();
1862        ToValue::to_value(&v)
1863    }
1864}
1865
1866/// The type of contents change operation.
1867#[cfg(feature = "v4_14")]
1868#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1869#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1870#[non_exhaustive]
1871#[doc(alias = "GtkAccessibleTextContentChange")]
1872pub enum AccessibleTextContentChange {
1873    /// contents change as the result of
1874    ///   an insert operation
1875    #[doc(alias = "GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT")]
1876    Insert,
1877    /// contents change as the result of
1878    ///   a remove operation
1879    #[doc(alias = "GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_REMOVE")]
1880    Remove,
1881    #[doc(hidden)]
1882    __Unknown(i32),
1883}
1884
1885#[cfg(feature = "v4_14")]
1886#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1887#[doc(hidden)]
1888impl IntoGlib for AccessibleTextContentChange {
1889    type GlibType = ffi::GtkAccessibleTextContentChange;
1890
1891    #[inline]
1892    fn into_glib(self) -> ffi::GtkAccessibleTextContentChange {
1893        match self {
1894            Self::Insert => ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT,
1895            Self::Remove => ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_REMOVE,
1896            Self::__Unknown(value) => value,
1897        }
1898    }
1899}
1900
1901#[cfg(feature = "v4_14")]
1902#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1903#[doc(hidden)]
1904impl FromGlib<ffi::GtkAccessibleTextContentChange> for AccessibleTextContentChange {
1905    #[inline]
1906    unsafe fn from_glib(value: ffi::GtkAccessibleTextContentChange) -> Self {
1907        skip_assert_initialized!();
1908
1909        match value {
1910            ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT => Self::Insert,
1911            ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_REMOVE => Self::Remove,
1912            value => Self::__Unknown(value),
1913        }
1914    }
1915}
1916
1917#[cfg(feature = "v4_14")]
1918#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1919impl StaticType for AccessibleTextContentChange {
1920    #[inline]
1921    #[doc(alias = "gtk_accessible_text_content_change_get_type")]
1922    fn static_type() -> glib::Type {
1923        unsafe { from_glib(ffi::gtk_accessible_text_content_change_get_type()) }
1924    }
1925}
1926
1927#[cfg(feature = "v4_14")]
1928#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1929impl glib::HasParamSpec for AccessibleTextContentChange {
1930    type ParamSpec = glib::ParamSpecEnum;
1931    type SetValue = Self;
1932    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1933
1934    fn param_spec_builder() -> Self::BuilderFn {
1935        Self::ParamSpec::builder_with_default
1936    }
1937}
1938
1939#[cfg(feature = "v4_14")]
1940#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1941impl glib::value::ValueType for AccessibleTextContentChange {
1942    type Type = Self;
1943}
1944
1945#[cfg(feature = "v4_14")]
1946#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1947unsafe impl<'a> glib::value::FromValue<'a> for AccessibleTextContentChange {
1948    type Checker = glib::value::GenericValueTypeChecker<Self>;
1949
1950    #[inline]
1951    unsafe fn from_value(value: &'a glib::Value) -> Self {
1952        skip_assert_initialized!();
1953        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1954    }
1955}
1956
1957#[cfg(feature = "v4_14")]
1958#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1959impl ToValue for AccessibleTextContentChange {
1960    #[inline]
1961    fn to_value(&self) -> glib::Value {
1962        let mut value = glib::Value::for_value_type::<Self>();
1963        unsafe {
1964            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1965        }
1966        value
1967    }
1968
1969    #[inline]
1970    fn value_type(&self) -> glib::Type {
1971        Self::static_type()
1972    }
1973}
1974
1975#[cfg(feature = "v4_14")]
1976#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1977impl From<AccessibleTextContentChange> for glib::Value {
1978    #[inline]
1979    fn from(v: AccessibleTextContentChange) -> Self {
1980        skip_assert_initialized!();
1981        ToValue::to_value(&v)
1982    }
1983}
1984
1985/// The granularity for queries about the text contents of a [`AccessibleText`][crate::AccessibleText]
1986/// implementation.
1987#[cfg(feature = "v4_14")]
1988#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1989#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1990#[non_exhaustive]
1991#[doc(alias = "GtkAccessibleTextGranularity")]
1992pub enum AccessibleTextGranularity {
1993    /// Use the boundary between
1994    ///   characters (including non-printing characters)
1995    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_CHARACTER")]
1996    Character,
1997    /// Use the boundary between words,
1998    ///   starting from the beginning of the current word and ending at the
1999    ///   beginning of the next word
2000    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_WORD")]
2001    Word,
2002    /// Use the boundary between
2003    ///   sentences, starting from the beginning of the current sentence and
2004    ///   ending at the beginning of the next sentence
2005    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_SENTENCE")]
2006    Sentence,
2007    /// Use the boundary between lines,
2008    ///   starting from the beginning of the current line and ending at the
2009    ///   beginning of the next line
2010    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_LINE")]
2011    Line,
2012    /// Use the boundary between
2013    ///   paragraphs, starting from the beginning of the current paragraph and
2014    ///   ending at the beginning of the next paragraph
2015    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_PARAGRAPH")]
2016    Paragraph,
2017    #[doc(hidden)]
2018    __Unknown(i32),
2019}
2020
2021#[cfg(feature = "v4_14")]
2022#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2023#[doc(hidden)]
2024impl IntoGlib for AccessibleTextGranularity {
2025    type GlibType = ffi::GtkAccessibleTextGranularity;
2026
2027    #[inline]
2028    fn into_glib(self) -> ffi::GtkAccessibleTextGranularity {
2029        match self {
2030            Self::Character => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_CHARACTER,
2031            Self::Word => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_WORD,
2032            Self::Sentence => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_SENTENCE,
2033            Self::Line => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_LINE,
2034            Self::Paragraph => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_PARAGRAPH,
2035            Self::__Unknown(value) => value,
2036        }
2037    }
2038}
2039
2040#[cfg(feature = "v4_14")]
2041#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2042#[doc(hidden)]
2043impl FromGlib<ffi::GtkAccessibleTextGranularity> for AccessibleTextGranularity {
2044    #[inline]
2045    unsafe fn from_glib(value: ffi::GtkAccessibleTextGranularity) -> Self {
2046        skip_assert_initialized!();
2047
2048        match value {
2049            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_CHARACTER => Self::Character,
2050            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_WORD => Self::Word,
2051            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_SENTENCE => Self::Sentence,
2052            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_LINE => Self::Line,
2053            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_PARAGRAPH => Self::Paragraph,
2054            value => Self::__Unknown(value),
2055        }
2056    }
2057}
2058
2059#[cfg(feature = "v4_14")]
2060#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2061impl StaticType for AccessibleTextGranularity {
2062    #[inline]
2063    #[doc(alias = "gtk_accessible_text_granularity_get_type")]
2064    fn static_type() -> glib::Type {
2065        unsafe { from_glib(ffi::gtk_accessible_text_granularity_get_type()) }
2066    }
2067}
2068
2069#[cfg(feature = "v4_14")]
2070#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2071impl glib::HasParamSpec for AccessibleTextGranularity {
2072    type ParamSpec = glib::ParamSpecEnum;
2073    type SetValue = Self;
2074    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2075
2076    fn param_spec_builder() -> Self::BuilderFn {
2077        Self::ParamSpec::builder_with_default
2078    }
2079}
2080
2081#[cfg(feature = "v4_14")]
2082#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2083impl glib::value::ValueType for AccessibleTextGranularity {
2084    type Type = Self;
2085}
2086
2087#[cfg(feature = "v4_14")]
2088#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2089unsafe impl<'a> glib::value::FromValue<'a> for AccessibleTextGranularity {
2090    type Checker = glib::value::GenericValueTypeChecker<Self>;
2091
2092    #[inline]
2093    unsafe fn from_value(value: &'a glib::Value) -> Self {
2094        skip_assert_initialized!();
2095        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2096    }
2097}
2098
2099#[cfg(feature = "v4_14")]
2100#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2101impl ToValue for AccessibleTextGranularity {
2102    #[inline]
2103    fn to_value(&self) -> glib::Value {
2104        let mut value = glib::Value::for_value_type::<Self>();
2105        unsafe {
2106            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2107        }
2108        value
2109    }
2110
2111    #[inline]
2112    fn value_type(&self) -> glib::Type {
2113        Self::static_type()
2114    }
2115}
2116
2117#[cfg(feature = "v4_14")]
2118#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2119impl From<AccessibleTextGranularity> for glib::Value {
2120    #[inline]
2121    fn from(v: AccessibleTextGranularity) -> Self {
2122        skip_assert_initialized!();
2123        ToValue::to_value(&v)
2124    }
2125}
2126
2127/// The possible values for the [`AccessibleState::Pressed`][crate::AccessibleState::Pressed]
2128/// accessible state.
2129///
2130/// Note that the [`False`][Self::False] and
2131/// [`True`][Self::True] have the same values
2132/// as [`false`] and [`true`].
2133#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2134#[non_exhaustive]
2135#[doc(alias = "GtkAccessibleTristate")]
2136pub enum AccessibleTristate {
2137    /// The state is `false`
2138    #[doc(alias = "GTK_ACCESSIBLE_TRISTATE_FALSE")]
2139    False,
2140    /// The state is `true`
2141    #[doc(alias = "GTK_ACCESSIBLE_TRISTATE_TRUE")]
2142    True,
2143    /// The state is `mixed`
2144    #[doc(alias = "GTK_ACCESSIBLE_TRISTATE_MIXED")]
2145    Mixed,
2146    #[doc(hidden)]
2147    __Unknown(i32),
2148}
2149
2150#[doc(hidden)]
2151impl IntoGlib for AccessibleTristate {
2152    type GlibType = ffi::GtkAccessibleTristate;
2153
2154    #[inline]
2155    fn into_glib(self) -> ffi::GtkAccessibleTristate {
2156        match self {
2157            Self::False => ffi::GTK_ACCESSIBLE_TRISTATE_FALSE,
2158            Self::True => ffi::GTK_ACCESSIBLE_TRISTATE_TRUE,
2159            Self::Mixed => ffi::GTK_ACCESSIBLE_TRISTATE_MIXED,
2160            Self::__Unknown(value) => value,
2161        }
2162    }
2163}
2164
2165#[doc(hidden)]
2166impl FromGlib<ffi::GtkAccessibleTristate> for AccessibleTristate {
2167    #[inline]
2168    unsafe fn from_glib(value: ffi::GtkAccessibleTristate) -> Self {
2169        skip_assert_initialized!();
2170
2171        match value {
2172            ffi::GTK_ACCESSIBLE_TRISTATE_FALSE => Self::False,
2173            ffi::GTK_ACCESSIBLE_TRISTATE_TRUE => Self::True,
2174            ffi::GTK_ACCESSIBLE_TRISTATE_MIXED => Self::Mixed,
2175            value => Self::__Unknown(value),
2176        }
2177    }
2178}
2179
2180impl StaticType for AccessibleTristate {
2181    #[inline]
2182    #[doc(alias = "gtk_accessible_tristate_get_type")]
2183    fn static_type() -> glib::Type {
2184        unsafe { from_glib(ffi::gtk_accessible_tristate_get_type()) }
2185    }
2186}
2187
2188impl glib::HasParamSpec for AccessibleTristate {
2189    type ParamSpec = glib::ParamSpecEnum;
2190    type SetValue = Self;
2191    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2192
2193    fn param_spec_builder() -> Self::BuilderFn {
2194        Self::ParamSpec::builder_with_default
2195    }
2196}
2197
2198impl glib::value::ValueType for AccessibleTristate {
2199    type Type = Self;
2200}
2201
2202unsafe impl<'a> glib::value::FromValue<'a> for AccessibleTristate {
2203    type Checker = glib::value::GenericValueTypeChecker<Self>;
2204
2205    #[inline]
2206    unsafe fn from_value(value: &'a glib::Value) -> Self {
2207        skip_assert_initialized!();
2208        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2209    }
2210}
2211
2212impl ToValue for AccessibleTristate {
2213    #[inline]
2214    fn to_value(&self) -> glib::Value {
2215        let mut value = glib::Value::for_value_type::<Self>();
2216        unsafe {
2217            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2218        }
2219        value
2220    }
2221
2222    #[inline]
2223    fn value_type(&self) -> glib::Type {
2224        Self::static_type()
2225    }
2226}
2227
2228impl From<AccessibleTristate> for glib::Value {
2229    #[inline]
2230    fn from(v: AccessibleTristate) -> Self {
2231        skip_assert_initialized!();
2232        ToValue::to_value(&v)
2233    }
2234}
2235
2236/// Indicates the direction in which an arrow should point.
2237#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2238#[non_exhaustive]
2239#[doc(alias = "GtkArrowType")]
2240pub enum ArrowType {
2241    /// Represents an upward pointing arrow.
2242    #[doc(alias = "GTK_ARROW_UP")]
2243    Up,
2244    /// Represents a downward pointing arrow.
2245    #[doc(alias = "GTK_ARROW_DOWN")]
2246    Down,
2247    /// Represents a left pointing arrow.
2248    #[doc(alias = "GTK_ARROW_LEFT")]
2249    Left,
2250    /// Represents a right pointing arrow.
2251    #[doc(alias = "GTK_ARROW_RIGHT")]
2252    Right,
2253    /// No arrow.
2254    #[doc(alias = "GTK_ARROW_NONE")]
2255    None,
2256    #[doc(hidden)]
2257    __Unknown(i32),
2258}
2259
2260#[doc(hidden)]
2261impl IntoGlib for ArrowType {
2262    type GlibType = ffi::GtkArrowType;
2263
2264    #[inline]
2265    fn into_glib(self) -> ffi::GtkArrowType {
2266        match self {
2267            Self::Up => ffi::GTK_ARROW_UP,
2268            Self::Down => ffi::GTK_ARROW_DOWN,
2269            Self::Left => ffi::GTK_ARROW_LEFT,
2270            Self::Right => ffi::GTK_ARROW_RIGHT,
2271            Self::None => ffi::GTK_ARROW_NONE,
2272            Self::__Unknown(value) => value,
2273        }
2274    }
2275}
2276
2277#[doc(hidden)]
2278impl FromGlib<ffi::GtkArrowType> for ArrowType {
2279    #[inline]
2280    unsafe fn from_glib(value: ffi::GtkArrowType) -> Self {
2281        skip_assert_initialized!();
2282
2283        match value {
2284            ffi::GTK_ARROW_UP => Self::Up,
2285            ffi::GTK_ARROW_DOWN => Self::Down,
2286            ffi::GTK_ARROW_LEFT => Self::Left,
2287            ffi::GTK_ARROW_RIGHT => Self::Right,
2288            ffi::GTK_ARROW_NONE => Self::None,
2289            value => Self::__Unknown(value),
2290        }
2291    }
2292}
2293
2294impl StaticType for ArrowType {
2295    #[inline]
2296    #[doc(alias = "gtk_arrow_type_get_type")]
2297    fn static_type() -> glib::Type {
2298        unsafe { from_glib(ffi::gtk_arrow_type_get_type()) }
2299    }
2300}
2301
2302impl glib::HasParamSpec for ArrowType {
2303    type ParamSpec = glib::ParamSpecEnum;
2304    type SetValue = Self;
2305    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2306
2307    fn param_spec_builder() -> Self::BuilderFn {
2308        Self::ParamSpec::builder_with_default
2309    }
2310}
2311
2312impl glib::value::ValueType for ArrowType {
2313    type Type = Self;
2314}
2315
2316unsafe impl<'a> glib::value::FromValue<'a> for ArrowType {
2317    type Checker = glib::value::GenericValueTypeChecker<Self>;
2318
2319    #[inline]
2320    unsafe fn from_value(value: &'a glib::Value) -> Self {
2321        skip_assert_initialized!();
2322        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2323    }
2324}
2325
2326impl ToValue for ArrowType {
2327    #[inline]
2328    fn to_value(&self) -> glib::Value {
2329        let mut value = glib::Value::for_value_type::<Self>();
2330        unsafe {
2331            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2332        }
2333        value
2334    }
2335
2336    #[inline]
2337    fn value_type(&self) -> glib::Type {
2338        Self::static_type()
2339    }
2340}
2341
2342impl From<ArrowType> for glib::Value {
2343    #[inline]
2344    fn from(v: ArrowType) -> Self {
2345        skip_assert_initialized!();
2346        ToValue::to_value(&v)
2347    }
2348}
2349
2350/// Determines the role of a page inside a [`Assistant`][crate::Assistant].
2351///
2352/// The role is used to handle buttons sensitivity and visibility.
2353///
2354/// Note that an assistant needs to end its page flow with a page of type
2355/// [`Confirm`][Self::Confirm], [`Summary`][Self::Summary] or
2356/// [`Progress`][Self::Progress] to be correct.
2357///
2358/// The Cancel button will only be shown if the page isn’t “committed”.
2359/// See gtk_assistant_commit() for details.
2360///
2361/// # Deprecated since 4.10
2362///
2363/// [`Assistant`][crate::Assistant] will be removed in GTK 5
2364#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
2365#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2366#[non_exhaustive]
2367#[doc(alias = "GtkAssistantPageType")]
2368pub enum AssistantPageType {
2369    /// The page has regular contents. Both the
2370    ///  Back and forward buttons will be shown.
2371    #[doc(alias = "GTK_ASSISTANT_PAGE_CONTENT")]
2372    Content,
2373    /// The page contains an introduction to the
2374    ///  assistant task. Only the Forward button will be shown if there is a
2375    ///   next page.
2376    #[doc(alias = "GTK_ASSISTANT_PAGE_INTRO")]
2377    Intro,
2378    /// The page lets the user confirm or deny the
2379    ///  changes. The Back and Apply buttons will be shown.
2380    #[doc(alias = "GTK_ASSISTANT_PAGE_CONFIRM")]
2381    Confirm,
2382    /// The page informs the user of the changes
2383    ///  done. Only the Close button will be shown.
2384    #[doc(alias = "GTK_ASSISTANT_PAGE_SUMMARY")]
2385    Summary,
2386    /// Used for tasks that take a long time to
2387    ///  complete, blocks the assistant until the page is marked as complete.
2388    ///   Only the back button will be shown.
2389    #[doc(alias = "GTK_ASSISTANT_PAGE_PROGRESS")]
2390    Progress,
2391    /// Used for when other page types are not
2392    ///  appropriate. No buttons will be shown, and the application must
2393    ///  add its own buttons through gtk_assistant_add_action_widget().
2394    #[doc(alias = "GTK_ASSISTANT_PAGE_CUSTOM")]
2395    Custom,
2396    #[doc(hidden)]
2397    __Unknown(i32),
2398}
2399
2400#[allow(deprecated)]
2401#[doc(hidden)]
2402impl IntoGlib for AssistantPageType {
2403    type GlibType = ffi::GtkAssistantPageType;
2404
2405    #[inline]
2406    fn into_glib(self) -> ffi::GtkAssistantPageType {
2407        match self {
2408            Self::Content => ffi::GTK_ASSISTANT_PAGE_CONTENT,
2409            Self::Intro => ffi::GTK_ASSISTANT_PAGE_INTRO,
2410            Self::Confirm => ffi::GTK_ASSISTANT_PAGE_CONFIRM,
2411            Self::Summary => ffi::GTK_ASSISTANT_PAGE_SUMMARY,
2412            Self::Progress => ffi::GTK_ASSISTANT_PAGE_PROGRESS,
2413            Self::Custom => ffi::GTK_ASSISTANT_PAGE_CUSTOM,
2414            Self::__Unknown(value) => value,
2415        }
2416    }
2417}
2418
2419#[allow(deprecated)]
2420#[doc(hidden)]
2421impl FromGlib<ffi::GtkAssistantPageType> for AssistantPageType {
2422    #[inline]
2423    unsafe fn from_glib(value: ffi::GtkAssistantPageType) -> Self {
2424        skip_assert_initialized!();
2425
2426        match value {
2427            ffi::GTK_ASSISTANT_PAGE_CONTENT => Self::Content,
2428            ffi::GTK_ASSISTANT_PAGE_INTRO => Self::Intro,
2429            ffi::GTK_ASSISTANT_PAGE_CONFIRM => Self::Confirm,
2430            ffi::GTK_ASSISTANT_PAGE_SUMMARY => Self::Summary,
2431            ffi::GTK_ASSISTANT_PAGE_PROGRESS => Self::Progress,
2432            ffi::GTK_ASSISTANT_PAGE_CUSTOM => Self::Custom,
2433            value => Self::__Unknown(value),
2434        }
2435    }
2436}
2437
2438#[allow(deprecated)]
2439impl StaticType for AssistantPageType {
2440    #[inline]
2441    #[doc(alias = "gtk_assistant_page_type_get_type")]
2442    fn static_type() -> glib::Type {
2443        unsafe { from_glib(ffi::gtk_assistant_page_type_get_type()) }
2444    }
2445}
2446
2447#[allow(deprecated)]
2448impl glib::HasParamSpec for AssistantPageType {
2449    type ParamSpec = glib::ParamSpecEnum;
2450    type SetValue = Self;
2451    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2452
2453    fn param_spec_builder() -> Self::BuilderFn {
2454        Self::ParamSpec::builder_with_default
2455    }
2456}
2457
2458#[allow(deprecated)]
2459impl glib::value::ValueType for AssistantPageType {
2460    type Type = Self;
2461}
2462
2463#[allow(deprecated)]
2464unsafe impl<'a> glib::value::FromValue<'a> for AssistantPageType {
2465    type Checker = glib::value::GenericValueTypeChecker<Self>;
2466
2467    #[inline]
2468    unsafe fn from_value(value: &'a glib::Value) -> Self {
2469        skip_assert_initialized!();
2470        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2471    }
2472}
2473
2474#[allow(deprecated)]
2475impl ToValue for AssistantPageType {
2476    #[inline]
2477    fn to_value(&self) -> glib::Value {
2478        let mut value = glib::Value::for_value_type::<Self>();
2479        unsafe {
2480            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2481        }
2482        value
2483    }
2484
2485    #[inline]
2486    fn value_type(&self) -> glib::Type {
2487        Self::static_type()
2488    }
2489}
2490
2491#[allow(deprecated)]
2492impl From<AssistantPageType> for glib::Value {
2493    #[inline]
2494    fn from(v: AssistantPageType) -> Self {
2495        skip_assert_initialized!();
2496        ToValue::to_value(&v)
2497    }
2498}
2499
2500/// Baseline position in a row of widgets.
2501///
2502/// Whenever a container has some form of natural row it may align
2503/// children in that row along a common typographical baseline. If
2504/// the amount of vertical space in the row is taller than the total
2505/// requested height of the baseline-aligned children then it can use a
2506/// [`BaselinePosition`][crate::BaselinePosition] to select where to put the baseline inside the
2507/// extra available space.
2508#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2509#[non_exhaustive]
2510#[doc(alias = "GtkBaselinePosition")]
2511pub enum BaselinePosition {
2512    /// Align the baseline at the top
2513    #[doc(alias = "GTK_BASELINE_POSITION_TOP")]
2514    Top,
2515    /// Center the baseline
2516    #[doc(alias = "GTK_BASELINE_POSITION_CENTER")]
2517    Center,
2518    /// Align the baseline at the bottom
2519    #[doc(alias = "GTK_BASELINE_POSITION_BOTTOM")]
2520    Bottom,
2521    #[doc(hidden)]
2522    __Unknown(i32),
2523}
2524
2525#[doc(hidden)]
2526impl IntoGlib for BaselinePosition {
2527    type GlibType = ffi::GtkBaselinePosition;
2528
2529    #[inline]
2530    fn into_glib(self) -> ffi::GtkBaselinePosition {
2531        match self {
2532            Self::Top => ffi::GTK_BASELINE_POSITION_TOP,
2533            Self::Center => ffi::GTK_BASELINE_POSITION_CENTER,
2534            Self::Bottom => ffi::GTK_BASELINE_POSITION_BOTTOM,
2535            Self::__Unknown(value) => value,
2536        }
2537    }
2538}
2539
2540#[doc(hidden)]
2541impl FromGlib<ffi::GtkBaselinePosition> for BaselinePosition {
2542    #[inline]
2543    unsafe fn from_glib(value: ffi::GtkBaselinePosition) -> Self {
2544        skip_assert_initialized!();
2545
2546        match value {
2547            ffi::GTK_BASELINE_POSITION_TOP => Self::Top,
2548            ffi::GTK_BASELINE_POSITION_CENTER => Self::Center,
2549            ffi::GTK_BASELINE_POSITION_BOTTOM => Self::Bottom,
2550            value => Self::__Unknown(value),
2551        }
2552    }
2553}
2554
2555impl StaticType for BaselinePosition {
2556    #[inline]
2557    #[doc(alias = "gtk_baseline_position_get_type")]
2558    fn static_type() -> glib::Type {
2559        unsafe { from_glib(ffi::gtk_baseline_position_get_type()) }
2560    }
2561}
2562
2563impl glib::HasParamSpec for BaselinePosition {
2564    type ParamSpec = glib::ParamSpecEnum;
2565    type SetValue = Self;
2566    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2567
2568    fn param_spec_builder() -> Self::BuilderFn {
2569        Self::ParamSpec::builder_with_default
2570    }
2571}
2572
2573impl glib::value::ValueType for BaselinePosition {
2574    type Type = Self;
2575}
2576
2577unsafe impl<'a> glib::value::FromValue<'a> for BaselinePosition {
2578    type Checker = glib::value::GenericValueTypeChecker<Self>;
2579
2580    #[inline]
2581    unsafe fn from_value(value: &'a glib::Value) -> Self {
2582        skip_assert_initialized!();
2583        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2584    }
2585}
2586
2587impl ToValue for BaselinePosition {
2588    #[inline]
2589    fn to_value(&self) -> glib::Value {
2590        let mut value = glib::Value::for_value_type::<Self>();
2591        unsafe {
2592            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2593        }
2594        value
2595    }
2596
2597    #[inline]
2598    fn value_type(&self) -> glib::Type {
2599        Self::static_type()
2600    }
2601}
2602
2603impl From<BaselinePosition> for glib::Value {
2604    #[inline]
2605    fn from(v: BaselinePosition) -> Self {
2606        skip_assert_initialized!();
2607        ToValue::to_value(&v)
2608    }
2609}
2610
2611/// Describes how the border of a UI element should be rendered.
2612#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2613#[non_exhaustive]
2614#[doc(alias = "GtkBorderStyle")]
2615pub enum BorderStyle {
2616    /// No visible border
2617    #[doc(alias = "GTK_BORDER_STYLE_NONE")]
2618    None,
2619    /// Same as [`None`][Self::None]
2620    #[doc(alias = "GTK_BORDER_STYLE_HIDDEN")]
2621    Hidden,
2622    /// A single line segment
2623    #[doc(alias = "GTK_BORDER_STYLE_SOLID")]
2624    Solid,
2625    /// Looks as if the content is sunken into the canvas
2626    #[doc(alias = "GTK_BORDER_STYLE_INSET")]
2627    Inset,
2628    /// Looks as if the content is coming out of the canvas
2629    #[doc(alias = "GTK_BORDER_STYLE_OUTSET")]
2630    Outset,
2631    /// A series of round dots
2632    #[doc(alias = "GTK_BORDER_STYLE_DOTTED")]
2633    Dotted,
2634    /// A series of square-ended dashes
2635    #[doc(alias = "GTK_BORDER_STYLE_DASHED")]
2636    Dashed,
2637    /// Two parallel lines with some space between them
2638    #[doc(alias = "GTK_BORDER_STYLE_DOUBLE")]
2639    Double,
2640    /// Looks as if it were carved in the canvas
2641    #[doc(alias = "GTK_BORDER_STYLE_GROOVE")]
2642    Groove,
2643    /// Looks as if it were coming out of the canvas
2644    #[doc(alias = "GTK_BORDER_STYLE_RIDGE")]
2645    Ridge,
2646    #[doc(hidden)]
2647    __Unknown(i32),
2648}
2649
2650#[doc(hidden)]
2651impl IntoGlib for BorderStyle {
2652    type GlibType = ffi::GtkBorderStyle;
2653
2654    #[inline]
2655    fn into_glib(self) -> ffi::GtkBorderStyle {
2656        match self {
2657            Self::None => ffi::GTK_BORDER_STYLE_NONE,
2658            Self::Hidden => ffi::GTK_BORDER_STYLE_HIDDEN,
2659            Self::Solid => ffi::GTK_BORDER_STYLE_SOLID,
2660            Self::Inset => ffi::GTK_BORDER_STYLE_INSET,
2661            Self::Outset => ffi::GTK_BORDER_STYLE_OUTSET,
2662            Self::Dotted => ffi::GTK_BORDER_STYLE_DOTTED,
2663            Self::Dashed => ffi::GTK_BORDER_STYLE_DASHED,
2664            Self::Double => ffi::GTK_BORDER_STYLE_DOUBLE,
2665            Self::Groove => ffi::GTK_BORDER_STYLE_GROOVE,
2666            Self::Ridge => ffi::GTK_BORDER_STYLE_RIDGE,
2667            Self::__Unknown(value) => value,
2668        }
2669    }
2670}
2671
2672#[doc(hidden)]
2673impl FromGlib<ffi::GtkBorderStyle> for BorderStyle {
2674    #[inline]
2675    unsafe fn from_glib(value: ffi::GtkBorderStyle) -> Self {
2676        skip_assert_initialized!();
2677
2678        match value {
2679            ffi::GTK_BORDER_STYLE_NONE => Self::None,
2680            ffi::GTK_BORDER_STYLE_HIDDEN => Self::Hidden,
2681            ffi::GTK_BORDER_STYLE_SOLID => Self::Solid,
2682            ffi::GTK_BORDER_STYLE_INSET => Self::Inset,
2683            ffi::GTK_BORDER_STYLE_OUTSET => Self::Outset,
2684            ffi::GTK_BORDER_STYLE_DOTTED => Self::Dotted,
2685            ffi::GTK_BORDER_STYLE_DASHED => Self::Dashed,
2686            ffi::GTK_BORDER_STYLE_DOUBLE => Self::Double,
2687            ffi::GTK_BORDER_STYLE_GROOVE => Self::Groove,
2688            ffi::GTK_BORDER_STYLE_RIDGE => Self::Ridge,
2689            value => Self::__Unknown(value),
2690        }
2691    }
2692}
2693
2694impl StaticType for BorderStyle {
2695    #[inline]
2696    #[doc(alias = "gtk_border_style_get_type")]
2697    fn static_type() -> glib::Type {
2698        unsafe { from_glib(ffi::gtk_border_style_get_type()) }
2699    }
2700}
2701
2702impl glib::HasParamSpec for BorderStyle {
2703    type ParamSpec = glib::ParamSpecEnum;
2704    type SetValue = Self;
2705    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2706
2707    fn param_spec_builder() -> Self::BuilderFn {
2708        Self::ParamSpec::builder_with_default
2709    }
2710}
2711
2712impl glib::value::ValueType for BorderStyle {
2713    type Type = Self;
2714}
2715
2716unsafe impl<'a> glib::value::FromValue<'a> for BorderStyle {
2717    type Checker = glib::value::GenericValueTypeChecker<Self>;
2718
2719    #[inline]
2720    unsafe fn from_value(value: &'a glib::Value) -> Self {
2721        skip_assert_initialized!();
2722        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2723    }
2724}
2725
2726impl ToValue for BorderStyle {
2727    #[inline]
2728    fn to_value(&self) -> glib::Value {
2729        let mut value = glib::Value::for_value_type::<Self>();
2730        unsafe {
2731            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2732        }
2733        value
2734    }
2735
2736    #[inline]
2737    fn value_type(&self) -> glib::Type {
2738        Self::static_type()
2739    }
2740}
2741
2742impl From<BorderStyle> for glib::Value {
2743    #[inline]
2744    fn from(v: BorderStyle) -> Self {
2745        skip_assert_initialized!();
2746        ToValue::to_value(&v)
2747    }
2748}
2749
2750/// Error codes that identify various errors that can occur while using
2751/// [`Builder`][crate::Builder].
2752#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2753#[non_exhaustive]
2754#[doc(alias = "GtkBuilderError")]
2755pub enum BuilderError {
2756    /// A type-func attribute didn’t name
2757    ///  a function that returns a `GType`.
2758    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION")]
2759    InvalidTypeFunction,
2760    /// The input contained a tag that [`Builder`][crate::Builder]
2761    ///  can’t handle.
2762    #[doc(alias = "GTK_BUILDER_ERROR_UNHANDLED_TAG")]
2763    UnhandledTag,
2764    /// An attribute that is required by
2765    ///  [`Builder`][crate::Builder] was missing.
2766    #[doc(alias = "GTK_BUILDER_ERROR_MISSING_ATTRIBUTE")]
2767    MissingAttribute,
2768    /// [`Builder`][crate::Builder] found an attribute that
2769    ///  it doesn’t understand.
2770    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_ATTRIBUTE")]
2771    InvalidAttribute,
2772    /// [`Builder`][crate::Builder] found a tag that
2773    ///  it doesn’t understand.
2774    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_TAG")]
2775    InvalidTag,
2776    /// A required property value was
2777    ///  missing.
2778    #[doc(alias = "GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE")]
2779    MissingPropertyValue,
2780    /// [`Builder`][crate::Builder] couldn’t parse
2781    ///  some attribute value.
2782    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_VALUE")]
2783    InvalidValue,
2784    /// The input file requires a newer version
2785    ///  of GTK.
2786    #[doc(alias = "GTK_BUILDER_ERROR_VERSION_MISMATCH")]
2787    VersionMismatch,
2788    /// An object id occurred twice.
2789    #[doc(alias = "GTK_BUILDER_ERROR_DUPLICATE_ID")]
2790    DuplicateId,
2791    /// A specified object type is of the same type or
2792    ///  derived from the type of the composite class being extended with builder XML.
2793    #[doc(alias = "GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED")]
2794    ObjectTypeRefused,
2795    /// The wrong type was specified in a composite class’s template XML
2796    #[doc(alias = "GTK_BUILDER_ERROR_TEMPLATE_MISMATCH")]
2797    TemplateMismatch,
2798    /// The specified property is unknown for the object class.
2799    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_PROPERTY")]
2800    InvalidProperty,
2801    /// The specified signal is unknown for the object class.
2802    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_SIGNAL")]
2803    InvalidSignal,
2804    /// An object id is unknown.
2805    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_ID")]
2806    InvalidId,
2807    /// A function could not be found. This often happens
2808    ///   when symbols are set to be kept private. Compiling code with -rdynamic or using the
2809    ///   `gmodule-export-2.0` pkgconfig module can fix this problem.
2810    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_FUNCTION")]
2811    InvalidFunction,
2812    #[doc(hidden)]
2813    __Unknown(i32),
2814}
2815
2816#[doc(hidden)]
2817impl IntoGlib for BuilderError {
2818    type GlibType = ffi::GtkBuilderError;
2819
2820    fn into_glib(self) -> ffi::GtkBuilderError {
2821        match self {
2822            Self::InvalidTypeFunction => ffi::GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION,
2823            Self::UnhandledTag => ffi::GTK_BUILDER_ERROR_UNHANDLED_TAG,
2824            Self::MissingAttribute => ffi::GTK_BUILDER_ERROR_MISSING_ATTRIBUTE,
2825            Self::InvalidAttribute => ffi::GTK_BUILDER_ERROR_INVALID_ATTRIBUTE,
2826            Self::InvalidTag => ffi::GTK_BUILDER_ERROR_INVALID_TAG,
2827            Self::MissingPropertyValue => ffi::GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE,
2828            Self::InvalidValue => ffi::GTK_BUILDER_ERROR_INVALID_VALUE,
2829            Self::VersionMismatch => ffi::GTK_BUILDER_ERROR_VERSION_MISMATCH,
2830            Self::DuplicateId => ffi::GTK_BUILDER_ERROR_DUPLICATE_ID,
2831            Self::ObjectTypeRefused => ffi::GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED,
2832            Self::TemplateMismatch => ffi::GTK_BUILDER_ERROR_TEMPLATE_MISMATCH,
2833            Self::InvalidProperty => ffi::GTK_BUILDER_ERROR_INVALID_PROPERTY,
2834            Self::InvalidSignal => ffi::GTK_BUILDER_ERROR_INVALID_SIGNAL,
2835            Self::InvalidId => ffi::GTK_BUILDER_ERROR_INVALID_ID,
2836            Self::InvalidFunction => ffi::GTK_BUILDER_ERROR_INVALID_FUNCTION,
2837            Self::__Unknown(value) => value,
2838        }
2839    }
2840}
2841
2842#[doc(hidden)]
2843impl FromGlib<ffi::GtkBuilderError> for BuilderError {
2844    unsafe fn from_glib(value: ffi::GtkBuilderError) -> Self {
2845        skip_assert_initialized!();
2846
2847        match value {
2848            ffi::GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION => Self::InvalidTypeFunction,
2849            ffi::GTK_BUILDER_ERROR_UNHANDLED_TAG => Self::UnhandledTag,
2850            ffi::GTK_BUILDER_ERROR_MISSING_ATTRIBUTE => Self::MissingAttribute,
2851            ffi::GTK_BUILDER_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
2852            ffi::GTK_BUILDER_ERROR_INVALID_TAG => Self::InvalidTag,
2853            ffi::GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE => Self::MissingPropertyValue,
2854            ffi::GTK_BUILDER_ERROR_INVALID_VALUE => Self::InvalidValue,
2855            ffi::GTK_BUILDER_ERROR_VERSION_MISMATCH => Self::VersionMismatch,
2856            ffi::GTK_BUILDER_ERROR_DUPLICATE_ID => Self::DuplicateId,
2857            ffi::GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED => Self::ObjectTypeRefused,
2858            ffi::GTK_BUILDER_ERROR_TEMPLATE_MISMATCH => Self::TemplateMismatch,
2859            ffi::GTK_BUILDER_ERROR_INVALID_PROPERTY => Self::InvalidProperty,
2860            ffi::GTK_BUILDER_ERROR_INVALID_SIGNAL => Self::InvalidSignal,
2861            ffi::GTK_BUILDER_ERROR_INVALID_ID => Self::InvalidId,
2862            ffi::GTK_BUILDER_ERROR_INVALID_FUNCTION => Self::InvalidFunction,
2863            value => Self::__Unknown(value),
2864        }
2865    }
2866}
2867
2868impl glib::error::ErrorDomain for BuilderError {
2869    #[inline]
2870    fn domain() -> glib::Quark {
2871        skip_assert_initialized!();
2872
2873        unsafe { from_glib(ffi::gtk_builder_error_quark()) }
2874    }
2875
2876    #[inline]
2877    fn code(self) -> i32 {
2878        self.into_glib()
2879    }
2880
2881    #[inline]
2882    #[allow(clippy::match_single_binding)]
2883    fn from(code: i32) -> Option<Self> {
2884        skip_assert_initialized!();
2885        match unsafe { from_glib(code) } {
2886            value => Some(value),
2887        }
2888    }
2889}
2890
2891impl StaticType for BuilderError {
2892    #[inline]
2893    #[doc(alias = "gtk_builder_error_get_type")]
2894    fn static_type() -> glib::Type {
2895        unsafe { from_glib(ffi::gtk_builder_error_get_type()) }
2896    }
2897}
2898
2899impl glib::HasParamSpec for BuilderError {
2900    type ParamSpec = glib::ParamSpecEnum;
2901    type SetValue = Self;
2902    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2903
2904    fn param_spec_builder() -> Self::BuilderFn {
2905        Self::ParamSpec::builder_with_default
2906    }
2907}
2908
2909impl glib::value::ValueType for BuilderError {
2910    type Type = Self;
2911}
2912
2913unsafe impl<'a> glib::value::FromValue<'a> for BuilderError {
2914    type Checker = glib::value::GenericValueTypeChecker<Self>;
2915
2916    #[inline]
2917    unsafe fn from_value(value: &'a glib::Value) -> Self {
2918        skip_assert_initialized!();
2919        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2920    }
2921}
2922
2923impl ToValue for BuilderError {
2924    #[inline]
2925    fn to_value(&self) -> glib::Value {
2926        let mut value = glib::Value::for_value_type::<Self>();
2927        unsafe {
2928            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2929        }
2930        value
2931    }
2932
2933    #[inline]
2934    fn value_type(&self) -> glib::Type {
2935        Self::static_type()
2936    }
2937}
2938
2939impl From<BuilderError> for glib::Value {
2940    #[inline]
2941    fn from(v: BuilderError) -> Self {
2942        skip_assert_initialized!();
2943        ToValue::to_value(&v)
2944    }
2945}
2946
2947/// Prebuilt sets of buttons for [`Dialog`][crate::Dialog].
2948///
2949/// If none of these choices are appropriate, simply use
2950/// [`None`][Self::None] and call [`DialogExtManual::add_buttons()`][crate::prelude::DialogExtManual::add_buttons()].
2951///
2952/// > Please note that [`Ok`][Self::Ok], [`YesNo`][Self::YesNo]
2953/// > and [`OkCancel`][Self::OkCancel] are discouraged by the
2954/// > [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/).
2955#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2956#[non_exhaustive]
2957#[doc(alias = "GtkButtonsType")]
2958pub enum ButtonsType {
2959    /// no buttons at all
2960    #[doc(alias = "GTK_BUTTONS_NONE")]
2961    None,
2962    /// an OK button
2963    #[doc(alias = "GTK_BUTTONS_OK")]
2964    Ok,
2965    /// a Close button
2966    #[doc(alias = "GTK_BUTTONS_CLOSE")]
2967    Close,
2968    /// a Cancel button
2969    #[doc(alias = "GTK_BUTTONS_CANCEL")]
2970    Cancel,
2971    /// Yes and No buttons
2972    #[doc(alias = "GTK_BUTTONS_YES_NO")]
2973    YesNo,
2974    /// OK and Cancel buttons
2975    #[doc(alias = "GTK_BUTTONS_OK_CANCEL")]
2976    OkCancel,
2977    #[doc(hidden)]
2978    __Unknown(i32),
2979}
2980
2981#[doc(hidden)]
2982impl IntoGlib for ButtonsType {
2983    type GlibType = ffi::GtkButtonsType;
2984
2985    #[inline]
2986    fn into_glib(self) -> ffi::GtkButtonsType {
2987        match self {
2988            Self::None => ffi::GTK_BUTTONS_NONE,
2989            Self::Ok => ffi::GTK_BUTTONS_OK,
2990            Self::Close => ffi::GTK_BUTTONS_CLOSE,
2991            Self::Cancel => ffi::GTK_BUTTONS_CANCEL,
2992            Self::YesNo => ffi::GTK_BUTTONS_YES_NO,
2993            Self::OkCancel => ffi::GTK_BUTTONS_OK_CANCEL,
2994            Self::__Unknown(value) => value,
2995        }
2996    }
2997}
2998
2999#[doc(hidden)]
3000impl FromGlib<ffi::GtkButtonsType> for ButtonsType {
3001    #[inline]
3002    unsafe fn from_glib(value: ffi::GtkButtonsType) -> Self {
3003        skip_assert_initialized!();
3004
3005        match value {
3006            ffi::GTK_BUTTONS_NONE => Self::None,
3007            ffi::GTK_BUTTONS_OK => Self::Ok,
3008            ffi::GTK_BUTTONS_CLOSE => Self::Close,
3009            ffi::GTK_BUTTONS_CANCEL => Self::Cancel,
3010            ffi::GTK_BUTTONS_YES_NO => Self::YesNo,
3011            ffi::GTK_BUTTONS_OK_CANCEL => Self::OkCancel,
3012            value => Self::__Unknown(value),
3013        }
3014    }
3015}
3016
3017impl StaticType for ButtonsType {
3018    #[inline]
3019    #[doc(alias = "gtk_buttons_type_get_type")]
3020    fn static_type() -> glib::Type {
3021        unsafe { from_glib(ffi::gtk_buttons_type_get_type()) }
3022    }
3023}
3024
3025impl glib::HasParamSpec for ButtonsType {
3026    type ParamSpec = glib::ParamSpecEnum;
3027    type SetValue = Self;
3028    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3029
3030    fn param_spec_builder() -> Self::BuilderFn {
3031        Self::ParamSpec::builder_with_default
3032    }
3033}
3034
3035impl glib::value::ValueType for ButtonsType {
3036    type Type = Self;
3037}
3038
3039unsafe impl<'a> glib::value::FromValue<'a> for ButtonsType {
3040    type Checker = glib::value::GenericValueTypeChecker<Self>;
3041
3042    #[inline]
3043    unsafe fn from_value(value: &'a glib::Value) -> Self {
3044        skip_assert_initialized!();
3045        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3046    }
3047}
3048
3049impl ToValue for ButtonsType {
3050    #[inline]
3051    fn to_value(&self) -> glib::Value {
3052        let mut value = glib::Value::for_value_type::<Self>();
3053        unsafe {
3054            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3055        }
3056        value
3057    }
3058
3059    #[inline]
3060    fn value_type(&self) -> glib::Type {
3061        Self::static_type()
3062    }
3063}
3064
3065impl From<ButtonsType> for glib::Value {
3066    #[inline]
3067    fn from(v: ButtonsType) -> Self {
3068        skip_assert_initialized!();
3069        ToValue::to_value(&v)
3070    }
3071}
3072
3073/// The available modes for [`accel-mode`][struct@crate::CellRendererAccel#accel-mode].
3074///
3075/// # Deprecated since 4.20
3076///
3077/// There is no replacement
3078#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
3079#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3080#[non_exhaustive]
3081#[doc(alias = "GtkCellRendererAccelMode")]
3082pub enum CellRendererAccelMode {
3083    /// GTK accelerators mode
3084    #[doc(alias = "GTK_CELL_RENDERER_ACCEL_MODE_GTK")]
3085    Gtk,
3086    /// Other accelerator mode
3087    #[doc(alias = "GTK_CELL_RENDERER_ACCEL_MODE_OTHER")]
3088    Other,
3089    #[doc(hidden)]
3090    __Unknown(i32),
3091}
3092
3093#[allow(deprecated)]
3094#[doc(hidden)]
3095impl IntoGlib for CellRendererAccelMode {
3096    type GlibType = ffi::GtkCellRendererAccelMode;
3097
3098    #[inline]
3099    fn into_glib(self) -> ffi::GtkCellRendererAccelMode {
3100        match self {
3101            Self::Gtk => ffi::GTK_CELL_RENDERER_ACCEL_MODE_GTK,
3102            Self::Other => ffi::GTK_CELL_RENDERER_ACCEL_MODE_OTHER,
3103            Self::__Unknown(value) => value,
3104        }
3105    }
3106}
3107
3108#[allow(deprecated)]
3109#[doc(hidden)]
3110impl FromGlib<ffi::GtkCellRendererAccelMode> for CellRendererAccelMode {
3111    #[inline]
3112    unsafe fn from_glib(value: ffi::GtkCellRendererAccelMode) -> Self {
3113        skip_assert_initialized!();
3114
3115        match value {
3116            ffi::GTK_CELL_RENDERER_ACCEL_MODE_GTK => Self::Gtk,
3117            ffi::GTK_CELL_RENDERER_ACCEL_MODE_OTHER => Self::Other,
3118            value => Self::__Unknown(value),
3119        }
3120    }
3121}
3122
3123#[allow(deprecated)]
3124impl StaticType for CellRendererAccelMode {
3125    #[inline]
3126    #[doc(alias = "gtk_cell_renderer_accel_mode_get_type")]
3127    fn static_type() -> glib::Type {
3128        unsafe { from_glib(ffi::gtk_cell_renderer_accel_mode_get_type()) }
3129    }
3130}
3131
3132#[allow(deprecated)]
3133impl glib::HasParamSpec for CellRendererAccelMode {
3134    type ParamSpec = glib::ParamSpecEnum;
3135    type SetValue = Self;
3136    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3137
3138    fn param_spec_builder() -> Self::BuilderFn {
3139        Self::ParamSpec::builder_with_default
3140    }
3141}
3142
3143#[allow(deprecated)]
3144impl glib::value::ValueType for CellRendererAccelMode {
3145    type Type = Self;
3146}
3147
3148#[allow(deprecated)]
3149unsafe impl<'a> glib::value::FromValue<'a> for CellRendererAccelMode {
3150    type Checker = glib::value::GenericValueTypeChecker<Self>;
3151
3152    #[inline]
3153    unsafe fn from_value(value: &'a glib::Value) -> Self {
3154        skip_assert_initialized!();
3155        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3156    }
3157}
3158
3159#[allow(deprecated)]
3160impl ToValue for CellRendererAccelMode {
3161    #[inline]
3162    fn to_value(&self) -> glib::Value {
3163        let mut value = glib::Value::for_value_type::<Self>();
3164        unsafe {
3165            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3166        }
3167        value
3168    }
3169
3170    #[inline]
3171    fn value_type(&self) -> glib::Type {
3172        Self::static_type()
3173    }
3174}
3175
3176#[allow(deprecated)]
3177impl From<CellRendererAccelMode> for glib::Value {
3178    #[inline]
3179    fn from(v: CellRendererAccelMode) -> Self {
3180        skip_assert_initialized!();
3181        ToValue::to_value(&v)
3182    }
3183}
3184
3185/// Identifies how the user can interact with a particular cell.
3186///
3187/// # Deprecated since 4.20
3188///
3189/// There is no replacement.
3190#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
3191#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3192#[non_exhaustive]
3193#[doc(alias = "GtkCellRendererMode")]
3194pub enum CellRendererMode {
3195    /// The cell is just for display
3196    ///  and cannot be interacted with.  Note that this doesn’t mean that eg. the
3197    ///  row being drawn can’t be selected -- just that a particular element of
3198    ///  it cannot be individually modified.
3199    #[doc(alias = "GTK_CELL_RENDERER_MODE_INERT")]
3200    Inert,
3201    /// The cell can be clicked.
3202    #[doc(alias = "GTK_CELL_RENDERER_MODE_ACTIVATABLE")]
3203    Activatable,
3204    /// The cell can be edited or otherwise modified.
3205    #[doc(alias = "GTK_CELL_RENDERER_MODE_EDITABLE")]
3206    Editable,
3207    #[doc(hidden)]
3208    __Unknown(i32),
3209}
3210
3211#[allow(deprecated)]
3212#[doc(hidden)]
3213impl IntoGlib for CellRendererMode {
3214    type GlibType = ffi::GtkCellRendererMode;
3215
3216    #[inline]
3217    fn into_glib(self) -> ffi::GtkCellRendererMode {
3218        match self {
3219            Self::Inert => ffi::GTK_CELL_RENDERER_MODE_INERT,
3220            Self::Activatable => ffi::GTK_CELL_RENDERER_MODE_ACTIVATABLE,
3221            Self::Editable => ffi::GTK_CELL_RENDERER_MODE_EDITABLE,
3222            Self::__Unknown(value) => value,
3223        }
3224    }
3225}
3226
3227#[allow(deprecated)]
3228#[doc(hidden)]
3229impl FromGlib<ffi::GtkCellRendererMode> for CellRendererMode {
3230    #[inline]
3231    unsafe fn from_glib(value: ffi::GtkCellRendererMode) -> Self {
3232        skip_assert_initialized!();
3233
3234        match value {
3235            ffi::GTK_CELL_RENDERER_MODE_INERT => Self::Inert,
3236            ffi::GTK_CELL_RENDERER_MODE_ACTIVATABLE => Self::Activatable,
3237            ffi::GTK_CELL_RENDERER_MODE_EDITABLE => Self::Editable,
3238            value => Self::__Unknown(value),
3239        }
3240    }
3241}
3242
3243#[allow(deprecated)]
3244impl StaticType for CellRendererMode {
3245    #[inline]
3246    #[doc(alias = "gtk_cell_renderer_mode_get_type")]
3247    fn static_type() -> glib::Type {
3248        unsafe { from_glib(ffi::gtk_cell_renderer_mode_get_type()) }
3249    }
3250}
3251
3252#[allow(deprecated)]
3253impl glib::HasParamSpec for CellRendererMode {
3254    type ParamSpec = glib::ParamSpecEnum;
3255    type SetValue = Self;
3256    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3257
3258    fn param_spec_builder() -> Self::BuilderFn {
3259        Self::ParamSpec::builder_with_default
3260    }
3261}
3262
3263#[allow(deprecated)]
3264impl glib::value::ValueType for CellRendererMode {
3265    type Type = Self;
3266}
3267
3268#[allow(deprecated)]
3269unsafe impl<'a> glib::value::FromValue<'a> for CellRendererMode {
3270    type Checker = glib::value::GenericValueTypeChecker<Self>;
3271
3272    #[inline]
3273    unsafe fn from_value(value: &'a glib::Value) -> Self {
3274        skip_assert_initialized!();
3275        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3276    }
3277}
3278
3279#[allow(deprecated)]
3280impl ToValue for CellRendererMode {
3281    #[inline]
3282    fn to_value(&self) -> glib::Value {
3283        let mut value = glib::Value::for_value_type::<Self>();
3284        unsafe {
3285            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3286        }
3287        value
3288    }
3289
3290    #[inline]
3291    fn value_type(&self) -> glib::Type {
3292        Self::static_type()
3293    }
3294}
3295
3296#[allow(deprecated)]
3297impl From<CellRendererMode> for glib::Value {
3298    #[inline]
3299    fn from(v: CellRendererMode) -> Self {
3300        skip_assert_initialized!();
3301        ToValue::to_value(&v)
3302    }
3303}
3304
3305/// Describes how a [`StringSorter`][crate::StringSorter] turns strings into sort keys to
3306/// compare them.
3307///
3308/// Note that the result of sorting will in general depend on the current locale
3309/// unless the mode is @GTK_COLLATION_NONE.
3310#[cfg(feature = "v4_10")]
3311#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3312#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3313#[non_exhaustive]
3314#[doc(alias = "GtkCollation")]
3315pub enum Collation {
3316    /// Don't do any collation
3317    #[doc(alias = "GTK_COLLATION_NONE")]
3318    None,
3319    /// Use `utf8_collate_key()`
3320    #[doc(alias = "GTK_COLLATION_UNICODE")]
3321    Unicode,
3322    /// Use `utf8_collate_key_for_filename()`
3323    #[doc(alias = "GTK_COLLATION_FILENAME")]
3324    Filename,
3325    #[doc(hidden)]
3326    __Unknown(i32),
3327}
3328
3329#[cfg(feature = "v4_10")]
3330#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3331#[doc(hidden)]
3332impl IntoGlib for Collation {
3333    type GlibType = ffi::GtkCollation;
3334
3335    #[inline]
3336    fn into_glib(self) -> ffi::GtkCollation {
3337        match self {
3338            Self::None => ffi::GTK_COLLATION_NONE,
3339            Self::Unicode => ffi::GTK_COLLATION_UNICODE,
3340            Self::Filename => ffi::GTK_COLLATION_FILENAME,
3341            Self::__Unknown(value) => value,
3342        }
3343    }
3344}
3345
3346#[cfg(feature = "v4_10")]
3347#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3348#[doc(hidden)]
3349impl FromGlib<ffi::GtkCollation> for Collation {
3350    #[inline]
3351    unsafe fn from_glib(value: ffi::GtkCollation) -> Self {
3352        skip_assert_initialized!();
3353
3354        match value {
3355            ffi::GTK_COLLATION_NONE => Self::None,
3356            ffi::GTK_COLLATION_UNICODE => Self::Unicode,
3357            ffi::GTK_COLLATION_FILENAME => Self::Filename,
3358            value => Self::__Unknown(value),
3359        }
3360    }
3361}
3362
3363#[cfg(feature = "v4_10")]
3364#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3365impl StaticType for Collation {
3366    #[inline]
3367    #[doc(alias = "gtk_collation_get_type")]
3368    fn static_type() -> glib::Type {
3369        unsafe { from_glib(ffi::gtk_collation_get_type()) }
3370    }
3371}
3372
3373#[cfg(feature = "v4_10")]
3374#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3375impl glib::HasParamSpec for Collation {
3376    type ParamSpec = glib::ParamSpecEnum;
3377    type SetValue = Self;
3378    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3379
3380    fn param_spec_builder() -> Self::BuilderFn {
3381        Self::ParamSpec::builder_with_default
3382    }
3383}
3384
3385#[cfg(feature = "v4_10")]
3386#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3387impl glib::value::ValueType for Collation {
3388    type Type = Self;
3389}
3390
3391#[cfg(feature = "v4_10")]
3392#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3393unsafe impl<'a> glib::value::FromValue<'a> for Collation {
3394    type Checker = glib::value::GenericValueTypeChecker<Self>;
3395
3396    #[inline]
3397    unsafe fn from_value(value: &'a glib::Value) -> Self {
3398        skip_assert_initialized!();
3399        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3400    }
3401}
3402
3403#[cfg(feature = "v4_10")]
3404#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3405impl ToValue for Collation {
3406    #[inline]
3407    fn to_value(&self) -> glib::Value {
3408        let mut value = glib::Value::for_value_type::<Self>();
3409        unsafe {
3410            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3411        }
3412        value
3413    }
3414
3415    #[inline]
3416    fn value_type(&self) -> glib::Type {
3417        Self::static_type()
3418    }
3419}
3420
3421#[cfg(feature = "v4_10")]
3422#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3423impl From<Collation> for glib::Value {
3424    #[inline]
3425    fn from(v: Collation) -> Self {
3426        skip_assert_initialized!();
3427        ToValue::to_value(&v)
3428    }
3429}
3430
3431/// The widget attributes that can be used when creating a [`Constraint`][crate::Constraint].
3432#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3433#[non_exhaustive]
3434#[doc(alias = "GtkConstraintAttribute")]
3435pub enum ConstraintAttribute {
3436    /// No attribute, used for constant
3437    ///   relations
3438    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_NONE")]
3439    None,
3440    /// The left edge of a widget, regardless of
3441    ///   text direction
3442    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_LEFT")]
3443    Left,
3444    /// The right edge of a widget, regardless
3445    ///   of text direction
3446    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_RIGHT")]
3447    Right,
3448    /// The top edge of a widget
3449    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_TOP")]
3450    Top,
3451    /// The bottom edge of a widget
3452    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_BOTTOM")]
3453    Bottom,
3454    /// The leading edge of a widget, depending
3455    ///   on text direction; equivalent to [`Left`][Self::Left] for LTR
3456    ///   languages, and [`Right`][Self::Right] for RTL ones
3457    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_START")]
3458    Start,
3459    /// The trailing edge of a widget, depending
3460    ///   on text direction; equivalent to [`Right`][Self::Right] for LTR
3461    ///   languages, and [`Left`][Self::Left] for RTL ones
3462    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_END")]
3463    End,
3464    /// The width of a widget
3465    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_WIDTH")]
3466    Width,
3467    /// The height of a widget
3468    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_HEIGHT")]
3469    Height,
3470    /// The center of a widget, on the
3471    ///   horizontal axis
3472    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_CENTER_X")]
3473    CenterX,
3474    /// The center of a widget, on the
3475    ///   vertical axis
3476    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y")]
3477    CenterY,
3478    /// The baseline of a widget
3479    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_BASELINE")]
3480    Baseline,
3481    #[doc(hidden)]
3482    __Unknown(i32),
3483}
3484
3485#[doc(hidden)]
3486impl IntoGlib for ConstraintAttribute {
3487    type GlibType = ffi::GtkConstraintAttribute;
3488
3489    #[inline]
3490    fn into_glib(self) -> ffi::GtkConstraintAttribute {
3491        match self {
3492            Self::None => ffi::GTK_CONSTRAINT_ATTRIBUTE_NONE,
3493            Self::Left => ffi::GTK_CONSTRAINT_ATTRIBUTE_LEFT,
3494            Self::Right => ffi::GTK_CONSTRAINT_ATTRIBUTE_RIGHT,
3495            Self::Top => ffi::GTK_CONSTRAINT_ATTRIBUTE_TOP,
3496            Self::Bottom => ffi::GTK_CONSTRAINT_ATTRIBUTE_BOTTOM,
3497            Self::Start => ffi::GTK_CONSTRAINT_ATTRIBUTE_START,
3498            Self::End => ffi::GTK_CONSTRAINT_ATTRIBUTE_END,
3499            Self::Width => ffi::GTK_CONSTRAINT_ATTRIBUTE_WIDTH,
3500            Self::Height => ffi::GTK_CONSTRAINT_ATTRIBUTE_HEIGHT,
3501            Self::CenterX => ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_X,
3502            Self::CenterY => ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y,
3503            Self::Baseline => ffi::GTK_CONSTRAINT_ATTRIBUTE_BASELINE,
3504            Self::__Unknown(value) => value,
3505        }
3506    }
3507}
3508
3509#[doc(hidden)]
3510impl FromGlib<ffi::GtkConstraintAttribute> for ConstraintAttribute {
3511    #[inline]
3512    unsafe fn from_glib(value: ffi::GtkConstraintAttribute) -> Self {
3513        skip_assert_initialized!();
3514
3515        match value {
3516            ffi::GTK_CONSTRAINT_ATTRIBUTE_NONE => Self::None,
3517            ffi::GTK_CONSTRAINT_ATTRIBUTE_LEFT => Self::Left,
3518            ffi::GTK_CONSTRAINT_ATTRIBUTE_RIGHT => Self::Right,
3519            ffi::GTK_CONSTRAINT_ATTRIBUTE_TOP => Self::Top,
3520            ffi::GTK_CONSTRAINT_ATTRIBUTE_BOTTOM => Self::Bottom,
3521            ffi::GTK_CONSTRAINT_ATTRIBUTE_START => Self::Start,
3522            ffi::GTK_CONSTRAINT_ATTRIBUTE_END => Self::End,
3523            ffi::GTK_CONSTRAINT_ATTRIBUTE_WIDTH => Self::Width,
3524            ffi::GTK_CONSTRAINT_ATTRIBUTE_HEIGHT => Self::Height,
3525            ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_X => Self::CenterX,
3526            ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y => Self::CenterY,
3527            ffi::GTK_CONSTRAINT_ATTRIBUTE_BASELINE => Self::Baseline,
3528            value => Self::__Unknown(value),
3529        }
3530    }
3531}
3532
3533impl StaticType for ConstraintAttribute {
3534    #[inline]
3535    #[doc(alias = "gtk_constraint_attribute_get_type")]
3536    fn static_type() -> glib::Type {
3537        unsafe { from_glib(ffi::gtk_constraint_attribute_get_type()) }
3538    }
3539}
3540
3541impl glib::HasParamSpec for ConstraintAttribute {
3542    type ParamSpec = glib::ParamSpecEnum;
3543    type SetValue = Self;
3544    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3545
3546    fn param_spec_builder() -> Self::BuilderFn {
3547        Self::ParamSpec::builder_with_default
3548    }
3549}
3550
3551impl glib::value::ValueType for ConstraintAttribute {
3552    type Type = Self;
3553}
3554
3555unsafe impl<'a> glib::value::FromValue<'a> for ConstraintAttribute {
3556    type Checker = glib::value::GenericValueTypeChecker<Self>;
3557
3558    #[inline]
3559    unsafe fn from_value(value: &'a glib::Value) -> Self {
3560        skip_assert_initialized!();
3561        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3562    }
3563}
3564
3565impl ToValue for ConstraintAttribute {
3566    #[inline]
3567    fn to_value(&self) -> glib::Value {
3568        let mut value = glib::Value::for_value_type::<Self>();
3569        unsafe {
3570            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3571        }
3572        value
3573    }
3574
3575    #[inline]
3576    fn value_type(&self) -> glib::Type {
3577        Self::static_type()
3578    }
3579}
3580
3581impl From<ConstraintAttribute> for glib::Value {
3582    #[inline]
3583    fn from(v: ConstraintAttribute) -> Self {
3584        skip_assert_initialized!();
3585        ToValue::to_value(&v)
3586    }
3587}
3588
3589/// The relation between two terms of a constraint.
3590#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3591#[non_exhaustive]
3592#[doc(alias = "GtkConstraintRelation")]
3593pub enum ConstraintRelation {
3594    /// Less than, or equal
3595    #[doc(alias = "GTK_CONSTRAINT_RELATION_LE")]
3596    Le,
3597    /// Equal
3598    #[doc(alias = "GTK_CONSTRAINT_RELATION_EQ")]
3599    Eq,
3600    /// Greater than, or equal
3601    #[doc(alias = "GTK_CONSTRAINT_RELATION_GE")]
3602    Ge,
3603    #[doc(hidden)]
3604    __Unknown(i32),
3605}
3606
3607#[doc(hidden)]
3608impl IntoGlib for ConstraintRelation {
3609    type GlibType = ffi::GtkConstraintRelation;
3610
3611    #[inline]
3612    fn into_glib(self) -> ffi::GtkConstraintRelation {
3613        match self {
3614            Self::Le => ffi::GTK_CONSTRAINT_RELATION_LE,
3615            Self::Eq => ffi::GTK_CONSTRAINT_RELATION_EQ,
3616            Self::Ge => ffi::GTK_CONSTRAINT_RELATION_GE,
3617            Self::__Unknown(value) => value,
3618        }
3619    }
3620}
3621
3622#[doc(hidden)]
3623impl FromGlib<ffi::GtkConstraintRelation> for ConstraintRelation {
3624    #[inline]
3625    unsafe fn from_glib(value: ffi::GtkConstraintRelation) -> Self {
3626        skip_assert_initialized!();
3627
3628        match value {
3629            ffi::GTK_CONSTRAINT_RELATION_LE => Self::Le,
3630            ffi::GTK_CONSTRAINT_RELATION_EQ => Self::Eq,
3631            ffi::GTK_CONSTRAINT_RELATION_GE => Self::Ge,
3632            value => Self::__Unknown(value),
3633        }
3634    }
3635}
3636
3637impl StaticType for ConstraintRelation {
3638    #[inline]
3639    #[doc(alias = "gtk_constraint_relation_get_type")]
3640    fn static_type() -> glib::Type {
3641        unsafe { from_glib(ffi::gtk_constraint_relation_get_type()) }
3642    }
3643}
3644
3645impl glib::HasParamSpec for ConstraintRelation {
3646    type ParamSpec = glib::ParamSpecEnum;
3647    type SetValue = Self;
3648    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3649
3650    fn param_spec_builder() -> Self::BuilderFn {
3651        Self::ParamSpec::builder_with_default
3652    }
3653}
3654
3655impl glib::value::ValueType for ConstraintRelation {
3656    type Type = Self;
3657}
3658
3659unsafe impl<'a> glib::value::FromValue<'a> for ConstraintRelation {
3660    type Checker = glib::value::GenericValueTypeChecker<Self>;
3661
3662    #[inline]
3663    unsafe fn from_value(value: &'a glib::Value) -> Self {
3664        skip_assert_initialized!();
3665        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3666    }
3667}
3668
3669impl ToValue for ConstraintRelation {
3670    #[inline]
3671    fn to_value(&self) -> glib::Value {
3672        let mut value = glib::Value::for_value_type::<Self>();
3673        unsafe {
3674            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3675        }
3676        value
3677    }
3678
3679    #[inline]
3680    fn value_type(&self) -> glib::Type {
3681        Self::static_type()
3682    }
3683}
3684
3685impl From<ConstraintRelation> for glib::Value {
3686    #[inline]
3687    fn from(v: ConstraintRelation) -> Self {
3688        skip_assert_initialized!();
3689        ToValue::to_value(&v)
3690    }
3691}
3692
3693/// The strength of a constraint, expressed as a symbolic constant.
3694///
3695/// The strength of a [`Constraint`][crate::Constraint] can be expressed with any positive
3696/// integer; the values of this enumeration can be used for readability.
3697#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3698#[non_exhaustive]
3699#[doc(alias = "GtkConstraintStrength")]
3700pub enum ConstraintStrength {
3701    /// The constraint is required towards solving the layout
3702    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_REQUIRED")]
3703    Required,
3704    /// A strong constraint
3705    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_STRONG")]
3706    Strong,
3707    /// A medium constraint
3708    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_MEDIUM")]
3709    Medium,
3710    /// A weak constraint
3711    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_WEAK")]
3712    Weak,
3713    #[doc(hidden)]
3714    __Unknown(i32),
3715}
3716
3717#[doc(hidden)]
3718impl IntoGlib for ConstraintStrength {
3719    type GlibType = ffi::GtkConstraintStrength;
3720
3721    #[inline]
3722    fn into_glib(self) -> ffi::GtkConstraintStrength {
3723        match self {
3724            Self::Required => ffi::GTK_CONSTRAINT_STRENGTH_REQUIRED,
3725            Self::Strong => ffi::GTK_CONSTRAINT_STRENGTH_STRONG,
3726            Self::Medium => ffi::GTK_CONSTRAINT_STRENGTH_MEDIUM,
3727            Self::Weak => ffi::GTK_CONSTRAINT_STRENGTH_WEAK,
3728            Self::__Unknown(value) => value,
3729        }
3730    }
3731}
3732
3733#[doc(hidden)]
3734impl FromGlib<ffi::GtkConstraintStrength> for ConstraintStrength {
3735    #[inline]
3736    unsafe fn from_glib(value: ffi::GtkConstraintStrength) -> Self {
3737        skip_assert_initialized!();
3738
3739        match value {
3740            ffi::GTK_CONSTRAINT_STRENGTH_REQUIRED => Self::Required,
3741            ffi::GTK_CONSTRAINT_STRENGTH_STRONG => Self::Strong,
3742            ffi::GTK_CONSTRAINT_STRENGTH_MEDIUM => Self::Medium,
3743            ffi::GTK_CONSTRAINT_STRENGTH_WEAK => Self::Weak,
3744            value => Self::__Unknown(value),
3745        }
3746    }
3747}
3748
3749impl StaticType for ConstraintStrength {
3750    #[inline]
3751    #[doc(alias = "gtk_constraint_strength_get_type")]
3752    fn static_type() -> glib::Type {
3753        unsafe { from_glib(ffi::gtk_constraint_strength_get_type()) }
3754    }
3755}
3756
3757impl glib::HasParamSpec for ConstraintStrength {
3758    type ParamSpec = glib::ParamSpecEnum;
3759    type SetValue = Self;
3760    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3761
3762    fn param_spec_builder() -> Self::BuilderFn {
3763        Self::ParamSpec::builder_with_default
3764    }
3765}
3766
3767impl glib::value::ValueType for ConstraintStrength {
3768    type Type = Self;
3769}
3770
3771unsafe impl<'a> glib::value::FromValue<'a> for ConstraintStrength {
3772    type Checker = glib::value::GenericValueTypeChecker<Self>;
3773
3774    #[inline]
3775    unsafe fn from_value(value: &'a glib::Value) -> Self {
3776        skip_assert_initialized!();
3777        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3778    }
3779}
3780
3781impl ToValue for ConstraintStrength {
3782    #[inline]
3783    fn to_value(&self) -> glib::Value {
3784        let mut value = glib::Value::for_value_type::<Self>();
3785        unsafe {
3786            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3787        }
3788        value
3789    }
3790
3791    #[inline]
3792    fn value_type(&self) -> glib::Type {
3793        Self::static_type()
3794    }
3795}
3796
3797impl From<ConstraintStrength> for glib::Value {
3798    #[inline]
3799    fn from(v: ConstraintStrength) -> Self {
3800        skip_assert_initialized!();
3801        ToValue::to_value(&v)
3802    }
3803}
3804
3805/// Domain for VFL parsing errors.
3806#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3807#[non_exhaustive]
3808#[doc(alias = "GtkConstraintVflParserError")]
3809pub enum ConstraintVflParserError {
3810    /// Invalid or unknown symbol
3811    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL")]
3812    InvalidSymbol,
3813    /// Invalid or unknown attribute
3814    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE")]
3815    InvalidAttribute,
3816    /// Invalid or unknown view
3817    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW")]
3818    InvalidView,
3819    /// Invalid or unknown metric
3820    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC")]
3821    InvalidMetric,
3822    /// Invalid or unknown priority
3823    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY")]
3824    InvalidPriority,
3825    /// Invalid or unknown relation
3826    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION")]
3827    InvalidRelation,
3828    #[doc(hidden)]
3829    __Unknown(i32),
3830}
3831
3832#[doc(hidden)]
3833impl IntoGlib for ConstraintVflParserError {
3834    type GlibType = ffi::GtkConstraintVflParserError;
3835
3836    #[inline]
3837    fn into_glib(self) -> ffi::GtkConstraintVflParserError {
3838        match self {
3839            Self::InvalidSymbol => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL,
3840            Self::InvalidAttribute => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE,
3841            Self::InvalidView => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW,
3842            Self::InvalidMetric => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC,
3843            Self::InvalidPriority => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY,
3844            Self::InvalidRelation => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION,
3845            Self::__Unknown(value) => value,
3846        }
3847    }
3848}
3849
3850#[doc(hidden)]
3851impl FromGlib<ffi::GtkConstraintVflParserError> for ConstraintVflParserError {
3852    #[inline]
3853    unsafe fn from_glib(value: ffi::GtkConstraintVflParserError) -> Self {
3854        skip_assert_initialized!();
3855
3856        match value {
3857            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL => Self::InvalidSymbol,
3858            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
3859            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW => Self::InvalidView,
3860            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC => Self::InvalidMetric,
3861            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY => Self::InvalidPriority,
3862            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION => Self::InvalidRelation,
3863            value => Self::__Unknown(value),
3864        }
3865    }
3866}
3867
3868impl glib::error::ErrorDomain for ConstraintVflParserError {
3869    #[inline]
3870    fn domain() -> glib::Quark {
3871        skip_assert_initialized!();
3872
3873        unsafe { from_glib(ffi::gtk_constraint_vfl_parser_error_quark()) }
3874    }
3875
3876    #[inline]
3877    fn code(self) -> i32 {
3878        self.into_glib()
3879    }
3880
3881    #[inline]
3882    #[allow(clippy::match_single_binding)]
3883    fn from(code: i32) -> Option<Self> {
3884        skip_assert_initialized!();
3885        match unsafe { from_glib(code) } {
3886            value => Some(value),
3887        }
3888    }
3889}
3890
3891impl StaticType for ConstraintVflParserError {
3892    #[inline]
3893    #[doc(alias = "gtk_constraint_vfl_parser_error_get_type")]
3894    fn static_type() -> glib::Type {
3895        unsafe { from_glib(ffi::gtk_constraint_vfl_parser_error_get_type()) }
3896    }
3897}
3898
3899impl glib::HasParamSpec for ConstraintVflParserError {
3900    type ParamSpec = glib::ParamSpecEnum;
3901    type SetValue = Self;
3902    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3903
3904    fn param_spec_builder() -> Self::BuilderFn {
3905        Self::ParamSpec::builder_with_default
3906    }
3907}
3908
3909impl glib::value::ValueType for ConstraintVflParserError {
3910    type Type = Self;
3911}
3912
3913unsafe impl<'a> glib::value::FromValue<'a> for ConstraintVflParserError {
3914    type Checker = glib::value::GenericValueTypeChecker<Self>;
3915
3916    #[inline]
3917    unsafe fn from_value(value: &'a glib::Value) -> Self {
3918        skip_assert_initialized!();
3919        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3920    }
3921}
3922
3923impl ToValue for ConstraintVflParserError {
3924    #[inline]
3925    fn to_value(&self) -> glib::Value {
3926        let mut value = glib::Value::for_value_type::<Self>();
3927        unsafe {
3928            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3929        }
3930        value
3931    }
3932
3933    #[inline]
3934    fn value_type(&self) -> glib::Type {
3935        Self::static_type()
3936    }
3937}
3938
3939impl From<ConstraintVflParserError> for glib::Value {
3940    #[inline]
3941    fn from(v: ConstraintVflParserError) -> Self {
3942        skip_assert_initialized!();
3943        ToValue::to_value(&v)
3944    }
3945}
3946
3947/// Controls how a content should be made to fit inside an allocation.
3948#[cfg(feature = "v4_8")]
3949#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3950#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3951#[non_exhaustive]
3952#[doc(alias = "GtkContentFit")]
3953pub enum ContentFit {
3954    /// Make the content fill the entire allocation,
3955    ///   without taking its aspect ratio in consideration. The resulting
3956    ///   content will appear as stretched if its aspect ratio is different
3957    ///   from the allocation aspect ratio.
3958    #[doc(alias = "GTK_CONTENT_FIT_FILL")]
3959    Fill,
3960    /// Scale the content to fit the allocation,
3961    ///   while taking its aspect ratio in consideration. The resulting
3962    ///   content will appear as letterboxed if its aspect ratio is different
3963    ///   from the allocation aspect ratio.
3964    #[doc(alias = "GTK_CONTENT_FIT_CONTAIN")]
3965    Contain,
3966    /// Cover the entire allocation, while taking
3967    ///   the content aspect ratio in consideration. The resulting content
3968    ///   will appear as clipped if its aspect ratio is different from the
3969    ///   allocation aspect ratio.
3970    #[doc(alias = "GTK_CONTENT_FIT_COVER")]
3971    Cover,
3972    /// The content is scaled down to fit the
3973    ///   allocation, if needed, otherwise its original size is used.
3974    #[doc(alias = "GTK_CONTENT_FIT_SCALE_DOWN")]
3975    ScaleDown,
3976    #[doc(hidden)]
3977    __Unknown(i32),
3978}
3979
3980#[cfg(feature = "v4_8")]
3981#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3982#[doc(hidden)]
3983impl IntoGlib for ContentFit {
3984    type GlibType = ffi::GtkContentFit;
3985
3986    #[inline]
3987    fn into_glib(self) -> ffi::GtkContentFit {
3988        match self {
3989            Self::Fill => ffi::GTK_CONTENT_FIT_FILL,
3990            Self::Contain => ffi::GTK_CONTENT_FIT_CONTAIN,
3991            Self::Cover => ffi::GTK_CONTENT_FIT_COVER,
3992            Self::ScaleDown => ffi::GTK_CONTENT_FIT_SCALE_DOWN,
3993            Self::__Unknown(value) => value,
3994        }
3995    }
3996}
3997
3998#[cfg(feature = "v4_8")]
3999#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4000#[doc(hidden)]
4001impl FromGlib<ffi::GtkContentFit> for ContentFit {
4002    #[inline]
4003    unsafe fn from_glib(value: ffi::GtkContentFit) -> Self {
4004        skip_assert_initialized!();
4005
4006        match value {
4007            ffi::GTK_CONTENT_FIT_FILL => Self::Fill,
4008            ffi::GTK_CONTENT_FIT_CONTAIN => Self::Contain,
4009            ffi::GTK_CONTENT_FIT_COVER => Self::Cover,
4010            ffi::GTK_CONTENT_FIT_SCALE_DOWN => Self::ScaleDown,
4011            value => Self::__Unknown(value),
4012        }
4013    }
4014}
4015
4016#[cfg(feature = "v4_8")]
4017#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4018impl StaticType for ContentFit {
4019    #[inline]
4020    #[doc(alias = "gtk_content_fit_get_type")]
4021    fn static_type() -> glib::Type {
4022        unsafe { from_glib(ffi::gtk_content_fit_get_type()) }
4023    }
4024}
4025
4026#[cfg(feature = "v4_8")]
4027#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4028impl glib::HasParamSpec for ContentFit {
4029    type ParamSpec = glib::ParamSpecEnum;
4030    type SetValue = Self;
4031    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4032
4033    fn param_spec_builder() -> Self::BuilderFn {
4034        Self::ParamSpec::builder_with_default
4035    }
4036}
4037
4038#[cfg(feature = "v4_8")]
4039#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4040impl glib::value::ValueType for ContentFit {
4041    type Type = Self;
4042}
4043
4044#[cfg(feature = "v4_8")]
4045#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4046unsafe impl<'a> glib::value::FromValue<'a> for ContentFit {
4047    type Checker = glib::value::GenericValueTypeChecker<Self>;
4048
4049    #[inline]
4050    unsafe fn from_value(value: &'a glib::Value) -> Self {
4051        skip_assert_initialized!();
4052        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4053    }
4054}
4055
4056#[cfg(feature = "v4_8")]
4057#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4058impl ToValue for ContentFit {
4059    #[inline]
4060    fn to_value(&self) -> glib::Value {
4061        let mut value = glib::Value::for_value_type::<Self>();
4062        unsafe {
4063            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4064        }
4065        value
4066    }
4067
4068    #[inline]
4069    fn value_type(&self) -> glib::Type {
4070        Self::static_type()
4071    }
4072}
4073
4074#[cfg(feature = "v4_8")]
4075#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4076impl From<ContentFit> for glib::Value {
4077    #[inline]
4078    fn from(v: ContentFit) -> Self {
4079        skip_assert_initialized!();
4080        ToValue::to_value(&v)
4081    }
4082}
4083
4084/// Specifies which corner a child widget should be placed in when packed into
4085/// a [`ScrolledWindow`][crate::ScrolledWindow]
4086///
4087/// This is effectively the opposite of where the scroll bars are placed.
4088#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4089#[non_exhaustive]
4090#[doc(alias = "GtkCornerType")]
4091pub enum CornerType {
4092    /// Place the scrollbars on the right and bottom of the
4093    ///   widget (default behaviour).
4094    #[doc(alias = "GTK_CORNER_TOP_LEFT")]
4095    TopLeft,
4096    /// Place the scrollbars on the top and right of the
4097    ///   widget.
4098    #[doc(alias = "GTK_CORNER_BOTTOM_LEFT")]
4099    BottomLeft,
4100    /// Place the scrollbars on the left and bottom of the
4101    ///   widget.
4102    #[doc(alias = "GTK_CORNER_TOP_RIGHT")]
4103    TopRight,
4104    /// Place the scrollbars on the top and left of the
4105    ///   widget.
4106    #[doc(alias = "GTK_CORNER_BOTTOM_RIGHT")]
4107    BottomRight,
4108    #[doc(hidden)]
4109    __Unknown(i32),
4110}
4111
4112#[doc(hidden)]
4113impl IntoGlib for CornerType {
4114    type GlibType = ffi::GtkCornerType;
4115
4116    #[inline]
4117    fn into_glib(self) -> ffi::GtkCornerType {
4118        match self {
4119            Self::TopLeft => ffi::GTK_CORNER_TOP_LEFT,
4120            Self::BottomLeft => ffi::GTK_CORNER_BOTTOM_LEFT,
4121            Self::TopRight => ffi::GTK_CORNER_TOP_RIGHT,
4122            Self::BottomRight => ffi::GTK_CORNER_BOTTOM_RIGHT,
4123            Self::__Unknown(value) => value,
4124        }
4125    }
4126}
4127
4128#[doc(hidden)]
4129impl FromGlib<ffi::GtkCornerType> for CornerType {
4130    #[inline]
4131    unsafe fn from_glib(value: ffi::GtkCornerType) -> Self {
4132        skip_assert_initialized!();
4133
4134        match value {
4135            ffi::GTK_CORNER_TOP_LEFT => Self::TopLeft,
4136            ffi::GTK_CORNER_BOTTOM_LEFT => Self::BottomLeft,
4137            ffi::GTK_CORNER_TOP_RIGHT => Self::TopRight,
4138            ffi::GTK_CORNER_BOTTOM_RIGHT => Self::BottomRight,
4139            value => Self::__Unknown(value),
4140        }
4141    }
4142}
4143
4144impl StaticType for CornerType {
4145    #[inline]
4146    #[doc(alias = "gtk_corner_type_get_type")]
4147    fn static_type() -> glib::Type {
4148        unsafe { from_glib(ffi::gtk_corner_type_get_type()) }
4149    }
4150}
4151
4152impl glib::HasParamSpec for CornerType {
4153    type ParamSpec = glib::ParamSpecEnum;
4154    type SetValue = Self;
4155    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4156
4157    fn param_spec_builder() -> Self::BuilderFn {
4158        Self::ParamSpec::builder_with_default
4159    }
4160}
4161
4162impl glib::value::ValueType for CornerType {
4163    type Type = Self;
4164}
4165
4166unsafe impl<'a> glib::value::FromValue<'a> for CornerType {
4167    type Checker = glib::value::GenericValueTypeChecker<Self>;
4168
4169    #[inline]
4170    unsafe fn from_value(value: &'a glib::Value) -> Self {
4171        skip_assert_initialized!();
4172        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4173    }
4174}
4175
4176impl ToValue for CornerType {
4177    #[inline]
4178    fn to_value(&self) -> glib::Value {
4179        let mut value = glib::Value::for_value_type::<Self>();
4180        unsafe {
4181            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4182        }
4183        value
4184    }
4185
4186    #[inline]
4187    fn value_type(&self) -> glib::Type {
4188        Self::static_type()
4189    }
4190}
4191
4192impl From<CornerType> for glib::Value {
4193    #[inline]
4194    fn from(v: CornerType) -> Self {
4195        skip_assert_initialized!();
4196        ToValue::to_value(&v)
4197    }
4198}
4199
4200/// Errors that can occur while parsing CSS.
4201///
4202/// These errors are unexpected and will cause parts of the given CSS
4203/// to be ignored.
4204#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4205#[non_exhaustive]
4206#[doc(alias = "GtkCssParserError")]
4207pub enum CssParserError {
4208    /// Unknown failure.
4209    #[doc(alias = "GTK_CSS_PARSER_ERROR_FAILED")]
4210    Failed,
4211    /// The given text does not form valid syntax
4212    #[doc(alias = "GTK_CSS_PARSER_ERROR_SYNTAX")]
4213    Syntax,
4214    /// Failed to import a resource
4215    #[doc(alias = "GTK_CSS_PARSER_ERROR_IMPORT")]
4216    Import,
4217    /// The given name has not been defined
4218    #[doc(alias = "GTK_CSS_PARSER_ERROR_NAME")]
4219    Name,
4220    /// The given value is not correct
4221    #[doc(alias = "GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE")]
4222    UnknownValue,
4223    #[doc(hidden)]
4224    __Unknown(i32),
4225}
4226
4227#[doc(hidden)]
4228impl IntoGlib for CssParserError {
4229    type GlibType = ffi::GtkCssParserError;
4230
4231    #[inline]
4232    fn into_glib(self) -> ffi::GtkCssParserError {
4233        match self {
4234            Self::Failed => ffi::GTK_CSS_PARSER_ERROR_FAILED,
4235            Self::Syntax => ffi::GTK_CSS_PARSER_ERROR_SYNTAX,
4236            Self::Import => ffi::GTK_CSS_PARSER_ERROR_IMPORT,
4237            Self::Name => ffi::GTK_CSS_PARSER_ERROR_NAME,
4238            Self::UnknownValue => ffi::GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE,
4239            Self::__Unknown(value) => value,
4240        }
4241    }
4242}
4243
4244#[doc(hidden)]
4245impl FromGlib<ffi::GtkCssParserError> for CssParserError {
4246    #[inline]
4247    unsafe fn from_glib(value: ffi::GtkCssParserError) -> Self {
4248        skip_assert_initialized!();
4249
4250        match value {
4251            ffi::GTK_CSS_PARSER_ERROR_FAILED => Self::Failed,
4252            ffi::GTK_CSS_PARSER_ERROR_SYNTAX => Self::Syntax,
4253            ffi::GTK_CSS_PARSER_ERROR_IMPORT => Self::Import,
4254            ffi::GTK_CSS_PARSER_ERROR_NAME => Self::Name,
4255            ffi::GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE => Self::UnknownValue,
4256            value => Self::__Unknown(value),
4257        }
4258    }
4259}
4260
4261impl glib::error::ErrorDomain for CssParserError {
4262    #[inline]
4263    fn domain() -> glib::Quark {
4264        skip_assert_initialized!();
4265
4266        unsafe { from_glib(ffi::gtk_css_parser_error_quark()) }
4267    }
4268
4269    #[inline]
4270    fn code(self) -> i32 {
4271        self.into_glib()
4272    }
4273
4274    #[inline]
4275    #[allow(clippy::match_single_binding)]
4276    fn from(code: i32) -> Option<Self> {
4277        skip_assert_initialized!();
4278        match unsafe { from_glib(code) } {
4279            Self::__Unknown(_) => Some(Self::Failed),
4280            value => Some(value),
4281        }
4282    }
4283}
4284
4285/// Warnings that can occur while parsing CSS.
4286///
4287/// Unlike [`CssParserError`][crate::CssParserError]s, warnings do not cause the parser to
4288/// skip any input, but they indicate issues that should be fixed.
4289#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4290#[non_exhaustive]
4291#[doc(alias = "GtkCssParserWarning")]
4292pub enum CssParserWarning {
4293    /// The given construct is
4294    ///   deprecated and will be removed in a future version
4295    #[doc(alias = "GTK_CSS_PARSER_WARNING_DEPRECATED")]
4296    Deprecated,
4297    /// A syntax construct was used
4298    ///   that should be avoided
4299    #[doc(alias = "GTK_CSS_PARSER_WARNING_SYNTAX")]
4300    Syntax,
4301    /// A feature is not implemented
4302    #[doc(alias = "GTK_CSS_PARSER_WARNING_UNIMPLEMENTED")]
4303    Unimplemented,
4304    #[doc(hidden)]
4305    __Unknown(i32),
4306}
4307
4308#[doc(hidden)]
4309impl IntoGlib for CssParserWarning {
4310    type GlibType = ffi::GtkCssParserWarning;
4311
4312    #[inline]
4313    fn into_glib(self) -> ffi::GtkCssParserWarning {
4314        match self {
4315            Self::Deprecated => ffi::GTK_CSS_PARSER_WARNING_DEPRECATED,
4316            Self::Syntax => ffi::GTK_CSS_PARSER_WARNING_SYNTAX,
4317            Self::Unimplemented => ffi::GTK_CSS_PARSER_WARNING_UNIMPLEMENTED,
4318            Self::__Unknown(value) => value,
4319        }
4320    }
4321}
4322
4323#[doc(hidden)]
4324impl FromGlib<ffi::GtkCssParserWarning> for CssParserWarning {
4325    #[inline]
4326    unsafe fn from_glib(value: ffi::GtkCssParserWarning) -> Self {
4327        skip_assert_initialized!();
4328
4329        match value {
4330            ffi::GTK_CSS_PARSER_WARNING_DEPRECATED => Self::Deprecated,
4331            ffi::GTK_CSS_PARSER_WARNING_SYNTAX => Self::Syntax,
4332            ffi::GTK_CSS_PARSER_WARNING_UNIMPLEMENTED => Self::Unimplemented,
4333            value => Self::__Unknown(value),
4334        }
4335    }
4336}
4337
4338/// Passed to various keybinding signals for deleting text.
4339#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4340#[non_exhaustive]
4341#[doc(alias = "GtkDeleteType")]
4342pub enum DeleteType {
4343    /// Delete characters.
4344    #[doc(alias = "GTK_DELETE_CHARS")]
4345    Chars,
4346    /// Delete only the portion of the word to the
4347    ///   left/right of cursor if we’re in the middle of a word.
4348    #[doc(alias = "GTK_DELETE_WORD_ENDS")]
4349    WordEnds,
4350    /// Delete words.
4351    #[doc(alias = "GTK_DELETE_WORDS")]
4352    Words,
4353    /// Delete display-lines. Display-lines
4354    ///   refers to the visible lines, with respect to the current line
4355    ///   breaks. As opposed to paragraphs, which are defined by line
4356    ///   breaks in the input.
4357    #[doc(alias = "GTK_DELETE_DISPLAY_LINES")]
4358    DisplayLines,
4359    /// Delete only the portion of the
4360    ///   display-line to the left/right of cursor.
4361    #[doc(alias = "GTK_DELETE_DISPLAY_LINE_ENDS")]
4362    DisplayLineEnds,
4363    /// Delete to the end of the
4364    ///   paragraph. Like C-k in Emacs (or its reverse).
4365    #[doc(alias = "GTK_DELETE_PARAGRAPH_ENDS")]
4366    ParagraphEnds,
4367    /// Delete entire line. Like C-k in pico.
4368    #[doc(alias = "GTK_DELETE_PARAGRAPHS")]
4369    Paragraphs,
4370    /// Delete only whitespace. Like M-\ in Emacs.
4371    #[doc(alias = "GTK_DELETE_WHITESPACE")]
4372    Whitespace,
4373    #[doc(hidden)]
4374    __Unknown(i32),
4375}
4376
4377#[doc(hidden)]
4378impl IntoGlib for DeleteType {
4379    type GlibType = ffi::GtkDeleteType;
4380
4381    #[inline]
4382    fn into_glib(self) -> ffi::GtkDeleteType {
4383        match self {
4384            Self::Chars => ffi::GTK_DELETE_CHARS,
4385            Self::WordEnds => ffi::GTK_DELETE_WORD_ENDS,
4386            Self::Words => ffi::GTK_DELETE_WORDS,
4387            Self::DisplayLines => ffi::GTK_DELETE_DISPLAY_LINES,
4388            Self::DisplayLineEnds => ffi::GTK_DELETE_DISPLAY_LINE_ENDS,
4389            Self::ParagraphEnds => ffi::GTK_DELETE_PARAGRAPH_ENDS,
4390            Self::Paragraphs => ffi::GTK_DELETE_PARAGRAPHS,
4391            Self::Whitespace => ffi::GTK_DELETE_WHITESPACE,
4392            Self::__Unknown(value) => value,
4393        }
4394    }
4395}
4396
4397#[doc(hidden)]
4398impl FromGlib<ffi::GtkDeleteType> for DeleteType {
4399    #[inline]
4400    unsafe fn from_glib(value: ffi::GtkDeleteType) -> Self {
4401        skip_assert_initialized!();
4402
4403        match value {
4404            ffi::GTK_DELETE_CHARS => Self::Chars,
4405            ffi::GTK_DELETE_WORD_ENDS => Self::WordEnds,
4406            ffi::GTK_DELETE_WORDS => Self::Words,
4407            ffi::GTK_DELETE_DISPLAY_LINES => Self::DisplayLines,
4408            ffi::GTK_DELETE_DISPLAY_LINE_ENDS => Self::DisplayLineEnds,
4409            ffi::GTK_DELETE_PARAGRAPH_ENDS => Self::ParagraphEnds,
4410            ffi::GTK_DELETE_PARAGRAPHS => Self::Paragraphs,
4411            ffi::GTK_DELETE_WHITESPACE => Self::Whitespace,
4412            value => Self::__Unknown(value),
4413        }
4414    }
4415}
4416
4417impl StaticType for DeleteType {
4418    #[inline]
4419    #[doc(alias = "gtk_delete_type_get_type")]
4420    fn static_type() -> glib::Type {
4421        unsafe { from_glib(ffi::gtk_delete_type_get_type()) }
4422    }
4423}
4424
4425impl glib::HasParamSpec for DeleteType {
4426    type ParamSpec = glib::ParamSpecEnum;
4427    type SetValue = Self;
4428    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4429
4430    fn param_spec_builder() -> Self::BuilderFn {
4431        Self::ParamSpec::builder_with_default
4432    }
4433}
4434
4435impl glib::value::ValueType for DeleteType {
4436    type Type = Self;
4437}
4438
4439unsafe impl<'a> glib::value::FromValue<'a> for DeleteType {
4440    type Checker = glib::value::GenericValueTypeChecker<Self>;
4441
4442    #[inline]
4443    unsafe fn from_value(value: &'a glib::Value) -> Self {
4444        skip_assert_initialized!();
4445        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4446    }
4447}
4448
4449impl ToValue for DeleteType {
4450    #[inline]
4451    fn to_value(&self) -> glib::Value {
4452        let mut value = glib::Value::for_value_type::<Self>();
4453        unsafe {
4454            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4455        }
4456        value
4457    }
4458
4459    #[inline]
4460    fn value_type(&self) -> glib::Type {
4461        Self::static_type()
4462    }
4463}
4464
4465impl From<DeleteType> for glib::Value {
4466    #[inline]
4467    fn from(v: DeleteType) -> Self {
4468        skip_assert_initialized!();
4469        ToValue::to_value(&v)
4470    }
4471}
4472
4473/// Error codes in the `GTK_DIALOG_ERROR` domain that can be returned
4474/// by async dialog functions.
4475#[cfg(feature = "v4_10")]
4476#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4477#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4478#[non_exhaustive]
4479#[doc(alias = "GtkDialogError")]
4480pub enum DialogError {
4481    /// Generic error condition for when
4482    ///   an operation fails and no more specific code is applicable
4483    #[doc(alias = "GTK_DIALOG_ERROR_FAILED")]
4484    Failed,
4485    /// The async function call was cancelled
4486    ///   via its `GCancellable`
4487    #[doc(alias = "GTK_DIALOG_ERROR_CANCELLED")]
4488    Cancelled,
4489    /// The operation was cancelled
4490    ///   by the user (via a Cancel or Close button)
4491    #[doc(alias = "GTK_DIALOG_ERROR_DISMISSED")]
4492    Dismissed,
4493    #[doc(hidden)]
4494    __Unknown(i32),
4495}
4496
4497#[cfg(feature = "v4_10")]
4498#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4499#[doc(hidden)]
4500impl IntoGlib for DialogError {
4501    type GlibType = ffi::GtkDialogError;
4502
4503    #[inline]
4504    fn into_glib(self) -> ffi::GtkDialogError {
4505        match self {
4506            Self::Failed => ffi::GTK_DIALOG_ERROR_FAILED,
4507            Self::Cancelled => ffi::GTK_DIALOG_ERROR_CANCELLED,
4508            Self::Dismissed => ffi::GTK_DIALOG_ERROR_DISMISSED,
4509            Self::__Unknown(value) => value,
4510        }
4511    }
4512}
4513
4514#[cfg(feature = "v4_10")]
4515#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4516#[doc(hidden)]
4517impl FromGlib<ffi::GtkDialogError> for DialogError {
4518    #[inline]
4519    unsafe fn from_glib(value: ffi::GtkDialogError) -> Self {
4520        skip_assert_initialized!();
4521
4522        match value {
4523            ffi::GTK_DIALOG_ERROR_FAILED => Self::Failed,
4524            ffi::GTK_DIALOG_ERROR_CANCELLED => Self::Cancelled,
4525            ffi::GTK_DIALOG_ERROR_DISMISSED => Self::Dismissed,
4526            value => Self::__Unknown(value),
4527        }
4528    }
4529}
4530
4531#[cfg(feature = "v4_10")]
4532#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4533impl glib::error::ErrorDomain for DialogError {
4534    #[inline]
4535    fn domain() -> glib::Quark {
4536        skip_assert_initialized!();
4537
4538        unsafe { from_glib(ffi::gtk_dialog_error_quark()) }
4539    }
4540
4541    #[inline]
4542    fn code(self) -> i32 {
4543        self.into_glib()
4544    }
4545
4546    #[inline]
4547    #[allow(clippy::match_single_binding)]
4548    fn from(code: i32) -> Option<Self> {
4549        skip_assert_initialized!();
4550        match unsafe { from_glib(code) } {
4551            Self::__Unknown(_) => Some(Self::Failed),
4552            value => Some(value),
4553        }
4554    }
4555}
4556
4557#[cfg(feature = "v4_10")]
4558#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4559impl StaticType for DialogError {
4560    #[inline]
4561    #[doc(alias = "gtk_dialog_error_get_type")]
4562    fn static_type() -> glib::Type {
4563        unsafe { from_glib(ffi::gtk_dialog_error_get_type()) }
4564    }
4565}
4566
4567#[cfg(feature = "v4_10")]
4568#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4569impl glib::HasParamSpec for DialogError {
4570    type ParamSpec = glib::ParamSpecEnum;
4571    type SetValue = Self;
4572    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4573
4574    fn param_spec_builder() -> Self::BuilderFn {
4575        Self::ParamSpec::builder_with_default
4576    }
4577}
4578
4579#[cfg(feature = "v4_10")]
4580#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4581impl glib::value::ValueType for DialogError {
4582    type Type = Self;
4583}
4584
4585#[cfg(feature = "v4_10")]
4586#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4587unsafe impl<'a> glib::value::FromValue<'a> for DialogError {
4588    type Checker = glib::value::GenericValueTypeChecker<Self>;
4589
4590    #[inline]
4591    unsafe fn from_value(value: &'a glib::Value) -> Self {
4592        skip_assert_initialized!();
4593        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4594    }
4595}
4596
4597#[cfg(feature = "v4_10")]
4598#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4599impl ToValue for DialogError {
4600    #[inline]
4601    fn to_value(&self) -> glib::Value {
4602        let mut value = glib::Value::for_value_type::<Self>();
4603        unsafe {
4604            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4605        }
4606        value
4607    }
4608
4609    #[inline]
4610    fn value_type(&self) -> glib::Type {
4611        Self::static_type()
4612    }
4613}
4614
4615#[cfg(feature = "v4_10")]
4616#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4617impl From<DialogError> for glib::Value {
4618    #[inline]
4619    fn from(v: DialogError) -> Self {
4620        skip_assert_initialized!();
4621        ToValue::to_value(&v)
4622    }
4623}
4624
4625/// Focus movement types.
4626#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4627#[non_exhaustive]
4628#[doc(alias = "GtkDirectionType")]
4629pub enum DirectionType {
4630    /// Move forward.
4631    #[doc(alias = "GTK_DIR_TAB_FORWARD")]
4632    TabForward,
4633    /// Move backward.
4634    #[doc(alias = "GTK_DIR_TAB_BACKWARD")]
4635    TabBackward,
4636    /// Move up.
4637    #[doc(alias = "GTK_DIR_UP")]
4638    Up,
4639    /// Move down.
4640    #[doc(alias = "GTK_DIR_DOWN")]
4641    Down,
4642    /// Move left.
4643    #[doc(alias = "GTK_DIR_LEFT")]
4644    Left,
4645    /// Move right.
4646    #[doc(alias = "GTK_DIR_RIGHT")]
4647    Right,
4648    #[doc(hidden)]
4649    __Unknown(i32),
4650}
4651
4652#[doc(hidden)]
4653impl IntoGlib for DirectionType {
4654    type GlibType = ffi::GtkDirectionType;
4655
4656    #[inline]
4657    fn into_glib(self) -> ffi::GtkDirectionType {
4658        match self {
4659            Self::TabForward => ffi::GTK_DIR_TAB_FORWARD,
4660            Self::TabBackward => ffi::GTK_DIR_TAB_BACKWARD,
4661            Self::Up => ffi::GTK_DIR_UP,
4662            Self::Down => ffi::GTK_DIR_DOWN,
4663            Self::Left => ffi::GTK_DIR_LEFT,
4664            Self::Right => ffi::GTK_DIR_RIGHT,
4665            Self::__Unknown(value) => value,
4666        }
4667    }
4668}
4669
4670#[doc(hidden)]
4671impl FromGlib<ffi::GtkDirectionType> for DirectionType {
4672    #[inline]
4673    unsafe fn from_glib(value: ffi::GtkDirectionType) -> Self {
4674        skip_assert_initialized!();
4675
4676        match value {
4677            ffi::GTK_DIR_TAB_FORWARD => Self::TabForward,
4678            ffi::GTK_DIR_TAB_BACKWARD => Self::TabBackward,
4679            ffi::GTK_DIR_UP => Self::Up,
4680            ffi::GTK_DIR_DOWN => Self::Down,
4681            ffi::GTK_DIR_LEFT => Self::Left,
4682            ffi::GTK_DIR_RIGHT => Self::Right,
4683            value => Self::__Unknown(value),
4684        }
4685    }
4686}
4687
4688impl StaticType for DirectionType {
4689    #[inline]
4690    #[doc(alias = "gtk_direction_type_get_type")]
4691    fn static_type() -> glib::Type {
4692        unsafe { from_glib(ffi::gtk_direction_type_get_type()) }
4693    }
4694}
4695
4696impl glib::HasParamSpec for DirectionType {
4697    type ParamSpec = glib::ParamSpecEnum;
4698    type SetValue = Self;
4699    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4700
4701    fn param_spec_builder() -> Self::BuilderFn {
4702        Self::ParamSpec::builder_with_default
4703    }
4704}
4705
4706impl glib::value::ValueType for DirectionType {
4707    type Type = Self;
4708}
4709
4710unsafe impl<'a> glib::value::FromValue<'a> for DirectionType {
4711    type Checker = glib::value::GenericValueTypeChecker<Self>;
4712
4713    #[inline]
4714    unsafe fn from_value(value: &'a glib::Value) -> Self {
4715        skip_assert_initialized!();
4716        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4717    }
4718}
4719
4720impl ToValue for DirectionType {
4721    #[inline]
4722    fn to_value(&self) -> glib::Value {
4723        let mut value = glib::Value::for_value_type::<Self>();
4724        unsafe {
4725            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4726        }
4727        value
4728    }
4729
4730    #[inline]
4731    fn value_type(&self) -> glib::Type {
4732        Self::static_type()
4733    }
4734}
4735
4736impl From<DirectionType> for glib::Value {
4737    #[inline]
4738    fn from(v: DirectionType) -> Self {
4739        skip_assert_initialized!();
4740        ToValue::to_value(&v)
4741    }
4742}
4743
4744/// The identifiers for [`Editable`][crate::Editable] properties.
4745///
4746/// See [`Editable::install_properties()`][crate::Editable::install_properties()] for details on how to
4747/// implement the [`Editable`][crate::Editable] interface.
4748#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4749#[non_exhaustive]
4750#[doc(alias = "GtkEditableProperties")]
4751pub enum EditableProperties {
4752    /// the property id for [`text`][struct@crate::Editable#text]
4753    #[doc(alias = "GTK_EDITABLE_PROP_TEXT")]
4754    PropText,
4755    /// the property id for [`cursor-position`][struct@crate::Editable#cursor-position]
4756    #[doc(alias = "GTK_EDITABLE_PROP_CURSOR_POSITION")]
4757    PropCursorPosition,
4758    /// the property id for [`selection-bound`][struct@crate::Editable#selection-bound]
4759    #[doc(alias = "GTK_EDITABLE_PROP_SELECTION_BOUND")]
4760    PropSelectionBound,
4761    /// the property id for [`editable`][struct@crate::Editable#editable]
4762    #[doc(alias = "GTK_EDITABLE_PROP_EDITABLE")]
4763    PropEditable,
4764    /// the property id for [`width-chars`][struct@crate::Editable#width-chars]
4765    #[doc(alias = "GTK_EDITABLE_PROP_WIDTH_CHARS")]
4766    PropWidthChars,
4767    /// the property id for [`max-width-chars`][struct@crate::Editable#max-width-chars]
4768    #[doc(alias = "GTK_EDITABLE_PROP_MAX_WIDTH_CHARS")]
4769    PropMaxWidthChars,
4770    /// the property id for [`xalign`][struct@crate::Editable#xalign]
4771    #[doc(alias = "GTK_EDITABLE_PROP_XALIGN")]
4772    PropXalign,
4773    /// the property id for [`enable-undo`][struct@crate::Editable#enable-undo]
4774    #[doc(alias = "GTK_EDITABLE_PROP_ENABLE_UNDO")]
4775    PropEnableUndo,
4776    /// the number of properties
4777    #[doc(alias = "GTK_EDITABLE_NUM_PROPERTIES")]
4778    NumProperties,
4779    #[doc(hidden)]
4780    __Unknown(i32),
4781}
4782
4783#[doc(hidden)]
4784impl IntoGlib for EditableProperties {
4785    type GlibType = ffi::GtkEditableProperties;
4786
4787    #[inline]
4788    fn into_glib(self) -> ffi::GtkEditableProperties {
4789        match self {
4790            Self::PropText => ffi::GTK_EDITABLE_PROP_TEXT,
4791            Self::PropCursorPosition => ffi::GTK_EDITABLE_PROP_CURSOR_POSITION,
4792            Self::PropSelectionBound => ffi::GTK_EDITABLE_PROP_SELECTION_BOUND,
4793            Self::PropEditable => ffi::GTK_EDITABLE_PROP_EDITABLE,
4794            Self::PropWidthChars => ffi::GTK_EDITABLE_PROP_WIDTH_CHARS,
4795            Self::PropMaxWidthChars => ffi::GTK_EDITABLE_PROP_MAX_WIDTH_CHARS,
4796            Self::PropXalign => ffi::GTK_EDITABLE_PROP_XALIGN,
4797            Self::PropEnableUndo => ffi::GTK_EDITABLE_PROP_ENABLE_UNDO,
4798            Self::NumProperties => ffi::GTK_EDITABLE_NUM_PROPERTIES,
4799            Self::__Unknown(value) => value,
4800        }
4801    }
4802}
4803
4804#[doc(hidden)]
4805impl FromGlib<ffi::GtkEditableProperties> for EditableProperties {
4806    #[inline]
4807    unsafe fn from_glib(value: ffi::GtkEditableProperties) -> Self {
4808        skip_assert_initialized!();
4809
4810        match value {
4811            ffi::GTK_EDITABLE_PROP_TEXT => Self::PropText,
4812            ffi::GTK_EDITABLE_PROP_CURSOR_POSITION => Self::PropCursorPosition,
4813            ffi::GTK_EDITABLE_PROP_SELECTION_BOUND => Self::PropSelectionBound,
4814            ffi::GTK_EDITABLE_PROP_EDITABLE => Self::PropEditable,
4815            ffi::GTK_EDITABLE_PROP_WIDTH_CHARS => Self::PropWidthChars,
4816            ffi::GTK_EDITABLE_PROP_MAX_WIDTH_CHARS => Self::PropMaxWidthChars,
4817            ffi::GTK_EDITABLE_PROP_XALIGN => Self::PropXalign,
4818            ffi::GTK_EDITABLE_PROP_ENABLE_UNDO => Self::PropEnableUndo,
4819            ffi::GTK_EDITABLE_NUM_PROPERTIES => Self::NumProperties,
4820            value => Self::__Unknown(value),
4821        }
4822    }
4823}
4824
4825impl StaticType for EditableProperties {
4826    #[inline]
4827    #[doc(alias = "gtk_editable_properties_get_type")]
4828    fn static_type() -> glib::Type {
4829        unsafe { from_glib(ffi::gtk_editable_properties_get_type()) }
4830    }
4831}
4832
4833impl glib::HasParamSpec for EditableProperties {
4834    type ParamSpec = glib::ParamSpecEnum;
4835    type SetValue = Self;
4836    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4837
4838    fn param_spec_builder() -> Self::BuilderFn {
4839        Self::ParamSpec::builder_with_default
4840    }
4841}
4842
4843impl glib::value::ValueType for EditableProperties {
4844    type Type = Self;
4845}
4846
4847unsafe impl<'a> glib::value::FromValue<'a> for EditableProperties {
4848    type Checker = glib::value::GenericValueTypeChecker<Self>;
4849
4850    #[inline]
4851    unsafe fn from_value(value: &'a glib::Value) -> Self {
4852        skip_assert_initialized!();
4853        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4854    }
4855}
4856
4857impl ToValue for EditableProperties {
4858    #[inline]
4859    fn to_value(&self) -> glib::Value {
4860        let mut value = glib::Value::for_value_type::<Self>();
4861        unsafe {
4862            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4863        }
4864        value
4865    }
4866
4867    #[inline]
4868    fn value_type(&self) -> glib::Type {
4869        Self::static_type()
4870    }
4871}
4872
4873impl From<EditableProperties> for glib::Value {
4874    #[inline]
4875    fn from(v: EditableProperties) -> Self {
4876        skip_assert_initialized!();
4877        ToValue::to_value(&v)
4878    }
4879}
4880
4881/// Specifies the side of the entry at which an icon is placed.
4882#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4883#[non_exhaustive]
4884#[doc(alias = "GtkEntryIconPosition")]
4885pub enum EntryIconPosition {
4886    /// At the beginning of the entry (depending on the text direction).
4887    #[doc(alias = "GTK_ENTRY_ICON_PRIMARY")]
4888    Primary,
4889    /// At the end of the entry (depending on the text direction).
4890    #[doc(alias = "GTK_ENTRY_ICON_SECONDARY")]
4891    Secondary,
4892    #[doc(hidden)]
4893    __Unknown(i32),
4894}
4895
4896#[doc(hidden)]
4897impl IntoGlib for EntryIconPosition {
4898    type GlibType = ffi::GtkEntryIconPosition;
4899
4900    #[inline]
4901    fn into_glib(self) -> ffi::GtkEntryIconPosition {
4902        match self {
4903            Self::Primary => ffi::GTK_ENTRY_ICON_PRIMARY,
4904            Self::Secondary => ffi::GTK_ENTRY_ICON_SECONDARY,
4905            Self::__Unknown(value) => value,
4906        }
4907    }
4908}
4909
4910#[doc(hidden)]
4911impl FromGlib<ffi::GtkEntryIconPosition> for EntryIconPosition {
4912    #[inline]
4913    unsafe fn from_glib(value: ffi::GtkEntryIconPosition) -> Self {
4914        skip_assert_initialized!();
4915
4916        match value {
4917            ffi::GTK_ENTRY_ICON_PRIMARY => Self::Primary,
4918            ffi::GTK_ENTRY_ICON_SECONDARY => Self::Secondary,
4919            value => Self::__Unknown(value),
4920        }
4921    }
4922}
4923
4924impl StaticType for EntryIconPosition {
4925    #[inline]
4926    #[doc(alias = "gtk_entry_icon_position_get_type")]
4927    fn static_type() -> glib::Type {
4928        unsafe { from_glib(ffi::gtk_entry_icon_position_get_type()) }
4929    }
4930}
4931
4932impl glib::HasParamSpec for EntryIconPosition {
4933    type ParamSpec = glib::ParamSpecEnum;
4934    type SetValue = Self;
4935    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4936
4937    fn param_spec_builder() -> Self::BuilderFn {
4938        Self::ParamSpec::builder_with_default
4939    }
4940}
4941
4942impl glib::value::ValueType for EntryIconPosition {
4943    type Type = Self;
4944}
4945
4946unsafe impl<'a> glib::value::FromValue<'a> for EntryIconPosition {
4947    type Checker = glib::value::GenericValueTypeChecker<Self>;
4948
4949    #[inline]
4950    unsafe fn from_value(value: &'a glib::Value) -> Self {
4951        skip_assert_initialized!();
4952        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4953    }
4954}
4955
4956impl ToValue for EntryIconPosition {
4957    #[inline]
4958    fn to_value(&self) -> glib::Value {
4959        let mut value = glib::Value::for_value_type::<Self>();
4960        unsafe {
4961            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4962        }
4963        value
4964    }
4965
4966    #[inline]
4967    fn value_type(&self) -> glib::Type {
4968        Self::static_type()
4969    }
4970}
4971
4972impl From<EntryIconPosition> for glib::Value {
4973    #[inline]
4974    fn from(v: EntryIconPosition) -> Self {
4975        skip_assert_initialized!();
4976        ToValue::to_value(&v)
4977    }
4978}
4979
4980/// Describes the state of a [`gdk::EventSequence`][crate::gdk::EventSequence] in a [`Gesture`][crate::Gesture].
4981#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4982#[non_exhaustive]
4983#[doc(alias = "GtkEventSequenceState")]
4984pub enum EventSequenceState {
4985    /// The sequence is handled, but not grabbed.
4986    #[doc(alias = "GTK_EVENT_SEQUENCE_NONE")]
4987    None,
4988    /// The sequence is handled and grabbed.
4989    #[doc(alias = "GTK_EVENT_SEQUENCE_CLAIMED")]
4990    Claimed,
4991    /// The sequence is denied.
4992    #[doc(alias = "GTK_EVENT_SEQUENCE_DENIED")]
4993    Denied,
4994    #[doc(hidden)]
4995    __Unknown(i32),
4996}
4997
4998#[doc(hidden)]
4999impl IntoGlib for EventSequenceState {
5000    type GlibType = ffi::GtkEventSequenceState;
5001
5002    #[inline]
5003    fn into_glib(self) -> ffi::GtkEventSequenceState {
5004        match self {
5005            Self::None => ffi::GTK_EVENT_SEQUENCE_NONE,
5006            Self::Claimed => ffi::GTK_EVENT_SEQUENCE_CLAIMED,
5007            Self::Denied => ffi::GTK_EVENT_SEQUENCE_DENIED,
5008            Self::__Unknown(value) => value,
5009        }
5010    }
5011}
5012
5013#[doc(hidden)]
5014impl FromGlib<ffi::GtkEventSequenceState> for EventSequenceState {
5015    #[inline]
5016    unsafe fn from_glib(value: ffi::GtkEventSequenceState) -> Self {
5017        skip_assert_initialized!();
5018
5019        match value {
5020            ffi::GTK_EVENT_SEQUENCE_NONE => Self::None,
5021            ffi::GTK_EVENT_SEQUENCE_CLAIMED => Self::Claimed,
5022            ffi::GTK_EVENT_SEQUENCE_DENIED => Self::Denied,
5023            value => Self::__Unknown(value),
5024        }
5025    }
5026}
5027
5028impl StaticType for EventSequenceState {
5029    #[inline]
5030    #[doc(alias = "gtk_event_sequence_state_get_type")]
5031    fn static_type() -> glib::Type {
5032        unsafe { from_glib(ffi::gtk_event_sequence_state_get_type()) }
5033    }
5034}
5035
5036impl glib::HasParamSpec for EventSequenceState {
5037    type ParamSpec = glib::ParamSpecEnum;
5038    type SetValue = Self;
5039    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5040
5041    fn param_spec_builder() -> Self::BuilderFn {
5042        Self::ParamSpec::builder_with_default
5043    }
5044}
5045
5046impl glib::value::ValueType for EventSequenceState {
5047    type Type = Self;
5048}
5049
5050unsafe impl<'a> glib::value::FromValue<'a> for EventSequenceState {
5051    type Checker = glib::value::GenericValueTypeChecker<Self>;
5052
5053    #[inline]
5054    unsafe fn from_value(value: &'a glib::Value) -> Self {
5055        skip_assert_initialized!();
5056        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5057    }
5058}
5059
5060impl ToValue for EventSequenceState {
5061    #[inline]
5062    fn to_value(&self) -> glib::Value {
5063        let mut value = glib::Value::for_value_type::<Self>();
5064        unsafe {
5065            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5066        }
5067        value
5068    }
5069
5070    #[inline]
5071    fn value_type(&self) -> glib::Type {
5072        Self::static_type()
5073    }
5074}
5075
5076impl From<EventSequenceState> for glib::Value {
5077    #[inline]
5078    fn from(v: EventSequenceState) -> Self {
5079        skip_assert_initialized!();
5080        ToValue::to_value(&v)
5081    }
5082}
5083
5084/// Describes whether a [`FileChooser`][crate::FileChooser] is being used to open existing files
5085/// or to save to a possibly new file.
5086#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5087#[non_exhaustive]
5088#[doc(alias = "GtkFileChooserAction")]
5089pub enum FileChooserAction {
5090    /// Indicates open mode.  The file chooser
5091    ///  will only let the user pick an existing file.
5092    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_OPEN")]
5093    Open,
5094    /// Indicates save mode.  The file chooser
5095    ///  will let the user pick an existing file, or type in a new
5096    ///  filename.
5097    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_SAVE")]
5098    Save,
5099    /// Indicates an Open mode for
5100    ///  selecting folders.  The file chooser will let the user pick an
5101    ///  existing folder.
5102    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER")]
5103    SelectFolder,
5104    #[doc(hidden)]
5105    __Unknown(i32),
5106}
5107
5108#[doc(hidden)]
5109impl IntoGlib for FileChooserAction {
5110    type GlibType = ffi::GtkFileChooserAction;
5111
5112    #[inline]
5113    fn into_glib(self) -> ffi::GtkFileChooserAction {
5114        match self {
5115            Self::Open => ffi::GTK_FILE_CHOOSER_ACTION_OPEN,
5116            Self::Save => ffi::GTK_FILE_CHOOSER_ACTION_SAVE,
5117            Self::SelectFolder => ffi::GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
5118            Self::__Unknown(value) => value,
5119        }
5120    }
5121}
5122
5123#[doc(hidden)]
5124impl FromGlib<ffi::GtkFileChooserAction> for FileChooserAction {
5125    #[inline]
5126    unsafe fn from_glib(value: ffi::GtkFileChooserAction) -> Self {
5127        skip_assert_initialized!();
5128
5129        match value {
5130            ffi::GTK_FILE_CHOOSER_ACTION_OPEN => Self::Open,
5131            ffi::GTK_FILE_CHOOSER_ACTION_SAVE => Self::Save,
5132            ffi::GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER => Self::SelectFolder,
5133            value => Self::__Unknown(value),
5134        }
5135    }
5136}
5137
5138impl StaticType for FileChooserAction {
5139    #[inline]
5140    #[doc(alias = "gtk_file_chooser_action_get_type")]
5141    fn static_type() -> glib::Type {
5142        unsafe { from_glib(ffi::gtk_file_chooser_action_get_type()) }
5143    }
5144}
5145
5146impl glib::HasParamSpec for FileChooserAction {
5147    type ParamSpec = glib::ParamSpecEnum;
5148    type SetValue = Self;
5149    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5150
5151    fn param_spec_builder() -> Self::BuilderFn {
5152        Self::ParamSpec::builder_with_default
5153    }
5154}
5155
5156impl glib::value::ValueType for FileChooserAction {
5157    type Type = Self;
5158}
5159
5160unsafe impl<'a> glib::value::FromValue<'a> for FileChooserAction {
5161    type Checker = glib::value::GenericValueTypeChecker<Self>;
5162
5163    #[inline]
5164    unsafe fn from_value(value: &'a glib::Value) -> Self {
5165        skip_assert_initialized!();
5166        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5167    }
5168}
5169
5170impl ToValue for FileChooserAction {
5171    #[inline]
5172    fn to_value(&self) -> glib::Value {
5173        let mut value = glib::Value::for_value_type::<Self>();
5174        unsafe {
5175            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5176        }
5177        value
5178    }
5179
5180    #[inline]
5181    fn value_type(&self) -> glib::Type {
5182        Self::static_type()
5183    }
5184}
5185
5186impl From<FileChooserAction> for glib::Value {
5187    #[inline]
5188    fn from(v: FileChooserAction) -> Self {
5189        skip_assert_initialized!();
5190        ToValue::to_value(&v)
5191    }
5192}
5193
5194/// These identify the various errors that can occur while calling
5195/// [`FileChooser`][crate::FileChooser] functions.
5196///
5197/// # Deprecated since 4.20
5198///
5199/// There is no replacement
5200#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
5201#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5202#[non_exhaustive]
5203#[doc(alias = "GtkFileChooserError")]
5204pub enum FileChooserError {
5205    /// Indicates that a file does not exist.
5206    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_NONEXISTENT")]
5207    Nonexistent,
5208    /// Indicates a malformed filename.
5209    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_BAD_FILENAME")]
5210    BadFilename,
5211    /// Indicates a duplicate path (e.g. when
5212    ///  adding a bookmark).
5213    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS")]
5214    AlreadyExists,
5215    /// Indicates an incomplete hostname
5216    ///  (e.g. "http://foo" without a slash after that).
5217    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME")]
5218    IncompleteHostname,
5219    #[doc(hidden)]
5220    __Unknown(i32),
5221}
5222
5223#[allow(deprecated)]
5224#[doc(hidden)]
5225impl IntoGlib for FileChooserError {
5226    type GlibType = ffi::GtkFileChooserError;
5227
5228    #[inline]
5229    fn into_glib(self) -> ffi::GtkFileChooserError {
5230        match self {
5231            Self::Nonexistent => ffi::GTK_FILE_CHOOSER_ERROR_NONEXISTENT,
5232            Self::BadFilename => ffi::GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
5233            Self::AlreadyExists => ffi::GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS,
5234            Self::IncompleteHostname => ffi::GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME,
5235            Self::__Unknown(value) => value,
5236        }
5237    }
5238}
5239
5240#[allow(deprecated)]
5241#[doc(hidden)]
5242impl FromGlib<ffi::GtkFileChooserError> for FileChooserError {
5243    #[inline]
5244    unsafe fn from_glib(value: ffi::GtkFileChooserError) -> Self {
5245        skip_assert_initialized!();
5246
5247        match value {
5248            ffi::GTK_FILE_CHOOSER_ERROR_NONEXISTENT => Self::Nonexistent,
5249            ffi::GTK_FILE_CHOOSER_ERROR_BAD_FILENAME => Self::BadFilename,
5250            ffi::GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS => Self::AlreadyExists,
5251            ffi::GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME => Self::IncompleteHostname,
5252            value => Self::__Unknown(value),
5253        }
5254    }
5255}
5256
5257#[allow(deprecated)]
5258impl glib::error::ErrorDomain for FileChooserError {
5259    #[inline]
5260    fn domain() -> glib::Quark {
5261        skip_assert_initialized!();
5262
5263        unsafe { from_glib(ffi::gtk_file_chooser_error_quark()) }
5264    }
5265
5266    #[inline]
5267    fn code(self) -> i32 {
5268        self.into_glib()
5269    }
5270
5271    #[inline]
5272    #[allow(clippy::match_single_binding)]
5273    fn from(code: i32) -> Option<Self> {
5274        skip_assert_initialized!();
5275        match unsafe { from_glib(code) } {
5276            value => Some(value),
5277        }
5278    }
5279}
5280
5281#[allow(deprecated)]
5282impl StaticType for FileChooserError {
5283    #[inline]
5284    #[doc(alias = "gtk_file_chooser_error_get_type")]
5285    fn static_type() -> glib::Type {
5286        unsafe { from_glib(ffi::gtk_file_chooser_error_get_type()) }
5287    }
5288}
5289
5290#[allow(deprecated)]
5291impl glib::HasParamSpec for FileChooserError {
5292    type ParamSpec = glib::ParamSpecEnum;
5293    type SetValue = Self;
5294    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5295
5296    fn param_spec_builder() -> Self::BuilderFn {
5297        Self::ParamSpec::builder_with_default
5298    }
5299}
5300
5301#[allow(deprecated)]
5302impl glib::value::ValueType for FileChooserError {
5303    type Type = Self;
5304}
5305
5306#[allow(deprecated)]
5307unsafe impl<'a> glib::value::FromValue<'a> for FileChooserError {
5308    type Checker = glib::value::GenericValueTypeChecker<Self>;
5309
5310    #[inline]
5311    unsafe fn from_value(value: &'a glib::Value) -> Self {
5312        skip_assert_initialized!();
5313        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5314    }
5315}
5316
5317#[allow(deprecated)]
5318impl ToValue for FileChooserError {
5319    #[inline]
5320    fn to_value(&self) -> glib::Value {
5321        let mut value = glib::Value::for_value_type::<Self>();
5322        unsafe {
5323            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5324        }
5325        value
5326    }
5327
5328    #[inline]
5329    fn value_type(&self) -> glib::Type {
5330        Self::static_type()
5331    }
5332}
5333
5334#[allow(deprecated)]
5335impl From<FileChooserError> for glib::Value {
5336    #[inline]
5337    fn from(v: FileChooserError) -> Self {
5338        skip_assert_initialized!();
5339        ToValue::to_value(&v)
5340    }
5341}
5342
5343/// Describes changes in a filter in more detail and allows objects
5344/// using the filter to optimize refiltering items.
5345///
5346/// If you are writing an implementation and are not sure which
5347/// value to pass, `GTK_FILTER_CHANGE_DIFFERENT` is always a correct
5348/// choice.
5349///
5350/// New values may be added in the future.
5351#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5352#[non_exhaustive]
5353#[doc(alias = "GtkFilterChange")]
5354pub enum FilterChange {
5355    /// The filter change cannot be
5356    ///   described with any of the other enumeration values
5357    #[doc(alias = "GTK_FILTER_CHANGE_DIFFERENT")]
5358    Different,
5359    /// The filter is less strict than
5360    ///   it was before: All items that it used to return true
5361    ///   still return true, others now may, too.
5362    #[doc(alias = "GTK_FILTER_CHANGE_LESS_STRICT")]
5363    LessStrict,
5364    /// The filter is more strict than
5365    ///   it was before: All items that it used to return false
5366    ///   still return false, others now may, too.
5367    #[doc(alias = "GTK_FILTER_CHANGE_MORE_STRICT")]
5368    MoreStrict,
5369    /// Similar to [enum@Gtk.FilterChange.DIFFERENT],
5370    /// but signs that item watches should be recreated. This is used by
5371    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5372    /// change.
5373    #[cfg(feature = "v4_20")]
5374    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5375    #[doc(alias = "GTK_FILTER_CHANGE_DIFFERENT_REWATCH")]
5376    DifferentRewatch,
5377    /// Similar to [enum@Gtk.FilterChange.LESS_STRICT],
5378    /// but signs that item watches should be recreated. This is used by
5379    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5380    /// change.
5381    #[cfg(feature = "v4_20")]
5382    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5383    #[doc(alias = "GTK_FILTER_CHANGE_LESS_STRICT_REWATCH")]
5384    LessStrictRewatch,
5385    /// Similar to [enum@Gtk.FilterChange.MORE_STRICT],
5386    /// but signs that item watches should be recreated. This is used by
5387    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5388    /// change.
5389    #[cfg(feature = "v4_20")]
5390    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5391    #[doc(alias = "GTK_FILTER_CHANGE_MORE_STRICT_REWATCH")]
5392    MoreStrictRewatch,
5393    #[doc(hidden)]
5394    __Unknown(i32),
5395}
5396
5397#[doc(hidden)]
5398impl IntoGlib for FilterChange {
5399    type GlibType = ffi::GtkFilterChange;
5400
5401    #[inline]
5402    fn into_glib(self) -> ffi::GtkFilterChange {
5403        match self {
5404            Self::Different => ffi::GTK_FILTER_CHANGE_DIFFERENT,
5405            Self::LessStrict => ffi::GTK_FILTER_CHANGE_LESS_STRICT,
5406            Self::MoreStrict => ffi::GTK_FILTER_CHANGE_MORE_STRICT,
5407            #[cfg(feature = "v4_20")]
5408            Self::DifferentRewatch => ffi::GTK_FILTER_CHANGE_DIFFERENT_REWATCH,
5409            #[cfg(feature = "v4_20")]
5410            Self::LessStrictRewatch => ffi::GTK_FILTER_CHANGE_LESS_STRICT_REWATCH,
5411            #[cfg(feature = "v4_20")]
5412            Self::MoreStrictRewatch => ffi::GTK_FILTER_CHANGE_MORE_STRICT_REWATCH,
5413            Self::__Unknown(value) => value,
5414        }
5415    }
5416}
5417
5418#[doc(hidden)]
5419impl FromGlib<ffi::GtkFilterChange> for FilterChange {
5420    #[inline]
5421    unsafe fn from_glib(value: ffi::GtkFilterChange) -> Self {
5422        skip_assert_initialized!();
5423
5424        match value {
5425            ffi::GTK_FILTER_CHANGE_DIFFERENT => Self::Different,
5426            ffi::GTK_FILTER_CHANGE_LESS_STRICT => Self::LessStrict,
5427            ffi::GTK_FILTER_CHANGE_MORE_STRICT => Self::MoreStrict,
5428            #[cfg(feature = "v4_20")]
5429            ffi::GTK_FILTER_CHANGE_DIFFERENT_REWATCH => Self::DifferentRewatch,
5430            #[cfg(feature = "v4_20")]
5431            ffi::GTK_FILTER_CHANGE_LESS_STRICT_REWATCH => Self::LessStrictRewatch,
5432            #[cfg(feature = "v4_20")]
5433            ffi::GTK_FILTER_CHANGE_MORE_STRICT_REWATCH => Self::MoreStrictRewatch,
5434            value => Self::__Unknown(value),
5435        }
5436    }
5437}
5438
5439impl StaticType for FilterChange {
5440    #[inline]
5441    #[doc(alias = "gtk_filter_change_get_type")]
5442    fn static_type() -> glib::Type {
5443        unsafe { from_glib(ffi::gtk_filter_change_get_type()) }
5444    }
5445}
5446
5447impl glib::HasParamSpec for FilterChange {
5448    type ParamSpec = glib::ParamSpecEnum;
5449    type SetValue = Self;
5450    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5451
5452    fn param_spec_builder() -> Self::BuilderFn {
5453        Self::ParamSpec::builder_with_default
5454    }
5455}
5456
5457impl glib::value::ValueType for FilterChange {
5458    type Type = Self;
5459}
5460
5461unsafe impl<'a> glib::value::FromValue<'a> for FilterChange {
5462    type Checker = glib::value::GenericValueTypeChecker<Self>;
5463
5464    #[inline]
5465    unsafe fn from_value(value: &'a glib::Value) -> Self {
5466        skip_assert_initialized!();
5467        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5468    }
5469}
5470
5471impl ToValue for FilterChange {
5472    #[inline]
5473    fn to_value(&self) -> glib::Value {
5474        let mut value = glib::Value::for_value_type::<Self>();
5475        unsafe {
5476            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5477        }
5478        value
5479    }
5480
5481    #[inline]
5482    fn value_type(&self) -> glib::Type {
5483        Self::static_type()
5484    }
5485}
5486
5487impl From<FilterChange> for glib::Value {
5488    #[inline]
5489    fn from(v: FilterChange) -> Self {
5490        skip_assert_initialized!();
5491        ToValue::to_value(&v)
5492    }
5493}
5494
5495/// Describes the known strictness of a filter.
5496///
5497/// Note that for filters where the strictness is not known,
5498/// `GTK_FILTER_MATCH_SOME` is always an acceptable value,
5499/// even if a filter does match all or no items.
5500#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5501#[non_exhaustive]
5502#[doc(alias = "GtkFilterMatch")]
5503pub enum FilterMatch {
5504    /// The filter matches some items,
5505    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] may return true or false
5506    #[doc(alias = "GTK_FILTER_MATCH_SOME")]
5507    Some,
5508    /// The filter does not match any item,
5509    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] will always return false
5510    #[doc(alias = "GTK_FILTER_MATCH_NONE")]
5511    None,
5512    /// The filter matches all items,
5513    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] will alays return true
5514    #[doc(alias = "GTK_FILTER_MATCH_ALL")]
5515    All,
5516    #[doc(hidden)]
5517    __Unknown(i32),
5518}
5519
5520#[doc(hidden)]
5521impl IntoGlib for FilterMatch {
5522    type GlibType = ffi::GtkFilterMatch;
5523
5524    #[inline]
5525    fn into_glib(self) -> ffi::GtkFilterMatch {
5526        match self {
5527            Self::Some => ffi::GTK_FILTER_MATCH_SOME,
5528            Self::None => ffi::GTK_FILTER_MATCH_NONE,
5529            Self::All => ffi::GTK_FILTER_MATCH_ALL,
5530            Self::__Unknown(value) => value,
5531        }
5532    }
5533}
5534
5535#[doc(hidden)]
5536impl FromGlib<ffi::GtkFilterMatch> for FilterMatch {
5537    #[inline]
5538    unsafe fn from_glib(value: ffi::GtkFilterMatch) -> Self {
5539        skip_assert_initialized!();
5540
5541        match value {
5542            ffi::GTK_FILTER_MATCH_SOME => Self::Some,
5543            ffi::GTK_FILTER_MATCH_NONE => Self::None,
5544            ffi::GTK_FILTER_MATCH_ALL => Self::All,
5545            value => Self::__Unknown(value),
5546        }
5547    }
5548}
5549
5550impl StaticType for FilterMatch {
5551    #[inline]
5552    #[doc(alias = "gtk_filter_match_get_type")]
5553    fn static_type() -> glib::Type {
5554        unsafe { from_glib(ffi::gtk_filter_match_get_type()) }
5555    }
5556}
5557
5558impl glib::HasParamSpec for FilterMatch {
5559    type ParamSpec = glib::ParamSpecEnum;
5560    type SetValue = Self;
5561    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5562
5563    fn param_spec_builder() -> Self::BuilderFn {
5564        Self::ParamSpec::builder_with_default
5565    }
5566}
5567
5568impl glib::value::ValueType for FilterMatch {
5569    type Type = Self;
5570}
5571
5572unsafe impl<'a> glib::value::FromValue<'a> for FilterMatch {
5573    type Checker = glib::value::GenericValueTypeChecker<Self>;
5574
5575    #[inline]
5576    unsafe fn from_value(value: &'a glib::Value) -> Self {
5577        skip_assert_initialized!();
5578        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5579    }
5580}
5581
5582impl ToValue for FilterMatch {
5583    #[inline]
5584    fn to_value(&self) -> glib::Value {
5585        let mut value = glib::Value::for_value_type::<Self>();
5586        unsafe {
5587            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5588        }
5589        value
5590    }
5591
5592    #[inline]
5593    fn value_type(&self) -> glib::Type {
5594        Self::static_type()
5595    }
5596}
5597
5598impl From<FilterMatch> for glib::Value {
5599    #[inline]
5600    fn from(v: FilterMatch) -> Self {
5601        skip_assert_initialized!();
5602        ToValue::to_value(&v)
5603    }
5604}
5605
5606/// The level of granularity for the font selection.
5607///
5608/// Depending on this value, the [`pango::FontDescription`][crate::pango::FontDescription] that
5609/// is returned by [`FontDialogButton::font_desc()`][crate::FontDialogButton::font_desc()]
5610/// will have more or less fields set.
5611#[cfg(feature = "v4_10")]
5612#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5613#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5614#[non_exhaustive]
5615#[doc(alias = "GtkFontLevel")]
5616pub enum FontLevel {
5617    /// Select a font family
5618    #[doc(alias = "GTK_FONT_LEVEL_FAMILY")]
5619    Family,
5620    /// Select a font face (i.e. a family and a style)
5621    #[doc(alias = "GTK_FONT_LEVEL_FACE")]
5622    Face,
5623    /// Select a font (i.e. a face with a size, and possibly font variations)
5624    #[doc(alias = "GTK_FONT_LEVEL_FONT")]
5625    Font,
5626    /// Select a font and font features
5627    #[doc(alias = "GTK_FONT_LEVEL_FEATURES")]
5628    Features,
5629    #[doc(hidden)]
5630    __Unknown(i32),
5631}
5632
5633#[cfg(feature = "v4_10")]
5634#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5635#[doc(hidden)]
5636impl IntoGlib for FontLevel {
5637    type GlibType = ffi::GtkFontLevel;
5638
5639    #[inline]
5640    fn into_glib(self) -> ffi::GtkFontLevel {
5641        match self {
5642            Self::Family => ffi::GTK_FONT_LEVEL_FAMILY,
5643            Self::Face => ffi::GTK_FONT_LEVEL_FACE,
5644            Self::Font => ffi::GTK_FONT_LEVEL_FONT,
5645            Self::Features => ffi::GTK_FONT_LEVEL_FEATURES,
5646            Self::__Unknown(value) => value,
5647        }
5648    }
5649}
5650
5651#[cfg(feature = "v4_10")]
5652#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5653#[doc(hidden)]
5654impl FromGlib<ffi::GtkFontLevel> for FontLevel {
5655    #[inline]
5656    unsafe fn from_glib(value: ffi::GtkFontLevel) -> Self {
5657        skip_assert_initialized!();
5658
5659        match value {
5660            ffi::GTK_FONT_LEVEL_FAMILY => Self::Family,
5661            ffi::GTK_FONT_LEVEL_FACE => Self::Face,
5662            ffi::GTK_FONT_LEVEL_FONT => Self::Font,
5663            ffi::GTK_FONT_LEVEL_FEATURES => Self::Features,
5664            value => Self::__Unknown(value),
5665        }
5666    }
5667}
5668
5669#[cfg(feature = "v4_10")]
5670#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5671impl StaticType for FontLevel {
5672    #[inline]
5673    #[doc(alias = "gtk_font_level_get_type")]
5674    fn static_type() -> glib::Type {
5675        unsafe { from_glib(ffi::gtk_font_level_get_type()) }
5676    }
5677}
5678
5679#[cfg(feature = "v4_10")]
5680#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5681impl glib::HasParamSpec for FontLevel {
5682    type ParamSpec = glib::ParamSpecEnum;
5683    type SetValue = Self;
5684    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5685
5686    fn param_spec_builder() -> Self::BuilderFn {
5687        Self::ParamSpec::builder_with_default
5688    }
5689}
5690
5691#[cfg(feature = "v4_10")]
5692#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5693impl glib::value::ValueType for FontLevel {
5694    type Type = Self;
5695}
5696
5697#[cfg(feature = "v4_10")]
5698#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5699unsafe impl<'a> glib::value::FromValue<'a> for FontLevel {
5700    type Checker = glib::value::GenericValueTypeChecker<Self>;
5701
5702    #[inline]
5703    unsafe fn from_value(value: &'a glib::Value) -> Self {
5704        skip_assert_initialized!();
5705        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5706    }
5707}
5708
5709#[cfg(feature = "v4_10")]
5710#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5711impl ToValue for FontLevel {
5712    #[inline]
5713    fn to_value(&self) -> glib::Value {
5714        let mut value = glib::Value::for_value_type::<Self>();
5715        unsafe {
5716            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5717        }
5718        value
5719    }
5720
5721    #[inline]
5722    fn value_type(&self) -> glib::Type {
5723        Self::static_type()
5724    }
5725}
5726
5727#[cfg(feature = "v4_10")]
5728#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5729impl From<FontLevel> for glib::Value {
5730    #[inline]
5731    fn from(v: FontLevel) -> Self {
5732        skip_assert_initialized!();
5733        ToValue::to_value(&v)
5734    }
5735}
5736
5737/// Values for the [`gtk-font-rendering`][struct@crate::Settings#gtk-font-rendering] setting
5738/// that influence how GTK renders fonts.
5739#[cfg(feature = "v4_16")]
5740#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5741#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5742#[non_exhaustive]
5743#[doc(alias = "GtkFontRendering")]
5744pub enum FontRendering {
5745    /// Set up font rendering automatically,
5746    ///   taking factors like screen resolution and scale into account
5747    #[doc(alias = "GTK_FONT_RENDERING_AUTOMATIC")]
5748    Automatic,
5749    /// Follow low-level font-related settings
5750    ///   when configuring font rendering
5751    #[doc(alias = "GTK_FONT_RENDERING_MANUAL")]
5752    Manual,
5753    #[doc(hidden)]
5754    __Unknown(i32),
5755}
5756
5757#[cfg(feature = "v4_16")]
5758#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5759#[doc(hidden)]
5760impl IntoGlib for FontRendering {
5761    type GlibType = ffi::GtkFontRendering;
5762
5763    #[inline]
5764    fn into_glib(self) -> ffi::GtkFontRendering {
5765        match self {
5766            Self::Automatic => ffi::GTK_FONT_RENDERING_AUTOMATIC,
5767            Self::Manual => ffi::GTK_FONT_RENDERING_MANUAL,
5768            Self::__Unknown(value) => value,
5769        }
5770    }
5771}
5772
5773#[cfg(feature = "v4_16")]
5774#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5775#[doc(hidden)]
5776impl FromGlib<ffi::GtkFontRendering> for FontRendering {
5777    #[inline]
5778    unsafe fn from_glib(value: ffi::GtkFontRendering) -> Self {
5779        skip_assert_initialized!();
5780
5781        match value {
5782            ffi::GTK_FONT_RENDERING_AUTOMATIC => Self::Automatic,
5783            ffi::GTK_FONT_RENDERING_MANUAL => Self::Manual,
5784            value => Self::__Unknown(value),
5785        }
5786    }
5787}
5788
5789#[cfg(feature = "v4_16")]
5790#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5791impl StaticType for FontRendering {
5792    #[inline]
5793    #[doc(alias = "gtk_font_rendering_get_type")]
5794    fn static_type() -> glib::Type {
5795        unsafe { from_glib(ffi::gtk_font_rendering_get_type()) }
5796    }
5797}
5798
5799#[cfg(feature = "v4_16")]
5800#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5801impl glib::HasParamSpec for FontRendering {
5802    type ParamSpec = glib::ParamSpecEnum;
5803    type SetValue = Self;
5804    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5805
5806    fn param_spec_builder() -> Self::BuilderFn {
5807        Self::ParamSpec::builder_with_default
5808    }
5809}
5810
5811#[cfg(feature = "v4_16")]
5812#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5813impl glib::value::ValueType for FontRendering {
5814    type Type = Self;
5815}
5816
5817#[cfg(feature = "v4_16")]
5818#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5819unsafe impl<'a> glib::value::FromValue<'a> for FontRendering {
5820    type Checker = glib::value::GenericValueTypeChecker<Self>;
5821
5822    #[inline]
5823    unsafe fn from_value(value: &'a glib::Value) -> Self {
5824        skip_assert_initialized!();
5825        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5826    }
5827}
5828
5829#[cfg(feature = "v4_16")]
5830#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5831impl ToValue for FontRendering {
5832    #[inline]
5833    fn to_value(&self) -> glib::Value {
5834        let mut value = glib::Value::for_value_type::<Self>();
5835        unsafe {
5836            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5837        }
5838        value
5839    }
5840
5841    #[inline]
5842    fn value_type(&self) -> glib::Type {
5843        Self::static_type()
5844    }
5845}
5846
5847#[cfg(feature = "v4_16")]
5848#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5849impl From<FontRendering> for glib::Value {
5850    #[inline]
5851    fn from(v: FontRendering) -> Self {
5852        skip_assert_initialized!();
5853        ToValue::to_value(&v)
5854    }
5855}
5856
5857/// Represents the state of graphics offloading.
5858#[cfg(feature = "v4_14")]
5859#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5860#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5861#[non_exhaustive]
5862#[doc(alias = "GtkGraphicsOffloadEnabled")]
5863pub enum GraphicsOffloadEnabled {
5864    /// Graphics offloading is enabled.
5865    #[doc(alias = "GTK_GRAPHICS_OFFLOAD_ENABLED")]
5866    Enabled,
5867    /// Graphics offloading is disabled.
5868    #[doc(alias = "GTK_GRAPHICS_OFFLOAD_DISABLED")]
5869    Disabled,
5870    #[doc(hidden)]
5871    __Unknown(i32),
5872}
5873
5874#[cfg(feature = "v4_14")]
5875#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5876#[doc(hidden)]
5877impl IntoGlib for GraphicsOffloadEnabled {
5878    type GlibType = ffi::GtkGraphicsOffloadEnabled;
5879
5880    #[inline]
5881    fn into_glib(self) -> ffi::GtkGraphicsOffloadEnabled {
5882        match self {
5883            Self::Enabled => ffi::GTK_GRAPHICS_OFFLOAD_ENABLED,
5884            Self::Disabled => ffi::GTK_GRAPHICS_OFFLOAD_DISABLED,
5885            Self::__Unknown(value) => value,
5886        }
5887    }
5888}
5889
5890#[cfg(feature = "v4_14")]
5891#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5892#[doc(hidden)]
5893impl FromGlib<ffi::GtkGraphicsOffloadEnabled> for GraphicsOffloadEnabled {
5894    #[inline]
5895    unsafe fn from_glib(value: ffi::GtkGraphicsOffloadEnabled) -> Self {
5896        skip_assert_initialized!();
5897
5898        match value {
5899            ffi::GTK_GRAPHICS_OFFLOAD_ENABLED => Self::Enabled,
5900            ffi::GTK_GRAPHICS_OFFLOAD_DISABLED => Self::Disabled,
5901            value => Self::__Unknown(value),
5902        }
5903    }
5904}
5905
5906#[cfg(feature = "v4_14")]
5907#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5908impl StaticType for GraphicsOffloadEnabled {
5909    #[inline]
5910    #[doc(alias = "gtk_graphics_offload_enabled_get_type")]
5911    fn static_type() -> glib::Type {
5912        unsafe { from_glib(ffi::gtk_graphics_offload_enabled_get_type()) }
5913    }
5914}
5915
5916#[cfg(feature = "v4_14")]
5917#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5918impl glib::HasParamSpec for GraphicsOffloadEnabled {
5919    type ParamSpec = glib::ParamSpecEnum;
5920    type SetValue = Self;
5921    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5922
5923    fn param_spec_builder() -> Self::BuilderFn {
5924        Self::ParamSpec::builder_with_default
5925    }
5926}
5927
5928#[cfg(feature = "v4_14")]
5929#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5930impl glib::value::ValueType for GraphicsOffloadEnabled {
5931    type Type = Self;
5932}
5933
5934#[cfg(feature = "v4_14")]
5935#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5936unsafe impl<'a> glib::value::FromValue<'a> for GraphicsOffloadEnabled {
5937    type Checker = glib::value::GenericValueTypeChecker<Self>;
5938
5939    #[inline]
5940    unsafe fn from_value(value: &'a glib::Value) -> Self {
5941        skip_assert_initialized!();
5942        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5943    }
5944}
5945
5946#[cfg(feature = "v4_14")]
5947#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5948impl ToValue for GraphicsOffloadEnabled {
5949    #[inline]
5950    fn to_value(&self) -> glib::Value {
5951        let mut value = glib::Value::for_value_type::<Self>();
5952        unsafe {
5953            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5954        }
5955        value
5956    }
5957
5958    #[inline]
5959    fn value_type(&self) -> glib::Type {
5960        Self::static_type()
5961    }
5962}
5963
5964#[cfg(feature = "v4_14")]
5965#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5966impl From<GraphicsOffloadEnabled> for glib::Value {
5967    #[inline]
5968    fn from(v: GraphicsOffloadEnabled) -> Self {
5969        skip_assert_initialized!();
5970        ToValue::to_value(&v)
5971    }
5972}
5973
5974/// Built-in icon sizes.
5975///
5976/// Icon sizes default to being inherited. Where they cannot be
5977/// inherited, text size is the default.
5978///
5979/// All widgets which use [`IconSize`][crate::IconSize] set the normal-icons or
5980/// large-icons style classes correspondingly, and let themes
5981/// determine the actual size to be used with the
5982/// `-gtk-icon-size` CSS property.
5983#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5984#[non_exhaustive]
5985#[doc(alias = "GtkIconSize")]
5986pub enum IconSize {
5987    /// Keep the size of the parent element
5988    #[doc(alias = "GTK_ICON_SIZE_INHERIT")]
5989    Inherit,
5990    /// Size similar to text size
5991    #[doc(alias = "GTK_ICON_SIZE_NORMAL")]
5992    Normal,
5993    /// Large size, for example in an icon view
5994    #[doc(alias = "GTK_ICON_SIZE_LARGE")]
5995    Large,
5996    #[doc(hidden)]
5997    __Unknown(i32),
5998}
5999
6000#[doc(hidden)]
6001impl IntoGlib for IconSize {
6002    type GlibType = ffi::GtkIconSize;
6003
6004    #[inline]
6005    fn into_glib(self) -> ffi::GtkIconSize {
6006        match self {
6007            Self::Inherit => ffi::GTK_ICON_SIZE_INHERIT,
6008            Self::Normal => ffi::GTK_ICON_SIZE_NORMAL,
6009            Self::Large => ffi::GTK_ICON_SIZE_LARGE,
6010            Self::__Unknown(value) => value,
6011        }
6012    }
6013}
6014
6015#[doc(hidden)]
6016impl FromGlib<ffi::GtkIconSize> for IconSize {
6017    #[inline]
6018    unsafe fn from_glib(value: ffi::GtkIconSize) -> Self {
6019        skip_assert_initialized!();
6020
6021        match value {
6022            ffi::GTK_ICON_SIZE_INHERIT => Self::Inherit,
6023            ffi::GTK_ICON_SIZE_NORMAL => Self::Normal,
6024            ffi::GTK_ICON_SIZE_LARGE => Self::Large,
6025            value => Self::__Unknown(value),
6026        }
6027    }
6028}
6029
6030impl StaticType for IconSize {
6031    #[inline]
6032    #[doc(alias = "gtk_icon_size_get_type")]
6033    fn static_type() -> glib::Type {
6034        unsafe { from_glib(ffi::gtk_icon_size_get_type()) }
6035    }
6036}
6037
6038impl glib::HasParamSpec for IconSize {
6039    type ParamSpec = glib::ParamSpecEnum;
6040    type SetValue = Self;
6041    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6042
6043    fn param_spec_builder() -> Self::BuilderFn {
6044        Self::ParamSpec::builder_with_default
6045    }
6046}
6047
6048impl glib::value::ValueType for IconSize {
6049    type Type = Self;
6050}
6051
6052unsafe impl<'a> glib::value::FromValue<'a> for IconSize {
6053    type Checker = glib::value::GenericValueTypeChecker<Self>;
6054
6055    #[inline]
6056    unsafe fn from_value(value: &'a glib::Value) -> Self {
6057        skip_assert_initialized!();
6058        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6059    }
6060}
6061
6062impl ToValue for IconSize {
6063    #[inline]
6064    fn to_value(&self) -> glib::Value {
6065        let mut value = glib::Value::for_value_type::<Self>();
6066        unsafe {
6067            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6068        }
6069        value
6070    }
6071
6072    #[inline]
6073    fn value_type(&self) -> glib::Type {
6074        Self::static_type()
6075    }
6076}
6077
6078impl From<IconSize> for glib::Value {
6079    #[inline]
6080    fn from(v: IconSize) -> Self {
6081        skip_assert_initialized!();
6082        ToValue::to_value(&v)
6083    }
6084}
6085
6086/// Error codes for [`IconTheme`][crate::IconTheme] operations.
6087#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6088#[non_exhaustive]
6089#[doc(alias = "GtkIconThemeError")]
6090pub enum IconThemeError {
6091    /// The icon specified does not exist in the theme
6092    #[doc(alias = "GTK_ICON_THEME_NOT_FOUND")]
6093    NotFound,
6094    /// An unspecified error occurred.
6095    #[doc(alias = "GTK_ICON_THEME_FAILED")]
6096    Failed,
6097    #[doc(hidden)]
6098    __Unknown(i32),
6099}
6100
6101#[doc(hidden)]
6102impl IntoGlib for IconThemeError {
6103    type GlibType = ffi::GtkIconThemeError;
6104
6105    #[inline]
6106    fn into_glib(self) -> ffi::GtkIconThemeError {
6107        match self {
6108            Self::NotFound => ffi::GTK_ICON_THEME_NOT_FOUND,
6109            Self::Failed => ffi::GTK_ICON_THEME_FAILED,
6110            Self::__Unknown(value) => value,
6111        }
6112    }
6113}
6114
6115#[doc(hidden)]
6116impl FromGlib<ffi::GtkIconThemeError> for IconThemeError {
6117    #[inline]
6118    unsafe fn from_glib(value: ffi::GtkIconThemeError) -> Self {
6119        skip_assert_initialized!();
6120
6121        match value {
6122            ffi::GTK_ICON_THEME_NOT_FOUND => Self::NotFound,
6123            ffi::GTK_ICON_THEME_FAILED => Self::Failed,
6124            value => Self::__Unknown(value),
6125        }
6126    }
6127}
6128
6129impl glib::error::ErrorDomain for IconThemeError {
6130    #[inline]
6131    fn domain() -> glib::Quark {
6132        skip_assert_initialized!();
6133
6134        unsafe { from_glib(ffi::gtk_icon_theme_error_quark()) }
6135    }
6136
6137    #[inline]
6138    fn code(self) -> i32 {
6139        self.into_glib()
6140    }
6141
6142    #[inline]
6143    #[allow(clippy::match_single_binding)]
6144    fn from(code: i32) -> Option<Self> {
6145        skip_assert_initialized!();
6146        match unsafe { from_glib(code) } {
6147            Self::__Unknown(_) => Some(Self::Failed),
6148            value => Some(value),
6149        }
6150    }
6151}
6152
6153impl StaticType for IconThemeError {
6154    #[inline]
6155    #[doc(alias = "gtk_icon_theme_error_get_type")]
6156    fn static_type() -> glib::Type {
6157        unsafe { from_glib(ffi::gtk_icon_theme_error_get_type()) }
6158    }
6159}
6160
6161impl glib::HasParamSpec for IconThemeError {
6162    type ParamSpec = glib::ParamSpecEnum;
6163    type SetValue = Self;
6164    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6165
6166    fn param_spec_builder() -> Self::BuilderFn {
6167        Self::ParamSpec::builder_with_default
6168    }
6169}
6170
6171impl glib::value::ValueType for IconThemeError {
6172    type Type = Self;
6173}
6174
6175unsafe impl<'a> glib::value::FromValue<'a> for IconThemeError {
6176    type Checker = glib::value::GenericValueTypeChecker<Self>;
6177
6178    #[inline]
6179    unsafe fn from_value(value: &'a glib::Value) -> Self {
6180        skip_assert_initialized!();
6181        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6182    }
6183}
6184
6185impl ToValue for IconThemeError {
6186    #[inline]
6187    fn to_value(&self) -> glib::Value {
6188        let mut value = glib::Value::for_value_type::<Self>();
6189        unsafe {
6190            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6191        }
6192        value
6193    }
6194
6195    #[inline]
6196    fn value_type(&self) -> glib::Type {
6197        Self::static_type()
6198    }
6199}
6200
6201impl From<IconThemeError> for glib::Value {
6202    #[inline]
6203    fn from(v: IconThemeError) -> Self {
6204        skip_assert_initialized!();
6205        ToValue::to_value(&v)
6206    }
6207}
6208
6209/// An enum for determining where a dropped item goes.
6210///
6211/// # Deprecated since 4.20
6212///
6213/// There is no replacement.
6214#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
6215#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6216#[non_exhaustive]
6217#[doc(alias = "GtkIconViewDropPosition")]
6218pub enum IconViewDropPosition {
6219    /// no drop possible
6220    #[doc(alias = "GTK_ICON_VIEW_NO_DROP")]
6221    NoDrop,
6222    /// dropped item replaces the item
6223    #[doc(alias = "GTK_ICON_VIEW_DROP_INTO")]
6224    DropInto,
6225    /// dropped item is inserted to the left
6226    #[doc(alias = "GTK_ICON_VIEW_DROP_LEFT")]
6227    DropLeft,
6228    /// dropped item is inserted to the right
6229    #[doc(alias = "GTK_ICON_VIEW_DROP_RIGHT")]
6230    DropRight,
6231    /// dropped item is inserted above
6232    #[doc(alias = "GTK_ICON_VIEW_DROP_ABOVE")]
6233    DropAbove,
6234    /// dropped item is inserted below
6235    #[doc(alias = "GTK_ICON_VIEW_DROP_BELOW")]
6236    DropBelow,
6237    #[doc(hidden)]
6238    __Unknown(i32),
6239}
6240
6241#[allow(deprecated)]
6242#[doc(hidden)]
6243impl IntoGlib for IconViewDropPosition {
6244    type GlibType = ffi::GtkIconViewDropPosition;
6245
6246    #[inline]
6247    fn into_glib(self) -> ffi::GtkIconViewDropPosition {
6248        match self {
6249            Self::NoDrop => ffi::GTK_ICON_VIEW_NO_DROP,
6250            Self::DropInto => ffi::GTK_ICON_VIEW_DROP_INTO,
6251            Self::DropLeft => ffi::GTK_ICON_VIEW_DROP_LEFT,
6252            Self::DropRight => ffi::GTK_ICON_VIEW_DROP_RIGHT,
6253            Self::DropAbove => ffi::GTK_ICON_VIEW_DROP_ABOVE,
6254            Self::DropBelow => ffi::GTK_ICON_VIEW_DROP_BELOW,
6255            Self::__Unknown(value) => value,
6256        }
6257    }
6258}
6259
6260#[allow(deprecated)]
6261#[doc(hidden)]
6262impl FromGlib<ffi::GtkIconViewDropPosition> for IconViewDropPosition {
6263    #[inline]
6264    unsafe fn from_glib(value: ffi::GtkIconViewDropPosition) -> Self {
6265        skip_assert_initialized!();
6266
6267        match value {
6268            ffi::GTK_ICON_VIEW_NO_DROP => Self::NoDrop,
6269            ffi::GTK_ICON_VIEW_DROP_INTO => Self::DropInto,
6270            ffi::GTK_ICON_VIEW_DROP_LEFT => Self::DropLeft,
6271            ffi::GTK_ICON_VIEW_DROP_RIGHT => Self::DropRight,
6272            ffi::GTK_ICON_VIEW_DROP_ABOVE => Self::DropAbove,
6273            ffi::GTK_ICON_VIEW_DROP_BELOW => Self::DropBelow,
6274            value => Self::__Unknown(value),
6275        }
6276    }
6277}
6278
6279#[allow(deprecated)]
6280impl StaticType for IconViewDropPosition {
6281    #[inline]
6282    #[doc(alias = "gtk_icon_view_drop_position_get_type")]
6283    fn static_type() -> glib::Type {
6284        unsafe { from_glib(ffi::gtk_icon_view_drop_position_get_type()) }
6285    }
6286}
6287
6288#[allow(deprecated)]
6289impl glib::HasParamSpec for IconViewDropPosition {
6290    type ParamSpec = glib::ParamSpecEnum;
6291    type SetValue = Self;
6292    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6293
6294    fn param_spec_builder() -> Self::BuilderFn {
6295        Self::ParamSpec::builder_with_default
6296    }
6297}
6298
6299#[allow(deprecated)]
6300impl glib::value::ValueType for IconViewDropPosition {
6301    type Type = Self;
6302}
6303
6304#[allow(deprecated)]
6305unsafe impl<'a> glib::value::FromValue<'a> for IconViewDropPosition {
6306    type Checker = glib::value::GenericValueTypeChecker<Self>;
6307
6308    #[inline]
6309    unsafe fn from_value(value: &'a glib::Value) -> Self {
6310        skip_assert_initialized!();
6311        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6312    }
6313}
6314
6315#[allow(deprecated)]
6316impl ToValue for IconViewDropPosition {
6317    #[inline]
6318    fn to_value(&self) -> glib::Value {
6319        let mut value = glib::Value::for_value_type::<Self>();
6320        unsafe {
6321            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6322        }
6323        value
6324    }
6325
6326    #[inline]
6327    fn value_type(&self) -> glib::Type {
6328        Self::static_type()
6329    }
6330}
6331
6332#[allow(deprecated)]
6333impl From<IconViewDropPosition> for glib::Value {
6334    #[inline]
6335    fn from(v: IconViewDropPosition) -> Self {
6336        skip_assert_initialized!();
6337        ToValue::to_value(&v)
6338    }
6339}
6340
6341/// Describes the image data representation used by a [`Image`][crate::Image].
6342///
6343/// If you want to get the image from the widget, you can only get the
6344/// currently-stored representation; for instance, if the gtk_image_get_storage_type()
6345/// returns [`Paintable`][Self::Paintable], then you can call gtk_image_get_paintable().
6346///
6347/// For empty images, you can request any storage type (call any of the "get"
6348/// functions), but they will all return [`None`] values.
6349#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6350#[non_exhaustive]
6351#[doc(alias = "GtkImageType")]
6352pub enum ImageType {
6353    /// there is no image displayed by the widget
6354    #[doc(alias = "GTK_IMAGE_EMPTY")]
6355    Empty,
6356    /// the widget contains a named icon
6357    #[doc(alias = "GTK_IMAGE_ICON_NAME")]
6358    IconName,
6359    /// the widget contains a `GIcon`
6360    #[doc(alias = "GTK_IMAGE_GICON")]
6361    Gicon,
6362    /// the widget contains a [`gdk::Paintable`][crate::gdk::Paintable]
6363    #[doc(alias = "GTK_IMAGE_PAINTABLE")]
6364    Paintable,
6365    #[doc(hidden)]
6366    __Unknown(i32),
6367}
6368
6369#[doc(hidden)]
6370impl IntoGlib for ImageType {
6371    type GlibType = ffi::GtkImageType;
6372
6373    #[inline]
6374    fn into_glib(self) -> ffi::GtkImageType {
6375        match self {
6376            Self::Empty => ffi::GTK_IMAGE_EMPTY,
6377            Self::IconName => ffi::GTK_IMAGE_ICON_NAME,
6378            Self::Gicon => ffi::GTK_IMAGE_GICON,
6379            Self::Paintable => ffi::GTK_IMAGE_PAINTABLE,
6380            Self::__Unknown(value) => value,
6381        }
6382    }
6383}
6384
6385#[doc(hidden)]
6386impl FromGlib<ffi::GtkImageType> for ImageType {
6387    #[inline]
6388    unsafe fn from_glib(value: ffi::GtkImageType) -> Self {
6389        skip_assert_initialized!();
6390
6391        match value {
6392            ffi::GTK_IMAGE_EMPTY => Self::Empty,
6393            ffi::GTK_IMAGE_ICON_NAME => Self::IconName,
6394            ffi::GTK_IMAGE_GICON => Self::Gicon,
6395            ffi::GTK_IMAGE_PAINTABLE => Self::Paintable,
6396            value => Self::__Unknown(value),
6397        }
6398    }
6399}
6400
6401impl StaticType for ImageType {
6402    #[inline]
6403    #[doc(alias = "gtk_image_type_get_type")]
6404    fn static_type() -> glib::Type {
6405        unsafe { from_glib(ffi::gtk_image_type_get_type()) }
6406    }
6407}
6408
6409impl glib::HasParamSpec for ImageType {
6410    type ParamSpec = glib::ParamSpecEnum;
6411    type SetValue = Self;
6412    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6413
6414    fn param_spec_builder() -> Self::BuilderFn {
6415        Self::ParamSpec::builder_with_default
6416    }
6417}
6418
6419impl glib::value::ValueType for ImageType {
6420    type Type = Self;
6421}
6422
6423unsafe impl<'a> glib::value::FromValue<'a> for ImageType {
6424    type Checker = glib::value::GenericValueTypeChecker<Self>;
6425
6426    #[inline]
6427    unsafe fn from_value(value: &'a glib::Value) -> Self {
6428        skip_assert_initialized!();
6429        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6430    }
6431}
6432
6433impl ToValue for ImageType {
6434    #[inline]
6435    fn to_value(&self) -> glib::Value {
6436        let mut value = glib::Value::for_value_type::<Self>();
6437        unsafe {
6438            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6439        }
6440        value
6441    }
6442
6443    #[inline]
6444    fn value_type(&self) -> glib::Type {
6445        Self::static_type()
6446    }
6447}
6448
6449impl From<ImageType> for glib::Value {
6450    #[inline]
6451    fn from(v: ImageType) -> Self {
6452        skip_assert_initialized!();
6453        ToValue::to_value(&v)
6454    }
6455}
6456
6457/// Describes primary purpose of the input widget.
6458///
6459/// This information is useful for on-screen keyboards and similar input
6460/// methods to decide which keys should be presented to the user.
6461///
6462/// Note that the purpose is not meant to impose a totally strict rule
6463/// about allowed characters, and does not replace input validation.
6464/// It is fine for an on-screen keyboard to let the user override the
6465/// character set restriction that is expressed by the purpose. The
6466/// application is expected to validate the entry contents, even if
6467/// it specified a purpose.
6468///
6469/// The difference between [`Digits`][Self::Digits] and
6470/// [`Number`][Self::Number] is that the former accepts only digits
6471/// while the latter also some punctuation (like commas or points, plus,
6472/// minus) and “e” or “E” as in 3.14E+000.
6473///
6474/// This enumeration may be extended in the future; input methods should
6475/// interpret unknown values as “free form”.
6476#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6477#[non_exhaustive]
6478#[doc(alias = "GtkInputPurpose")]
6479pub enum InputPurpose {
6480    /// Allow any character
6481    #[doc(alias = "GTK_INPUT_PURPOSE_FREE_FORM")]
6482    FreeForm,
6483    /// Allow only alphabetic characters
6484    #[doc(alias = "GTK_INPUT_PURPOSE_ALPHA")]
6485    Alpha,
6486    /// Allow only digits
6487    #[doc(alias = "GTK_INPUT_PURPOSE_DIGITS")]
6488    Digits,
6489    /// Edited field expects numbers
6490    #[doc(alias = "GTK_INPUT_PURPOSE_NUMBER")]
6491    Number,
6492    /// Edited field expects phone number
6493    #[doc(alias = "GTK_INPUT_PURPOSE_PHONE")]
6494    Phone,
6495    /// Edited field expects URL
6496    #[doc(alias = "GTK_INPUT_PURPOSE_URL")]
6497    Url,
6498    /// Edited field expects email address
6499    #[doc(alias = "GTK_INPUT_PURPOSE_EMAIL")]
6500    Email,
6501    /// Edited field expects the name of a person
6502    #[doc(alias = "GTK_INPUT_PURPOSE_NAME")]
6503    Name,
6504    /// Like [`FreeForm`][Self::FreeForm], but characters are hidden
6505    #[doc(alias = "GTK_INPUT_PURPOSE_PASSWORD")]
6506    Password,
6507    /// Like [`Digits`][Self::Digits], but characters are hidden
6508    #[doc(alias = "GTK_INPUT_PURPOSE_PIN")]
6509    Pin,
6510    /// Allow any character, in addition to control codes
6511    #[doc(alias = "GTK_INPUT_PURPOSE_TERMINAL")]
6512    Terminal,
6513    #[doc(hidden)]
6514    __Unknown(i32),
6515}
6516
6517#[doc(hidden)]
6518impl IntoGlib for InputPurpose {
6519    type GlibType = ffi::GtkInputPurpose;
6520
6521    #[inline]
6522    fn into_glib(self) -> ffi::GtkInputPurpose {
6523        match self {
6524            Self::FreeForm => ffi::GTK_INPUT_PURPOSE_FREE_FORM,
6525            Self::Alpha => ffi::GTK_INPUT_PURPOSE_ALPHA,
6526            Self::Digits => ffi::GTK_INPUT_PURPOSE_DIGITS,
6527            Self::Number => ffi::GTK_INPUT_PURPOSE_NUMBER,
6528            Self::Phone => ffi::GTK_INPUT_PURPOSE_PHONE,
6529            Self::Url => ffi::GTK_INPUT_PURPOSE_URL,
6530            Self::Email => ffi::GTK_INPUT_PURPOSE_EMAIL,
6531            Self::Name => ffi::GTK_INPUT_PURPOSE_NAME,
6532            Self::Password => ffi::GTK_INPUT_PURPOSE_PASSWORD,
6533            Self::Pin => ffi::GTK_INPUT_PURPOSE_PIN,
6534            Self::Terminal => ffi::GTK_INPUT_PURPOSE_TERMINAL,
6535            Self::__Unknown(value) => value,
6536        }
6537    }
6538}
6539
6540#[doc(hidden)]
6541impl FromGlib<ffi::GtkInputPurpose> for InputPurpose {
6542    #[inline]
6543    unsafe fn from_glib(value: ffi::GtkInputPurpose) -> Self {
6544        skip_assert_initialized!();
6545
6546        match value {
6547            ffi::GTK_INPUT_PURPOSE_FREE_FORM => Self::FreeForm,
6548            ffi::GTK_INPUT_PURPOSE_ALPHA => Self::Alpha,
6549            ffi::GTK_INPUT_PURPOSE_DIGITS => Self::Digits,
6550            ffi::GTK_INPUT_PURPOSE_NUMBER => Self::Number,
6551            ffi::GTK_INPUT_PURPOSE_PHONE => Self::Phone,
6552            ffi::GTK_INPUT_PURPOSE_URL => Self::Url,
6553            ffi::GTK_INPUT_PURPOSE_EMAIL => Self::Email,
6554            ffi::GTK_INPUT_PURPOSE_NAME => Self::Name,
6555            ffi::GTK_INPUT_PURPOSE_PASSWORD => Self::Password,
6556            ffi::GTK_INPUT_PURPOSE_PIN => Self::Pin,
6557            ffi::GTK_INPUT_PURPOSE_TERMINAL => Self::Terminal,
6558            value => Self::__Unknown(value),
6559        }
6560    }
6561}
6562
6563impl StaticType for InputPurpose {
6564    #[inline]
6565    #[doc(alias = "gtk_input_purpose_get_type")]
6566    fn static_type() -> glib::Type {
6567        unsafe { from_glib(ffi::gtk_input_purpose_get_type()) }
6568    }
6569}
6570
6571impl glib::HasParamSpec for InputPurpose {
6572    type ParamSpec = glib::ParamSpecEnum;
6573    type SetValue = Self;
6574    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6575
6576    fn param_spec_builder() -> Self::BuilderFn {
6577        Self::ParamSpec::builder_with_default
6578    }
6579}
6580
6581impl glib::value::ValueType for InputPurpose {
6582    type Type = Self;
6583}
6584
6585unsafe impl<'a> glib::value::FromValue<'a> for InputPurpose {
6586    type Checker = glib::value::GenericValueTypeChecker<Self>;
6587
6588    #[inline]
6589    unsafe fn from_value(value: &'a glib::Value) -> Self {
6590        skip_assert_initialized!();
6591        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6592    }
6593}
6594
6595impl ToValue for InputPurpose {
6596    #[inline]
6597    fn to_value(&self) -> glib::Value {
6598        let mut value = glib::Value::for_value_type::<Self>();
6599        unsafe {
6600            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6601        }
6602        value
6603    }
6604
6605    #[inline]
6606    fn value_type(&self) -> glib::Type {
6607        Self::static_type()
6608    }
6609}
6610
6611impl From<InputPurpose> for glib::Value {
6612    #[inline]
6613    fn from(v: InputPurpose) -> Self {
6614        skip_assert_initialized!();
6615        ToValue::to_value(&v)
6616    }
6617}
6618
6619/// The different methods to handle text in #GtkInscription when it doesn't
6620/// fit the available space.
6621#[cfg(feature = "v4_8")]
6622#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6623#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6624#[non_exhaustive]
6625#[doc(alias = "GtkInscriptionOverflow")]
6626pub enum InscriptionOverflow {
6627    /// Clip the remaining text
6628    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_CLIP")]
6629    Clip,
6630    /// Omit characters at the start of the text
6631    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START")]
6632    EllipsizeStart,
6633    /// Omit characters at the middle of the text
6634    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE")]
6635    EllipsizeMiddle,
6636    /// Omit characters at the end of the text
6637    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END")]
6638    EllipsizeEnd,
6639    #[doc(hidden)]
6640    __Unknown(i32),
6641}
6642
6643#[cfg(feature = "v4_8")]
6644#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6645#[doc(hidden)]
6646impl IntoGlib for InscriptionOverflow {
6647    type GlibType = ffi::GtkInscriptionOverflow;
6648
6649    #[inline]
6650    fn into_glib(self) -> ffi::GtkInscriptionOverflow {
6651        match self {
6652            Self::Clip => ffi::GTK_INSCRIPTION_OVERFLOW_CLIP,
6653            Self::EllipsizeStart => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START,
6654            Self::EllipsizeMiddle => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE,
6655            Self::EllipsizeEnd => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END,
6656            Self::__Unknown(value) => value,
6657        }
6658    }
6659}
6660
6661#[cfg(feature = "v4_8")]
6662#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6663#[doc(hidden)]
6664impl FromGlib<ffi::GtkInscriptionOverflow> for InscriptionOverflow {
6665    #[inline]
6666    unsafe fn from_glib(value: ffi::GtkInscriptionOverflow) -> Self {
6667        skip_assert_initialized!();
6668
6669        match value {
6670            ffi::GTK_INSCRIPTION_OVERFLOW_CLIP => Self::Clip,
6671            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START => Self::EllipsizeStart,
6672            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE => Self::EllipsizeMiddle,
6673            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END => Self::EllipsizeEnd,
6674            value => Self::__Unknown(value),
6675        }
6676    }
6677}
6678
6679#[cfg(feature = "v4_8")]
6680#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6681impl StaticType for InscriptionOverflow {
6682    #[inline]
6683    #[doc(alias = "gtk_inscription_overflow_get_type")]
6684    fn static_type() -> glib::Type {
6685        unsafe { from_glib(ffi::gtk_inscription_overflow_get_type()) }
6686    }
6687}
6688
6689#[cfg(feature = "v4_8")]
6690#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6691impl glib::HasParamSpec for InscriptionOverflow {
6692    type ParamSpec = glib::ParamSpecEnum;
6693    type SetValue = Self;
6694    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6695
6696    fn param_spec_builder() -> Self::BuilderFn {
6697        Self::ParamSpec::builder_with_default
6698    }
6699}
6700
6701#[cfg(feature = "v4_8")]
6702#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6703impl glib::value::ValueType for InscriptionOverflow {
6704    type Type = Self;
6705}
6706
6707#[cfg(feature = "v4_8")]
6708#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6709unsafe impl<'a> glib::value::FromValue<'a> for InscriptionOverflow {
6710    type Checker = glib::value::GenericValueTypeChecker<Self>;
6711
6712    #[inline]
6713    unsafe fn from_value(value: &'a glib::Value) -> Self {
6714        skip_assert_initialized!();
6715        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6716    }
6717}
6718
6719#[cfg(feature = "v4_8")]
6720#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6721impl ToValue for InscriptionOverflow {
6722    #[inline]
6723    fn to_value(&self) -> glib::Value {
6724        let mut value = glib::Value::for_value_type::<Self>();
6725        unsafe {
6726            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6727        }
6728        value
6729    }
6730
6731    #[inline]
6732    fn value_type(&self) -> glib::Type {
6733        Self::static_type()
6734    }
6735}
6736
6737#[cfg(feature = "v4_8")]
6738#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6739impl From<InscriptionOverflow> for glib::Value {
6740    #[inline]
6741    fn from(v: InscriptionOverflow) -> Self {
6742        skip_assert_initialized!();
6743        ToValue::to_value(&v)
6744    }
6745}
6746
6747/// Values for the [`gtk-interface-color-scheme`][struct@crate::Settings#gtk-interface-color-scheme]
6748/// and [`prefers-color-scheme`][struct@crate::CssProvider#prefers-color-scheme] properties
6749/// that indicates what color scheme is used.
6750///
6751/// This information can be used inside CSS via media queries.
6752///
6753/// More values may be added to this enumeration. Unknown values
6754/// should be treated the same as `GTK_INTERFACE_COLOR_SCHEME_DEFAULT`.
6755#[cfg(feature = "v4_20")]
6756#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6757#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6758#[non_exhaustive]
6759#[doc(alias = "GtkInterfaceColorScheme")]
6760pub enum InterfaceColorScheme {
6761    /// The system doesn't support color schemes
6762    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED")]
6763    Unsupported,
6764    /// The default color scheme is used
6765    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_DEFAULT")]
6766    Default,
6767    /// A dark color scheme is used
6768    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_DARK")]
6769    Dark,
6770    /// A light color scheme is used
6771    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_LIGHT")]
6772    Light,
6773    #[doc(hidden)]
6774    __Unknown(i32),
6775}
6776
6777#[cfg(feature = "v4_20")]
6778#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6779#[doc(hidden)]
6780impl IntoGlib for InterfaceColorScheme {
6781    type GlibType = ffi::GtkInterfaceColorScheme;
6782
6783    #[inline]
6784    fn into_glib(self) -> ffi::GtkInterfaceColorScheme {
6785        match self {
6786            Self::Unsupported => ffi::GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED,
6787            Self::Default => ffi::GTK_INTERFACE_COLOR_SCHEME_DEFAULT,
6788            Self::Dark => ffi::GTK_INTERFACE_COLOR_SCHEME_DARK,
6789            Self::Light => ffi::GTK_INTERFACE_COLOR_SCHEME_LIGHT,
6790            Self::__Unknown(value) => value,
6791        }
6792    }
6793}
6794
6795#[cfg(feature = "v4_20")]
6796#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6797#[doc(hidden)]
6798impl FromGlib<ffi::GtkInterfaceColorScheme> for InterfaceColorScheme {
6799    #[inline]
6800    unsafe fn from_glib(value: ffi::GtkInterfaceColorScheme) -> Self {
6801        skip_assert_initialized!();
6802
6803        match value {
6804            ffi::GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED => Self::Unsupported,
6805            ffi::GTK_INTERFACE_COLOR_SCHEME_DEFAULT => Self::Default,
6806            ffi::GTK_INTERFACE_COLOR_SCHEME_DARK => Self::Dark,
6807            ffi::GTK_INTERFACE_COLOR_SCHEME_LIGHT => Self::Light,
6808            value => Self::__Unknown(value),
6809        }
6810    }
6811}
6812
6813#[cfg(feature = "v4_20")]
6814#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6815impl StaticType for InterfaceColorScheme {
6816    #[inline]
6817    #[doc(alias = "gtk_interface_color_scheme_get_type")]
6818    fn static_type() -> glib::Type {
6819        unsafe { from_glib(ffi::gtk_interface_color_scheme_get_type()) }
6820    }
6821}
6822
6823#[cfg(feature = "v4_20")]
6824#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6825impl glib::HasParamSpec for InterfaceColorScheme {
6826    type ParamSpec = glib::ParamSpecEnum;
6827    type SetValue = Self;
6828    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6829
6830    fn param_spec_builder() -> Self::BuilderFn {
6831        Self::ParamSpec::builder_with_default
6832    }
6833}
6834
6835#[cfg(feature = "v4_20")]
6836#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6837impl glib::value::ValueType for InterfaceColorScheme {
6838    type Type = Self;
6839}
6840
6841#[cfg(feature = "v4_20")]
6842#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6843unsafe impl<'a> glib::value::FromValue<'a> for InterfaceColorScheme {
6844    type Checker = glib::value::GenericValueTypeChecker<Self>;
6845
6846    #[inline]
6847    unsafe fn from_value(value: &'a glib::Value) -> Self {
6848        skip_assert_initialized!();
6849        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6850    }
6851}
6852
6853#[cfg(feature = "v4_20")]
6854#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6855impl ToValue for InterfaceColorScheme {
6856    #[inline]
6857    fn to_value(&self) -> glib::Value {
6858        let mut value = glib::Value::for_value_type::<Self>();
6859        unsafe {
6860            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6861        }
6862        value
6863    }
6864
6865    #[inline]
6866    fn value_type(&self) -> glib::Type {
6867        Self::static_type()
6868    }
6869}
6870
6871#[cfg(feature = "v4_20")]
6872#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6873impl From<InterfaceColorScheme> for glib::Value {
6874    #[inline]
6875    fn from(v: InterfaceColorScheme) -> Self {
6876        skip_assert_initialized!();
6877        ToValue::to_value(&v)
6878    }
6879}
6880
6881/// Values for the [`gtk-interface-contrast`][struct@crate::Settings#gtk-interface-contrast]
6882/// and [`prefers-contrast`][struct@crate::CssProvider#prefers-contrast] properties
6883/// that indicates the preferred level of contrast.
6884///
6885/// This information can be used inside CSS via media queries.
6886///
6887/// More values may be added to this enumeration. Unknown values
6888/// should be treated the same as `GTK_INTERFACE_CONTRAST_NO_PREFERENCE`.
6889#[cfg(feature = "v4_20")]
6890#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6891#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6892#[non_exhaustive]
6893#[doc(alias = "GtkInterfaceContrast")]
6894pub enum InterfaceContrast {
6895    /// The system doesn't support contrast levels
6896    #[doc(alias = "GTK_INTERFACE_CONTRAST_UNSUPPORTED")]
6897    Unsupported,
6898    /// No particular preference for contrast
6899    #[doc(alias = "GTK_INTERFACE_CONTRAST_NO_PREFERENCE")]
6900    NoPreference,
6901    /// More contrast is preferred
6902    #[doc(alias = "GTK_INTERFACE_CONTRAST_MORE")]
6903    More,
6904    /// Less contrast is preferred
6905    #[doc(alias = "GTK_INTERFACE_CONTRAST_LESS")]
6906    Less,
6907    #[doc(hidden)]
6908    __Unknown(i32),
6909}
6910
6911#[cfg(feature = "v4_20")]
6912#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6913#[doc(hidden)]
6914impl IntoGlib for InterfaceContrast {
6915    type GlibType = ffi::GtkInterfaceContrast;
6916
6917    #[inline]
6918    fn into_glib(self) -> ffi::GtkInterfaceContrast {
6919        match self {
6920            Self::Unsupported => ffi::GTK_INTERFACE_CONTRAST_UNSUPPORTED,
6921            Self::NoPreference => ffi::GTK_INTERFACE_CONTRAST_NO_PREFERENCE,
6922            Self::More => ffi::GTK_INTERFACE_CONTRAST_MORE,
6923            Self::Less => ffi::GTK_INTERFACE_CONTRAST_LESS,
6924            Self::__Unknown(value) => value,
6925        }
6926    }
6927}
6928
6929#[cfg(feature = "v4_20")]
6930#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6931#[doc(hidden)]
6932impl FromGlib<ffi::GtkInterfaceContrast> for InterfaceContrast {
6933    #[inline]
6934    unsafe fn from_glib(value: ffi::GtkInterfaceContrast) -> Self {
6935        skip_assert_initialized!();
6936
6937        match value {
6938            ffi::GTK_INTERFACE_CONTRAST_UNSUPPORTED => Self::Unsupported,
6939            ffi::GTK_INTERFACE_CONTRAST_NO_PREFERENCE => Self::NoPreference,
6940            ffi::GTK_INTERFACE_CONTRAST_MORE => Self::More,
6941            ffi::GTK_INTERFACE_CONTRAST_LESS => Self::Less,
6942            value => Self::__Unknown(value),
6943        }
6944    }
6945}
6946
6947#[cfg(feature = "v4_20")]
6948#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6949impl StaticType for InterfaceContrast {
6950    #[inline]
6951    #[doc(alias = "gtk_interface_contrast_get_type")]
6952    fn static_type() -> glib::Type {
6953        unsafe { from_glib(ffi::gtk_interface_contrast_get_type()) }
6954    }
6955}
6956
6957#[cfg(feature = "v4_20")]
6958#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6959impl glib::HasParamSpec for InterfaceContrast {
6960    type ParamSpec = glib::ParamSpecEnum;
6961    type SetValue = Self;
6962    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6963
6964    fn param_spec_builder() -> Self::BuilderFn {
6965        Self::ParamSpec::builder_with_default
6966    }
6967}
6968
6969#[cfg(feature = "v4_20")]
6970#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6971impl glib::value::ValueType for InterfaceContrast {
6972    type Type = Self;
6973}
6974
6975#[cfg(feature = "v4_20")]
6976#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6977unsafe impl<'a> glib::value::FromValue<'a> for InterfaceContrast {
6978    type Checker = glib::value::GenericValueTypeChecker<Self>;
6979
6980    #[inline]
6981    unsafe fn from_value(value: &'a glib::Value) -> Self {
6982        skip_assert_initialized!();
6983        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6984    }
6985}
6986
6987#[cfg(feature = "v4_20")]
6988#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6989impl ToValue for InterfaceContrast {
6990    #[inline]
6991    fn to_value(&self) -> glib::Value {
6992        let mut value = glib::Value::for_value_type::<Self>();
6993        unsafe {
6994            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6995        }
6996        value
6997    }
6998
6999    #[inline]
7000    fn value_type(&self) -> glib::Type {
7001        Self::static_type()
7002    }
7003}
7004
7005#[cfg(feature = "v4_20")]
7006#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
7007impl From<InterfaceContrast> for glib::Value {
7008    #[inline]
7009    fn from(v: InterfaceContrast) -> Self {
7010        skip_assert_initialized!();
7011        ToValue::to_value(&v)
7012    }
7013}
7014
7015/// Used for justifying the text inside a [`Label`][crate::Label] widget.
7016#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7017#[non_exhaustive]
7018#[doc(alias = "GtkJustification")]
7019pub enum Justification {
7020    /// The text is placed at the left edge of the label.
7021    #[doc(alias = "GTK_JUSTIFY_LEFT")]
7022    Left,
7023    /// The text is placed at the right edge of the label.
7024    #[doc(alias = "GTK_JUSTIFY_RIGHT")]
7025    Right,
7026    /// The text is placed in the center of the label.
7027    #[doc(alias = "GTK_JUSTIFY_CENTER")]
7028    Center,
7029    /// The text is placed is distributed across the label.
7030    #[doc(alias = "GTK_JUSTIFY_FILL")]
7031    Fill,
7032    #[doc(hidden)]
7033    __Unknown(i32),
7034}
7035
7036#[doc(hidden)]
7037impl IntoGlib for Justification {
7038    type GlibType = ffi::GtkJustification;
7039
7040    #[inline]
7041    fn into_glib(self) -> ffi::GtkJustification {
7042        match self {
7043            Self::Left => ffi::GTK_JUSTIFY_LEFT,
7044            Self::Right => ffi::GTK_JUSTIFY_RIGHT,
7045            Self::Center => ffi::GTK_JUSTIFY_CENTER,
7046            Self::Fill => ffi::GTK_JUSTIFY_FILL,
7047            Self::__Unknown(value) => value,
7048        }
7049    }
7050}
7051
7052#[doc(hidden)]
7053impl FromGlib<ffi::GtkJustification> for Justification {
7054    #[inline]
7055    unsafe fn from_glib(value: ffi::GtkJustification) -> Self {
7056        skip_assert_initialized!();
7057
7058        match value {
7059            ffi::GTK_JUSTIFY_LEFT => Self::Left,
7060            ffi::GTK_JUSTIFY_RIGHT => Self::Right,
7061            ffi::GTK_JUSTIFY_CENTER => Self::Center,
7062            ffi::GTK_JUSTIFY_FILL => Self::Fill,
7063            value => Self::__Unknown(value),
7064        }
7065    }
7066}
7067
7068impl StaticType for Justification {
7069    #[inline]
7070    #[doc(alias = "gtk_justification_get_type")]
7071    fn static_type() -> glib::Type {
7072        unsafe { from_glib(ffi::gtk_justification_get_type()) }
7073    }
7074}
7075
7076impl glib::HasParamSpec for Justification {
7077    type ParamSpec = glib::ParamSpecEnum;
7078    type SetValue = Self;
7079    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7080
7081    fn param_spec_builder() -> Self::BuilderFn {
7082        Self::ParamSpec::builder_with_default
7083    }
7084}
7085
7086impl glib::value::ValueType for Justification {
7087    type Type = Self;
7088}
7089
7090unsafe impl<'a> glib::value::FromValue<'a> for Justification {
7091    type Checker = glib::value::GenericValueTypeChecker<Self>;
7092
7093    #[inline]
7094    unsafe fn from_value(value: &'a glib::Value) -> Self {
7095        skip_assert_initialized!();
7096        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7097    }
7098}
7099
7100impl ToValue for Justification {
7101    #[inline]
7102    fn to_value(&self) -> glib::Value {
7103        let mut value = glib::Value::for_value_type::<Self>();
7104        unsafe {
7105            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7106        }
7107        value
7108    }
7109
7110    #[inline]
7111    fn value_type(&self) -> glib::Type {
7112        Self::static_type()
7113    }
7114}
7115
7116impl From<Justification> for glib::Value {
7117    #[inline]
7118    fn from(v: Justification) -> Self {
7119        skip_assert_initialized!();
7120        ToValue::to_value(&v)
7121    }
7122}
7123
7124/// Describes how [`LevelBar`][crate::LevelBar] contents should be rendered.
7125///
7126/// Note that this enumeration could be extended with additional modes
7127/// in the future.
7128#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7129#[non_exhaustive]
7130#[doc(alias = "GtkLevelBarMode")]
7131pub enum LevelBarMode {
7132    /// the bar has a continuous mode
7133    #[doc(alias = "GTK_LEVEL_BAR_MODE_CONTINUOUS")]
7134    Continuous,
7135    /// the bar has a discrete mode
7136    #[doc(alias = "GTK_LEVEL_BAR_MODE_DISCRETE")]
7137    Discrete,
7138    #[doc(hidden)]
7139    __Unknown(i32),
7140}
7141
7142#[doc(hidden)]
7143impl IntoGlib for LevelBarMode {
7144    type GlibType = ffi::GtkLevelBarMode;
7145
7146    #[inline]
7147    fn into_glib(self) -> ffi::GtkLevelBarMode {
7148        match self {
7149            Self::Continuous => ffi::GTK_LEVEL_BAR_MODE_CONTINUOUS,
7150            Self::Discrete => ffi::GTK_LEVEL_BAR_MODE_DISCRETE,
7151            Self::__Unknown(value) => value,
7152        }
7153    }
7154}
7155
7156#[doc(hidden)]
7157impl FromGlib<ffi::GtkLevelBarMode> for LevelBarMode {
7158    #[inline]
7159    unsafe fn from_glib(value: ffi::GtkLevelBarMode) -> Self {
7160        skip_assert_initialized!();
7161
7162        match value {
7163            ffi::GTK_LEVEL_BAR_MODE_CONTINUOUS => Self::Continuous,
7164            ffi::GTK_LEVEL_BAR_MODE_DISCRETE => Self::Discrete,
7165            value => Self::__Unknown(value),
7166        }
7167    }
7168}
7169
7170impl StaticType for LevelBarMode {
7171    #[inline]
7172    #[doc(alias = "gtk_level_bar_mode_get_type")]
7173    fn static_type() -> glib::Type {
7174        unsafe { from_glib(ffi::gtk_level_bar_mode_get_type()) }
7175    }
7176}
7177
7178impl glib::HasParamSpec for LevelBarMode {
7179    type ParamSpec = glib::ParamSpecEnum;
7180    type SetValue = Self;
7181    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7182
7183    fn param_spec_builder() -> Self::BuilderFn {
7184        Self::ParamSpec::builder_with_default
7185    }
7186}
7187
7188impl glib::value::ValueType for LevelBarMode {
7189    type Type = Self;
7190}
7191
7192unsafe impl<'a> glib::value::FromValue<'a> for LevelBarMode {
7193    type Checker = glib::value::GenericValueTypeChecker<Self>;
7194
7195    #[inline]
7196    unsafe fn from_value(value: &'a glib::Value) -> Self {
7197        skip_assert_initialized!();
7198        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7199    }
7200}
7201
7202impl ToValue for LevelBarMode {
7203    #[inline]
7204    fn to_value(&self) -> glib::Value {
7205        let mut value = glib::Value::for_value_type::<Self>();
7206        unsafe {
7207            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7208        }
7209        value
7210    }
7211
7212    #[inline]
7213    fn value_type(&self) -> glib::Type {
7214        Self::static_type()
7215    }
7216}
7217
7218impl From<LevelBarMode> for glib::Value {
7219    #[inline]
7220    fn from(v: LevelBarMode) -> Self {
7221        skip_assert_initialized!();
7222        ToValue::to_value(&v)
7223    }
7224}
7225
7226/// The type of license for an application.
7227///
7228/// This enumeration can be expanded at later date.
7229#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7230#[non_exhaustive]
7231#[doc(alias = "GtkLicense")]
7232pub enum License {
7233    /// No license specified
7234    #[doc(alias = "GTK_LICENSE_UNKNOWN")]
7235    Unknown,
7236    /// A license text is going to be specified by the
7237    ///   developer
7238    #[doc(alias = "GTK_LICENSE_CUSTOM")]
7239    Custom,
7240    /// The GNU General Public License, version 2.0 or later
7241    #[doc(alias = "GTK_LICENSE_GPL_2_0")]
7242    Gpl20,
7243    /// The GNU General Public License, version 3.0 or later
7244    #[doc(alias = "GTK_LICENSE_GPL_3_0")]
7245    Gpl30,
7246    /// The GNU Lesser General Public License, version 2.1 or later
7247    #[doc(alias = "GTK_LICENSE_LGPL_2_1")]
7248    Lgpl21,
7249    /// The GNU Lesser General Public License, version 3.0 or later
7250    #[doc(alias = "GTK_LICENSE_LGPL_3_0")]
7251    Lgpl30,
7252    /// The BSD standard license
7253    #[doc(alias = "GTK_LICENSE_BSD")]
7254    Bsd,
7255    /// The MIT/X11 standard license
7256    #[doc(alias = "GTK_LICENSE_MIT_X11")]
7257    MitX11,
7258    /// The Artistic License, version 2.0
7259    #[doc(alias = "GTK_LICENSE_ARTISTIC")]
7260    Artistic,
7261    /// The GNU General Public License, version 2.0 only
7262    #[doc(alias = "GTK_LICENSE_GPL_2_0_ONLY")]
7263    Gpl20Only,
7264    /// The GNU General Public License, version 3.0 only
7265    #[doc(alias = "GTK_LICENSE_GPL_3_0_ONLY")]
7266    Gpl30Only,
7267    /// The GNU Lesser General Public License, version 2.1 only
7268    #[doc(alias = "GTK_LICENSE_LGPL_2_1_ONLY")]
7269    Lgpl21Only,
7270    /// The GNU Lesser General Public License, version 3.0 only
7271    #[doc(alias = "GTK_LICENSE_LGPL_3_0_ONLY")]
7272    Lgpl30Only,
7273    /// The GNU Affero General Public License, version 3.0 or later
7274    #[doc(alias = "GTK_LICENSE_AGPL_3_0")]
7275    Agpl30,
7276    /// The GNU Affero General Public License, version 3.0 only
7277    #[doc(alias = "GTK_LICENSE_AGPL_3_0_ONLY")]
7278    Agpl30Only,
7279    /// The 3-clause BSD licence
7280    #[doc(alias = "GTK_LICENSE_BSD_3")]
7281    Bsd3,
7282    /// The Apache License, version 2.0
7283    #[doc(alias = "GTK_LICENSE_APACHE_2_0")]
7284    Apache20,
7285    /// The Mozilla Public License, version 2.0
7286    #[doc(alias = "GTK_LICENSE_MPL_2_0")]
7287    Mpl20,
7288    /// Zero-Clause BSD license
7289    #[cfg(feature = "v4_14")]
7290    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
7291    #[doc(alias = "GTK_LICENSE_0BSD")]
7292    _0bsd,
7293    #[doc(hidden)]
7294    __Unknown(i32),
7295}
7296
7297#[doc(hidden)]
7298impl IntoGlib for License {
7299    type GlibType = ffi::GtkLicense;
7300
7301    fn into_glib(self) -> ffi::GtkLicense {
7302        match self {
7303            Self::Unknown => ffi::GTK_LICENSE_UNKNOWN,
7304            Self::Custom => ffi::GTK_LICENSE_CUSTOM,
7305            Self::Gpl20 => ffi::GTK_LICENSE_GPL_2_0,
7306            Self::Gpl30 => ffi::GTK_LICENSE_GPL_3_0,
7307            Self::Lgpl21 => ffi::GTK_LICENSE_LGPL_2_1,
7308            Self::Lgpl30 => ffi::GTK_LICENSE_LGPL_3_0,
7309            Self::Bsd => ffi::GTK_LICENSE_BSD,
7310            Self::MitX11 => ffi::GTK_LICENSE_MIT_X11,
7311            Self::Artistic => ffi::GTK_LICENSE_ARTISTIC,
7312            Self::Gpl20Only => ffi::GTK_LICENSE_GPL_2_0_ONLY,
7313            Self::Gpl30Only => ffi::GTK_LICENSE_GPL_3_0_ONLY,
7314            Self::Lgpl21Only => ffi::GTK_LICENSE_LGPL_2_1_ONLY,
7315            Self::Lgpl30Only => ffi::GTK_LICENSE_LGPL_3_0_ONLY,
7316            Self::Agpl30 => ffi::GTK_LICENSE_AGPL_3_0,
7317            Self::Agpl30Only => ffi::GTK_LICENSE_AGPL_3_0_ONLY,
7318            Self::Bsd3 => ffi::GTK_LICENSE_BSD_3,
7319            Self::Apache20 => ffi::GTK_LICENSE_APACHE_2_0,
7320            Self::Mpl20 => ffi::GTK_LICENSE_MPL_2_0,
7321            #[cfg(feature = "v4_14")]
7322            Self::_0bsd => ffi::GTK_LICENSE_0BSD,
7323            Self::__Unknown(value) => value,
7324        }
7325    }
7326}
7327
7328#[doc(hidden)]
7329impl FromGlib<ffi::GtkLicense> for License {
7330    unsafe fn from_glib(value: ffi::GtkLicense) -> Self {
7331        skip_assert_initialized!();
7332
7333        match value {
7334            ffi::GTK_LICENSE_UNKNOWN => Self::Unknown,
7335            ffi::GTK_LICENSE_CUSTOM => Self::Custom,
7336            ffi::GTK_LICENSE_GPL_2_0 => Self::Gpl20,
7337            ffi::GTK_LICENSE_GPL_3_0 => Self::Gpl30,
7338            ffi::GTK_LICENSE_LGPL_2_1 => Self::Lgpl21,
7339            ffi::GTK_LICENSE_LGPL_3_0 => Self::Lgpl30,
7340            ffi::GTK_LICENSE_BSD => Self::Bsd,
7341            ffi::GTK_LICENSE_MIT_X11 => Self::MitX11,
7342            ffi::GTK_LICENSE_ARTISTIC => Self::Artistic,
7343            ffi::GTK_LICENSE_GPL_2_0_ONLY => Self::Gpl20Only,
7344            ffi::GTK_LICENSE_GPL_3_0_ONLY => Self::Gpl30Only,
7345            ffi::GTK_LICENSE_LGPL_2_1_ONLY => Self::Lgpl21Only,
7346            ffi::GTK_LICENSE_LGPL_3_0_ONLY => Self::Lgpl30Only,
7347            ffi::GTK_LICENSE_AGPL_3_0 => Self::Agpl30,
7348            ffi::GTK_LICENSE_AGPL_3_0_ONLY => Self::Agpl30Only,
7349            ffi::GTK_LICENSE_BSD_3 => Self::Bsd3,
7350            ffi::GTK_LICENSE_APACHE_2_0 => Self::Apache20,
7351            ffi::GTK_LICENSE_MPL_2_0 => Self::Mpl20,
7352            #[cfg(feature = "v4_14")]
7353            ffi::GTK_LICENSE_0BSD => Self::_0bsd,
7354            value => Self::__Unknown(value),
7355        }
7356    }
7357}
7358
7359impl StaticType for License {
7360    #[inline]
7361    #[doc(alias = "gtk_license_get_type")]
7362    fn static_type() -> glib::Type {
7363        unsafe { from_glib(ffi::gtk_license_get_type()) }
7364    }
7365}
7366
7367impl glib::HasParamSpec for License {
7368    type ParamSpec = glib::ParamSpecEnum;
7369    type SetValue = Self;
7370    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7371
7372    fn param_spec_builder() -> Self::BuilderFn {
7373        Self::ParamSpec::builder_with_default
7374    }
7375}
7376
7377impl glib::value::ValueType for License {
7378    type Type = Self;
7379}
7380
7381unsafe impl<'a> glib::value::FromValue<'a> for License {
7382    type Checker = glib::value::GenericValueTypeChecker<Self>;
7383
7384    #[inline]
7385    unsafe fn from_value(value: &'a glib::Value) -> Self {
7386        skip_assert_initialized!();
7387        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7388    }
7389}
7390
7391impl ToValue for License {
7392    #[inline]
7393    fn to_value(&self) -> glib::Value {
7394        let mut value = glib::Value::for_value_type::<Self>();
7395        unsafe {
7396            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7397        }
7398        value
7399    }
7400
7401    #[inline]
7402    fn value_type(&self) -> glib::Type {
7403        Self::static_type()
7404    }
7405}
7406
7407impl From<License> for glib::Value {
7408    #[inline]
7409    fn from(v: License) -> Self {
7410        skip_assert_initialized!();
7411        ToValue::to_value(&v)
7412    }
7413}
7414
7415/// Used to configure the focus behavior in the `GTK_DIR_TAB_FORWARD`
7416/// and `GTK_DIR_TAB_BACKWARD` direction, like the <kbd>Tab</kbd> key
7417/// in a [`ListView`][crate::ListView].
7418#[cfg(feature = "v4_12")]
7419#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7420#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7421#[non_exhaustive]
7422#[doc(alias = "GtkListTabBehavior")]
7423pub enum ListTabBehavior {
7424    /// Cycle through all focusable items of the list
7425    #[doc(alias = "GTK_LIST_TAB_ALL")]
7426    All,
7427    /// Cycle through a single list element, then move
7428    ///   focus out of the list. Moving focus between items needs to be
7429    ///   done with the arrow keys.
7430    #[doc(alias = "GTK_LIST_TAB_ITEM")]
7431    Item,
7432    /// Cycle only through a single cell, then
7433    ///   move focus out of the list. Moving focus between cells needs to
7434    ///   be done with the arrow keys. This is only relevant for
7435    ///   cell-based widgets like #GtkColumnView, otherwise it behaves
7436    ///   like `GTK_LIST_TAB_ITEM`.
7437    #[doc(alias = "GTK_LIST_TAB_CELL")]
7438    Cell,
7439    #[doc(hidden)]
7440    __Unknown(i32),
7441}
7442
7443#[cfg(feature = "v4_12")]
7444#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7445#[doc(hidden)]
7446impl IntoGlib for ListTabBehavior {
7447    type GlibType = ffi::GtkListTabBehavior;
7448
7449    #[inline]
7450    fn into_glib(self) -> ffi::GtkListTabBehavior {
7451        match self {
7452            Self::All => ffi::GTK_LIST_TAB_ALL,
7453            Self::Item => ffi::GTK_LIST_TAB_ITEM,
7454            Self::Cell => ffi::GTK_LIST_TAB_CELL,
7455            Self::__Unknown(value) => value,
7456        }
7457    }
7458}
7459
7460#[cfg(feature = "v4_12")]
7461#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7462#[doc(hidden)]
7463impl FromGlib<ffi::GtkListTabBehavior> for ListTabBehavior {
7464    #[inline]
7465    unsafe fn from_glib(value: ffi::GtkListTabBehavior) -> Self {
7466        skip_assert_initialized!();
7467
7468        match value {
7469            ffi::GTK_LIST_TAB_ALL => Self::All,
7470            ffi::GTK_LIST_TAB_ITEM => Self::Item,
7471            ffi::GTK_LIST_TAB_CELL => Self::Cell,
7472            value => Self::__Unknown(value),
7473        }
7474    }
7475}
7476
7477#[cfg(feature = "v4_12")]
7478#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7479impl StaticType for ListTabBehavior {
7480    #[inline]
7481    #[doc(alias = "gtk_list_tab_behavior_get_type")]
7482    fn static_type() -> glib::Type {
7483        unsafe { from_glib(ffi::gtk_list_tab_behavior_get_type()) }
7484    }
7485}
7486
7487#[cfg(feature = "v4_12")]
7488#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7489impl glib::HasParamSpec for ListTabBehavior {
7490    type ParamSpec = glib::ParamSpecEnum;
7491    type SetValue = Self;
7492    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7493
7494    fn param_spec_builder() -> Self::BuilderFn {
7495        Self::ParamSpec::builder_with_default
7496    }
7497}
7498
7499#[cfg(feature = "v4_12")]
7500#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7501impl glib::value::ValueType for ListTabBehavior {
7502    type Type = Self;
7503}
7504
7505#[cfg(feature = "v4_12")]
7506#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7507unsafe impl<'a> glib::value::FromValue<'a> for ListTabBehavior {
7508    type Checker = glib::value::GenericValueTypeChecker<Self>;
7509
7510    #[inline]
7511    unsafe fn from_value(value: &'a glib::Value) -> Self {
7512        skip_assert_initialized!();
7513        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7514    }
7515}
7516
7517#[cfg(feature = "v4_12")]
7518#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7519impl ToValue for ListTabBehavior {
7520    #[inline]
7521    fn to_value(&self) -> glib::Value {
7522        let mut value = glib::Value::for_value_type::<Self>();
7523        unsafe {
7524            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7525        }
7526        value
7527    }
7528
7529    #[inline]
7530    fn value_type(&self) -> glib::Type {
7531        Self::static_type()
7532    }
7533}
7534
7535#[cfg(feature = "v4_12")]
7536#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7537impl From<ListTabBehavior> for glib::Value {
7538    #[inline]
7539    fn from(v: ListTabBehavior) -> Self {
7540        skip_assert_initialized!();
7541        ToValue::to_value(&v)
7542    }
7543}
7544
7545/// The type of message being displayed in a [`MessageDialog`][crate::MessageDialog].
7546#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7547#[non_exhaustive]
7548#[doc(alias = "GtkMessageType")]
7549pub enum MessageType {
7550    /// Informational message
7551    #[doc(alias = "GTK_MESSAGE_INFO")]
7552    Info,
7553    /// Non-fatal warning message
7554    #[doc(alias = "GTK_MESSAGE_WARNING")]
7555    Warning,
7556    /// Question requiring a choice
7557    #[doc(alias = "GTK_MESSAGE_QUESTION")]
7558    Question,
7559    /// Fatal error message
7560    #[doc(alias = "GTK_MESSAGE_ERROR")]
7561    Error,
7562    /// None of the above
7563    #[doc(alias = "GTK_MESSAGE_OTHER")]
7564    Other,
7565    #[doc(hidden)]
7566    __Unknown(i32),
7567}
7568
7569#[doc(hidden)]
7570impl IntoGlib for MessageType {
7571    type GlibType = ffi::GtkMessageType;
7572
7573    #[inline]
7574    fn into_glib(self) -> ffi::GtkMessageType {
7575        match self {
7576            Self::Info => ffi::GTK_MESSAGE_INFO,
7577            Self::Warning => ffi::GTK_MESSAGE_WARNING,
7578            Self::Question => ffi::GTK_MESSAGE_QUESTION,
7579            Self::Error => ffi::GTK_MESSAGE_ERROR,
7580            Self::Other => ffi::GTK_MESSAGE_OTHER,
7581            Self::__Unknown(value) => value,
7582        }
7583    }
7584}
7585
7586#[doc(hidden)]
7587impl FromGlib<ffi::GtkMessageType> for MessageType {
7588    #[inline]
7589    unsafe fn from_glib(value: ffi::GtkMessageType) -> Self {
7590        skip_assert_initialized!();
7591
7592        match value {
7593            ffi::GTK_MESSAGE_INFO => Self::Info,
7594            ffi::GTK_MESSAGE_WARNING => Self::Warning,
7595            ffi::GTK_MESSAGE_QUESTION => Self::Question,
7596            ffi::GTK_MESSAGE_ERROR => Self::Error,
7597            ffi::GTK_MESSAGE_OTHER => Self::Other,
7598            value => Self::__Unknown(value),
7599        }
7600    }
7601}
7602
7603impl StaticType for MessageType {
7604    #[inline]
7605    #[doc(alias = "gtk_message_type_get_type")]
7606    fn static_type() -> glib::Type {
7607        unsafe { from_glib(ffi::gtk_message_type_get_type()) }
7608    }
7609}
7610
7611impl glib::HasParamSpec for MessageType {
7612    type ParamSpec = glib::ParamSpecEnum;
7613    type SetValue = Self;
7614    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7615
7616    fn param_spec_builder() -> Self::BuilderFn {
7617        Self::ParamSpec::builder_with_default
7618    }
7619}
7620
7621impl glib::value::ValueType for MessageType {
7622    type Type = Self;
7623}
7624
7625unsafe impl<'a> glib::value::FromValue<'a> for MessageType {
7626    type Checker = glib::value::GenericValueTypeChecker<Self>;
7627
7628    #[inline]
7629    unsafe fn from_value(value: &'a glib::Value) -> Self {
7630        skip_assert_initialized!();
7631        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7632    }
7633}
7634
7635impl ToValue for MessageType {
7636    #[inline]
7637    fn to_value(&self) -> glib::Value {
7638        let mut value = glib::Value::for_value_type::<Self>();
7639        unsafe {
7640            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7641        }
7642        value
7643    }
7644
7645    #[inline]
7646    fn value_type(&self) -> glib::Type {
7647        Self::static_type()
7648    }
7649}
7650
7651impl From<MessageType> for glib::Value {
7652    #[inline]
7653    fn from(v: MessageType) -> Self {
7654        skip_assert_initialized!();
7655        ToValue::to_value(&v)
7656    }
7657}
7658
7659/// Passed as argument to various keybinding signals for moving the
7660/// cursor position.
7661#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7662#[non_exhaustive]
7663#[doc(alias = "GtkMovementStep")]
7664pub enum MovementStep {
7665    /// Move forward or back by graphemes
7666    #[doc(alias = "GTK_MOVEMENT_LOGICAL_POSITIONS")]
7667    LogicalPositions,
7668    /// Move left or right by graphemes
7669    #[doc(alias = "GTK_MOVEMENT_VISUAL_POSITIONS")]
7670    VisualPositions,
7671    /// Move forward or back by words
7672    #[doc(alias = "GTK_MOVEMENT_WORDS")]
7673    Words,
7674    /// Move up or down lines (wrapped lines)
7675    #[doc(alias = "GTK_MOVEMENT_DISPLAY_LINES")]
7676    DisplayLines,
7677    /// Move to either end of a line
7678    #[doc(alias = "GTK_MOVEMENT_DISPLAY_LINE_ENDS")]
7679    DisplayLineEnds,
7680    /// Move up or down paragraphs (newline-ended lines)
7681    #[doc(alias = "GTK_MOVEMENT_PARAGRAPHS")]
7682    Paragraphs,
7683    /// Move to either end of a paragraph
7684    #[doc(alias = "GTK_MOVEMENT_PARAGRAPH_ENDS")]
7685    ParagraphEnds,
7686    /// Move by pages
7687    #[doc(alias = "GTK_MOVEMENT_PAGES")]
7688    Pages,
7689    /// Move to ends of the buffer
7690    #[doc(alias = "GTK_MOVEMENT_BUFFER_ENDS")]
7691    BufferEnds,
7692    /// Move horizontally by pages
7693    #[doc(alias = "GTK_MOVEMENT_HORIZONTAL_PAGES")]
7694    HorizontalPages,
7695    #[doc(hidden)]
7696    __Unknown(i32),
7697}
7698
7699#[doc(hidden)]
7700impl IntoGlib for MovementStep {
7701    type GlibType = ffi::GtkMovementStep;
7702
7703    #[inline]
7704    fn into_glib(self) -> ffi::GtkMovementStep {
7705        match self {
7706            Self::LogicalPositions => ffi::GTK_MOVEMENT_LOGICAL_POSITIONS,
7707            Self::VisualPositions => ffi::GTK_MOVEMENT_VISUAL_POSITIONS,
7708            Self::Words => ffi::GTK_MOVEMENT_WORDS,
7709            Self::DisplayLines => ffi::GTK_MOVEMENT_DISPLAY_LINES,
7710            Self::DisplayLineEnds => ffi::GTK_MOVEMENT_DISPLAY_LINE_ENDS,
7711            Self::Paragraphs => ffi::GTK_MOVEMENT_PARAGRAPHS,
7712            Self::ParagraphEnds => ffi::GTK_MOVEMENT_PARAGRAPH_ENDS,
7713            Self::Pages => ffi::GTK_MOVEMENT_PAGES,
7714            Self::BufferEnds => ffi::GTK_MOVEMENT_BUFFER_ENDS,
7715            Self::HorizontalPages => ffi::GTK_MOVEMENT_HORIZONTAL_PAGES,
7716            Self::__Unknown(value) => value,
7717        }
7718    }
7719}
7720
7721#[doc(hidden)]
7722impl FromGlib<ffi::GtkMovementStep> for MovementStep {
7723    #[inline]
7724    unsafe fn from_glib(value: ffi::GtkMovementStep) -> Self {
7725        skip_assert_initialized!();
7726
7727        match value {
7728            ffi::GTK_MOVEMENT_LOGICAL_POSITIONS => Self::LogicalPositions,
7729            ffi::GTK_MOVEMENT_VISUAL_POSITIONS => Self::VisualPositions,
7730            ffi::GTK_MOVEMENT_WORDS => Self::Words,
7731            ffi::GTK_MOVEMENT_DISPLAY_LINES => Self::DisplayLines,
7732            ffi::GTK_MOVEMENT_DISPLAY_LINE_ENDS => Self::DisplayLineEnds,
7733            ffi::GTK_MOVEMENT_PARAGRAPHS => Self::Paragraphs,
7734            ffi::GTK_MOVEMENT_PARAGRAPH_ENDS => Self::ParagraphEnds,
7735            ffi::GTK_MOVEMENT_PAGES => Self::Pages,
7736            ffi::GTK_MOVEMENT_BUFFER_ENDS => Self::BufferEnds,
7737            ffi::GTK_MOVEMENT_HORIZONTAL_PAGES => Self::HorizontalPages,
7738            value => Self::__Unknown(value),
7739        }
7740    }
7741}
7742
7743impl StaticType for MovementStep {
7744    #[inline]
7745    #[doc(alias = "gtk_movement_step_get_type")]
7746    fn static_type() -> glib::Type {
7747        unsafe { from_glib(ffi::gtk_movement_step_get_type()) }
7748    }
7749}
7750
7751impl glib::HasParamSpec for MovementStep {
7752    type ParamSpec = glib::ParamSpecEnum;
7753    type SetValue = Self;
7754    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7755
7756    fn param_spec_builder() -> Self::BuilderFn {
7757        Self::ParamSpec::builder_with_default
7758    }
7759}
7760
7761impl glib::value::ValueType for MovementStep {
7762    type Type = Self;
7763}
7764
7765unsafe impl<'a> glib::value::FromValue<'a> for MovementStep {
7766    type Checker = glib::value::GenericValueTypeChecker<Self>;
7767
7768    #[inline]
7769    unsafe fn from_value(value: &'a glib::Value) -> Self {
7770        skip_assert_initialized!();
7771        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7772    }
7773}
7774
7775impl ToValue for MovementStep {
7776    #[inline]
7777    fn to_value(&self) -> glib::Value {
7778        let mut value = glib::Value::for_value_type::<Self>();
7779        unsafe {
7780            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7781        }
7782        value
7783    }
7784
7785    #[inline]
7786    fn value_type(&self) -> glib::Type {
7787        Self::static_type()
7788    }
7789}
7790
7791impl From<MovementStep> for glib::Value {
7792    #[inline]
7793    fn from(v: MovementStep) -> Self {
7794        skip_assert_initialized!();
7795        ToValue::to_value(&v)
7796    }
7797}
7798
7799/// Options for selecting a different wrap mode for natural size
7800/// requests.
7801///
7802/// See for example the [`natural-wrap-mode`][struct@crate::Label#natural-wrap-mode] property.
7803#[cfg(feature = "v4_6")]
7804#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7805#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7806#[non_exhaustive]
7807#[doc(alias = "GtkNaturalWrapMode")]
7808pub enum NaturalWrapMode {
7809    /// Inherit the minimum size request.
7810    ///   In particular, this should be used with [`pango::WrapMode::Char`][crate::pango::WrapMode::Char].
7811    #[doc(alias = "GTK_NATURAL_WRAP_INHERIT")]
7812    Inherit,
7813    /// Try not to wrap the text. This mode is the
7814    ///   closest to GTK3's behavior but can lead to a wide label leaving
7815    ///   lots of empty space below the text.
7816    #[doc(alias = "GTK_NATURAL_WRAP_NONE")]
7817    None,
7818    /// Attempt to wrap at word boundaries. This
7819    ///   is useful in particular when using [`pango::WrapMode::WordChar`][crate::pango::WrapMode::WordChar] as the
7820    ///   wrap mode.
7821    #[doc(alias = "GTK_NATURAL_WRAP_WORD")]
7822    Word,
7823    #[doc(hidden)]
7824    __Unknown(i32),
7825}
7826
7827#[cfg(feature = "v4_6")]
7828#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7829#[doc(hidden)]
7830impl IntoGlib for NaturalWrapMode {
7831    type GlibType = ffi::GtkNaturalWrapMode;
7832
7833    #[inline]
7834    fn into_glib(self) -> ffi::GtkNaturalWrapMode {
7835        match self {
7836            Self::Inherit => ffi::GTK_NATURAL_WRAP_INHERIT,
7837            Self::None => ffi::GTK_NATURAL_WRAP_NONE,
7838            Self::Word => ffi::GTK_NATURAL_WRAP_WORD,
7839            Self::__Unknown(value) => value,
7840        }
7841    }
7842}
7843
7844#[cfg(feature = "v4_6")]
7845#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7846#[doc(hidden)]
7847impl FromGlib<ffi::GtkNaturalWrapMode> for NaturalWrapMode {
7848    #[inline]
7849    unsafe fn from_glib(value: ffi::GtkNaturalWrapMode) -> Self {
7850        skip_assert_initialized!();
7851
7852        match value {
7853            ffi::GTK_NATURAL_WRAP_INHERIT => Self::Inherit,
7854            ffi::GTK_NATURAL_WRAP_NONE => Self::None,
7855            ffi::GTK_NATURAL_WRAP_WORD => Self::Word,
7856            value => Self::__Unknown(value),
7857        }
7858    }
7859}
7860
7861#[cfg(feature = "v4_6")]
7862#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7863impl StaticType for NaturalWrapMode {
7864    #[inline]
7865    #[doc(alias = "gtk_natural_wrap_mode_get_type")]
7866    fn static_type() -> glib::Type {
7867        unsafe { from_glib(ffi::gtk_natural_wrap_mode_get_type()) }
7868    }
7869}
7870
7871#[cfg(feature = "v4_6")]
7872#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7873impl glib::HasParamSpec for NaturalWrapMode {
7874    type ParamSpec = glib::ParamSpecEnum;
7875    type SetValue = Self;
7876    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7877
7878    fn param_spec_builder() -> Self::BuilderFn {
7879        Self::ParamSpec::builder_with_default
7880    }
7881}
7882
7883#[cfg(feature = "v4_6")]
7884#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7885impl glib::value::ValueType for NaturalWrapMode {
7886    type Type = Self;
7887}
7888
7889#[cfg(feature = "v4_6")]
7890#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7891unsafe impl<'a> glib::value::FromValue<'a> for NaturalWrapMode {
7892    type Checker = glib::value::GenericValueTypeChecker<Self>;
7893
7894    #[inline]
7895    unsafe fn from_value(value: &'a glib::Value) -> Self {
7896        skip_assert_initialized!();
7897        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7898    }
7899}
7900
7901#[cfg(feature = "v4_6")]
7902#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7903impl ToValue for NaturalWrapMode {
7904    #[inline]
7905    fn to_value(&self) -> glib::Value {
7906        let mut value = glib::Value::for_value_type::<Self>();
7907        unsafe {
7908            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7909        }
7910        value
7911    }
7912
7913    #[inline]
7914    fn value_type(&self) -> glib::Type {
7915        Self::static_type()
7916    }
7917}
7918
7919#[cfg(feature = "v4_6")]
7920#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7921impl From<NaturalWrapMode> for glib::Value {
7922    #[inline]
7923    fn from(v: NaturalWrapMode) -> Self {
7924        skip_assert_initialized!();
7925        ToValue::to_value(&v)
7926    }
7927}
7928
7929/// The parameter used in the action signals of [`Notebook`][crate::Notebook].
7930#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7931#[non_exhaustive]
7932#[doc(alias = "GtkNotebookTab")]
7933pub enum NotebookTab {
7934    /// the first tab in the notebook
7935    #[doc(alias = "GTK_NOTEBOOK_TAB_FIRST")]
7936    First,
7937    /// the last tab in the notebook
7938    #[doc(alias = "GTK_NOTEBOOK_TAB_LAST")]
7939    Last,
7940    #[doc(hidden)]
7941    __Unknown(i32),
7942}
7943
7944#[doc(hidden)]
7945impl IntoGlib for NotebookTab {
7946    type GlibType = ffi::GtkNotebookTab;
7947
7948    #[inline]
7949    fn into_glib(self) -> ffi::GtkNotebookTab {
7950        match self {
7951            Self::First => ffi::GTK_NOTEBOOK_TAB_FIRST,
7952            Self::Last => ffi::GTK_NOTEBOOK_TAB_LAST,
7953            Self::__Unknown(value) => value,
7954        }
7955    }
7956}
7957
7958#[doc(hidden)]
7959impl FromGlib<ffi::GtkNotebookTab> for NotebookTab {
7960    #[inline]
7961    unsafe fn from_glib(value: ffi::GtkNotebookTab) -> Self {
7962        skip_assert_initialized!();
7963
7964        match value {
7965            ffi::GTK_NOTEBOOK_TAB_FIRST => Self::First,
7966            ffi::GTK_NOTEBOOK_TAB_LAST => Self::Last,
7967            value => Self::__Unknown(value),
7968        }
7969    }
7970}
7971
7972impl StaticType for NotebookTab {
7973    #[inline]
7974    #[doc(alias = "gtk_notebook_tab_get_type")]
7975    fn static_type() -> glib::Type {
7976        unsafe { from_glib(ffi::gtk_notebook_tab_get_type()) }
7977    }
7978}
7979
7980impl glib::HasParamSpec for NotebookTab {
7981    type ParamSpec = glib::ParamSpecEnum;
7982    type SetValue = Self;
7983    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7984
7985    fn param_spec_builder() -> Self::BuilderFn {
7986        Self::ParamSpec::builder_with_default
7987    }
7988}
7989
7990impl glib::value::ValueType for NotebookTab {
7991    type Type = Self;
7992}
7993
7994unsafe impl<'a> glib::value::FromValue<'a> for NotebookTab {
7995    type Checker = glib::value::GenericValueTypeChecker<Self>;
7996
7997    #[inline]
7998    unsafe fn from_value(value: &'a glib::Value) -> Self {
7999        skip_assert_initialized!();
8000        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8001    }
8002}
8003
8004impl ToValue for NotebookTab {
8005    #[inline]
8006    fn to_value(&self) -> glib::Value {
8007        let mut value = glib::Value::for_value_type::<Self>();
8008        unsafe {
8009            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8010        }
8011        value
8012    }
8013
8014    #[inline]
8015    fn value_type(&self) -> glib::Type {
8016        Self::static_type()
8017    }
8018}
8019
8020impl From<NotebookTab> for glib::Value {
8021    #[inline]
8022    fn from(v: NotebookTab) -> Self {
8023        skip_assert_initialized!();
8024        ToValue::to_value(&v)
8025    }
8026}
8027
8028/// Used to determine the layout of pages on a sheet when printing
8029/// multiple pages per sheet.
8030#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8031#[non_exhaustive]
8032#[doc(alias = "GtkNumberUpLayout")]
8033pub enum NumberUpLayout {
8034    /// ![](layout-lrtb.png)
8035    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM")]
8036    Lrtb,
8037    /// ![](layout-lrbt.png)
8038    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP")]
8039    Lrbt,
8040    /// ![](layout-rltb.png)
8041    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM")]
8042    Rltb,
8043    /// ![](layout-rlbt.png)
8044    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP")]
8045    Rlbt,
8046    /// ![](layout-tblr.png)
8047    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT")]
8048    Tblr,
8049    /// ![](layout-tbrl.png)
8050    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT")]
8051    Tbrl,
8052    /// ![](layout-btlr.png)
8053    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT")]
8054    Btlr,
8055    /// ![](layout-btrl.png)
8056    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT")]
8057    Btrl,
8058    #[doc(hidden)]
8059    __Unknown(i32),
8060}
8061
8062#[doc(hidden)]
8063impl IntoGlib for NumberUpLayout {
8064    type GlibType = ffi::GtkNumberUpLayout;
8065
8066    #[inline]
8067    fn into_glib(self) -> ffi::GtkNumberUpLayout {
8068        match self {
8069            Self::Lrtb => ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM,
8070            Self::Lrbt => ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP,
8071            Self::Rltb => ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM,
8072            Self::Rlbt => ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP,
8073            Self::Tblr => ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT,
8074            Self::Tbrl => ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT,
8075            Self::Btlr => ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT,
8076            Self::Btrl => ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT,
8077            Self::__Unknown(value) => value,
8078        }
8079    }
8080}
8081
8082#[doc(hidden)]
8083impl FromGlib<ffi::GtkNumberUpLayout> for NumberUpLayout {
8084    #[inline]
8085    unsafe fn from_glib(value: ffi::GtkNumberUpLayout) -> Self {
8086        skip_assert_initialized!();
8087
8088        match value {
8089            ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM => Self::Lrtb,
8090            ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP => Self::Lrbt,
8091            ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM => Self::Rltb,
8092            ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP => Self::Rlbt,
8093            ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT => Self::Tblr,
8094            ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT => Self::Tbrl,
8095            ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT => Self::Btlr,
8096            ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT => Self::Btrl,
8097            value => Self::__Unknown(value),
8098        }
8099    }
8100}
8101
8102impl StaticType for NumberUpLayout {
8103    #[inline]
8104    #[doc(alias = "gtk_number_up_layout_get_type")]
8105    fn static_type() -> glib::Type {
8106        unsafe { from_glib(ffi::gtk_number_up_layout_get_type()) }
8107    }
8108}
8109
8110impl glib::HasParamSpec for NumberUpLayout {
8111    type ParamSpec = glib::ParamSpecEnum;
8112    type SetValue = Self;
8113    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8114
8115    fn param_spec_builder() -> Self::BuilderFn {
8116        Self::ParamSpec::builder_with_default
8117    }
8118}
8119
8120impl glib::value::ValueType for NumberUpLayout {
8121    type Type = Self;
8122}
8123
8124unsafe impl<'a> glib::value::FromValue<'a> for NumberUpLayout {
8125    type Checker = glib::value::GenericValueTypeChecker<Self>;
8126
8127    #[inline]
8128    unsafe fn from_value(value: &'a glib::Value) -> Self {
8129        skip_assert_initialized!();
8130        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8131    }
8132}
8133
8134impl ToValue for NumberUpLayout {
8135    #[inline]
8136    fn to_value(&self) -> glib::Value {
8137        let mut value = glib::Value::for_value_type::<Self>();
8138        unsafe {
8139            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8140        }
8141        value
8142    }
8143
8144    #[inline]
8145    fn value_type(&self) -> glib::Type {
8146        Self::static_type()
8147    }
8148}
8149
8150impl From<NumberUpLayout> for glib::Value {
8151    #[inline]
8152    fn from(v: NumberUpLayout) -> Self {
8153        skip_assert_initialized!();
8154        ToValue::to_value(&v)
8155    }
8156}
8157
8158/// Describes the way two values can be compared.
8159///
8160/// These values can be used with a `callback::GLib::CompareFunc. However,
8161/// a `GCompareFunc` is allowed to return any integer values.
8162/// For converting such a value to a [`Ordering`][crate::Ordering] value, use
8163/// `Gtk::Ordering::from_cmpfunc()`.
8164#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8165#[non_exhaustive]
8166#[doc(alias = "GtkOrdering")]
8167pub enum Ordering {
8168    /// the first value is smaller than the second
8169    #[doc(alias = "GTK_ORDERING_SMALLER")]
8170    Smaller,
8171    /// the two values are equal
8172    #[doc(alias = "GTK_ORDERING_EQUAL")]
8173    Equal,
8174    /// the first value is larger than the second
8175    #[doc(alias = "GTK_ORDERING_LARGER")]
8176    Larger,
8177    #[doc(hidden)]
8178    __Unknown(i32),
8179}
8180
8181#[doc(hidden)]
8182impl IntoGlib for Ordering {
8183    type GlibType = ffi::GtkOrdering;
8184
8185    #[inline]
8186    fn into_glib(self) -> ffi::GtkOrdering {
8187        match self {
8188            Self::Smaller => ffi::GTK_ORDERING_SMALLER,
8189            Self::Equal => ffi::GTK_ORDERING_EQUAL,
8190            Self::Larger => ffi::GTK_ORDERING_LARGER,
8191            Self::__Unknown(value) => value,
8192        }
8193    }
8194}
8195
8196#[doc(hidden)]
8197impl FromGlib<ffi::GtkOrdering> for Ordering {
8198    #[inline]
8199    unsafe fn from_glib(value: ffi::GtkOrdering) -> Self {
8200        skip_assert_initialized!();
8201
8202        match value {
8203            ffi::GTK_ORDERING_SMALLER => Self::Smaller,
8204            ffi::GTK_ORDERING_EQUAL => Self::Equal,
8205            ffi::GTK_ORDERING_LARGER => Self::Larger,
8206            value => Self::__Unknown(value),
8207        }
8208    }
8209}
8210
8211impl StaticType for Ordering {
8212    #[inline]
8213    #[doc(alias = "gtk_ordering_get_type")]
8214    fn static_type() -> glib::Type {
8215        unsafe { from_glib(ffi::gtk_ordering_get_type()) }
8216    }
8217}
8218
8219impl glib::HasParamSpec for Ordering {
8220    type ParamSpec = glib::ParamSpecEnum;
8221    type SetValue = Self;
8222    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8223
8224    fn param_spec_builder() -> Self::BuilderFn {
8225        Self::ParamSpec::builder_with_default
8226    }
8227}
8228
8229impl glib::value::ValueType for Ordering {
8230    type Type = Self;
8231}
8232
8233unsafe impl<'a> glib::value::FromValue<'a> for Ordering {
8234    type Checker = glib::value::GenericValueTypeChecker<Self>;
8235
8236    #[inline]
8237    unsafe fn from_value(value: &'a glib::Value) -> Self {
8238        skip_assert_initialized!();
8239        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8240    }
8241}
8242
8243impl ToValue for Ordering {
8244    #[inline]
8245    fn to_value(&self) -> glib::Value {
8246        let mut value = glib::Value::for_value_type::<Self>();
8247        unsafe {
8248            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8249        }
8250        value
8251    }
8252
8253    #[inline]
8254    fn value_type(&self) -> glib::Type {
8255        Self::static_type()
8256    }
8257}
8258
8259impl From<Ordering> for glib::Value {
8260    #[inline]
8261    fn from(v: Ordering) -> Self {
8262        skip_assert_initialized!();
8263        ToValue::to_value(&v)
8264    }
8265}
8266
8267/// Represents the orientation of widgets and other objects.
8268///
8269/// Typical examples are [`Box`][crate::Box] or [`GesturePan`][crate::GesturePan].
8270#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8271#[non_exhaustive]
8272#[doc(alias = "GtkOrientation")]
8273pub enum Orientation {
8274    /// The element is in horizontal orientation.
8275    #[doc(alias = "GTK_ORIENTATION_HORIZONTAL")]
8276    Horizontal,
8277    /// The element is in vertical orientation.
8278    #[doc(alias = "GTK_ORIENTATION_VERTICAL")]
8279    Vertical,
8280    #[doc(hidden)]
8281    __Unknown(i32),
8282}
8283
8284#[doc(hidden)]
8285impl IntoGlib for Orientation {
8286    type GlibType = ffi::GtkOrientation;
8287
8288    #[inline]
8289    fn into_glib(self) -> ffi::GtkOrientation {
8290        match self {
8291            Self::Horizontal => ffi::GTK_ORIENTATION_HORIZONTAL,
8292            Self::Vertical => ffi::GTK_ORIENTATION_VERTICAL,
8293            Self::__Unknown(value) => value,
8294        }
8295    }
8296}
8297
8298#[doc(hidden)]
8299impl FromGlib<ffi::GtkOrientation> for Orientation {
8300    #[inline]
8301    unsafe fn from_glib(value: ffi::GtkOrientation) -> Self {
8302        skip_assert_initialized!();
8303
8304        match value {
8305            ffi::GTK_ORIENTATION_HORIZONTAL => Self::Horizontal,
8306            ffi::GTK_ORIENTATION_VERTICAL => Self::Vertical,
8307            value => Self::__Unknown(value),
8308        }
8309    }
8310}
8311
8312impl StaticType for Orientation {
8313    #[inline]
8314    #[doc(alias = "gtk_orientation_get_type")]
8315    fn static_type() -> glib::Type {
8316        unsafe { from_glib(ffi::gtk_orientation_get_type()) }
8317    }
8318}
8319
8320impl glib::HasParamSpec for Orientation {
8321    type ParamSpec = glib::ParamSpecEnum;
8322    type SetValue = Self;
8323    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8324
8325    fn param_spec_builder() -> Self::BuilderFn {
8326        Self::ParamSpec::builder_with_default
8327    }
8328}
8329
8330impl glib::value::ValueType for Orientation {
8331    type Type = Self;
8332}
8333
8334unsafe impl<'a> glib::value::FromValue<'a> for Orientation {
8335    type Checker = glib::value::GenericValueTypeChecker<Self>;
8336
8337    #[inline]
8338    unsafe fn from_value(value: &'a glib::Value) -> Self {
8339        skip_assert_initialized!();
8340        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8341    }
8342}
8343
8344impl ToValue for Orientation {
8345    #[inline]
8346    fn to_value(&self) -> glib::Value {
8347        let mut value = glib::Value::for_value_type::<Self>();
8348        unsafe {
8349            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8350        }
8351        value
8352    }
8353
8354    #[inline]
8355    fn value_type(&self) -> glib::Type {
8356        Self::static_type()
8357    }
8358}
8359
8360impl From<Orientation> for glib::Value {
8361    #[inline]
8362    fn from(v: Orientation) -> Self {
8363        skip_assert_initialized!();
8364        ToValue::to_value(&v)
8365    }
8366}
8367
8368/// Defines how content overflowing a given area should be handled.
8369///
8370/// This is used in [`WidgetExt::set_overflow()`][crate::prelude::WidgetExt::set_overflow()]. The
8371/// [`overflow`][struct@crate::Widget#overflow] property is modeled after the
8372/// CSS overflow property, but implements it only partially.
8373#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8374#[non_exhaustive]
8375#[doc(alias = "GtkOverflow")]
8376pub enum Overflow {
8377    /// No change is applied. Content is drawn at the specified
8378    ///   position.
8379    #[doc(alias = "GTK_OVERFLOW_VISIBLE")]
8380    Visible,
8381    /// Content is clipped to the bounds of the area. Content
8382    ///   outside the area is not drawn and cannot be interacted with.
8383    #[doc(alias = "GTK_OVERFLOW_HIDDEN")]
8384    Hidden,
8385    #[doc(hidden)]
8386    __Unknown(i32),
8387}
8388
8389#[doc(hidden)]
8390impl IntoGlib for Overflow {
8391    type GlibType = ffi::GtkOverflow;
8392
8393    #[inline]
8394    fn into_glib(self) -> ffi::GtkOverflow {
8395        match self {
8396            Self::Visible => ffi::GTK_OVERFLOW_VISIBLE,
8397            Self::Hidden => ffi::GTK_OVERFLOW_HIDDEN,
8398            Self::__Unknown(value) => value,
8399        }
8400    }
8401}
8402
8403#[doc(hidden)]
8404impl FromGlib<ffi::GtkOverflow> for Overflow {
8405    #[inline]
8406    unsafe fn from_glib(value: ffi::GtkOverflow) -> Self {
8407        skip_assert_initialized!();
8408
8409        match value {
8410            ffi::GTK_OVERFLOW_VISIBLE => Self::Visible,
8411            ffi::GTK_OVERFLOW_HIDDEN => Self::Hidden,
8412            value => Self::__Unknown(value),
8413        }
8414    }
8415}
8416
8417impl StaticType for Overflow {
8418    #[inline]
8419    #[doc(alias = "gtk_overflow_get_type")]
8420    fn static_type() -> glib::Type {
8421        unsafe { from_glib(ffi::gtk_overflow_get_type()) }
8422    }
8423}
8424
8425impl glib::HasParamSpec for Overflow {
8426    type ParamSpec = glib::ParamSpecEnum;
8427    type SetValue = Self;
8428    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8429
8430    fn param_spec_builder() -> Self::BuilderFn {
8431        Self::ParamSpec::builder_with_default
8432    }
8433}
8434
8435impl glib::value::ValueType for Overflow {
8436    type Type = Self;
8437}
8438
8439unsafe impl<'a> glib::value::FromValue<'a> for Overflow {
8440    type Checker = glib::value::GenericValueTypeChecker<Self>;
8441
8442    #[inline]
8443    unsafe fn from_value(value: &'a glib::Value) -> Self {
8444        skip_assert_initialized!();
8445        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8446    }
8447}
8448
8449impl ToValue for Overflow {
8450    #[inline]
8451    fn to_value(&self) -> glib::Value {
8452        let mut value = glib::Value::for_value_type::<Self>();
8453        unsafe {
8454            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8455        }
8456        value
8457    }
8458
8459    #[inline]
8460    fn value_type(&self) -> glib::Type {
8461        Self::static_type()
8462    }
8463}
8464
8465impl From<Overflow> for glib::Value {
8466    #[inline]
8467    fn from(v: Overflow) -> Self {
8468        skip_assert_initialized!();
8469        ToValue::to_value(&v)
8470    }
8471}
8472
8473/// Represents the packing location of a children in its parent.
8474///
8475/// See [`WindowControls`][crate::WindowControls] for example.
8476#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8477#[non_exhaustive]
8478#[doc(alias = "GtkPackType")]
8479pub enum PackType {
8480    /// The child is packed into the start of the widget
8481    #[doc(alias = "GTK_PACK_START")]
8482    Start,
8483    /// The child is packed into the end of the widget
8484    #[doc(alias = "GTK_PACK_END")]
8485    End,
8486    #[doc(hidden)]
8487    __Unknown(i32),
8488}
8489
8490#[doc(hidden)]
8491impl IntoGlib for PackType {
8492    type GlibType = ffi::GtkPackType;
8493
8494    #[inline]
8495    fn into_glib(self) -> ffi::GtkPackType {
8496        match self {
8497            Self::Start => ffi::GTK_PACK_START,
8498            Self::End => ffi::GTK_PACK_END,
8499            Self::__Unknown(value) => value,
8500        }
8501    }
8502}
8503
8504#[doc(hidden)]
8505impl FromGlib<ffi::GtkPackType> for PackType {
8506    #[inline]
8507    unsafe fn from_glib(value: ffi::GtkPackType) -> Self {
8508        skip_assert_initialized!();
8509
8510        match value {
8511            ffi::GTK_PACK_START => Self::Start,
8512            ffi::GTK_PACK_END => Self::End,
8513            value => Self::__Unknown(value),
8514        }
8515    }
8516}
8517
8518impl StaticType for PackType {
8519    #[inline]
8520    #[doc(alias = "gtk_pack_type_get_type")]
8521    fn static_type() -> glib::Type {
8522        unsafe { from_glib(ffi::gtk_pack_type_get_type()) }
8523    }
8524}
8525
8526impl glib::HasParamSpec for PackType {
8527    type ParamSpec = glib::ParamSpecEnum;
8528    type SetValue = Self;
8529    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8530
8531    fn param_spec_builder() -> Self::BuilderFn {
8532        Self::ParamSpec::builder_with_default
8533    }
8534}
8535
8536impl glib::value::ValueType for PackType {
8537    type Type = Self;
8538}
8539
8540unsafe impl<'a> glib::value::FromValue<'a> for PackType {
8541    type Checker = glib::value::GenericValueTypeChecker<Self>;
8542
8543    #[inline]
8544    unsafe fn from_value(value: &'a glib::Value) -> Self {
8545        skip_assert_initialized!();
8546        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8547    }
8548}
8549
8550impl ToValue for PackType {
8551    #[inline]
8552    fn to_value(&self) -> glib::Value {
8553        let mut value = glib::Value::for_value_type::<Self>();
8554        unsafe {
8555            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8556        }
8557        value
8558    }
8559
8560    #[inline]
8561    fn value_type(&self) -> glib::Type {
8562        Self::static_type()
8563    }
8564}
8565
8566impl From<PackType> for glib::Value {
8567    #[inline]
8568    fn from(v: PackType) -> Self {
8569        skip_assert_initialized!();
8570        ToValue::to_value(&v)
8571    }
8572}
8573
8574/// The type of a pad action.
8575#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8576#[non_exhaustive]
8577#[doc(alias = "GtkPadActionType")]
8578pub enum PadActionType {
8579    /// Action is triggered by a pad button
8580    #[doc(alias = "GTK_PAD_ACTION_BUTTON")]
8581    Button,
8582    /// Action is triggered by a pad ring
8583    #[doc(alias = "GTK_PAD_ACTION_RING")]
8584    Ring,
8585    /// Action is triggered by a pad strip
8586    #[doc(alias = "GTK_PAD_ACTION_STRIP")]
8587    Strip,
8588    /// Action is triggered by a pad dial
8589    #[doc(alias = "GTK_PAD_ACTION_DIAL")]
8590    Dial,
8591    #[doc(hidden)]
8592    __Unknown(i32),
8593}
8594
8595#[doc(hidden)]
8596impl IntoGlib for PadActionType {
8597    type GlibType = ffi::GtkPadActionType;
8598
8599    #[inline]
8600    fn into_glib(self) -> ffi::GtkPadActionType {
8601        match self {
8602            Self::Button => ffi::GTK_PAD_ACTION_BUTTON,
8603            Self::Ring => ffi::GTK_PAD_ACTION_RING,
8604            Self::Strip => ffi::GTK_PAD_ACTION_STRIP,
8605            Self::Dial => ffi::GTK_PAD_ACTION_DIAL,
8606            Self::__Unknown(value) => value,
8607        }
8608    }
8609}
8610
8611#[doc(hidden)]
8612impl FromGlib<ffi::GtkPadActionType> for PadActionType {
8613    #[inline]
8614    unsafe fn from_glib(value: ffi::GtkPadActionType) -> Self {
8615        skip_assert_initialized!();
8616
8617        match value {
8618            ffi::GTK_PAD_ACTION_BUTTON => Self::Button,
8619            ffi::GTK_PAD_ACTION_RING => Self::Ring,
8620            ffi::GTK_PAD_ACTION_STRIP => Self::Strip,
8621            ffi::GTK_PAD_ACTION_DIAL => Self::Dial,
8622            value => Self::__Unknown(value),
8623        }
8624    }
8625}
8626
8627impl StaticType for PadActionType {
8628    #[inline]
8629    #[doc(alias = "gtk_pad_action_type_get_type")]
8630    fn static_type() -> glib::Type {
8631        unsafe { from_glib(ffi::gtk_pad_action_type_get_type()) }
8632    }
8633}
8634
8635impl glib::HasParamSpec for PadActionType {
8636    type ParamSpec = glib::ParamSpecEnum;
8637    type SetValue = Self;
8638    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8639
8640    fn param_spec_builder() -> Self::BuilderFn {
8641        Self::ParamSpec::builder_with_default
8642    }
8643}
8644
8645impl glib::value::ValueType for PadActionType {
8646    type Type = Self;
8647}
8648
8649unsafe impl<'a> glib::value::FromValue<'a> for PadActionType {
8650    type Checker = glib::value::GenericValueTypeChecker<Self>;
8651
8652    #[inline]
8653    unsafe fn from_value(value: &'a glib::Value) -> Self {
8654        skip_assert_initialized!();
8655        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8656    }
8657}
8658
8659impl ToValue for PadActionType {
8660    #[inline]
8661    fn to_value(&self) -> glib::Value {
8662        let mut value = glib::Value::for_value_type::<Self>();
8663        unsafe {
8664            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8665        }
8666        value
8667    }
8668
8669    #[inline]
8670    fn value_type(&self) -> glib::Type {
8671        Self::static_type()
8672    }
8673}
8674
8675impl From<PadActionType> for glib::Value {
8676    #[inline]
8677    fn from(v: PadActionType) -> Self {
8678        skip_assert_initialized!();
8679        ToValue::to_value(&v)
8680    }
8681}
8682
8683/// See also gtk_print_settings_set_orientation().
8684#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8685#[non_exhaustive]
8686#[doc(alias = "GtkPageOrientation")]
8687pub enum PageOrientation {
8688    /// Portrait mode.
8689    #[doc(alias = "GTK_PAGE_ORIENTATION_PORTRAIT")]
8690    Portrait,
8691    /// Landscape mode.
8692    #[doc(alias = "GTK_PAGE_ORIENTATION_LANDSCAPE")]
8693    Landscape,
8694    /// Reverse portrait mode.
8695    #[doc(alias = "GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT")]
8696    ReversePortrait,
8697    /// Reverse landscape mode.
8698    #[doc(alias = "GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE")]
8699    ReverseLandscape,
8700    #[doc(hidden)]
8701    __Unknown(i32),
8702}
8703
8704#[doc(hidden)]
8705impl IntoGlib for PageOrientation {
8706    type GlibType = ffi::GtkPageOrientation;
8707
8708    #[inline]
8709    fn into_glib(self) -> ffi::GtkPageOrientation {
8710        match self {
8711            Self::Portrait => ffi::GTK_PAGE_ORIENTATION_PORTRAIT,
8712            Self::Landscape => ffi::GTK_PAGE_ORIENTATION_LANDSCAPE,
8713            Self::ReversePortrait => ffi::GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT,
8714            Self::ReverseLandscape => ffi::GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE,
8715            Self::__Unknown(value) => value,
8716        }
8717    }
8718}
8719
8720#[doc(hidden)]
8721impl FromGlib<ffi::GtkPageOrientation> for PageOrientation {
8722    #[inline]
8723    unsafe fn from_glib(value: ffi::GtkPageOrientation) -> Self {
8724        skip_assert_initialized!();
8725
8726        match value {
8727            ffi::GTK_PAGE_ORIENTATION_PORTRAIT => Self::Portrait,
8728            ffi::GTK_PAGE_ORIENTATION_LANDSCAPE => Self::Landscape,
8729            ffi::GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT => Self::ReversePortrait,
8730            ffi::GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE => Self::ReverseLandscape,
8731            value => Self::__Unknown(value),
8732        }
8733    }
8734}
8735
8736impl StaticType for PageOrientation {
8737    #[inline]
8738    #[doc(alias = "gtk_page_orientation_get_type")]
8739    fn static_type() -> glib::Type {
8740        unsafe { from_glib(ffi::gtk_page_orientation_get_type()) }
8741    }
8742}
8743
8744impl glib::HasParamSpec for PageOrientation {
8745    type ParamSpec = glib::ParamSpecEnum;
8746    type SetValue = Self;
8747    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8748
8749    fn param_spec_builder() -> Self::BuilderFn {
8750        Self::ParamSpec::builder_with_default
8751    }
8752}
8753
8754impl glib::value::ValueType for PageOrientation {
8755    type Type = Self;
8756}
8757
8758unsafe impl<'a> glib::value::FromValue<'a> for PageOrientation {
8759    type Checker = glib::value::GenericValueTypeChecker<Self>;
8760
8761    #[inline]
8762    unsafe fn from_value(value: &'a glib::Value) -> Self {
8763        skip_assert_initialized!();
8764        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8765    }
8766}
8767
8768impl ToValue for PageOrientation {
8769    #[inline]
8770    fn to_value(&self) -> glib::Value {
8771        let mut value = glib::Value::for_value_type::<Self>();
8772        unsafe {
8773            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8774        }
8775        value
8776    }
8777
8778    #[inline]
8779    fn value_type(&self) -> glib::Type {
8780        Self::static_type()
8781    }
8782}
8783
8784impl From<PageOrientation> for glib::Value {
8785    #[inline]
8786    fn from(v: PageOrientation) -> Self {
8787        skip_assert_initialized!();
8788        ToValue::to_value(&v)
8789    }
8790}
8791
8792/// See also gtk_print_job_set_page_set().
8793#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8794#[non_exhaustive]
8795#[doc(alias = "GtkPageSet")]
8796pub enum PageSet {
8797    /// All pages.
8798    #[doc(alias = "GTK_PAGE_SET_ALL")]
8799    All,
8800    /// Even pages.
8801    #[doc(alias = "GTK_PAGE_SET_EVEN")]
8802    Even,
8803    /// Odd pages.
8804    #[doc(alias = "GTK_PAGE_SET_ODD")]
8805    Odd,
8806    #[doc(hidden)]
8807    __Unknown(i32),
8808}
8809
8810#[doc(hidden)]
8811impl IntoGlib for PageSet {
8812    type GlibType = ffi::GtkPageSet;
8813
8814    #[inline]
8815    fn into_glib(self) -> ffi::GtkPageSet {
8816        match self {
8817            Self::All => ffi::GTK_PAGE_SET_ALL,
8818            Self::Even => ffi::GTK_PAGE_SET_EVEN,
8819            Self::Odd => ffi::GTK_PAGE_SET_ODD,
8820            Self::__Unknown(value) => value,
8821        }
8822    }
8823}
8824
8825#[doc(hidden)]
8826impl FromGlib<ffi::GtkPageSet> for PageSet {
8827    #[inline]
8828    unsafe fn from_glib(value: ffi::GtkPageSet) -> Self {
8829        skip_assert_initialized!();
8830
8831        match value {
8832            ffi::GTK_PAGE_SET_ALL => Self::All,
8833            ffi::GTK_PAGE_SET_EVEN => Self::Even,
8834            ffi::GTK_PAGE_SET_ODD => Self::Odd,
8835            value => Self::__Unknown(value),
8836        }
8837    }
8838}
8839
8840impl StaticType for PageSet {
8841    #[inline]
8842    #[doc(alias = "gtk_page_set_get_type")]
8843    fn static_type() -> glib::Type {
8844        unsafe { from_glib(ffi::gtk_page_set_get_type()) }
8845    }
8846}
8847
8848impl glib::HasParamSpec for PageSet {
8849    type ParamSpec = glib::ParamSpecEnum;
8850    type SetValue = Self;
8851    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8852
8853    fn param_spec_builder() -> Self::BuilderFn {
8854        Self::ParamSpec::builder_with_default
8855    }
8856}
8857
8858impl glib::value::ValueType for PageSet {
8859    type Type = Self;
8860}
8861
8862unsafe impl<'a> glib::value::FromValue<'a> for PageSet {
8863    type Checker = glib::value::GenericValueTypeChecker<Self>;
8864
8865    #[inline]
8866    unsafe fn from_value(value: &'a glib::Value) -> Self {
8867        skip_assert_initialized!();
8868        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8869    }
8870}
8871
8872impl ToValue for PageSet {
8873    #[inline]
8874    fn to_value(&self) -> glib::Value {
8875        let mut value = glib::Value::for_value_type::<Self>();
8876        unsafe {
8877            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8878        }
8879        value
8880    }
8881
8882    #[inline]
8883    fn value_type(&self) -> glib::Type {
8884        Self::static_type()
8885    }
8886}
8887
8888impl From<PageSet> for glib::Value {
8889    #[inline]
8890    fn from(v: PageSet) -> Self {
8891        skip_assert_initialized!();
8892        ToValue::to_value(&v)
8893    }
8894}
8895
8896/// Describes the panning direction of a [`GesturePan`][crate::GesturePan].
8897#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8898#[non_exhaustive]
8899#[doc(alias = "GtkPanDirection")]
8900pub enum PanDirection {
8901    /// panned towards the left
8902    #[doc(alias = "GTK_PAN_DIRECTION_LEFT")]
8903    Left,
8904    /// panned towards the right
8905    #[doc(alias = "GTK_PAN_DIRECTION_RIGHT")]
8906    Right,
8907    /// panned upwards
8908    #[doc(alias = "GTK_PAN_DIRECTION_UP")]
8909    Up,
8910    /// panned downwards
8911    #[doc(alias = "GTK_PAN_DIRECTION_DOWN")]
8912    Down,
8913    #[doc(hidden)]
8914    __Unknown(i32),
8915}
8916
8917#[doc(hidden)]
8918impl IntoGlib for PanDirection {
8919    type GlibType = ffi::GtkPanDirection;
8920
8921    #[inline]
8922    fn into_glib(self) -> ffi::GtkPanDirection {
8923        match self {
8924            Self::Left => ffi::GTK_PAN_DIRECTION_LEFT,
8925            Self::Right => ffi::GTK_PAN_DIRECTION_RIGHT,
8926            Self::Up => ffi::GTK_PAN_DIRECTION_UP,
8927            Self::Down => ffi::GTK_PAN_DIRECTION_DOWN,
8928            Self::__Unknown(value) => value,
8929        }
8930    }
8931}
8932
8933#[doc(hidden)]
8934impl FromGlib<ffi::GtkPanDirection> for PanDirection {
8935    #[inline]
8936    unsafe fn from_glib(value: ffi::GtkPanDirection) -> Self {
8937        skip_assert_initialized!();
8938
8939        match value {
8940            ffi::GTK_PAN_DIRECTION_LEFT => Self::Left,
8941            ffi::GTK_PAN_DIRECTION_RIGHT => Self::Right,
8942            ffi::GTK_PAN_DIRECTION_UP => Self::Up,
8943            ffi::GTK_PAN_DIRECTION_DOWN => Self::Down,
8944            value => Self::__Unknown(value),
8945        }
8946    }
8947}
8948
8949impl StaticType for PanDirection {
8950    #[inline]
8951    #[doc(alias = "gtk_pan_direction_get_type")]
8952    fn static_type() -> glib::Type {
8953        unsafe { from_glib(ffi::gtk_pan_direction_get_type()) }
8954    }
8955}
8956
8957impl glib::HasParamSpec for PanDirection {
8958    type ParamSpec = glib::ParamSpecEnum;
8959    type SetValue = Self;
8960    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8961
8962    fn param_spec_builder() -> Self::BuilderFn {
8963        Self::ParamSpec::builder_with_default
8964    }
8965}
8966
8967impl glib::value::ValueType for PanDirection {
8968    type Type = Self;
8969}
8970
8971unsafe impl<'a> glib::value::FromValue<'a> for PanDirection {
8972    type Checker = glib::value::GenericValueTypeChecker<Self>;
8973
8974    #[inline]
8975    unsafe fn from_value(value: &'a glib::Value) -> Self {
8976        skip_assert_initialized!();
8977        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8978    }
8979}
8980
8981impl ToValue for PanDirection {
8982    #[inline]
8983    fn to_value(&self) -> glib::Value {
8984        let mut value = glib::Value::for_value_type::<Self>();
8985        unsafe {
8986            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8987        }
8988        value
8989    }
8990
8991    #[inline]
8992    fn value_type(&self) -> glib::Type {
8993        Self::static_type()
8994    }
8995}
8996
8997impl From<PanDirection> for glib::Value {
8998    #[inline]
8999    fn from(v: PanDirection) -> Self {
9000        skip_assert_initialized!();
9001        ToValue::to_value(&v)
9002    }
9003}
9004
9005/// Determines how the size should be computed to achieve the one of the
9006/// visibility mode for the scrollbars.
9007#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9008#[non_exhaustive]
9009#[doc(alias = "GtkPolicyType")]
9010pub enum PolicyType {
9011    /// The scrollbar is always visible. The view size is
9012    ///   independent of the content.
9013    #[doc(alias = "GTK_POLICY_ALWAYS")]
9014    Always,
9015    /// The scrollbar will appear and disappear as necessary.
9016    ///   For example, when all of a [`TreeView`][crate::TreeView] can not be seen.
9017    #[doc(alias = "GTK_POLICY_AUTOMATIC")]
9018    Automatic,
9019    /// The scrollbar should never appear. In this mode the
9020    ///   content determines the size.
9021    #[doc(alias = "GTK_POLICY_NEVER")]
9022    Never,
9023    /// Don't show a scrollbar, but don't force the
9024    ///   size to follow the content. This can be used e.g. to make multiple
9025    ///   scrolled windows share a scrollbar.
9026    #[doc(alias = "GTK_POLICY_EXTERNAL")]
9027    External,
9028    #[doc(hidden)]
9029    __Unknown(i32),
9030}
9031
9032#[doc(hidden)]
9033impl IntoGlib for PolicyType {
9034    type GlibType = ffi::GtkPolicyType;
9035
9036    #[inline]
9037    fn into_glib(self) -> ffi::GtkPolicyType {
9038        match self {
9039            Self::Always => ffi::GTK_POLICY_ALWAYS,
9040            Self::Automatic => ffi::GTK_POLICY_AUTOMATIC,
9041            Self::Never => ffi::GTK_POLICY_NEVER,
9042            Self::External => ffi::GTK_POLICY_EXTERNAL,
9043            Self::__Unknown(value) => value,
9044        }
9045    }
9046}
9047
9048#[doc(hidden)]
9049impl FromGlib<ffi::GtkPolicyType> for PolicyType {
9050    #[inline]
9051    unsafe fn from_glib(value: ffi::GtkPolicyType) -> Self {
9052        skip_assert_initialized!();
9053
9054        match value {
9055            ffi::GTK_POLICY_ALWAYS => Self::Always,
9056            ffi::GTK_POLICY_AUTOMATIC => Self::Automatic,
9057            ffi::GTK_POLICY_NEVER => Self::Never,
9058            ffi::GTK_POLICY_EXTERNAL => Self::External,
9059            value => Self::__Unknown(value),
9060        }
9061    }
9062}
9063
9064impl StaticType for PolicyType {
9065    #[inline]
9066    #[doc(alias = "gtk_policy_type_get_type")]
9067    fn static_type() -> glib::Type {
9068        unsafe { from_glib(ffi::gtk_policy_type_get_type()) }
9069    }
9070}
9071
9072impl glib::HasParamSpec for PolicyType {
9073    type ParamSpec = glib::ParamSpecEnum;
9074    type SetValue = Self;
9075    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9076
9077    fn param_spec_builder() -> Self::BuilderFn {
9078        Self::ParamSpec::builder_with_default
9079    }
9080}
9081
9082impl glib::value::ValueType for PolicyType {
9083    type Type = Self;
9084}
9085
9086unsafe impl<'a> glib::value::FromValue<'a> for PolicyType {
9087    type Checker = glib::value::GenericValueTypeChecker<Self>;
9088
9089    #[inline]
9090    unsafe fn from_value(value: &'a glib::Value) -> Self {
9091        skip_assert_initialized!();
9092        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9093    }
9094}
9095
9096impl ToValue for PolicyType {
9097    #[inline]
9098    fn to_value(&self) -> glib::Value {
9099        let mut value = glib::Value::for_value_type::<Self>();
9100        unsafe {
9101            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9102        }
9103        value
9104    }
9105
9106    #[inline]
9107    fn value_type(&self) -> glib::Type {
9108        Self::static_type()
9109    }
9110}
9111
9112impl From<PolicyType> for glib::Value {
9113    #[inline]
9114    fn from(v: PolicyType) -> Self {
9115        skip_assert_initialized!();
9116        ToValue::to_value(&v)
9117    }
9118}
9119
9120/// Describes which edge of a widget a certain feature is positioned at.
9121///
9122/// For examples, see the tabs of a [`Notebook`][crate::Notebook], or the label
9123/// of a [`Scale`][crate::Scale].
9124#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9125#[non_exhaustive]
9126#[doc(alias = "GtkPositionType")]
9127pub enum PositionType {
9128    /// The feature is at the left edge.
9129    #[doc(alias = "GTK_POS_LEFT")]
9130    Left,
9131    /// The feature is at the right edge.
9132    #[doc(alias = "GTK_POS_RIGHT")]
9133    Right,
9134    /// The feature is at the top edge.
9135    #[doc(alias = "GTK_POS_TOP")]
9136    Top,
9137    /// The feature is at the bottom edge.
9138    #[doc(alias = "GTK_POS_BOTTOM")]
9139    Bottom,
9140    #[doc(hidden)]
9141    __Unknown(i32),
9142}
9143
9144#[doc(hidden)]
9145impl IntoGlib for PositionType {
9146    type GlibType = ffi::GtkPositionType;
9147
9148    #[inline]
9149    fn into_glib(self) -> ffi::GtkPositionType {
9150        match self {
9151            Self::Left => ffi::GTK_POS_LEFT,
9152            Self::Right => ffi::GTK_POS_RIGHT,
9153            Self::Top => ffi::GTK_POS_TOP,
9154            Self::Bottom => ffi::GTK_POS_BOTTOM,
9155            Self::__Unknown(value) => value,
9156        }
9157    }
9158}
9159
9160#[doc(hidden)]
9161impl FromGlib<ffi::GtkPositionType> for PositionType {
9162    #[inline]
9163    unsafe fn from_glib(value: ffi::GtkPositionType) -> Self {
9164        skip_assert_initialized!();
9165
9166        match value {
9167            ffi::GTK_POS_LEFT => Self::Left,
9168            ffi::GTK_POS_RIGHT => Self::Right,
9169            ffi::GTK_POS_TOP => Self::Top,
9170            ffi::GTK_POS_BOTTOM => Self::Bottom,
9171            value => Self::__Unknown(value),
9172        }
9173    }
9174}
9175
9176impl StaticType for PositionType {
9177    #[inline]
9178    #[doc(alias = "gtk_position_type_get_type")]
9179    fn static_type() -> glib::Type {
9180        unsafe { from_glib(ffi::gtk_position_type_get_type()) }
9181    }
9182}
9183
9184impl glib::HasParamSpec for PositionType {
9185    type ParamSpec = glib::ParamSpecEnum;
9186    type SetValue = Self;
9187    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9188
9189    fn param_spec_builder() -> Self::BuilderFn {
9190        Self::ParamSpec::builder_with_default
9191    }
9192}
9193
9194impl glib::value::ValueType for PositionType {
9195    type Type = Self;
9196}
9197
9198unsafe impl<'a> glib::value::FromValue<'a> for PositionType {
9199    type Checker = glib::value::GenericValueTypeChecker<Self>;
9200
9201    #[inline]
9202    unsafe fn from_value(value: &'a glib::Value) -> Self {
9203        skip_assert_initialized!();
9204        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9205    }
9206}
9207
9208impl ToValue for PositionType {
9209    #[inline]
9210    fn to_value(&self) -> glib::Value {
9211        let mut value = glib::Value::for_value_type::<Self>();
9212        unsafe {
9213            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9214        }
9215        value
9216    }
9217
9218    #[inline]
9219    fn value_type(&self) -> glib::Type {
9220        Self::static_type()
9221    }
9222}
9223
9224impl From<PositionType> for glib::Value {
9225    #[inline]
9226    fn from(v: PositionType) -> Self {
9227        skip_assert_initialized!();
9228        ToValue::to_value(&v)
9229    }
9230}
9231
9232/// See also gtk_print_settings_set_duplex().
9233#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9234#[non_exhaustive]
9235#[doc(alias = "GtkPrintDuplex")]
9236pub enum PrintDuplex {
9237    /// No duplex.
9238    #[doc(alias = "GTK_PRINT_DUPLEX_SIMPLEX")]
9239    Simplex,
9240    /// Horizontal duplex.
9241    #[doc(alias = "GTK_PRINT_DUPLEX_HORIZONTAL")]
9242    Horizontal,
9243    /// Vertical duplex.
9244    #[doc(alias = "GTK_PRINT_DUPLEX_VERTICAL")]
9245    Vertical,
9246    #[doc(hidden)]
9247    __Unknown(i32),
9248}
9249
9250#[doc(hidden)]
9251impl IntoGlib for PrintDuplex {
9252    type GlibType = ffi::GtkPrintDuplex;
9253
9254    #[inline]
9255    fn into_glib(self) -> ffi::GtkPrintDuplex {
9256        match self {
9257            Self::Simplex => ffi::GTK_PRINT_DUPLEX_SIMPLEX,
9258            Self::Horizontal => ffi::GTK_PRINT_DUPLEX_HORIZONTAL,
9259            Self::Vertical => ffi::GTK_PRINT_DUPLEX_VERTICAL,
9260            Self::__Unknown(value) => value,
9261        }
9262    }
9263}
9264
9265#[doc(hidden)]
9266impl FromGlib<ffi::GtkPrintDuplex> for PrintDuplex {
9267    #[inline]
9268    unsafe fn from_glib(value: ffi::GtkPrintDuplex) -> Self {
9269        skip_assert_initialized!();
9270
9271        match value {
9272            ffi::GTK_PRINT_DUPLEX_SIMPLEX => Self::Simplex,
9273            ffi::GTK_PRINT_DUPLEX_HORIZONTAL => Self::Horizontal,
9274            ffi::GTK_PRINT_DUPLEX_VERTICAL => Self::Vertical,
9275            value => Self::__Unknown(value),
9276        }
9277    }
9278}
9279
9280impl StaticType for PrintDuplex {
9281    #[inline]
9282    #[doc(alias = "gtk_print_duplex_get_type")]
9283    fn static_type() -> glib::Type {
9284        unsafe { from_glib(ffi::gtk_print_duplex_get_type()) }
9285    }
9286}
9287
9288impl glib::HasParamSpec for PrintDuplex {
9289    type ParamSpec = glib::ParamSpecEnum;
9290    type SetValue = Self;
9291    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9292
9293    fn param_spec_builder() -> Self::BuilderFn {
9294        Self::ParamSpec::builder_with_default
9295    }
9296}
9297
9298impl glib::value::ValueType for PrintDuplex {
9299    type Type = Self;
9300}
9301
9302unsafe impl<'a> glib::value::FromValue<'a> for PrintDuplex {
9303    type Checker = glib::value::GenericValueTypeChecker<Self>;
9304
9305    #[inline]
9306    unsafe fn from_value(value: &'a glib::Value) -> Self {
9307        skip_assert_initialized!();
9308        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9309    }
9310}
9311
9312impl ToValue for PrintDuplex {
9313    #[inline]
9314    fn to_value(&self) -> glib::Value {
9315        let mut value = glib::Value::for_value_type::<Self>();
9316        unsafe {
9317            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9318        }
9319        value
9320    }
9321
9322    #[inline]
9323    fn value_type(&self) -> glib::Type {
9324        Self::static_type()
9325    }
9326}
9327
9328impl From<PrintDuplex> for glib::Value {
9329    #[inline]
9330    fn from(v: PrintDuplex) -> Self {
9331        skip_assert_initialized!();
9332        ToValue::to_value(&v)
9333    }
9334}
9335
9336/// Error codes that identify various errors that can occur while
9337/// using the GTK printing support.
9338#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9339#[non_exhaustive]
9340#[doc(alias = "GtkPrintError")]
9341pub enum PrintError {
9342    /// An unspecified error occurred.
9343    #[doc(alias = "GTK_PRINT_ERROR_GENERAL")]
9344    General,
9345    /// An internal error occurred.
9346    #[doc(alias = "GTK_PRINT_ERROR_INTERNAL_ERROR")]
9347    InternalError,
9348    /// A memory allocation failed.
9349    #[doc(alias = "GTK_PRINT_ERROR_NOMEM")]
9350    Nomem,
9351    /// An error occurred while loading a page setup
9352    ///   or paper size from a key file.
9353    #[doc(alias = "GTK_PRINT_ERROR_INVALID_FILE")]
9354    InvalidFile,
9355    #[doc(hidden)]
9356    __Unknown(i32),
9357}
9358
9359#[doc(hidden)]
9360impl IntoGlib for PrintError {
9361    type GlibType = ffi::GtkPrintError;
9362
9363    #[inline]
9364    fn into_glib(self) -> ffi::GtkPrintError {
9365        match self {
9366            Self::General => ffi::GTK_PRINT_ERROR_GENERAL,
9367            Self::InternalError => ffi::GTK_PRINT_ERROR_INTERNAL_ERROR,
9368            Self::Nomem => ffi::GTK_PRINT_ERROR_NOMEM,
9369            Self::InvalidFile => ffi::GTK_PRINT_ERROR_INVALID_FILE,
9370            Self::__Unknown(value) => value,
9371        }
9372    }
9373}
9374
9375#[doc(hidden)]
9376impl FromGlib<ffi::GtkPrintError> for PrintError {
9377    #[inline]
9378    unsafe fn from_glib(value: ffi::GtkPrintError) -> Self {
9379        skip_assert_initialized!();
9380
9381        match value {
9382            ffi::GTK_PRINT_ERROR_GENERAL => Self::General,
9383            ffi::GTK_PRINT_ERROR_INTERNAL_ERROR => Self::InternalError,
9384            ffi::GTK_PRINT_ERROR_NOMEM => Self::Nomem,
9385            ffi::GTK_PRINT_ERROR_INVALID_FILE => Self::InvalidFile,
9386            value => Self::__Unknown(value),
9387        }
9388    }
9389}
9390
9391impl glib::error::ErrorDomain for PrintError {
9392    #[inline]
9393    fn domain() -> glib::Quark {
9394        skip_assert_initialized!();
9395
9396        unsafe { from_glib(ffi::gtk_print_error_quark()) }
9397    }
9398
9399    #[inline]
9400    fn code(self) -> i32 {
9401        self.into_glib()
9402    }
9403
9404    #[inline]
9405    #[allow(clippy::match_single_binding)]
9406    fn from(code: i32) -> Option<Self> {
9407        skip_assert_initialized!();
9408        match unsafe { from_glib(code) } {
9409            value => Some(value),
9410        }
9411    }
9412}
9413
9414impl StaticType for PrintError {
9415    #[inline]
9416    #[doc(alias = "gtk_print_error_get_type")]
9417    fn static_type() -> glib::Type {
9418        unsafe { from_glib(ffi::gtk_print_error_get_type()) }
9419    }
9420}
9421
9422impl glib::HasParamSpec for PrintError {
9423    type ParamSpec = glib::ParamSpecEnum;
9424    type SetValue = Self;
9425    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9426
9427    fn param_spec_builder() -> Self::BuilderFn {
9428        Self::ParamSpec::builder_with_default
9429    }
9430}
9431
9432impl glib::value::ValueType for PrintError {
9433    type Type = Self;
9434}
9435
9436unsafe impl<'a> glib::value::FromValue<'a> for PrintError {
9437    type Checker = glib::value::GenericValueTypeChecker<Self>;
9438
9439    #[inline]
9440    unsafe fn from_value(value: &'a glib::Value) -> Self {
9441        skip_assert_initialized!();
9442        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9443    }
9444}
9445
9446impl ToValue for PrintError {
9447    #[inline]
9448    fn to_value(&self) -> glib::Value {
9449        let mut value = glib::Value::for_value_type::<Self>();
9450        unsafe {
9451            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9452        }
9453        value
9454    }
9455
9456    #[inline]
9457    fn value_type(&self) -> glib::Type {
9458        Self::static_type()
9459    }
9460}
9461
9462impl From<PrintError> for glib::Value {
9463    #[inline]
9464    fn from(v: PrintError) -> Self {
9465        skip_assert_initialized!();
9466        ToValue::to_value(&v)
9467    }
9468}
9469
9470/// Determines what action the print operation should perform.
9471///
9472/// A parameter of this typs is passed to [`PrintOperationExt::run()`][crate::prelude::PrintOperationExt::run()].
9473#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9474#[non_exhaustive]
9475#[doc(alias = "GtkPrintOperationAction")]
9476pub enum PrintOperationAction {
9477    /// Show the print dialog.
9478    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG")]
9479    PrintDialog,
9480    /// Start to print without showing
9481    ///   the print dialog, based on the current print settings, if possible.
9482    ///   Depending on the platform, a print dialog might appear anyway.
9483    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PRINT")]
9484    Print,
9485    /// Show the print preview.
9486    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PREVIEW")]
9487    Preview,
9488    /// Export to a file. This requires
9489    ///   the export-filename property to be set.
9490    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_EXPORT")]
9491    Export,
9492    #[doc(hidden)]
9493    __Unknown(i32),
9494}
9495
9496#[doc(hidden)]
9497impl IntoGlib for PrintOperationAction {
9498    type GlibType = ffi::GtkPrintOperationAction;
9499
9500    #[inline]
9501    fn into_glib(self) -> ffi::GtkPrintOperationAction {
9502        match self {
9503            Self::PrintDialog => ffi::GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
9504            Self::Print => ffi::GTK_PRINT_OPERATION_ACTION_PRINT,
9505            Self::Preview => ffi::GTK_PRINT_OPERATION_ACTION_PREVIEW,
9506            Self::Export => ffi::GTK_PRINT_OPERATION_ACTION_EXPORT,
9507            Self::__Unknown(value) => value,
9508        }
9509    }
9510}
9511
9512#[doc(hidden)]
9513impl FromGlib<ffi::GtkPrintOperationAction> for PrintOperationAction {
9514    #[inline]
9515    unsafe fn from_glib(value: ffi::GtkPrintOperationAction) -> Self {
9516        skip_assert_initialized!();
9517
9518        match value {
9519            ffi::GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG => Self::PrintDialog,
9520            ffi::GTK_PRINT_OPERATION_ACTION_PRINT => Self::Print,
9521            ffi::GTK_PRINT_OPERATION_ACTION_PREVIEW => Self::Preview,
9522            ffi::GTK_PRINT_OPERATION_ACTION_EXPORT => Self::Export,
9523            value => Self::__Unknown(value),
9524        }
9525    }
9526}
9527
9528impl StaticType for PrintOperationAction {
9529    #[inline]
9530    #[doc(alias = "gtk_print_operation_action_get_type")]
9531    fn static_type() -> glib::Type {
9532        unsafe { from_glib(ffi::gtk_print_operation_action_get_type()) }
9533    }
9534}
9535
9536impl glib::HasParamSpec for PrintOperationAction {
9537    type ParamSpec = glib::ParamSpecEnum;
9538    type SetValue = Self;
9539    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9540
9541    fn param_spec_builder() -> Self::BuilderFn {
9542        Self::ParamSpec::builder_with_default
9543    }
9544}
9545
9546impl glib::value::ValueType for PrintOperationAction {
9547    type Type = Self;
9548}
9549
9550unsafe impl<'a> glib::value::FromValue<'a> for PrintOperationAction {
9551    type Checker = glib::value::GenericValueTypeChecker<Self>;
9552
9553    #[inline]
9554    unsafe fn from_value(value: &'a glib::Value) -> Self {
9555        skip_assert_initialized!();
9556        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9557    }
9558}
9559
9560impl ToValue for PrintOperationAction {
9561    #[inline]
9562    fn to_value(&self) -> glib::Value {
9563        let mut value = glib::Value::for_value_type::<Self>();
9564        unsafe {
9565            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9566        }
9567        value
9568    }
9569
9570    #[inline]
9571    fn value_type(&self) -> glib::Type {
9572        Self::static_type()
9573    }
9574}
9575
9576impl From<PrintOperationAction> for glib::Value {
9577    #[inline]
9578    fn from(v: PrintOperationAction) -> Self {
9579        skip_assert_initialized!();
9580        ToValue::to_value(&v)
9581    }
9582}
9583
9584/// The result of a print operation.
9585///
9586/// A value of this type is returned by [`PrintOperationExt::run()`][crate::prelude::PrintOperationExt::run()].
9587#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9588#[non_exhaustive]
9589#[doc(alias = "GtkPrintOperationResult")]
9590pub enum PrintOperationResult {
9591    /// An error has occurred.
9592    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_ERROR")]
9593    Error,
9594    /// The print settings should be stored.
9595    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_APPLY")]
9596    Apply,
9597    /// The print operation has been canceled,
9598    ///   the print settings should not be stored.
9599    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_CANCEL")]
9600    Cancel,
9601    /// The print operation is not complete
9602    ///   yet. This value will only be returned when running asynchronously.
9603    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_IN_PROGRESS")]
9604    InProgress,
9605    #[doc(hidden)]
9606    __Unknown(i32),
9607}
9608
9609#[doc(hidden)]
9610impl IntoGlib for PrintOperationResult {
9611    type GlibType = ffi::GtkPrintOperationResult;
9612
9613    #[inline]
9614    fn into_glib(self) -> ffi::GtkPrintOperationResult {
9615        match self {
9616            Self::Error => ffi::GTK_PRINT_OPERATION_RESULT_ERROR,
9617            Self::Apply => ffi::GTK_PRINT_OPERATION_RESULT_APPLY,
9618            Self::Cancel => ffi::GTK_PRINT_OPERATION_RESULT_CANCEL,
9619            Self::InProgress => ffi::GTK_PRINT_OPERATION_RESULT_IN_PROGRESS,
9620            Self::__Unknown(value) => value,
9621        }
9622    }
9623}
9624
9625#[doc(hidden)]
9626impl FromGlib<ffi::GtkPrintOperationResult> for PrintOperationResult {
9627    #[inline]
9628    unsafe fn from_glib(value: ffi::GtkPrintOperationResult) -> Self {
9629        skip_assert_initialized!();
9630
9631        match value {
9632            ffi::GTK_PRINT_OPERATION_RESULT_ERROR => Self::Error,
9633            ffi::GTK_PRINT_OPERATION_RESULT_APPLY => Self::Apply,
9634            ffi::GTK_PRINT_OPERATION_RESULT_CANCEL => Self::Cancel,
9635            ffi::GTK_PRINT_OPERATION_RESULT_IN_PROGRESS => Self::InProgress,
9636            value => Self::__Unknown(value),
9637        }
9638    }
9639}
9640
9641impl StaticType for PrintOperationResult {
9642    #[inline]
9643    #[doc(alias = "gtk_print_operation_result_get_type")]
9644    fn static_type() -> glib::Type {
9645        unsafe { from_glib(ffi::gtk_print_operation_result_get_type()) }
9646    }
9647}
9648
9649impl glib::HasParamSpec for PrintOperationResult {
9650    type ParamSpec = glib::ParamSpecEnum;
9651    type SetValue = Self;
9652    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9653
9654    fn param_spec_builder() -> Self::BuilderFn {
9655        Self::ParamSpec::builder_with_default
9656    }
9657}
9658
9659impl glib::value::ValueType for PrintOperationResult {
9660    type Type = Self;
9661}
9662
9663unsafe impl<'a> glib::value::FromValue<'a> for PrintOperationResult {
9664    type Checker = glib::value::GenericValueTypeChecker<Self>;
9665
9666    #[inline]
9667    unsafe fn from_value(value: &'a glib::Value) -> Self {
9668        skip_assert_initialized!();
9669        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9670    }
9671}
9672
9673impl ToValue for PrintOperationResult {
9674    #[inline]
9675    fn to_value(&self) -> glib::Value {
9676        let mut value = glib::Value::for_value_type::<Self>();
9677        unsafe {
9678            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9679        }
9680        value
9681    }
9682
9683    #[inline]
9684    fn value_type(&self) -> glib::Type {
9685        Self::static_type()
9686    }
9687}
9688
9689impl From<PrintOperationResult> for glib::Value {
9690    #[inline]
9691    fn from(v: PrintOperationResult) -> Self {
9692        skip_assert_initialized!();
9693        ToValue::to_value(&v)
9694    }
9695}
9696
9697/// See also gtk_print_job_set_pages()
9698#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9699#[non_exhaustive]
9700#[doc(alias = "GtkPrintPages")]
9701pub enum PrintPages {
9702    /// All pages.
9703    #[doc(alias = "GTK_PRINT_PAGES_ALL")]
9704    All,
9705    /// Current page.
9706    #[doc(alias = "GTK_PRINT_PAGES_CURRENT")]
9707    Current,
9708    /// Range of pages.
9709    #[doc(alias = "GTK_PRINT_PAGES_RANGES")]
9710    Ranges,
9711    /// Selected pages.
9712    #[doc(alias = "GTK_PRINT_PAGES_SELECTION")]
9713    Selection,
9714    #[doc(hidden)]
9715    __Unknown(i32),
9716}
9717
9718#[doc(hidden)]
9719impl IntoGlib for PrintPages {
9720    type GlibType = ffi::GtkPrintPages;
9721
9722    #[inline]
9723    fn into_glib(self) -> ffi::GtkPrintPages {
9724        match self {
9725            Self::All => ffi::GTK_PRINT_PAGES_ALL,
9726            Self::Current => ffi::GTK_PRINT_PAGES_CURRENT,
9727            Self::Ranges => ffi::GTK_PRINT_PAGES_RANGES,
9728            Self::Selection => ffi::GTK_PRINT_PAGES_SELECTION,
9729            Self::__Unknown(value) => value,
9730        }
9731    }
9732}
9733
9734#[doc(hidden)]
9735impl FromGlib<ffi::GtkPrintPages> for PrintPages {
9736    #[inline]
9737    unsafe fn from_glib(value: ffi::GtkPrintPages) -> Self {
9738        skip_assert_initialized!();
9739
9740        match value {
9741            ffi::GTK_PRINT_PAGES_ALL => Self::All,
9742            ffi::GTK_PRINT_PAGES_CURRENT => Self::Current,
9743            ffi::GTK_PRINT_PAGES_RANGES => Self::Ranges,
9744            ffi::GTK_PRINT_PAGES_SELECTION => Self::Selection,
9745            value => Self::__Unknown(value),
9746        }
9747    }
9748}
9749
9750impl StaticType for PrintPages {
9751    #[inline]
9752    #[doc(alias = "gtk_print_pages_get_type")]
9753    fn static_type() -> glib::Type {
9754        unsafe { from_glib(ffi::gtk_print_pages_get_type()) }
9755    }
9756}
9757
9758impl glib::HasParamSpec for PrintPages {
9759    type ParamSpec = glib::ParamSpecEnum;
9760    type SetValue = Self;
9761    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9762
9763    fn param_spec_builder() -> Self::BuilderFn {
9764        Self::ParamSpec::builder_with_default
9765    }
9766}
9767
9768impl glib::value::ValueType for PrintPages {
9769    type Type = Self;
9770}
9771
9772unsafe impl<'a> glib::value::FromValue<'a> for PrintPages {
9773    type Checker = glib::value::GenericValueTypeChecker<Self>;
9774
9775    #[inline]
9776    unsafe fn from_value(value: &'a glib::Value) -> Self {
9777        skip_assert_initialized!();
9778        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9779    }
9780}
9781
9782impl ToValue for PrintPages {
9783    #[inline]
9784    fn to_value(&self) -> glib::Value {
9785        let mut value = glib::Value::for_value_type::<Self>();
9786        unsafe {
9787            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9788        }
9789        value
9790    }
9791
9792    #[inline]
9793    fn value_type(&self) -> glib::Type {
9794        Self::static_type()
9795    }
9796}
9797
9798impl From<PrintPages> for glib::Value {
9799    #[inline]
9800    fn from(v: PrintPages) -> Self {
9801        skip_assert_initialized!();
9802        ToValue::to_value(&v)
9803    }
9804}
9805
9806/// See also gtk_print_settings_set_quality().
9807#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9808#[non_exhaustive]
9809#[doc(alias = "GtkPrintQuality")]
9810pub enum PrintQuality {
9811    /// Low quality.
9812    #[doc(alias = "GTK_PRINT_QUALITY_LOW")]
9813    Low,
9814    /// Normal quality.
9815    #[doc(alias = "GTK_PRINT_QUALITY_NORMAL")]
9816    Normal,
9817    /// High quality.
9818    #[doc(alias = "GTK_PRINT_QUALITY_HIGH")]
9819    High,
9820    /// Draft quality.
9821    #[doc(alias = "GTK_PRINT_QUALITY_DRAFT")]
9822    Draft,
9823    #[doc(hidden)]
9824    __Unknown(i32),
9825}
9826
9827#[doc(hidden)]
9828impl IntoGlib for PrintQuality {
9829    type GlibType = ffi::GtkPrintQuality;
9830
9831    #[inline]
9832    fn into_glib(self) -> ffi::GtkPrintQuality {
9833        match self {
9834            Self::Low => ffi::GTK_PRINT_QUALITY_LOW,
9835            Self::Normal => ffi::GTK_PRINT_QUALITY_NORMAL,
9836            Self::High => ffi::GTK_PRINT_QUALITY_HIGH,
9837            Self::Draft => ffi::GTK_PRINT_QUALITY_DRAFT,
9838            Self::__Unknown(value) => value,
9839        }
9840    }
9841}
9842
9843#[doc(hidden)]
9844impl FromGlib<ffi::GtkPrintQuality> for PrintQuality {
9845    #[inline]
9846    unsafe fn from_glib(value: ffi::GtkPrintQuality) -> Self {
9847        skip_assert_initialized!();
9848
9849        match value {
9850            ffi::GTK_PRINT_QUALITY_LOW => Self::Low,
9851            ffi::GTK_PRINT_QUALITY_NORMAL => Self::Normal,
9852            ffi::GTK_PRINT_QUALITY_HIGH => Self::High,
9853            ffi::GTK_PRINT_QUALITY_DRAFT => Self::Draft,
9854            value => Self::__Unknown(value),
9855        }
9856    }
9857}
9858
9859impl StaticType for PrintQuality {
9860    #[inline]
9861    #[doc(alias = "gtk_print_quality_get_type")]
9862    fn static_type() -> glib::Type {
9863        unsafe { from_glib(ffi::gtk_print_quality_get_type()) }
9864    }
9865}
9866
9867impl glib::HasParamSpec for PrintQuality {
9868    type ParamSpec = glib::ParamSpecEnum;
9869    type SetValue = Self;
9870    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9871
9872    fn param_spec_builder() -> Self::BuilderFn {
9873        Self::ParamSpec::builder_with_default
9874    }
9875}
9876
9877impl glib::value::ValueType for PrintQuality {
9878    type Type = Self;
9879}
9880
9881unsafe impl<'a> glib::value::FromValue<'a> for PrintQuality {
9882    type Checker = glib::value::GenericValueTypeChecker<Self>;
9883
9884    #[inline]
9885    unsafe fn from_value(value: &'a glib::Value) -> Self {
9886        skip_assert_initialized!();
9887        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9888    }
9889}
9890
9891impl ToValue for PrintQuality {
9892    #[inline]
9893    fn to_value(&self) -> glib::Value {
9894        let mut value = glib::Value::for_value_type::<Self>();
9895        unsafe {
9896            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9897        }
9898        value
9899    }
9900
9901    #[inline]
9902    fn value_type(&self) -> glib::Type {
9903        Self::static_type()
9904    }
9905}
9906
9907impl From<PrintQuality> for glib::Value {
9908    #[inline]
9909    fn from(v: PrintQuality) -> Self {
9910        skip_assert_initialized!();
9911        ToValue::to_value(&v)
9912    }
9913}
9914
9915/// The status gives a rough indication of the completion of a running
9916/// print operation.
9917#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9918#[non_exhaustive]
9919#[doc(alias = "GtkPrintStatus")]
9920pub enum PrintStatus {
9921    /// The printing has not started yet; this
9922    ///   status is set initially, and while the print dialog is shown.
9923    #[doc(alias = "GTK_PRINT_STATUS_INITIAL")]
9924    Initial,
9925    /// This status is set while the begin-print
9926    ///   signal is emitted and during pagination.
9927    #[doc(alias = "GTK_PRINT_STATUS_PREPARING")]
9928    Preparing,
9929    /// This status is set while the
9930    ///   pages are being rendered.
9931    #[doc(alias = "GTK_PRINT_STATUS_GENERATING_DATA")]
9932    GeneratingData,
9933    /// The print job is being sent off to the
9934    ///   printer.
9935    #[doc(alias = "GTK_PRINT_STATUS_SENDING_DATA")]
9936    SendingData,
9937    /// The print job has been sent to the printer,
9938    ///   but is not printed for some reason, e.g. the printer may be stopped.
9939    #[doc(alias = "GTK_PRINT_STATUS_PENDING")]
9940    Pending,
9941    /// Some problem has occurred during
9942    ///   printing, e.g. a paper jam.
9943    #[doc(alias = "GTK_PRINT_STATUS_PENDING_ISSUE")]
9944    PendingIssue,
9945    /// The printer is processing the print job.
9946    #[doc(alias = "GTK_PRINT_STATUS_PRINTING")]
9947    Printing,
9948    /// The printing has been completed successfully.
9949    #[doc(alias = "GTK_PRINT_STATUS_FINISHED")]
9950    Finished,
9951    /// The printing has been aborted.
9952    #[doc(alias = "GTK_PRINT_STATUS_FINISHED_ABORTED")]
9953    FinishedAborted,
9954    #[doc(hidden)]
9955    __Unknown(i32),
9956}
9957
9958#[doc(hidden)]
9959impl IntoGlib for PrintStatus {
9960    type GlibType = ffi::GtkPrintStatus;
9961
9962    #[inline]
9963    fn into_glib(self) -> ffi::GtkPrintStatus {
9964        match self {
9965            Self::Initial => ffi::GTK_PRINT_STATUS_INITIAL,
9966            Self::Preparing => ffi::GTK_PRINT_STATUS_PREPARING,
9967            Self::GeneratingData => ffi::GTK_PRINT_STATUS_GENERATING_DATA,
9968            Self::SendingData => ffi::GTK_PRINT_STATUS_SENDING_DATA,
9969            Self::Pending => ffi::GTK_PRINT_STATUS_PENDING,
9970            Self::PendingIssue => ffi::GTK_PRINT_STATUS_PENDING_ISSUE,
9971            Self::Printing => ffi::GTK_PRINT_STATUS_PRINTING,
9972            Self::Finished => ffi::GTK_PRINT_STATUS_FINISHED,
9973            Self::FinishedAborted => ffi::GTK_PRINT_STATUS_FINISHED_ABORTED,
9974            Self::__Unknown(value) => value,
9975        }
9976    }
9977}
9978
9979#[doc(hidden)]
9980impl FromGlib<ffi::GtkPrintStatus> for PrintStatus {
9981    #[inline]
9982    unsafe fn from_glib(value: ffi::GtkPrintStatus) -> Self {
9983        skip_assert_initialized!();
9984
9985        match value {
9986            ffi::GTK_PRINT_STATUS_INITIAL => Self::Initial,
9987            ffi::GTK_PRINT_STATUS_PREPARING => Self::Preparing,
9988            ffi::GTK_PRINT_STATUS_GENERATING_DATA => Self::GeneratingData,
9989            ffi::GTK_PRINT_STATUS_SENDING_DATA => Self::SendingData,
9990            ffi::GTK_PRINT_STATUS_PENDING => Self::Pending,
9991            ffi::GTK_PRINT_STATUS_PENDING_ISSUE => Self::PendingIssue,
9992            ffi::GTK_PRINT_STATUS_PRINTING => Self::Printing,
9993            ffi::GTK_PRINT_STATUS_FINISHED => Self::Finished,
9994            ffi::GTK_PRINT_STATUS_FINISHED_ABORTED => Self::FinishedAborted,
9995            value => Self::__Unknown(value),
9996        }
9997    }
9998}
9999
10000impl StaticType for PrintStatus {
10001    #[inline]
10002    #[doc(alias = "gtk_print_status_get_type")]
10003    fn static_type() -> glib::Type {
10004        unsafe { from_glib(ffi::gtk_print_status_get_type()) }
10005    }
10006}
10007
10008impl glib::HasParamSpec for PrintStatus {
10009    type ParamSpec = glib::ParamSpecEnum;
10010    type SetValue = Self;
10011    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10012
10013    fn param_spec_builder() -> Self::BuilderFn {
10014        Self::ParamSpec::builder_with_default
10015    }
10016}
10017
10018impl glib::value::ValueType for PrintStatus {
10019    type Type = Self;
10020}
10021
10022unsafe impl<'a> glib::value::FromValue<'a> for PrintStatus {
10023    type Checker = glib::value::GenericValueTypeChecker<Self>;
10024
10025    #[inline]
10026    unsafe fn from_value(value: &'a glib::Value) -> Self {
10027        skip_assert_initialized!();
10028        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10029    }
10030}
10031
10032impl ToValue for PrintStatus {
10033    #[inline]
10034    fn to_value(&self) -> glib::Value {
10035        let mut value = glib::Value::for_value_type::<Self>();
10036        unsafe {
10037            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10038        }
10039        value
10040    }
10041
10042    #[inline]
10043    fn value_type(&self) -> glib::Type {
10044        Self::static_type()
10045    }
10046}
10047
10048impl From<PrintStatus> for glib::Value {
10049    #[inline]
10050    fn from(v: PrintStatus) -> Self {
10051        skip_assert_initialized!();
10052        ToValue::to_value(&v)
10053    }
10054}
10055
10056/// Describes limits of a [`EventController`][crate::EventController] for handling events
10057/// targeting other widgets.
10058#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10059#[non_exhaustive]
10060#[doc(alias = "GtkPropagationLimit")]
10061pub enum PropagationLimit {
10062    /// Events are handled regardless of what their
10063    ///   target is.
10064    #[doc(alias = "GTK_LIMIT_NONE")]
10065    None,
10066    /// Events are only handled if their target is in
10067    ///   the same [`Native`][crate::Native] (or widget with [`limit-events`][struct@crate::Widget#limit-events]
10068    ///   set) as the event controllers widget.
10069    ///   Note that some event types have two targets (origin and destination).
10070    #[doc(alias = "GTK_LIMIT_SAME_NATIVE")]
10071    SameNative,
10072    #[doc(hidden)]
10073    __Unknown(i32),
10074}
10075
10076#[doc(hidden)]
10077impl IntoGlib for PropagationLimit {
10078    type GlibType = ffi::GtkPropagationLimit;
10079
10080    #[inline]
10081    fn into_glib(self) -> ffi::GtkPropagationLimit {
10082        match self {
10083            Self::None => ffi::GTK_LIMIT_NONE,
10084            Self::SameNative => ffi::GTK_LIMIT_SAME_NATIVE,
10085            Self::__Unknown(value) => value,
10086        }
10087    }
10088}
10089
10090#[doc(hidden)]
10091impl FromGlib<ffi::GtkPropagationLimit> for PropagationLimit {
10092    #[inline]
10093    unsafe fn from_glib(value: ffi::GtkPropagationLimit) -> Self {
10094        skip_assert_initialized!();
10095
10096        match value {
10097            ffi::GTK_LIMIT_NONE => Self::None,
10098            ffi::GTK_LIMIT_SAME_NATIVE => Self::SameNative,
10099            value => Self::__Unknown(value),
10100        }
10101    }
10102}
10103
10104impl StaticType for PropagationLimit {
10105    #[inline]
10106    #[doc(alias = "gtk_propagation_limit_get_type")]
10107    fn static_type() -> glib::Type {
10108        unsafe { from_glib(ffi::gtk_propagation_limit_get_type()) }
10109    }
10110}
10111
10112impl glib::HasParamSpec for PropagationLimit {
10113    type ParamSpec = glib::ParamSpecEnum;
10114    type SetValue = Self;
10115    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10116
10117    fn param_spec_builder() -> Self::BuilderFn {
10118        Self::ParamSpec::builder_with_default
10119    }
10120}
10121
10122impl glib::value::ValueType for PropagationLimit {
10123    type Type = Self;
10124}
10125
10126unsafe impl<'a> glib::value::FromValue<'a> for PropagationLimit {
10127    type Checker = glib::value::GenericValueTypeChecker<Self>;
10128
10129    #[inline]
10130    unsafe fn from_value(value: &'a glib::Value) -> Self {
10131        skip_assert_initialized!();
10132        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10133    }
10134}
10135
10136impl ToValue for PropagationLimit {
10137    #[inline]
10138    fn to_value(&self) -> glib::Value {
10139        let mut value = glib::Value::for_value_type::<Self>();
10140        unsafe {
10141            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10142        }
10143        value
10144    }
10145
10146    #[inline]
10147    fn value_type(&self) -> glib::Type {
10148        Self::static_type()
10149    }
10150}
10151
10152impl From<PropagationLimit> for glib::Value {
10153    #[inline]
10154    fn from(v: PropagationLimit) -> Self {
10155        skip_assert_initialized!();
10156        ToValue::to_value(&v)
10157    }
10158}
10159
10160/// Describes the stage at which events are fed into a [`EventController`][crate::EventController].
10161#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10162#[non_exhaustive]
10163#[doc(alias = "GtkPropagationPhase")]
10164pub enum PropagationPhase {
10165    /// Events are not delivered.
10166    #[doc(alias = "GTK_PHASE_NONE")]
10167    None,
10168    /// Events are delivered in the capture phase. The
10169    ///   capture phase happens before the bubble phase, runs from the toplevel down
10170    ///   to the event widget. This option should only be used on containers that
10171    ///   might possibly handle events before their children do.
10172    #[doc(alias = "GTK_PHASE_CAPTURE")]
10173    Capture,
10174    /// Events are delivered in the bubble phase. The bubble
10175    ///   phase happens after the capture phase, and before the default handlers
10176    ///   are run. This phase runs from the event widget, up to the toplevel.
10177    #[doc(alias = "GTK_PHASE_BUBBLE")]
10178    Bubble,
10179    /// Events are delivered in the default widget event handlers,
10180    ///   note that widget implementations must chain up on button, motion, touch and
10181    ///   grab broken handlers for controllers in this phase to be run.
10182    #[doc(alias = "GTK_PHASE_TARGET")]
10183    Target,
10184    #[doc(hidden)]
10185    __Unknown(i32),
10186}
10187
10188#[doc(hidden)]
10189impl IntoGlib for PropagationPhase {
10190    type GlibType = ffi::GtkPropagationPhase;
10191
10192    #[inline]
10193    fn into_glib(self) -> ffi::GtkPropagationPhase {
10194        match self {
10195            Self::None => ffi::GTK_PHASE_NONE,
10196            Self::Capture => ffi::GTK_PHASE_CAPTURE,
10197            Self::Bubble => ffi::GTK_PHASE_BUBBLE,
10198            Self::Target => ffi::GTK_PHASE_TARGET,
10199            Self::__Unknown(value) => value,
10200        }
10201    }
10202}
10203
10204#[doc(hidden)]
10205impl FromGlib<ffi::GtkPropagationPhase> for PropagationPhase {
10206    #[inline]
10207    unsafe fn from_glib(value: ffi::GtkPropagationPhase) -> Self {
10208        skip_assert_initialized!();
10209
10210        match value {
10211            ffi::GTK_PHASE_NONE => Self::None,
10212            ffi::GTK_PHASE_CAPTURE => Self::Capture,
10213            ffi::GTK_PHASE_BUBBLE => Self::Bubble,
10214            ffi::GTK_PHASE_TARGET => Self::Target,
10215            value => Self::__Unknown(value),
10216        }
10217    }
10218}
10219
10220impl StaticType for PropagationPhase {
10221    #[inline]
10222    #[doc(alias = "gtk_propagation_phase_get_type")]
10223    fn static_type() -> glib::Type {
10224        unsafe { from_glib(ffi::gtk_propagation_phase_get_type()) }
10225    }
10226}
10227
10228impl glib::HasParamSpec for PropagationPhase {
10229    type ParamSpec = glib::ParamSpecEnum;
10230    type SetValue = Self;
10231    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10232
10233    fn param_spec_builder() -> Self::BuilderFn {
10234        Self::ParamSpec::builder_with_default
10235    }
10236}
10237
10238impl glib::value::ValueType for PropagationPhase {
10239    type Type = Self;
10240}
10241
10242unsafe impl<'a> glib::value::FromValue<'a> for PropagationPhase {
10243    type Checker = glib::value::GenericValueTypeChecker<Self>;
10244
10245    #[inline]
10246    unsafe fn from_value(value: &'a glib::Value) -> Self {
10247        skip_assert_initialized!();
10248        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10249    }
10250}
10251
10252impl ToValue for PropagationPhase {
10253    #[inline]
10254    fn to_value(&self) -> glib::Value {
10255        let mut value = glib::Value::for_value_type::<Self>();
10256        unsafe {
10257            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10258        }
10259        value
10260    }
10261
10262    #[inline]
10263    fn value_type(&self) -> glib::Type {
10264        Self::static_type()
10265    }
10266}
10267
10268impl From<PropagationPhase> for glib::Value {
10269    #[inline]
10270    fn from(v: PropagationPhase) -> Self {
10271        skip_assert_initialized!();
10272        ToValue::to_value(&v)
10273    }
10274}
10275
10276/// Error codes for [`RecentManager`][crate::RecentManager] operations
10277#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10278#[non_exhaustive]
10279#[doc(alias = "GtkRecentManagerError")]
10280pub enum RecentManagerError {
10281    /// the URI specified does not exists in
10282    ///   the recently used resources list.
10283    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_NOT_FOUND")]
10284    NotFound,
10285    /// the URI specified is not valid.
10286    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_INVALID_URI")]
10287    InvalidUri,
10288    /// the supplied string is not
10289    ///   UTF-8 encoded.
10290    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING")]
10291    InvalidEncoding,
10292    /// no application has registered
10293    ///   the specified item.
10294    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED")]
10295    NotRegistered,
10296    /// failure while reading the recently used
10297    ///   resources file.
10298    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_READ")]
10299    Read,
10300    /// failure while writing the recently used
10301    ///   resources file.
10302    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_WRITE")]
10303    Write,
10304    /// unspecified error.
10305    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_UNKNOWN")]
10306    Unknown,
10307    #[doc(hidden)]
10308    __Unknown(i32),
10309}
10310
10311#[doc(hidden)]
10312impl IntoGlib for RecentManagerError {
10313    type GlibType = ffi::GtkRecentManagerError;
10314
10315    #[inline]
10316    fn into_glib(self) -> ffi::GtkRecentManagerError {
10317        match self {
10318            Self::NotFound => ffi::GTK_RECENT_MANAGER_ERROR_NOT_FOUND,
10319            Self::InvalidUri => ffi::GTK_RECENT_MANAGER_ERROR_INVALID_URI,
10320            Self::InvalidEncoding => ffi::GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING,
10321            Self::NotRegistered => ffi::GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED,
10322            Self::Read => ffi::GTK_RECENT_MANAGER_ERROR_READ,
10323            Self::Write => ffi::GTK_RECENT_MANAGER_ERROR_WRITE,
10324            Self::Unknown => ffi::GTK_RECENT_MANAGER_ERROR_UNKNOWN,
10325            Self::__Unknown(value) => value,
10326        }
10327    }
10328}
10329
10330#[doc(hidden)]
10331impl FromGlib<ffi::GtkRecentManagerError> for RecentManagerError {
10332    #[inline]
10333    unsafe fn from_glib(value: ffi::GtkRecentManagerError) -> Self {
10334        skip_assert_initialized!();
10335
10336        match value {
10337            ffi::GTK_RECENT_MANAGER_ERROR_NOT_FOUND => Self::NotFound,
10338            ffi::GTK_RECENT_MANAGER_ERROR_INVALID_URI => Self::InvalidUri,
10339            ffi::GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING => Self::InvalidEncoding,
10340            ffi::GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED => Self::NotRegistered,
10341            ffi::GTK_RECENT_MANAGER_ERROR_READ => Self::Read,
10342            ffi::GTK_RECENT_MANAGER_ERROR_WRITE => Self::Write,
10343            ffi::GTK_RECENT_MANAGER_ERROR_UNKNOWN => Self::Unknown,
10344            value => Self::__Unknown(value),
10345        }
10346    }
10347}
10348
10349impl glib::error::ErrorDomain for RecentManagerError {
10350    #[inline]
10351    fn domain() -> glib::Quark {
10352        skip_assert_initialized!();
10353
10354        unsafe { from_glib(ffi::gtk_recent_manager_error_quark()) }
10355    }
10356
10357    #[inline]
10358    fn code(self) -> i32 {
10359        self.into_glib()
10360    }
10361
10362    #[inline]
10363    #[allow(clippy::match_single_binding)]
10364    fn from(code: i32) -> Option<Self> {
10365        skip_assert_initialized!();
10366        match unsafe { from_glib(code) } {
10367            value => Some(value),
10368        }
10369    }
10370}
10371
10372impl StaticType for RecentManagerError {
10373    #[inline]
10374    #[doc(alias = "gtk_recent_manager_error_get_type")]
10375    fn static_type() -> glib::Type {
10376        unsafe { from_glib(ffi::gtk_recent_manager_error_get_type()) }
10377    }
10378}
10379
10380impl glib::HasParamSpec for RecentManagerError {
10381    type ParamSpec = glib::ParamSpecEnum;
10382    type SetValue = Self;
10383    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10384
10385    fn param_spec_builder() -> Self::BuilderFn {
10386        Self::ParamSpec::builder_with_default
10387    }
10388}
10389
10390impl glib::value::ValueType for RecentManagerError {
10391    type Type = Self;
10392}
10393
10394unsafe impl<'a> glib::value::FromValue<'a> for RecentManagerError {
10395    type Checker = glib::value::GenericValueTypeChecker<Self>;
10396
10397    #[inline]
10398    unsafe fn from_value(value: &'a glib::Value) -> Self {
10399        skip_assert_initialized!();
10400        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10401    }
10402}
10403
10404impl ToValue for RecentManagerError {
10405    #[inline]
10406    fn to_value(&self) -> glib::Value {
10407        let mut value = glib::Value::for_value_type::<Self>();
10408        unsafe {
10409            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10410        }
10411        value
10412    }
10413
10414    #[inline]
10415    fn value_type(&self) -> glib::Type {
10416        Self::static_type()
10417    }
10418}
10419
10420impl From<RecentManagerError> for glib::Value {
10421    #[inline]
10422    fn from(v: RecentManagerError) -> Self {
10423        skip_assert_initialized!();
10424        ToValue::to_value(&v)
10425    }
10426}
10427
10428/// Values for the [`gtk-interface-reduced-motion`][struct@crate::Settings#gtk-interface-reduced-motion]
10429/// and [`prefers-reduced-motion`][struct@crate::CssProvider#prefers-reduced-motion] properties
10430/// that indicates the preferred level of motion animations.
10431///
10432/// This information can be used inside CSS via media queries.
10433#[cfg(feature = "v4_22")]
10434#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10435#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10436#[non_exhaustive]
10437#[doc(alias = "GtkReducedMotion")]
10438pub enum ReducedMotion {
10439    /// The user has made no preference known to the system
10440    #[doc(alias = "GTK_REDUCED_MOTION_NO_PREFERENCE")]
10441    NoPreference,
10442    /// The user has notified the system that they
10443    ///   prefer an interface that removes or replaces the types of motion-based
10444    ///   animation that either trigger discomfort for those with vestibular
10445    ///   motion sensitivity, or distraction for those with attention deficits
10446    #[doc(alias = "GTK_REDUCED_MOTION_REDUCE")]
10447    Reduce,
10448    #[doc(hidden)]
10449    __Unknown(i32),
10450}
10451
10452#[cfg(feature = "v4_22")]
10453#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10454#[doc(hidden)]
10455impl IntoGlib for ReducedMotion {
10456    type GlibType = ffi::GtkReducedMotion;
10457
10458    #[inline]
10459    fn into_glib(self) -> ffi::GtkReducedMotion {
10460        match self {
10461            Self::NoPreference => ffi::GTK_REDUCED_MOTION_NO_PREFERENCE,
10462            Self::Reduce => ffi::GTK_REDUCED_MOTION_REDUCE,
10463            Self::__Unknown(value) => value,
10464        }
10465    }
10466}
10467
10468#[cfg(feature = "v4_22")]
10469#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10470#[doc(hidden)]
10471impl FromGlib<ffi::GtkReducedMotion> for ReducedMotion {
10472    #[inline]
10473    unsafe fn from_glib(value: ffi::GtkReducedMotion) -> Self {
10474        skip_assert_initialized!();
10475
10476        match value {
10477            ffi::GTK_REDUCED_MOTION_NO_PREFERENCE => Self::NoPreference,
10478            ffi::GTK_REDUCED_MOTION_REDUCE => Self::Reduce,
10479            value => Self::__Unknown(value),
10480        }
10481    }
10482}
10483
10484#[cfg(feature = "v4_22")]
10485#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10486impl StaticType for ReducedMotion {
10487    #[inline]
10488    #[doc(alias = "gtk_reduced_motion_get_type")]
10489    fn static_type() -> glib::Type {
10490        unsafe { from_glib(ffi::gtk_reduced_motion_get_type()) }
10491    }
10492}
10493
10494#[cfg(feature = "v4_22")]
10495#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10496impl glib::HasParamSpec for ReducedMotion {
10497    type ParamSpec = glib::ParamSpecEnum;
10498    type SetValue = Self;
10499    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10500
10501    fn param_spec_builder() -> Self::BuilderFn {
10502        Self::ParamSpec::builder_with_default
10503    }
10504}
10505
10506#[cfg(feature = "v4_22")]
10507#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10508impl glib::value::ValueType for ReducedMotion {
10509    type Type = Self;
10510}
10511
10512#[cfg(feature = "v4_22")]
10513#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10514unsafe impl<'a> glib::value::FromValue<'a> for ReducedMotion {
10515    type Checker = glib::value::GenericValueTypeChecker<Self>;
10516
10517    #[inline]
10518    unsafe fn from_value(value: &'a glib::Value) -> Self {
10519        skip_assert_initialized!();
10520        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10521    }
10522}
10523
10524#[cfg(feature = "v4_22")]
10525#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10526impl ToValue for ReducedMotion {
10527    #[inline]
10528    fn to_value(&self) -> glib::Value {
10529        let mut value = glib::Value::for_value_type::<Self>();
10530        unsafe {
10531            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10532        }
10533        value
10534    }
10535
10536    #[inline]
10537    fn value_type(&self) -> glib::Type {
10538        Self::static_type()
10539    }
10540}
10541
10542#[cfg(feature = "v4_22")]
10543#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10544impl From<ReducedMotion> for glib::Value {
10545    #[inline]
10546    fn from(v: ReducedMotion) -> Self {
10547        skip_assert_initialized!();
10548        ToValue::to_value(&v)
10549    }
10550}
10551
10552/// Enumerates possible reasons for an application to restore saved state.
10553///
10554/// See [`restore-state`][struct@crate::Application#restore-state].
10555#[cfg(feature = "v4_22")]
10556#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10557#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10558#[non_exhaustive]
10559#[doc(alias = "GtkRestoreReason")]
10560pub enum RestoreReason {
10561    /// Don't restore anything
10562    #[doc(alias = "GTK_RESTORE_REASON_PRISTINE")]
10563    Pristine,
10564    /// This is normal launch. Restore as little as is reasonable
10565    #[doc(alias = "GTK_RESTORE_REASON_LAUNCH")]
10566    Launch,
10567    /// The application has crashed before. Try to restore the previous state
10568    #[doc(alias = "GTK_RESTORE_REASON_RECOVER")]
10569    Recover,
10570    /// This is a session restore. Restore the previous state as far as possible
10571    #[doc(alias = "GTK_RESTORE_REASON_RESTORE")]
10572    Restore,
10573    #[doc(hidden)]
10574    __Unknown(i32),
10575}
10576
10577#[cfg(feature = "v4_22")]
10578#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10579#[doc(hidden)]
10580impl IntoGlib for RestoreReason {
10581    type GlibType = ffi::GtkRestoreReason;
10582
10583    #[inline]
10584    fn into_glib(self) -> ffi::GtkRestoreReason {
10585        match self {
10586            Self::Pristine => ffi::GTK_RESTORE_REASON_PRISTINE,
10587            Self::Launch => ffi::GTK_RESTORE_REASON_LAUNCH,
10588            Self::Recover => ffi::GTK_RESTORE_REASON_RECOVER,
10589            Self::Restore => ffi::GTK_RESTORE_REASON_RESTORE,
10590            Self::__Unknown(value) => value,
10591        }
10592    }
10593}
10594
10595#[cfg(feature = "v4_22")]
10596#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10597#[doc(hidden)]
10598impl FromGlib<ffi::GtkRestoreReason> for RestoreReason {
10599    #[inline]
10600    unsafe fn from_glib(value: ffi::GtkRestoreReason) -> Self {
10601        skip_assert_initialized!();
10602
10603        match value {
10604            ffi::GTK_RESTORE_REASON_PRISTINE => Self::Pristine,
10605            ffi::GTK_RESTORE_REASON_LAUNCH => Self::Launch,
10606            ffi::GTK_RESTORE_REASON_RECOVER => Self::Recover,
10607            ffi::GTK_RESTORE_REASON_RESTORE => Self::Restore,
10608            value => Self::__Unknown(value),
10609        }
10610    }
10611}
10612
10613#[cfg(feature = "v4_22")]
10614#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10615impl StaticType for RestoreReason {
10616    #[inline]
10617    #[doc(alias = "gtk_restore_reason_get_type")]
10618    fn static_type() -> glib::Type {
10619        unsafe { from_glib(ffi::gtk_restore_reason_get_type()) }
10620    }
10621}
10622
10623#[cfg(feature = "v4_22")]
10624#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10625impl glib::HasParamSpec for RestoreReason {
10626    type ParamSpec = glib::ParamSpecEnum;
10627    type SetValue = Self;
10628    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10629
10630    fn param_spec_builder() -> Self::BuilderFn {
10631        Self::ParamSpec::builder_with_default
10632    }
10633}
10634
10635#[cfg(feature = "v4_22")]
10636#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10637impl glib::value::ValueType for RestoreReason {
10638    type Type = Self;
10639}
10640
10641#[cfg(feature = "v4_22")]
10642#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10643unsafe impl<'a> glib::value::FromValue<'a> for RestoreReason {
10644    type Checker = glib::value::GenericValueTypeChecker<Self>;
10645
10646    #[inline]
10647    unsafe fn from_value(value: &'a glib::Value) -> Self {
10648        skip_assert_initialized!();
10649        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10650    }
10651}
10652
10653#[cfg(feature = "v4_22")]
10654#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10655impl ToValue for RestoreReason {
10656    #[inline]
10657    fn to_value(&self) -> glib::Value {
10658        let mut value = glib::Value::for_value_type::<Self>();
10659        unsafe {
10660            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10661        }
10662        value
10663    }
10664
10665    #[inline]
10666    fn value_type(&self) -> glib::Type {
10667        Self::static_type()
10668    }
10669}
10670
10671#[cfg(feature = "v4_22")]
10672#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10673impl From<RestoreReason> for glib::Value {
10674    #[inline]
10675    fn from(v: RestoreReason) -> Self {
10676        skip_assert_initialized!();
10677        ToValue::to_value(&v)
10678    }
10679}
10680
10681/// These enumeration values describe the possible transitions
10682/// when the child of a [`Revealer`][crate::Revealer] widget is shown or hidden.
10683#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10684#[non_exhaustive]
10685#[doc(alias = "GtkRevealerTransitionType")]
10686pub enum RevealerTransitionType {
10687    /// No transition
10688    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_NONE")]
10689    None,
10690    /// Fade in
10691    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_CROSSFADE")]
10692    Crossfade,
10693    /// Slide in from the left
10694    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT")]
10695    SlideRight,
10696    /// Slide in from the right
10697    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT")]
10698    SlideLeft,
10699    /// Slide in from the bottom
10700    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP")]
10701    SlideUp,
10702    /// Slide in from the top
10703    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN")]
10704    SlideDown,
10705    /// Floop in from the left
10706    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT")]
10707    SwingRight,
10708    /// Floop in from the right
10709    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT")]
10710    SwingLeft,
10711    /// Floop in from the bottom
10712    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_UP")]
10713    SwingUp,
10714    /// Floop in from the top
10715    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN")]
10716    SwingDown,
10717    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10718    /// and [enum@Gtk.RevealerTransitionType.SLIDE_RIGHT].
10719    #[cfg(feature = "v4_22")]
10720    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10721    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT")]
10722    FadeSlideRight,
10723    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10724    /// and [enum@Gtk.RevealerTransitionType.SLIDE_LEFT].
10725    #[cfg(feature = "v4_22")]
10726    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10727    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT")]
10728    FadeSlideLeft,
10729    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10730    /// and [enum@Gtk.RevealerTransitionType.SLIDE_UP].
10731    #[cfg(feature = "v4_22")]
10732    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10733    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP")]
10734    FadeSlideUp,
10735    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10736    /// and [enum@Gtk.RevealerTransitionType.SLIDE_DOWN].
10737    #[cfg(feature = "v4_22")]
10738    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10739    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN")]
10740    FadeSlideDown,
10741    #[doc(hidden)]
10742    __Unknown(i32),
10743}
10744
10745#[doc(hidden)]
10746impl IntoGlib for RevealerTransitionType {
10747    type GlibType = ffi::GtkRevealerTransitionType;
10748
10749    fn into_glib(self) -> ffi::GtkRevealerTransitionType {
10750        match self {
10751            Self::None => ffi::GTK_REVEALER_TRANSITION_TYPE_NONE,
10752            Self::Crossfade => ffi::GTK_REVEALER_TRANSITION_TYPE_CROSSFADE,
10753            Self::SlideRight => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT,
10754            Self::SlideLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT,
10755            Self::SlideUp => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP,
10756            Self::SlideDown => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN,
10757            Self::SwingRight => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT,
10758            Self::SwingLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT,
10759            Self::SwingUp => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_UP,
10760            Self::SwingDown => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN,
10761            #[cfg(feature = "v4_22")]
10762            Self::FadeSlideRight => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT,
10763            #[cfg(feature = "v4_22")]
10764            Self::FadeSlideLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT,
10765            #[cfg(feature = "v4_22")]
10766            Self::FadeSlideUp => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP,
10767            #[cfg(feature = "v4_22")]
10768            Self::FadeSlideDown => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN,
10769            Self::__Unknown(value) => value,
10770        }
10771    }
10772}
10773
10774#[doc(hidden)]
10775impl FromGlib<ffi::GtkRevealerTransitionType> for RevealerTransitionType {
10776    unsafe fn from_glib(value: ffi::GtkRevealerTransitionType) -> Self {
10777        skip_assert_initialized!();
10778
10779        match value {
10780            ffi::GTK_REVEALER_TRANSITION_TYPE_NONE => Self::None,
10781            ffi::GTK_REVEALER_TRANSITION_TYPE_CROSSFADE => Self::Crossfade,
10782            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT => Self::SlideRight,
10783            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT => Self::SlideLeft,
10784            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP => Self::SlideUp,
10785            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN => Self::SlideDown,
10786            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT => Self::SwingRight,
10787            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT => Self::SwingLeft,
10788            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_UP => Self::SwingUp,
10789            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN => Self::SwingDown,
10790            #[cfg(feature = "v4_22")]
10791            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT => Self::FadeSlideRight,
10792            #[cfg(feature = "v4_22")]
10793            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT => Self::FadeSlideLeft,
10794            #[cfg(feature = "v4_22")]
10795            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP => Self::FadeSlideUp,
10796            #[cfg(feature = "v4_22")]
10797            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN => Self::FadeSlideDown,
10798            value => Self::__Unknown(value),
10799        }
10800    }
10801}
10802
10803impl StaticType for RevealerTransitionType {
10804    #[inline]
10805    #[doc(alias = "gtk_revealer_transition_type_get_type")]
10806    fn static_type() -> glib::Type {
10807        unsafe { from_glib(ffi::gtk_revealer_transition_type_get_type()) }
10808    }
10809}
10810
10811impl glib::HasParamSpec for RevealerTransitionType {
10812    type ParamSpec = glib::ParamSpecEnum;
10813    type SetValue = Self;
10814    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10815
10816    fn param_spec_builder() -> Self::BuilderFn {
10817        Self::ParamSpec::builder_with_default
10818    }
10819}
10820
10821impl glib::value::ValueType for RevealerTransitionType {
10822    type Type = Self;
10823}
10824
10825unsafe impl<'a> glib::value::FromValue<'a> for RevealerTransitionType {
10826    type Checker = glib::value::GenericValueTypeChecker<Self>;
10827
10828    #[inline]
10829    unsafe fn from_value(value: &'a glib::Value) -> Self {
10830        skip_assert_initialized!();
10831        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10832    }
10833}
10834
10835impl ToValue for RevealerTransitionType {
10836    #[inline]
10837    fn to_value(&self) -> glib::Value {
10838        let mut value = glib::Value::for_value_type::<Self>();
10839        unsafe {
10840            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10841        }
10842        value
10843    }
10844
10845    #[inline]
10846    fn value_type(&self) -> glib::Type {
10847        Self::static_type()
10848    }
10849}
10850
10851impl From<RevealerTransitionType> for glib::Value {
10852    #[inline]
10853    fn from(v: RevealerTransitionType) -> Self {
10854        skip_assert_initialized!();
10855        ToValue::to_value(&v)
10856    }
10857}
10858
10859/// Passed as argument to various keybinding signals.
10860#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10861#[non_exhaustive]
10862#[doc(alias = "GtkScrollStep")]
10863pub enum ScrollStep {
10864    /// Scroll in steps.
10865    #[doc(alias = "GTK_SCROLL_STEPS")]
10866    Steps,
10867    /// Scroll by pages.
10868    #[doc(alias = "GTK_SCROLL_PAGES")]
10869    Pages,
10870    /// Scroll to ends.
10871    #[doc(alias = "GTK_SCROLL_ENDS")]
10872    Ends,
10873    /// Scroll in horizontal steps.
10874    #[doc(alias = "GTK_SCROLL_HORIZONTAL_STEPS")]
10875    HorizontalSteps,
10876    /// Scroll by horizontal pages.
10877    #[doc(alias = "GTK_SCROLL_HORIZONTAL_PAGES")]
10878    HorizontalPages,
10879    /// Scroll to the horizontal ends.
10880    #[doc(alias = "GTK_SCROLL_HORIZONTAL_ENDS")]
10881    HorizontalEnds,
10882    #[doc(hidden)]
10883    __Unknown(i32),
10884}
10885
10886#[doc(hidden)]
10887impl IntoGlib for ScrollStep {
10888    type GlibType = ffi::GtkScrollStep;
10889
10890    #[inline]
10891    fn into_glib(self) -> ffi::GtkScrollStep {
10892        match self {
10893            Self::Steps => ffi::GTK_SCROLL_STEPS,
10894            Self::Pages => ffi::GTK_SCROLL_PAGES,
10895            Self::Ends => ffi::GTK_SCROLL_ENDS,
10896            Self::HorizontalSteps => ffi::GTK_SCROLL_HORIZONTAL_STEPS,
10897            Self::HorizontalPages => ffi::GTK_SCROLL_HORIZONTAL_PAGES,
10898            Self::HorizontalEnds => ffi::GTK_SCROLL_HORIZONTAL_ENDS,
10899            Self::__Unknown(value) => value,
10900        }
10901    }
10902}
10903
10904#[doc(hidden)]
10905impl FromGlib<ffi::GtkScrollStep> for ScrollStep {
10906    #[inline]
10907    unsafe fn from_glib(value: ffi::GtkScrollStep) -> Self {
10908        skip_assert_initialized!();
10909
10910        match value {
10911            ffi::GTK_SCROLL_STEPS => Self::Steps,
10912            ffi::GTK_SCROLL_PAGES => Self::Pages,
10913            ffi::GTK_SCROLL_ENDS => Self::Ends,
10914            ffi::GTK_SCROLL_HORIZONTAL_STEPS => Self::HorizontalSteps,
10915            ffi::GTK_SCROLL_HORIZONTAL_PAGES => Self::HorizontalPages,
10916            ffi::GTK_SCROLL_HORIZONTAL_ENDS => Self::HorizontalEnds,
10917            value => Self::__Unknown(value),
10918        }
10919    }
10920}
10921
10922impl StaticType for ScrollStep {
10923    #[inline]
10924    #[doc(alias = "gtk_scroll_step_get_type")]
10925    fn static_type() -> glib::Type {
10926        unsafe { from_glib(ffi::gtk_scroll_step_get_type()) }
10927    }
10928}
10929
10930impl glib::HasParamSpec for ScrollStep {
10931    type ParamSpec = glib::ParamSpecEnum;
10932    type SetValue = Self;
10933    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10934
10935    fn param_spec_builder() -> Self::BuilderFn {
10936        Self::ParamSpec::builder_with_default
10937    }
10938}
10939
10940impl glib::value::ValueType for ScrollStep {
10941    type Type = Self;
10942}
10943
10944unsafe impl<'a> glib::value::FromValue<'a> for ScrollStep {
10945    type Checker = glib::value::GenericValueTypeChecker<Self>;
10946
10947    #[inline]
10948    unsafe fn from_value(value: &'a glib::Value) -> Self {
10949        skip_assert_initialized!();
10950        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
10951    }
10952}
10953
10954impl ToValue for ScrollStep {
10955    #[inline]
10956    fn to_value(&self) -> glib::Value {
10957        let mut value = glib::Value::for_value_type::<Self>();
10958        unsafe {
10959            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10960        }
10961        value
10962    }
10963
10964    #[inline]
10965    fn value_type(&self) -> glib::Type {
10966        Self::static_type()
10967    }
10968}
10969
10970impl From<ScrollStep> for glib::Value {
10971    #[inline]
10972    fn from(v: ScrollStep) -> Self {
10973        skip_assert_initialized!();
10974        ToValue::to_value(&v)
10975    }
10976}
10977
10978/// Scrolling types.
10979#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10980#[non_exhaustive]
10981#[doc(alias = "GtkScrollType")]
10982pub enum ScrollType {
10983    /// No scrolling.
10984    #[doc(alias = "GTK_SCROLL_NONE")]
10985    None,
10986    /// Jump to new location.
10987    #[doc(alias = "GTK_SCROLL_JUMP")]
10988    Jump,
10989    /// Step backward.
10990    #[doc(alias = "GTK_SCROLL_STEP_BACKWARD")]
10991    StepBackward,
10992    /// Step forward.
10993    #[doc(alias = "GTK_SCROLL_STEP_FORWARD")]
10994    StepForward,
10995    /// Page backward.
10996    #[doc(alias = "GTK_SCROLL_PAGE_BACKWARD")]
10997    PageBackward,
10998    /// Page forward.
10999    #[doc(alias = "GTK_SCROLL_PAGE_FORWARD")]
11000    PageForward,
11001    /// Step up.
11002    #[doc(alias = "GTK_SCROLL_STEP_UP")]
11003    StepUp,
11004    /// Step down.
11005    #[doc(alias = "GTK_SCROLL_STEP_DOWN")]
11006    StepDown,
11007    /// Page up.
11008    #[doc(alias = "GTK_SCROLL_PAGE_UP")]
11009    PageUp,
11010    /// Page down.
11011    #[doc(alias = "GTK_SCROLL_PAGE_DOWN")]
11012    PageDown,
11013    /// Step to the left.
11014    #[doc(alias = "GTK_SCROLL_STEP_LEFT")]
11015    StepLeft,
11016    /// Step to the right.
11017    #[doc(alias = "GTK_SCROLL_STEP_RIGHT")]
11018    StepRight,
11019    /// Page to the left.
11020    #[doc(alias = "GTK_SCROLL_PAGE_LEFT")]
11021    PageLeft,
11022    /// Page to the right.
11023    #[doc(alias = "GTK_SCROLL_PAGE_RIGHT")]
11024    PageRight,
11025    /// Scroll to start.
11026    #[doc(alias = "GTK_SCROLL_START")]
11027    Start,
11028    /// Scroll to end.
11029    #[doc(alias = "GTK_SCROLL_END")]
11030    End,
11031    #[doc(hidden)]
11032    __Unknown(i32),
11033}
11034
11035#[doc(hidden)]
11036impl IntoGlib for ScrollType {
11037    type GlibType = ffi::GtkScrollType;
11038
11039    fn into_glib(self) -> ffi::GtkScrollType {
11040        match self {
11041            Self::None => ffi::GTK_SCROLL_NONE,
11042            Self::Jump => ffi::GTK_SCROLL_JUMP,
11043            Self::StepBackward => ffi::GTK_SCROLL_STEP_BACKWARD,
11044            Self::StepForward => ffi::GTK_SCROLL_STEP_FORWARD,
11045            Self::PageBackward => ffi::GTK_SCROLL_PAGE_BACKWARD,
11046            Self::PageForward => ffi::GTK_SCROLL_PAGE_FORWARD,
11047            Self::StepUp => ffi::GTK_SCROLL_STEP_UP,
11048            Self::StepDown => ffi::GTK_SCROLL_STEP_DOWN,
11049            Self::PageUp => ffi::GTK_SCROLL_PAGE_UP,
11050            Self::PageDown => ffi::GTK_SCROLL_PAGE_DOWN,
11051            Self::StepLeft => ffi::GTK_SCROLL_STEP_LEFT,
11052            Self::StepRight => ffi::GTK_SCROLL_STEP_RIGHT,
11053            Self::PageLeft => ffi::GTK_SCROLL_PAGE_LEFT,
11054            Self::PageRight => ffi::GTK_SCROLL_PAGE_RIGHT,
11055            Self::Start => ffi::GTK_SCROLL_START,
11056            Self::End => ffi::GTK_SCROLL_END,
11057            Self::__Unknown(value) => value,
11058        }
11059    }
11060}
11061
11062#[doc(hidden)]
11063impl FromGlib<ffi::GtkScrollType> for ScrollType {
11064    unsafe fn from_glib(value: ffi::GtkScrollType) -> Self {
11065        skip_assert_initialized!();
11066
11067        match value {
11068            ffi::GTK_SCROLL_NONE => Self::None,
11069            ffi::GTK_SCROLL_JUMP => Self::Jump,
11070            ffi::GTK_SCROLL_STEP_BACKWARD => Self::StepBackward,
11071            ffi::GTK_SCROLL_STEP_FORWARD => Self::StepForward,
11072            ffi::GTK_SCROLL_PAGE_BACKWARD => Self::PageBackward,
11073            ffi::GTK_SCROLL_PAGE_FORWARD => Self::PageForward,
11074            ffi::GTK_SCROLL_STEP_UP => Self::StepUp,
11075            ffi::GTK_SCROLL_STEP_DOWN => Self::StepDown,
11076            ffi::GTK_SCROLL_PAGE_UP => Self::PageUp,
11077            ffi::GTK_SCROLL_PAGE_DOWN => Self::PageDown,
11078            ffi::GTK_SCROLL_STEP_LEFT => Self::StepLeft,
11079            ffi::GTK_SCROLL_STEP_RIGHT => Self::StepRight,
11080            ffi::GTK_SCROLL_PAGE_LEFT => Self::PageLeft,
11081            ffi::GTK_SCROLL_PAGE_RIGHT => Self::PageRight,
11082            ffi::GTK_SCROLL_START => Self::Start,
11083            ffi::GTK_SCROLL_END => Self::End,
11084            value => Self::__Unknown(value),
11085        }
11086    }
11087}
11088
11089impl StaticType for ScrollType {
11090    #[inline]
11091    #[doc(alias = "gtk_scroll_type_get_type")]
11092    fn static_type() -> glib::Type {
11093        unsafe { from_glib(ffi::gtk_scroll_type_get_type()) }
11094    }
11095}
11096
11097impl glib::HasParamSpec for ScrollType {
11098    type ParamSpec = glib::ParamSpecEnum;
11099    type SetValue = Self;
11100    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11101
11102    fn param_spec_builder() -> Self::BuilderFn {
11103        Self::ParamSpec::builder_with_default
11104    }
11105}
11106
11107impl glib::value::ValueType for ScrollType {
11108    type Type = Self;
11109}
11110
11111unsafe impl<'a> glib::value::FromValue<'a> for ScrollType {
11112    type Checker = glib::value::GenericValueTypeChecker<Self>;
11113
11114    #[inline]
11115    unsafe fn from_value(value: &'a glib::Value) -> Self {
11116        skip_assert_initialized!();
11117        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11118    }
11119}
11120
11121impl ToValue for ScrollType {
11122    #[inline]
11123    fn to_value(&self) -> glib::Value {
11124        let mut value = glib::Value::for_value_type::<Self>();
11125        unsafe {
11126            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11127        }
11128        value
11129    }
11130
11131    #[inline]
11132    fn value_type(&self) -> glib::Type {
11133        Self::static_type()
11134    }
11135}
11136
11137impl From<ScrollType> for glib::Value {
11138    #[inline]
11139    fn from(v: ScrollType) -> Self {
11140        skip_assert_initialized!();
11141        ToValue::to_value(&v)
11142    }
11143}
11144
11145/// Defines the policy to be used in a scrollable widget when updating
11146/// the scrolled window adjustments in a given orientation.
11147#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11148#[non_exhaustive]
11149#[doc(alias = "GtkScrollablePolicy")]
11150pub enum ScrollablePolicy {
11151    /// Scrollable adjustments are based on the minimum size
11152    #[doc(alias = "GTK_SCROLL_MINIMUM")]
11153    Minimum,
11154    /// Scrollable adjustments are based on the natural size
11155    #[doc(alias = "GTK_SCROLL_NATURAL")]
11156    Natural,
11157    #[doc(hidden)]
11158    __Unknown(i32),
11159}
11160
11161#[doc(hidden)]
11162impl IntoGlib for ScrollablePolicy {
11163    type GlibType = ffi::GtkScrollablePolicy;
11164
11165    #[inline]
11166    fn into_glib(self) -> ffi::GtkScrollablePolicy {
11167        match self {
11168            Self::Minimum => ffi::GTK_SCROLL_MINIMUM,
11169            Self::Natural => ffi::GTK_SCROLL_NATURAL,
11170            Self::__Unknown(value) => value,
11171        }
11172    }
11173}
11174
11175#[doc(hidden)]
11176impl FromGlib<ffi::GtkScrollablePolicy> for ScrollablePolicy {
11177    #[inline]
11178    unsafe fn from_glib(value: ffi::GtkScrollablePolicy) -> Self {
11179        skip_assert_initialized!();
11180
11181        match value {
11182            ffi::GTK_SCROLL_MINIMUM => Self::Minimum,
11183            ffi::GTK_SCROLL_NATURAL => Self::Natural,
11184            value => Self::__Unknown(value),
11185        }
11186    }
11187}
11188
11189impl StaticType for ScrollablePolicy {
11190    #[inline]
11191    #[doc(alias = "gtk_scrollable_policy_get_type")]
11192    fn static_type() -> glib::Type {
11193        unsafe { from_glib(ffi::gtk_scrollable_policy_get_type()) }
11194    }
11195}
11196
11197impl glib::HasParamSpec for ScrollablePolicy {
11198    type ParamSpec = glib::ParamSpecEnum;
11199    type SetValue = Self;
11200    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11201
11202    fn param_spec_builder() -> Self::BuilderFn {
11203        Self::ParamSpec::builder_with_default
11204    }
11205}
11206
11207impl glib::value::ValueType for ScrollablePolicy {
11208    type Type = Self;
11209}
11210
11211unsafe impl<'a> glib::value::FromValue<'a> for ScrollablePolicy {
11212    type Checker = glib::value::GenericValueTypeChecker<Self>;
11213
11214    #[inline]
11215    unsafe fn from_value(value: &'a glib::Value) -> Self {
11216        skip_assert_initialized!();
11217        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11218    }
11219}
11220
11221impl ToValue for ScrollablePolicy {
11222    #[inline]
11223    fn to_value(&self) -> glib::Value {
11224        let mut value = glib::Value::for_value_type::<Self>();
11225        unsafe {
11226            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11227        }
11228        value
11229    }
11230
11231    #[inline]
11232    fn value_type(&self) -> glib::Type {
11233        Self::static_type()
11234    }
11235}
11236
11237impl From<ScrollablePolicy> for glib::Value {
11238    #[inline]
11239    fn from(v: ScrollablePolicy) -> Self {
11240        skip_assert_initialized!();
11241        ToValue::to_value(&v)
11242    }
11243}
11244
11245/// Used to control what selections users are allowed to make.
11246#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11247#[non_exhaustive]
11248#[doc(alias = "GtkSelectionMode")]
11249pub enum SelectionMode {
11250    /// No selection is possible.
11251    #[doc(alias = "GTK_SELECTION_NONE")]
11252    None,
11253    /// Zero or one element may be selected.
11254    #[doc(alias = "GTK_SELECTION_SINGLE")]
11255    Single,
11256    /// Exactly one element is selected.
11257    ///   In some circumstances, such as initially or during a search
11258    ///   operation, it’s possible for no element to be selected with
11259    ///   [`Browse`][Self::Browse]. What is really enforced is that the user
11260    ///   can’t deselect a currently selected element except by selecting
11261    ///   another element.
11262    #[doc(alias = "GTK_SELECTION_BROWSE")]
11263    Browse,
11264    /// Any number of elements may be selected.
11265    ///   The Ctrl key may be used to enlarge the selection, and Shift
11266    ///   key to select between the focus and the child pointed to.
11267    ///   Some widgets may also allow Click-drag to select a range of elements.
11268    #[doc(alias = "GTK_SELECTION_MULTIPLE")]
11269    Multiple,
11270    #[doc(hidden)]
11271    __Unknown(i32),
11272}
11273
11274#[doc(hidden)]
11275impl IntoGlib for SelectionMode {
11276    type GlibType = ffi::GtkSelectionMode;
11277
11278    #[inline]
11279    fn into_glib(self) -> ffi::GtkSelectionMode {
11280        match self {
11281            Self::None => ffi::GTK_SELECTION_NONE,
11282            Self::Single => ffi::GTK_SELECTION_SINGLE,
11283            Self::Browse => ffi::GTK_SELECTION_BROWSE,
11284            Self::Multiple => ffi::GTK_SELECTION_MULTIPLE,
11285            Self::__Unknown(value) => value,
11286        }
11287    }
11288}
11289
11290#[doc(hidden)]
11291impl FromGlib<ffi::GtkSelectionMode> for SelectionMode {
11292    #[inline]
11293    unsafe fn from_glib(value: ffi::GtkSelectionMode) -> Self {
11294        skip_assert_initialized!();
11295
11296        match value {
11297            ffi::GTK_SELECTION_NONE => Self::None,
11298            ffi::GTK_SELECTION_SINGLE => Self::Single,
11299            ffi::GTK_SELECTION_BROWSE => Self::Browse,
11300            ffi::GTK_SELECTION_MULTIPLE => Self::Multiple,
11301            value => Self::__Unknown(value),
11302        }
11303    }
11304}
11305
11306impl StaticType for SelectionMode {
11307    #[inline]
11308    #[doc(alias = "gtk_selection_mode_get_type")]
11309    fn static_type() -> glib::Type {
11310        unsafe { from_glib(ffi::gtk_selection_mode_get_type()) }
11311    }
11312}
11313
11314impl glib::HasParamSpec for SelectionMode {
11315    type ParamSpec = glib::ParamSpecEnum;
11316    type SetValue = Self;
11317    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11318
11319    fn param_spec_builder() -> Self::BuilderFn {
11320        Self::ParamSpec::builder_with_default
11321    }
11322}
11323
11324impl glib::value::ValueType for SelectionMode {
11325    type Type = Self;
11326}
11327
11328unsafe impl<'a> glib::value::FromValue<'a> for SelectionMode {
11329    type Checker = glib::value::GenericValueTypeChecker<Self>;
11330
11331    #[inline]
11332    unsafe fn from_value(value: &'a glib::Value) -> Self {
11333        skip_assert_initialized!();
11334        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11335    }
11336}
11337
11338impl ToValue for SelectionMode {
11339    #[inline]
11340    fn to_value(&self) -> glib::Value {
11341        let mut value = glib::Value::for_value_type::<Self>();
11342        unsafe {
11343            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11344        }
11345        value
11346    }
11347
11348    #[inline]
11349    fn value_type(&self) -> glib::Type {
11350        Self::static_type()
11351    }
11352}
11353
11354impl From<SelectionMode> for glib::Value {
11355    #[inline]
11356    fn from(v: SelectionMode) -> Self {
11357        skip_assert_initialized!();
11358        ToValue::to_value(&v)
11359    }
11360}
11361
11362/// Determines how GTK handles the sensitivity of various controls,
11363/// such as combo box buttons.
11364#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11365#[non_exhaustive]
11366#[doc(alias = "GtkSensitivityType")]
11367pub enum SensitivityType {
11368    /// The control is made insensitive if no
11369    ///   action can be triggered
11370    #[doc(alias = "GTK_SENSITIVITY_AUTO")]
11371    Auto,
11372    /// The control is always sensitive
11373    #[doc(alias = "GTK_SENSITIVITY_ON")]
11374    On,
11375    /// The control is always insensitive
11376    #[doc(alias = "GTK_SENSITIVITY_OFF")]
11377    Off,
11378    #[doc(hidden)]
11379    __Unknown(i32),
11380}
11381
11382#[doc(hidden)]
11383impl IntoGlib for SensitivityType {
11384    type GlibType = ffi::GtkSensitivityType;
11385
11386    #[inline]
11387    fn into_glib(self) -> ffi::GtkSensitivityType {
11388        match self {
11389            Self::Auto => ffi::GTK_SENSITIVITY_AUTO,
11390            Self::On => ffi::GTK_SENSITIVITY_ON,
11391            Self::Off => ffi::GTK_SENSITIVITY_OFF,
11392            Self::__Unknown(value) => value,
11393        }
11394    }
11395}
11396
11397#[doc(hidden)]
11398impl FromGlib<ffi::GtkSensitivityType> for SensitivityType {
11399    #[inline]
11400    unsafe fn from_glib(value: ffi::GtkSensitivityType) -> Self {
11401        skip_assert_initialized!();
11402
11403        match value {
11404            ffi::GTK_SENSITIVITY_AUTO => Self::Auto,
11405            ffi::GTK_SENSITIVITY_ON => Self::On,
11406            ffi::GTK_SENSITIVITY_OFF => Self::Off,
11407            value => Self::__Unknown(value),
11408        }
11409    }
11410}
11411
11412impl StaticType for SensitivityType {
11413    #[inline]
11414    #[doc(alias = "gtk_sensitivity_type_get_type")]
11415    fn static_type() -> glib::Type {
11416        unsafe { from_glib(ffi::gtk_sensitivity_type_get_type()) }
11417    }
11418}
11419
11420impl glib::HasParamSpec for SensitivityType {
11421    type ParamSpec = glib::ParamSpecEnum;
11422    type SetValue = Self;
11423    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11424
11425    fn param_spec_builder() -> Self::BuilderFn {
11426        Self::ParamSpec::builder_with_default
11427    }
11428}
11429
11430impl glib::value::ValueType for SensitivityType {
11431    type Type = Self;
11432}
11433
11434unsafe impl<'a> glib::value::FromValue<'a> for SensitivityType {
11435    type Checker = glib::value::GenericValueTypeChecker<Self>;
11436
11437    #[inline]
11438    unsafe fn from_value(value: &'a glib::Value) -> Self {
11439        skip_assert_initialized!();
11440        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11441    }
11442}
11443
11444impl ToValue for SensitivityType {
11445    #[inline]
11446    fn to_value(&self) -> glib::Value {
11447        let mut value = glib::Value::for_value_type::<Self>();
11448        unsafe {
11449            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11450        }
11451        value
11452    }
11453
11454    #[inline]
11455    fn value_type(&self) -> glib::Type {
11456        Self::static_type()
11457    }
11458}
11459
11460impl From<SensitivityType> for glib::Value {
11461    #[inline]
11462    fn from(v: SensitivityType) -> Self {
11463        skip_assert_initialized!();
11464        ToValue::to_value(&v)
11465    }
11466}
11467
11468/// Describes where [`Shortcut`][crate::Shortcut]s added to a
11469/// [`ShortcutController`][crate::ShortcutController] get handled.
11470#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11471#[non_exhaustive]
11472#[doc(alias = "GtkShortcutScope")]
11473pub enum ShortcutScope {
11474    /// Shortcuts are handled inside
11475    ///   the widget the controller belongs to.
11476    #[doc(alias = "GTK_SHORTCUT_SCOPE_LOCAL")]
11477    Local,
11478    /// Shortcuts are handled by
11479    ///   the first ancestor that is a [`ShortcutManager`][crate::ShortcutManager]
11480    #[doc(alias = "GTK_SHORTCUT_SCOPE_MANAGED")]
11481    Managed,
11482    /// Shortcuts are handled by
11483    ///   the root widget.
11484    #[doc(alias = "GTK_SHORTCUT_SCOPE_GLOBAL")]
11485    Global,
11486    #[doc(hidden)]
11487    __Unknown(i32),
11488}
11489
11490#[doc(hidden)]
11491impl IntoGlib for ShortcutScope {
11492    type GlibType = ffi::GtkShortcutScope;
11493
11494    #[inline]
11495    fn into_glib(self) -> ffi::GtkShortcutScope {
11496        match self {
11497            Self::Local => ffi::GTK_SHORTCUT_SCOPE_LOCAL,
11498            Self::Managed => ffi::GTK_SHORTCUT_SCOPE_MANAGED,
11499            Self::Global => ffi::GTK_SHORTCUT_SCOPE_GLOBAL,
11500            Self::__Unknown(value) => value,
11501        }
11502    }
11503}
11504
11505#[doc(hidden)]
11506impl FromGlib<ffi::GtkShortcutScope> for ShortcutScope {
11507    #[inline]
11508    unsafe fn from_glib(value: ffi::GtkShortcutScope) -> Self {
11509        skip_assert_initialized!();
11510
11511        match value {
11512            ffi::GTK_SHORTCUT_SCOPE_LOCAL => Self::Local,
11513            ffi::GTK_SHORTCUT_SCOPE_MANAGED => Self::Managed,
11514            ffi::GTK_SHORTCUT_SCOPE_GLOBAL => Self::Global,
11515            value => Self::__Unknown(value),
11516        }
11517    }
11518}
11519
11520impl StaticType for ShortcutScope {
11521    #[inline]
11522    #[doc(alias = "gtk_shortcut_scope_get_type")]
11523    fn static_type() -> glib::Type {
11524        unsafe { from_glib(ffi::gtk_shortcut_scope_get_type()) }
11525    }
11526}
11527
11528impl glib::HasParamSpec for ShortcutScope {
11529    type ParamSpec = glib::ParamSpecEnum;
11530    type SetValue = Self;
11531    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11532
11533    fn param_spec_builder() -> Self::BuilderFn {
11534        Self::ParamSpec::builder_with_default
11535    }
11536}
11537
11538impl glib::value::ValueType for ShortcutScope {
11539    type Type = Self;
11540}
11541
11542unsafe impl<'a> glib::value::FromValue<'a> for ShortcutScope {
11543    type Checker = glib::value::GenericValueTypeChecker<Self>;
11544
11545    #[inline]
11546    unsafe fn from_value(value: &'a glib::Value) -> Self {
11547        skip_assert_initialized!();
11548        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11549    }
11550}
11551
11552impl ToValue for ShortcutScope {
11553    #[inline]
11554    fn to_value(&self) -> glib::Value {
11555        let mut value = glib::Value::for_value_type::<Self>();
11556        unsafe {
11557            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11558        }
11559        value
11560    }
11561
11562    #[inline]
11563    fn value_type(&self) -> glib::Type {
11564        Self::static_type()
11565    }
11566}
11567
11568impl From<ShortcutScope> for glib::Value {
11569    #[inline]
11570    fn from(v: ShortcutScope) -> Self {
11571        skip_assert_initialized!();
11572        ToValue::to_value(&v)
11573    }
11574}
11575
11576/// GtkShortcutType specifies the kind of shortcut that is being described.
11577///
11578/// More values may be added to this enumeration over time.
11579#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11580#[non_exhaustive]
11581#[doc(alias = "GtkShortcutType")]
11582pub enum ShortcutType {
11583    /// The shortcut is a keyboard accelerator. The GtkShortcutsShortcut:accelerator
11584    ///   property will be used.
11585    #[doc(alias = "GTK_SHORTCUT_ACCELERATOR")]
11586    Accelerator,
11587    /// The shortcut is a pinch gesture. GTK provides an icon and subtitle.
11588    #[doc(alias = "GTK_SHORTCUT_GESTURE_PINCH")]
11589    GesturePinch,
11590    /// The shortcut is a stretch gesture. GTK provides an icon and subtitle.
11591    #[doc(alias = "GTK_SHORTCUT_GESTURE_STRETCH")]
11592    GestureStretch,
11593    /// The shortcut is a clockwise rotation gesture. GTK provides an icon and subtitle.
11594    #[doc(alias = "GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE")]
11595    GestureRotateClockwise,
11596    /// The shortcut is a counterclockwise rotation gesture. GTK provides an icon and subtitle.
11597    #[doc(alias = "GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE")]
11598    GestureRotateCounterclockwise,
11599    /// The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
11600    #[doc(alias = "GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT")]
11601    GestureTwoFingerSwipeLeft,
11602    /// The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
11603    #[doc(alias = "GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT")]
11604    GestureTwoFingerSwipeRight,
11605    /// The shortcut is a gesture. The GtkShortcutsShortcut:icon property will be
11606    ///   used.
11607    #[doc(alias = "GTK_SHORTCUT_GESTURE")]
11608    Gesture,
11609    /// The shortcut is a swipe gesture. GTK provides an icon and subtitle.
11610    #[doc(alias = "GTK_SHORTCUT_GESTURE_SWIPE_LEFT")]
11611    GestureSwipeLeft,
11612    /// The shortcut is a swipe gesture. GTK provides an icon and subtitle.
11613    #[doc(alias = "GTK_SHORTCUT_GESTURE_SWIPE_RIGHT")]
11614    GestureSwipeRight,
11615    #[doc(hidden)]
11616    __Unknown(i32),
11617}
11618
11619#[doc(hidden)]
11620impl IntoGlib for ShortcutType {
11621    type GlibType = ffi::GtkShortcutType;
11622
11623    #[inline]
11624    fn into_glib(self) -> ffi::GtkShortcutType {
11625        match self {
11626            Self::Accelerator => ffi::GTK_SHORTCUT_ACCELERATOR,
11627            Self::GesturePinch => ffi::GTK_SHORTCUT_GESTURE_PINCH,
11628            Self::GestureStretch => ffi::GTK_SHORTCUT_GESTURE_STRETCH,
11629            Self::GestureRotateClockwise => ffi::GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE,
11630            Self::GestureRotateCounterclockwise => {
11631                ffi::GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE
11632            }
11633            Self::GestureTwoFingerSwipeLeft => ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT,
11634            Self::GestureTwoFingerSwipeRight => ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT,
11635            Self::Gesture => ffi::GTK_SHORTCUT_GESTURE,
11636            Self::GestureSwipeLeft => ffi::GTK_SHORTCUT_GESTURE_SWIPE_LEFT,
11637            Self::GestureSwipeRight => ffi::GTK_SHORTCUT_GESTURE_SWIPE_RIGHT,
11638            Self::__Unknown(value) => value,
11639        }
11640    }
11641}
11642
11643#[doc(hidden)]
11644impl FromGlib<ffi::GtkShortcutType> for ShortcutType {
11645    #[inline]
11646    unsafe fn from_glib(value: ffi::GtkShortcutType) -> Self {
11647        skip_assert_initialized!();
11648
11649        match value {
11650            ffi::GTK_SHORTCUT_ACCELERATOR => Self::Accelerator,
11651            ffi::GTK_SHORTCUT_GESTURE_PINCH => Self::GesturePinch,
11652            ffi::GTK_SHORTCUT_GESTURE_STRETCH => Self::GestureStretch,
11653            ffi::GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE => Self::GestureRotateClockwise,
11654            ffi::GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE => {
11655                Self::GestureRotateCounterclockwise
11656            }
11657            ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT => Self::GestureTwoFingerSwipeLeft,
11658            ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT => Self::GestureTwoFingerSwipeRight,
11659            ffi::GTK_SHORTCUT_GESTURE => Self::Gesture,
11660            ffi::GTK_SHORTCUT_GESTURE_SWIPE_LEFT => Self::GestureSwipeLeft,
11661            ffi::GTK_SHORTCUT_GESTURE_SWIPE_RIGHT => Self::GestureSwipeRight,
11662            value => Self::__Unknown(value),
11663        }
11664    }
11665}
11666
11667impl StaticType for ShortcutType {
11668    #[inline]
11669    #[doc(alias = "gtk_shortcut_type_get_type")]
11670    fn static_type() -> glib::Type {
11671        unsafe { from_glib(ffi::gtk_shortcut_type_get_type()) }
11672    }
11673}
11674
11675impl glib::HasParamSpec for ShortcutType {
11676    type ParamSpec = glib::ParamSpecEnum;
11677    type SetValue = Self;
11678    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11679
11680    fn param_spec_builder() -> Self::BuilderFn {
11681        Self::ParamSpec::builder_with_default
11682    }
11683}
11684
11685impl glib::value::ValueType for ShortcutType {
11686    type Type = Self;
11687}
11688
11689unsafe impl<'a> glib::value::FromValue<'a> for ShortcutType {
11690    type Checker = glib::value::GenericValueTypeChecker<Self>;
11691
11692    #[inline]
11693    unsafe fn from_value(value: &'a glib::Value) -> Self {
11694        skip_assert_initialized!();
11695        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11696    }
11697}
11698
11699impl ToValue for ShortcutType {
11700    #[inline]
11701    fn to_value(&self) -> glib::Value {
11702        let mut value = glib::Value::for_value_type::<Self>();
11703        unsafe {
11704            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11705        }
11706        value
11707    }
11708
11709    #[inline]
11710    fn value_type(&self) -> glib::Type {
11711        Self::static_type()
11712    }
11713}
11714
11715impl From<ShortcutType> for glib::Value {
11716    #[inline]
11717    fn from(v: ShortcutType) -> Self {
11718        skip_assert_initialized!();
11719        ToValue::to_value(&v)
11720    }
11721}
11722
11723/// The mode of the size group determines the directions in which the size
11724/// group affects the requested sizes of its component widgets.
11725#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11726#[non_exhaustive]
11727#[doc(alias = "GtkSizeGroupMode")]
11728pub enum SizeGroupMode {
11729    /// group has no effect
11730    #[doc(alias = "GTK_SIZE_GROUP_NONE")]
11731    None,
11732    /// group affects horizontal requisition
11733    #[doc(alias = "GTK_SIZE_GROUP_HORIZONTAL")]
11734    Horizontal,
11735    /// group affects vertical requisition
11736    #[doc(alias = "GTK_SIZE_GROUP_VERTICAL")]
11737    Vertical,
11738    /// group affects both horizontal and vertical requisition
11739    #[doc(alias = "GTK_SIZE_GROUP_BOTH")]
11740    Both,
11741    #[doc(hidden)]
11742    __Unknown(i32),
11743}
11744
11745#[doc(hidden)]
11746impl IntoGlib for SizeGroupMode {
11747    type GlibType = ffi::GtkSizeGroupMode;
11748
11749    #[inline]
11750    fn into_glib(self) -> ffi::GtkSizeGroupMode {
11751        match self {
11752            Self::None => ffi::GTK_SIZE_GROUP_NONE,
11753            Self::Horizontal => ffi::GTK_SIZE_GROUP_HORIZONTAL,
11754            Self::Vertical => ffi::GTK_SIZE_GROUP_VERTICAL,
11755            Self::Both => ffi::GTK_SIZE_GROUP_BOTH,
11756            Self::__Unknown(value) => value,
11757        }
11758    }
11759}
11760
11761#[doc(hidden)]
11762impl FromGlib<ffi::GtkSizeGroupMode> for SizeGroupMode {
11763    #[inline]
11764    unsafe fn from_glib(value: ffi::GtkSizeGroupMode) -> Self {
11765        skip_assert_initialized!();
11766
11767        match value {
11768            ffi::GTK_SIZE_GROUP_NONE => Self::None,
11769            ffi::GTK_SIZE_GROUP_HORIZONTAL => Self::Horizontal,
11770            ffi::GTK_SIZE_GROUP_VERTICAL => Self::Vertical,
11771            ffi::GTK_SIZE_GROUP_BOTH => Self::Both,
11772            value => Self::__Unknown(value),
11773        }
11774    }
11775}
11776
11777impl StaticType for SizeGroupMode {
11778    #[inline]
11779    #[doc(alias = "gtk_size_group_mode_get_type")]
11780    fn static_type() -> glib::Type {
11781        unsafe { from_glib(ffi::gtk_size_group_mode_get_type()) }
11782    }
11783}
11784
11785impl glib::HasParamSpec for SizeGroupMode {
11786    type ParamSpec = glib::ParamSpecEnum;
11787    type SetValue = Self;
11788    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11789
11790    fn param_spec_builder() -> Self::BuilderFn {
11791        Self::ParamSpec::builder_with_default
11792    }
11793}
11794
11795impl glib::value::ValueType for SizeGroupMode {
11796    type Type = Self;
11797}
11798
11799unsafe impl<'a> glib::value::FromValue<'a> for SizeGroupMode {
11800    type Checker = glib::value::GenericValueTypeChecker<Self>;
11801
11802    #[inline]
11803    unsafe fn from_value(value: &'a glib::Value) -> Self {
11804        skip_assert_initialized!();
11805        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11806    }
11807}
11808
11809impl ToValue for SizeGroupMode {
11810    #[inline]
11811    fn to_value(&self) -> glib::Value {
11812        let mut value = glib::Value::for_value_type::<Self>();
11813        unsafe {
11814            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11815        }
11816        value
11817    }
11818
11819    #[inline]
11820    fn value_type(&self) -> glib::Type {
11821        Self::static_type()
11822    }
11823}
11824
11825impl From<SizeGroupMode> for glib::Value {
11826    #[inline]
11827    fn from(v: SizeGroupMode) -> Self {
11828        skip_assert_initialized!();
11829        ToValue::to_value(&v)
11830    }
11831}
11832
11833/// Specifies a preference for height-for-width or
11834/// width-for-height geometry management.
11835#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11836#[non_exhaustive]
11837#[doc(alias = "GtkSizeRequestMode")]
11838pub enum SizeRequestMode {
11839    /// Prefer height-for-width geometry management
11840    #[doc(alias = "GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH")]
11841    HeightForWidth,
11842    /// Prefer width-for-height geometry management
11843    #[doc(alias = "GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT")]
11844    WidthForHeight,
11845    /// Don’t trade height-for-width or width-for-height
11846    #[doc(alias = "GTK_SIZE_REQUEST_CONSTANT_SIZE")]
11847    ConstantSize,
11848    #[doc(hidden)]
11849    __Unknown(i32),
11850}
11851
11852#[doc(hidden)]
11853impl IntoGlib for SizeRequestMode {
11854    type GlibType = ffi::GtkSizeRequestMode;
11855
11856    #[inline]
11857    fn into_glib(self) -> ffi::GtkSizeRequestMode {
11858        match self {
11859            Self::HeightForWidth => ffi::GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH,
11860            Self::WidthForHeight => ffi::GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT,
11861            Self::ConstantSize => ffi::GTK_SIZE_REQUEST_CONSTANT_SIZE,
11862            Self::__Unknown(value) => value,
11863        }
11864    }
11865}
11866
11867#[doc(hidden)]
11868impl FromGlib<ffi::GtkSizeRequestMode> for SizeRequestMode {
11869    #[inline]
11870    unsafe fn from_glib(value: ffi::GtkSizeRequestMode) -> Self {
11871        skip_assert_initialized!();
11872
11873        match value {
11874            ffi::GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH => Self::HeightForWidth,
11875            ffi::GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT => Self::WidthForHeight,
11876            ffi::GTK_SIZE_REQUEST_CONSTANT_SIZE => Self::ConstantSize,
11877            value => Self::__Unknown(value),
11878        }
11879    }
11880}
11881
11882impl StaticType for SizeRequestMode {
11883    #[inline]
11884    #[doc(alias = "gtk_size_request_mode_get_type")]
11885    fn static_type() -> glib::Type {
11886        unsafe { from_glib(ffi::gtk_size_request_mode_get_type()) }
11887    }
11888}
11889
11890impl glib::HasParamSpec for SizeRequestMode {
11891    type ParamSpec = glib::ParamSpecEnum;
11892    type SetValue = Self;
11893    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11894
11895    fn param_spec_builder() -> Self::BuilderFn {
11896        Self::ParamSpec::builder_with_default
11897    }
11898}
11899
11900impl glib::value::ValueType for SizeRequestMode {
11901    type Type = Self;
11902}
11903
11904unsafe impl<'a> glib::value::FromValue<'a> for SizeRequestMode {
11905    type Checker = glib::value::GenericValueTypeChecker<Self>;
11906
11907    #[inline]
11908    unsafe fn from_value(value: &'a glib::Value) -> Self {
11909        skip_assert_initialized!();
11910        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
11911    }
11912}
11913
11914impl ToValue for SizeRequestMode {
11915    #[inline]
11916    fn to_value(&self) -> glib::Value {
11917        let mut value = glib::Value::for_value_type::<Self>();
11918        unsafe {
11919            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11920        }
11921        value
11922    }
11923
11924    #[inline]
11925    fn value_type(&self) -> glib::Type {
11926        Self::static_type()
11927    }
11928}
11929
11930impl From<SizeRequestMode> for glib::Value {
11931    #[inline]
11932    fn from(v: SizeRequestMode) -> Self {
11933        skip_assert_initialized!();
11934        ToValue::to_value(&v)
11935    }
11936}
11937
11938/// Determines the direction of a sort.
11939#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11940#[non_exhaustive]
11941#[doc(alias = "GtkSortType")]
11942pub enum SortType {
11943    /// Sorting is in ascending order.
11944    #[doc(alias = "GTK_SORT_ASCENDING")]
11945    Ascending,
11946    /// Sorting is in descending order.
11947    #[doc(alias = "GTK_SORT_DESCENDING")]
11948    Descending,
11949    #[doc(hidden)]
11950    __Unknown(i32),
11951}
11952
11953#[doc(hidden)]
11954impl IntoGlib for SortType {
11955    type GlibType = ffi::GtkSortType;
11956
11957    #[inline]
11958    fn into_glib(self) -> ffi::GtkSortType {
11959        match self {
11960            Self::Ascending => ffi::GTK_SORT_ASCENDING,
11961            Self::Descending => ffi::GTK_SORT_DESCENDING,
11962            Self::__Unknown(value) => value,
11963        }
11964    }
11965}
11966
11967#[doc(hidden)]
11968impl FromGlib<ffi::GtkSortType> for SortType {
11969    #[inline]
11970    unsafe fn from_glib(value: ffi::GtkSortType) -> Self {
11971        skip_assert_initialized!();
11972
11973        match value {
11974            ffi::GTK_SORT_ASCENDING => Self::Ascending,
11975            ffi::GTK_SORT_DESCENDING => Self::Descending,
11976            value => Self::__Unknown(value),
11977        }
11978    }
11979}
11980
11981impl StaticType for SortType {
11982    #[inline]
11983    #[doc(alias = "gtk_sort_type_get_type")]
11984    fn static_type() -> glib::Type {
11985        unsafe { from_glib(ffi::gtk_sort_type_get_type()) }
11986    }
11987}
11988
11989impl glib::HasParamSpec for SortType {
11990    type ParamSpec = glib::ParamSpecEnum;
11991    type SetValue = Self;
11992    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11993
11994    fn param_spec_builder() -> Self::BuilderFn {
11995        Self::ParamSpec::builder_with_default
11996    }
11997}
11998
11999impl glib::value::ValueType for SortType {
12000    type Type = Self;
12001}
12002
12003unsafe impl<'a> glib::value::FromValue<'a> for SortType {
12004    type Checker = glib::value::GenericValueTypeChecker<Self>;
12005
12006    #[inline]
12007    unsafe fn from_value(value: &'a glib::Value) -> Self {
12008        skip_assert_initialized!();
12009        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12010    }
12011}
12012
12013impl ToValue for SortType {
12014    #[inline]
12015    fn to_value(&self) -> glib::Value {
12016        let mut value = glib::Value::for_value_type::<Self>();
12017        unsafe {
12018            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12019        }
12020        value
12021    }
12022
12023    #[inline]
12024    fn value_type(&self) -> glib::Type {
12025        Self::static_type()
12026    }
12027}
12028
12029impl From<SortType> for glib::Value {
12030    #[inline]
12031    fn from(v: SortType) -> Self {
12032        skip_assert_initialized!();
12033        ToValue::to_value(&v)
12034    }
12035}
12036
12037/// Describes changes in a sorter in more detail and allows users
12038/// to optimize resorting.
12039#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12040#[non_exhaustive]
12041#[doc(alias = "GtkSorterChange")]
12042pub enum SorterChange {
12043    /// The sorter change cannot be described
12044    ///   by any of the other enumeration values
12045    #[doc(alias = "GTK_SORTER_CHANGE_DIFFERENT")]
12046    Different,
12047    /// The sort order was inverted. Comparisons
12048    ///   that returned [`Ordering::Smaller`][crate::Ordering::Smaller] now return [`Ordering::Larger`][crate::Ordering::Larger]
12049    ///   and vice versa. Other comparisons return the same values as before.
12050    #[doc(alias = "GTK_SORTER_CHANGE_INVERTED")]
12051    Inverted,
12052    /// The sorter is less strict: Comparisons
12053    ///   may now return [`Ordering::Equal`][crate::Ordering::Equal] that did not do so before.
12054    #[doc(alias = "GTK_SORTER_CHANGE_LESS_STRICT")]
12055    LessStrict,
12056    /// The sorter is more strict: Comparisons
12057    ///   that did return [`Ordering::Equal`][crate::Ordering::Equal] may not do so anymore.
12058    #[doc(alias = "GTK_SORTER_CHANGE_MORE_STRICT")]
12059    MoreStrict,
12060    #[doc(hidden)]
12061    __Unknown(i32),
12062}
12063
12064#[doc(hidden)]
12065impl IntoGlib for SorterChange {
12066    type GlibType = ffi::GtkSorterChange;
12067
12068    #[inline]
12069    fn into_glib(self) -> ffi::GtkSorterChange {
12070        match self {
12071            Self::Different => ffi::GTK_SORTER_CHANGE_DIFFERENT,
12072            Self::Inverted => ffi::GTK_SORTER_CHANGE_INVERTED,
12073            Self::LessStrict => ffi::GTK_SORTER_CHANGE_LESS_STRICT,
12074            Self::MoreStrict => ffi::GTK_SORTER_CHANGE_MORE_STRICT,
12075            Self::__Unknown(value) => value,
12076        }
12077    }
12078}
12079
12080#[doc(hidden)]
12081impl FromGlib<ffi::GtkSorterChange> for SorterChange {
12082    #[inline]
12083    unsafe fn from_glib(value: ffi::GtkSorterChange) -> Self {
12084        skip_assert_initialized!();
12085
12086        match value {
12087            ffi::GTK_SORTER_CHANGE_DIFFERENT => Self::Different,
12088            ffi::GTK_SORTER_CHANGE_INVERTED => Self::Inverted,
12089            ffi::GTK_SORTER_CHANGE_LESS_STRICT => Self::LessStrict,
12090            ffi::GTK_SORTER_CHANGE_MORE_STRICT => Self::MoreStrict,
12091            value => Self::__Unknown(value),
12092        }
12093    }
12094}
12095
12096impl StaticType for SorterChange {
12097    #[inline]
12098    #[doc(alias = "gtk_sorter_change_get_type")]
12099    fn static_type() -> glib::Type {
12100        unsafe { from_glib(ffi::gtk_sorter_change_get_type()) }
12101    }
12102}
12103
12104impl glib::HasParamSpec for SorterChange {
12105    type ParamSpec = glib::ParamSpecEnum;
12106    type SetValue = Self;
12107    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12108
12109    fn param_spec_builder() -> Self::BuilderFn {
12110        Self::ParamSpec::builder_with_default
12111    }
12112}
12113
12114impl glib::value::ValueType for SorterChange {
12115    type Type = Self;
12116}
12117
12118unsafe impl<'a> glib::value::FromValue<'a> for SorterChange {
12119    type Checker = glib::value::GenericValueTypeChecker<Self>;
12120
12121    #[inline]
12122    unsafe fn from_value(value: &'a glib::Value) -> Self {
12123        skip_assert_initialized!();
12124        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12125    }
12126}
12127
12128impl ToValue for SorterChange {
12129    #[inline]
12130    fn to_value(&self) -> glib::Value {
12131        let mut value = glib::Value::for_value_type::<Self>();
12132        unsafe {
12133            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12134        }
12135        value
12136    }
12137
12138    #[inline]
12139    fn value_type(&self) -> glib::Type {
12140        Self::static_type()
12141    }
12142}
12143
12144impl From<SorterChange> for glib::Value {
12145    #[inline]
12146    fn from(v: SorterChange) -> Self {
12147        skip_assert_initialized!();
12148        ToValue::to_value(&v)
12149    }
12150}
12151
12152/// Describes the type of order that a [`Sorter`][crate::Sorter] may produce.
12153#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12154#[non_exhaustive]
12155#[doc(alias = "GtkSorterOrder")]
12156pub enum SorterOrder {
12157    /// A partial order. Any [`Ordering`][crate::Ordering] is possible.
12158    #[doc(alias = "GTK_SORTER_ORDER_PARTIAL")]
12159    Partial,
12160    /// No order, all elements are considered equal.
12161    ///   gtk_sorter_compare() will only return [`Ordering::Equal`][crate::Ordering::Equal].
12162    #[doc(alias = "GTK_SORTER_ORDER_NONE")]
12163    None,
12164    /// A total order. gtk_sorter_compare() will only
12165    ///   return [`Ordering::Equal`][crate::Ordering::Equal] if an item is compared with itself. Two
12166    ///   different items will never cause this value to be returned.
12167    #[doc(alias = "GTK_SORTER_ORDER_TOTAL")]
12168    Total,
12169    #[doc(hidden)]
12170    __Unknown(i32),
12171}
12172
12173#[doc(hidden)]
12174impl IntoGlib for SorterOrder {
12175    type GlibType = ffi::GtkSorterOrder;
12176
12177    #[inline]
12178    fn into_glib(self) -> ffi::GtkSorterOrder {
12179        match self {
12180            Self::Partial => ffi::GTK_SORTER_ORDER_PARTIAL,
12181            Self::None => ffi::GTK_SORTER_ORDER_NONE,
12182            Self::Total => ffi::GTK_SORTER_ORDER_TOTAL,
12183            Self::__Unknown(value) => value,
12184        }
12185    }
12186}
12187
12188#[doc(hidden)]
12189impl FromGlib<ffi::GtkSorterOrder> for SorterOrder {
12190    #[inline]
12191    unsafe fn from_glib(value: ffi::GtkSorterOrder) -> Self {
12192        skip_assert_initialized!();
12193
12194        match value {
12195            ffi::GTK_SORTER_ORDER_PARTIAL => Self::Partial,
12196            ffi::GTK_SORTER_ORDER_NONE => Self::None,
12197            ffi::GTK_SORTER_ORDER_TOTAL => Self::Total,
12198            value => Self::__Unknown(value),
12199        }
12200    }
12201}
12202
12203impl StaticType for SorterOrder {
12204    #[inline]
12205    #[doc(alias = "gtk_sorter_order_get_type")]
12206    fn static_type() -> glib::Type {
12207        unsafe { from_glib(ffi::gtk_sorter_order_get_type()) }
12208    }
12209}
12210
12211impl glib::HasParamSpec for SorterOrder {
12212    type ParamSpec = glib::ParamSpecEnum;
12213    type SetValue = Self;
12214    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12215
12216    fn param_spec_builder() -> Self::BuilderFn {
12217        Self::ParamSpec::builder_with_default
12218    }
12219}
12220
12221impl glib::value::ValueType for SorterOrder {
12222    type Type = Self;
12223}
12224
12225unsafe impl<'a> glib::value::FromValue<'a> for SorterOrder {
12226    type Checker = glib::value::GenericValueTypeChecker<Self>;
12227
12228    #[inline]
12229    unsafe fn from_value(value: &'a glib::Value) -> Self {
12230        skip_assert_initialized!();
12231        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12232    }
12233}
12234
12235impl ToValue for SorterOrder {
12236    #[inline]
12237    fn to_value(&self) -> glib::Value {
12238        let mut value = glib::Value::for_value_type::<Self>();
12239        unsafe {
12240            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12241        }
12242        value
12243    }
12244
12245    #[inline]
12246    fn value_type(&self) -> glib::Type {
12247        Self::static_type()
12248    }
12249}
12250
12251impl From<SorterOrder> for glib::Value {
12252    #[inline]
12253    fn from(v: SorterOrder) -> Self {
12254        skip_assert_initialized!();
12255        ToValue::to_value(&v)
12256    }
12257}
12258
12259/// Determines whether the spin button displays values outside the adjustment
12260/// bounds.
12261///
12262/// See [`SpinButton::set_update_policy()`][crate::SpinButton::set_update_policy()].
12263#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12264#[non_exhaustive]
12265#[doc(alias = "GtkSpinButtonUpdatePolicy")]
12266pub enum SpinButtonUpdatePolicy {
12267    /// When refreshing your [`SpinButton`][crate::SpinButton], the value is
12268    ///   always displayed
12269    #[doc(alias = "GTK_UPDATE_ALWAYS")]
12270    Always,
12271    /// When refreshing your [`SpinButton`][crate::SpinButton], the value is
12272    ///   only displayed if it is valid within the bounds of the spin button's
12273    ///   adjustment
12274    #[doc(alias = "GTK_UPDATE_IF_VALID")]
12275    IfValid,
12276    #[doc(hidden)]
12277    __Unknown(i32),
12278}
12279
12280#[doc(hidden)]
12281impl IntoGlib for SpinButtonUpdatePolicy {
12282    type GlibType = ffi::GtkSpinButtonUpdatePolicy;
12283
12284    #[inline]
12285    fn into_glib(self) -> ffi::GtkSpinButtonUpdatePolicy {
12286        match self {
12287            Self::Always => ffi::GTK_UPDATE_ALWAYS,
12288            Self::IfValid => ffi::GTK_UPDATE_IF_VALID,
12289            Self::__Unknown(value) => value,
12290        }
12291    }
12292}
12293
12294#[doc(hidden)]
12295impl FromGlib<ffi::GtkSpinButtonUpdatePolicy> for SpinButtonUpdatePolicy {
12296    #[inline]
12297    unsafe fn from_glib(value: ffi::GtkSpinButtonUpdatePolicy) -> Self {
12298        skip_assert_initialized!();
12299
12300        match value {
12301            ffi::GTK_UPDATE_ALWAYS => Self::Always,
12302            ffi::GTK_UPDATE_IF_VALID => Self::IfValid,
12303            value => Self::__Unknown(value),
12304        }
12305    }
12306}
12307
12308impl StaticType for SpinButtonUpdatePolicy {
12309    #[inline]
12310    #[doc(alias = "gtk_spin_button_update_policy_get_type")]
12311    fn static_type() -> glib::Type {
12312        unsafe { from_glib(ffi::gtk_spin_button_update_policy_get_type()) }
12313    }
12314}
12315
12316impl glib::HasParamSpec for SpinButtonUpdatePolicy {
12317    type ParamSpec = glib::ParamSpecEnum;
12318    type SetValue = Self;
12319    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12320
12321    fn param_spec_builder() -> Self::BuilderFn {
12322        Self::ParamSpec::builder_with_default
12323    }
12324}
12325
12326impl glib::value::ValueType for SpinButtonUpdatePolicy {
12327    type Type = Self;
12328}
12329
12330unsafe impl<'a> glib::value::FromValue<'a> for SpinButtonUpdatePolicy {
12331    type Checker = glib::value::GenericValueTypeChecker<Self>;
12332
12333    #[inline]
12334    unsafe fn from_value(value: &'a glib::Value) -> Self {
12335        skip_assert_initialized!();
12336        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12337    }
12338}
12339
12340impl ToValue for SpinButtonUpdatePolicy {
12341    #[inline]
12342    fn to_value(&self) -> glib::Value {
12343        let mut value = glib::Value::for_value_type::<Self>();
12344        unsafe {
12345            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12346        }
12347        value
12348    }
12349
12350    #[inline]
12351    fn value_type(&self) -> glib::Type {
12352        Self::static_type()
12353    }
12354}
12355
12356impl From<SpinButtonUpdatePolicy> for glib::Value {
12357    #[inline]
12358    fn from(v: SpinButtonUpdatePolicy) -> Self {
12359        skip_assert_initialized!();
12360        ToValue::to_value(&v)
12361    }
12362}
12363
12364/// The values of the GtkSpinType enumeration are used to specify the
12365/// change to make in gtk_spin_button_spin().
12366#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12367#[non_exhaustive]
12368#[doc(alias = "GtkSpinType")]
12369pub enum SpinType {
12370    /// Increment by the adjustments step increment.
12371    #[doc(alias = "GTK_SPIN_STEP_FORWARD")]
12372    StepForward,
12373    /// Decrement by the adjustments step increment.
12374    #[doc(alias = "GTK_SPIN_STEP_BACKWARD")]
12375    StepBackward,
12376    /// Increment by the adjustments page increment.
12377    #[doc(alias = "GTK_SPIN_PAGE_FORWARD")]
12378    PageForward,
12379    /// Decrement by the adjustments page increment.
12380    #[doc(alias = "GTK_SPIN_PAGE_BACKWARD")]
12381    PageBackward,
12382    /// Go to the adjustments lower bound.
12383    #[doc(alias = "GTK_SPIN_HOME")]
12384    Home,
12385    /// Go to the adjustments upper bound.
12386    #[doc(alias = "GTK_SPIN_END")]
12387    End,
12388    /// Change by a specified amount.
12389    #[doc(alias = "GTK_SPIN_USER_DEFINED")]
12390    UserDefined,
12391    #[doc(hidden)]
12392    __Unknown(i32),
12393}
12394
12395#[doc(hidden)]
12396impl IntoGlib for SpinType {
12397    type GlibType = ffi::GtkSpinType;
12398
12399    #[inline]
12400    fn into_glib(self) -> ffi::GtkSpinType {
12401        match self {
12402            Self::StepForward => ffi::GTK_SPIN_STEP_FORWARD,
12403            Self::StepBackward => ffi::GTK_SPIN_STEP_BACKWARD,
12404            Self::PageForward => ffi::GTK_SPIN_PAGE_FORWARD,
12405            Self::PageBackward => ffi::GTK_SPIN_PAGE_BACKWARD,
12406            Self::Home => ffi::GTK_SPIN_HOME,
12407            Self::End => ffi::GTK_SPIN_END,
12408            Self::UserDefined => ffi::GTK_SPIN_USER_DEFINED,
12409            Self::__Unknown(value) => value,
12410        }
12411    }
12412}
12413
12414#[doc(hidden)]
12415impl FromGlib<ffi::GtkSpinType> for SpinType {
12416    #[inline]
12417    unsafe fn from_glib(value: ffi::GtkSpinType) -> Self {
12418        skip_assert_initialized!();
12419
12420        match value {
12421            ffi::GTK_SPIN_STEP_FORWARD => Self::StepForward,
12422            ffi::GTK_SPIN_STEP_BACKWARD => Self::StepBackward,
12423            ffi::GTK_SPIN_PAGE_FORWARD => Self::PageForward,
12424            ffi::GTK_SPIN_PAGE_BACKWARD => Self::PageBackward,
12425            ffi::GTK_SPIN_HOME => Self::Home,
12426            ffi::GTK_SPIN_END => Self::End,
12427            ffi::GTK_SPIN_USER_DEFINED => Self::UserDefined,
12428            value => Self::__Unknown(value),
12429        }
12430    }
12431}
12432
12433impl StaticType for SpinType {
12434    #[inline]
12435    #[doc(alias = "gtk_spin_type_get_type")]
12436    fn static_type() -> glib::Type {
12437        unsafe { from_glib(ffi::gtk_spin_type_get_type()) }
12438    }
12439}
12440
12441impl glib::HasParamSpec for SpinType {
12442    type ParamSpec = glib::ParamSpecEnum;
12443    type SetValue = Self;
12444    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12445
12446    fn param_spec_builder() -> Self::BuilderFn {
12447        Self::ParamSpec::builder_with_default
12448    }
12449}
12450
12451impl glib::value::ValueType for SpinType {
12452    type Type = Self;
12453}
12454
12455unsafe impl<'a> glib::value::FromValue<'a> for SpinType {
12456    type Checker = glib::value::GenericValueTypeChecker<Self>;
12457
12458    #[inline]
12459    unsafe fn from_value(value: &'a glib::Value) -> Self {
12460        skip_assert_initialized!();
12461        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12462    }
12463}
12464
12465impl ToValue for SpinType {
12466    #[inline]
12467    fn to_value(&self) -> glib::Value {
12468        let mut value = glib::Value::for_value_type::<Self>();
12469        unsafe {
12470            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12471        }
12472        value
12473    }
12474
12475    #[inline]
12476    fn value_type(&self) -> glib::Type {
12477        Self::static_type()
12478    }
12479}
12480
12481impl From<SpinType> for glib::Value {
12482    #[inline]
12483    fn from(v: SpinType) -> Self {
12484        skip_assert_initialized!();
12485        ToValue::to_value(&v)
12486    }
12487}
12488
12489/// Possible transitions between pages in a [`Stack`][crate::Stack] widget.
12490///
12491/// New values may be added to this enumeration over time.
12492#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12493#[non_exhaustive]
12494#[doc(alias = "GtkStackTransitionType")]
12495pub enum StackTransitionType {
12496    /// No transition
12497    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_NONE")]
12498    None,
12499    /// A cross-fade
12500    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_CROSSFADE")]
12501    Crossfade,
12502    /// Slide from left to right
12503    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT")]
12504    SlideRight,
12505    /// Slide from right to left
12506    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT")]
12507    SlideLeft,
12508    /// Slide from bottom up
12509    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_UP")]
12510    SlideUp,
12511    /// Slide from top down
12512    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN")]
12513    SlideDown,
12514    /// Slide from left or right according to the children order
12515    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT")]
12516    SlideLeftRight,
12517    /// Slide from top down or bottom up according to the order
12518    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN")]
12519    SlideUpDown,
12520    /// Cover the old page by sliding up
12521    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_UP")]
12522    OverUp,
12523    /// Cover the old page by sliding down
12524    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_DOWN")]
12525    OverDown,
12526    /// Cover the old page by sliding to the left
12527    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_LEFT")]
12528    OverLeft,
12529    /// Cover the old page by sliding to the right
12530    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_RIGHT")]
12531    OverRight,
12532    /// Uncover the new page by sliding up
12533    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_UP")]
12534    UnderUp,
12535    /// Uncover the new page by sliding down
12536    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_DOWN")]
12537    UnderDown,
12538    /// Uncover the new page by sliding to the left
12539    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_LEFT")]
12540    UnderLeft,
12541    /// Uncover the new page by sliding to the right
12542    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT")]
12543    UnderRight,
12544    /// Cover the old page sliding up or uncover the new page sliding down, according to order
12545    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN")]
12546    OverUpDown,
12547    /// Cover the old page sliding down or uncover the new page sliding up, according to order
12548    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP")]
12549    OverDownUp,
12550    /// Cover the old page sliding left or uncover the new page sliding right, according to order
12551    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT")]
12552    OverLeftRight,
12553    /// Cover the old page sliding right or uncover the new page sliding left, according to order
12554    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT")]
12555    OverRightLeft,
12556    /// Pretend the pages are sides of a cube and rotate that cube to the left
12557    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT")]
12558    RotateLeft,
12559    /// Pretend the pages are sides of a cube and rotate that cube to the right
12560    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT")]
12561    RotateRight,
12562    /// Pretend the pages are sides of a cube and rotate that cube to the left or right according to the children order
12563    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT")]
12564    RotateLeftRight,
12565    #[doc(hidden)]
12566    __Unknown(i32),
12567}
12568
12569#[doc(hidden)]
12570impl IntoGlib for StackTransitionType {
12571    type GlibType = ffi::GtkStackTransitionType;
12572
12573    fn into_glib(self) -> ffi::GtkStackTransitionType {
12574        match self {
12575            Self::None => ffi::GTK_STACK_TRANSITION_TYPE_NONE,
12576            Self::Crossfade => ffi::GTK_STACK_TRANSITION_TYPE_CROSSFADE,
12577            Self::SlideRight => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT,
12578            Self::SlideLeft => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT,
12579            Self::SlideUp => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP,
12580            Self::SlideDown => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN,
12581            Self::SlideLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT,
12582            Self::SlideUpDown => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN,
12583            Self::OverUp => ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP,
12584            Self::OverDown => ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN,
12585            Self::OverLeft => ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT,
12586            Self::OverRight => ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT,
12587            Self::UnderUp => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_UP,
12588            Self::UnderDown => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_DOWN,
12589            Self::UnderLeft => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_LEFT,
12590            Self::UnderRight => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT,
12591            Self::OverUpDown => ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN,
12592            Self::OverDownUp => ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP,
12593            Self::OverLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT,
12594            Self::OverRightLeft => ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT,
12595            Self::RotateLeft => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT,
12596            Self::RotateRight => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT,
12597            Self::RotateLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT,
12598            Self::__Unknown(value) => value,
12599        }
12600    }
12601}
12602
12603#[doc(hidden)]
12604impl FromGlib<ffi::GtkStackTransitionType> for StackTransitionType {
12605    unsafe fn from_glib(value: ffi::GtkStackTransitionType) -> Self {
12606        skip_assert_initialized!();
12607
12608        match value {
12609            ffi::GTK_STACK_TRANSITION_TYPE_NONE => Self::None,
12610            ffi::GTK_STACK_TRANSITION_TYPE_CROSSFADE => Self::Crossfade,
12611            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT => Self::SlideRight,
12612            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT => Self::SlideLeft,
12613            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP => Self::SlideUp,
12614            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN => Self::SlideDown,
12615            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT => Self::SlideLeftRight,
12616            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN => Self::SlideUpDown,
12617            ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP => Self::OverUp,
12618            ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN => Self::OverDown,
12619            ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT => Self::OverLeft,
12620            ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT => Self::OverRight,
12621            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_UP => Self::UnderUp,
12622            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_DOWN => Self::UnderDown,
12623            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_LEFT => Self::UnderLeft,
12624            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT => Self::UnderRight,
12625            ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN => Self::OverUpDown,
12626            ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP => Self::OverDownUp,
12627            ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT => Self::OverLeftRight,
12628            ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT => Self::OverRightLeft,
12629            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT => Self::RotateLeft,
12630            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT => Self::RotateRight,
12631            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT => Self::RotateLeftRight,
12632            value => Self::__Unknown(value),
12633        }
12634    }
12635}
12636
12637impl StaticType for StackTransitionType {
12638    #[inline]
12639    #[doc(alias = "gtk_stack_transition_type_get_type")]
12640    fn static_type() -> glib::Type {
12641        unsafe { from_glib(ffi::gtk_stack_transition_type_get_type()) }
12642    }
12643}
12644
12645impl glib::HasParamSpec for StackTransitionType {
12646    type ParamSpec = glib::ParamSpecEnum;
12647    type SetValue = Self;
12648    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12649
12650    fn param_spec_builder() -> Self::BuilderFn {
12651        Self::ParamSpec::builder_with_default
12652    }
12653}
12654
12655impl glib::value::ValueType for StackTransitionType {
12656    type Type = Self;
12657}
12658
12659unsafe impl<'a> glib::value::FromValue<'a> for StackTransitionType {
12660    type Checker = glib::value::GenericValueTypeChecker<Self>;
12661
12662    #[inline]
12663    unsafe fn from_value(value: &'a glib::Value) -> Self {
12664        skip_assert_initialized!();
12665        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12666    }
12667}
12668
12669impl ToValue for StackTransitionType {
12670    #[inline]
12671    fn to_value(&self) -> glib::Value {
12672        let mut value = glib::Value::for_value_type::<Self>();
12673        unsafe {
12674            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12675        }
12676        value
12677    }
12678
12679    #[inline]
12680    fn value_type(&self) -> glib::Type {
12681        Self::static_type()
12682    }
12683}
12684
12685impl From<StackTransitionType> for glib::Value {
12686    #[inline]
12687    fn from(v: StackTransitionType) -> Self {
12688        skip_assert_initialized!();
12689        ToValue::to_value(&v)
12690    }
12691}
12692
12693/// Specifies how search strings are matched inside text.
12694#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12695#[non_exhaustive]
12696#[doc(alias = "GtkStringFilterMatchMode")]
12697pub enum StringFilterMatchMode {
12698    /// The search string and
12699    ///   text must match exactly
12700    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_EXACT")]
12701    Exact,
12702    /// The search string
12703    ///   must be contained as a substring inside the text
12704    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_SUBSTRING")]
12705    Substring,
12706    /// The text must begin
12707    ///   with the search string
12708    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_PREFIX")]
12709    Prefix,
12710    #[doc(hidden)]
12711    __Unknown(i32),
12712}
12713
12714#[doc(hidden)]
12715impl IntoGlib for StringFilterMatchMode {
12716    type GlibType = ffi::GtkStringFilterMatchMode;
12717
12718    #[inline]
12719    fn into_glib(self) -> ffi::GtkStringFilterMatchMode {
12720        match self {
12721            Self::Exact => ffi::GTK_STRING_FILTER_MATCH_MODE_EXACT,
12722            Self::Substring => ffi::GTK_STRING_FILTER_MATCH_MODE_SUBSTRING,
12723            Self::Prefix => ffi::GTK_STRING_FILTER_MATCH_MODE_PREFIX,
12724            Self::__Unknown(value) => value,
12725        }
12726    }
12727}
12728
12729#[doc(hidden)]
12730impl FromGlib<ffi::GtkStringFilterMatchMode> for StringFilterMatchMode {
12731    #[inline]
12732    unsafe fn from_glib(value: ffi::GtkStringFilterMatchMode) -> Self {
12733        skip_assert_initialized!();
12734
12735        match value {
12736            ffi::GTK_STRING_FILTER_MATCH_MODE_EXACT => Self::Exact,
12737            ffi::GTK_STRING_FILTER_MATCH_MODE_SUBSTRING => Self::Substring,
12738            ffi::GTK_STRING_FILTER_MATCH_MODE_PREFIX => Self::Prefix,
12739            value => Self::__Unknown(value),
12740        }
12741    }
12742}
12743
12744impl StaticType for StringFilterMatchMode {
12745    #[inline]
12746    #[doc(alias = "gtk_string_filter_match_mode_get_type")]
12747    fn static_type() -> glib::Type {
12748        unsafe { from_glib(ffi::gtk_string_filter_match_mode_get_type()) }
12749    }
12750}
12751
12752impl glib::HasParamSpec for StringFilterMatchMode {
12753    type ParamSpec = glib::ParamSpecEnum;
12754    type SetValue = Self;
12755    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12756
12757    fn param_spec_builder() -> Self::BuilderFn {
12758        Self::ParamSpec::builder_with_default
12759    }
12760}
12761
12762impl glib::value::ValueType for StringFilterMatchMode {
12763    type Type = Self;
12764}
12765
12766unsafe impl<'a> glib::value::FromValue<'a> for StringFilterMatchMode {
12767    type Checker = glib::value::GenericValueTypeChecker<Self>;
12768
12769    #[inline]
12770    unsafe fn from_value(value: &'a glib::Value) -> Self {
12771        skip_assert_initialized!();
12772        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12773    }
12774}
12775
12776impl ToValue for StringFilterMatchMode {
12777    #[inline]
12778    fn to_value(&self) -> glib::Value {
12779        let mut value = glib::Value::for_value_type::<Self>();
12780        unsafe {
12781            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12782        }
12783        value
12784    }
12785
12786    #[inline]
12787    fn value_type(&self) -> glib::Type {
12788        Self::static_type()
12789    }
12790}
12791
12792impl From<StringFilterMatchMode> for glib::Value {
12793    #[inline]
12794    fn from(v: StringFilterMatchMode) -> Self {
12795        skip_assert_initialized!();
12796        ToValue::to_value(&v)
12797    }
12798}
12799
12800/// The indexes of colors passed to symbolic color rendering, such as
12801/// `vfunc::Gtk::SymbolicPaintable::snapshot_symbolic`.
12802///
12803/// More values may be added over time.
12804#[cfg(feature = "v4_6")]
12805#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12806#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12807#[non_exhaustive]
12808#[doc(alias = "GtkSymbolicColor")]
12809pub enum SymbolicColor {
12810    /// The default foreground color
12811    #[doc(alias = "GTK_SYMBOLIC_COLOR_FOREGROUND")]
12812    Foreground,
12813    /// Indication color for errors
12814    #[doc(alias = "GTK_SYMBOLIC_COLOR_ERROR")]
12815    Error,
12816    /// Indication color for warnings
12817    #[doc(alias = "GTK_SYMBOLIC_COLOR_WARNING")]
12818    Warning,
12819    /// Indication color for success
12820    #[doc(alias = "GTK_SYMBOLIC_COLOR_SUCCESS")]
12821    Success,
12822    /// The system accent color.
12823    #[cfg(feature = "v4_22")]
12824    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12825    #[doc(alias = "GTK_SYMBOLIC_COLOR_ACCENT")]
12826    Accent,
12827    #[doc(hidden)]
12828    __Unknown(i32),
12829}
12830
12831#[cfg(feature = "v4_6")]
12832#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12833#[doc(hidden)]
12834impl IntoGlib for SymbolicColor {
12835    type GlibType = ffi::GtkSymbolicColor;
12836
12837    #[inline]
12838    fn into_glib(self) -> ffi::GtkSymbolicColor {
12839        match self {
12840            Self::Foreground => ffi::GTK_SYMBOLIC_COLOR_FOREGROUND,
12841            Self::Error => ffi::GTK_SYMBOLIC_COLOR_ERROR,
12842            Self::Warning => ffi::GTK_SYMBOLIC_COLOR_WARNING,
12843            Self::Success => ffi::GTK_SYMBOLIC_COLOR_SUCCESS,
12844            #[cfg(feature = "v4_22")]
12845            Self::Accent => ffi::GTK_SYMBOLIC_COLOR_ACCENT,
12846            Self::__Unknown(value) => value,
12847        }
12848    }
12849}
12850
12851#[cfg(feature = "v4_6")]
12852#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12853#[doc(hidden)]
12854impl FromGlib<ffi::GtkSymbolicColor> for SymbolicColor {
12855    #[inline]
12856    unsafe fn from_glib(value: ffi::GtkSymbolicColor) -> Self {
12857        skip_assert_initialized!();
12858
12859        match value {
12860            ffi::GTK_SYMBOLIC_COLOR_FOREGROUND => Self::Foreground,
12861            ffi::GTK_SYMBOLIC_COLOR_ERROR => Self::Error,
12862            ffi::GTK_SYMBOLIC_COLOR_WARNING => Self::Warning,
12863            ffi::GTK_SYMBOLIC_COLOR_SUCCESS => Self::Success,
12864            #[cfg(feature = "v4_22")]
12865            ffi::GTK_SYMBOLIC_COLOR_ACCENT => Self::Accent,
12866            value => Self::__Unknown(value),
12867        }
12868    }
12869}
12870
12871#[cfg(feature = "v4_6")]
12872#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12873impl StaticType for SymbolicColor {
12874    #[inline]
12875    #[doc(alias = "gtk_symbolic_color_get_type")]
12876    fn static_type() -> glib::Type {
12877        unsafe { from_glib(ffi::gtk_symbolic_color_get_type()) }
12878    }
12879}
12880
12881#[cfg(feature = "v4_6")]
12882#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12883impl glib::HasParamSpec for SymbolicColor {
12884    type ParamSpec = glib::ParamSpecEnum;
12885    type SetValue = Self;
12886    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12887
12888    fn param_spec_builder() -> Self::BuilderFn {
12889        Self::ParamSpec::builder_with_default
12890    }
12891}
12892
12893#[cfg(feature = "v4_6")]
12894#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12895impl glib::value::ValueType for SymbolicColor {
12896    type Type = Self;
12897}
12898
12899#[cfg(feature = "v4_6")]
12900#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12901unsafe impl<'a> glib::value::FromValue<'a> for SymbolicColor {
12902    type Checker = glib::value::GenericValueTypeChecker<Self>;
12903
12904    #[inline]
12905    unsafe fn from_value(value: &'a glib::Value) -> Self {
12906        skip_assert_initialized!();
12907        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
12908    }
12909}
12910
12911#[cfg(feature = "v4_6")]
12912#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12913impl ToValue for SymbolicColor {
12914    #[inline]
12915    fn to_value(&self) -> glib::Value {
12916        let mut value = glib::Value::for_value_type::<Self>();
12917        unsafe {
12918            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12919        }
12920        value
12921    }
12922
12923    #[inline]
12924    fn value_type(&self) -> glib::Type {
12925        Self::static_type()
12926    }
12927}
12928
12929#[cfg(feature = "v4_6")]
12930#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12931impl From<SymbolicColor> for glib::Value {
12932    #[inline]
12933    fn from(v: SymbolicColor) -> Self {
12934        skip_assert_initialized!();
12935        ToValue::to_value(&v)
12936    }
12937}
12938
12939/// Values that can be passed to the [`WidgetImpl::system_setting_changed()`][crate::subclass::prelude::WidgetImpl::system_setting_changed()]
12940/// vfunc.
12941///
12942/// The values indicate which system setting has changed.
12943/// Widgets may need to drop caches, or react otherwise.
12944///
12945/// Most of the values correspond to [`Settings`][crate::Settings] properties.
12946///
12947/// More values may be added over time.
12948#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12949#[non_exhaustive]
12950#[doc(alias = "GtkSystemSetting")]
12951pub enum SystemSetting {
12952    /// the [`gtk-xft-dpi`][struct@crate::Settings#gtk-xft-dpi] setting has changed
12953    #[doc(alias = "GTK_SYSTEM_SETTING_DPI")]
12954    Dpi,
12955    /// The [`gtk-font-name`][struct@crate::Settings#gtk-font-name] setting has changed
12956    #[doc(alias = "GTK_SYSTEM_SETTING_FONT_NAME")]
12957    FontName,
12958    /// The font configuration has changed in a way that
12959    ///   requires text to be redrawn. This can be any of the
12960    ///   [`gtk-xft-antialias`][struct@crate::Settings#gtk-xft-antialias],
12961    ///   [`gtk-xft-hinting`][struct@crate::Settings#gtk-xft-hinting],
12962    ///   [`gtk-xft-hintstyle`][struct@crate::Settings#gtk-xft-hintstyle],
12963    ///   [`gtk-xft-rgba`][struct@crate::Settings#gtk-xft-rgba] or
12964    ///   [`gtk-fontconfig-timestamp`][struct@crate::Settings#gtk-fontconfig-timestamp] settings
12965    #[doc(alias = "GTK_SYSTEM_SETTING_FONT_CONFIG")]
12966    FontConfig,
12967    /// The display has changed
12968    #[doc(alias = "GTK_SYSTEM_SETTING_DISPLAY")]
12969    Display,
12970    /// The icon theme has changed in a way that requires
12971    ///   icons to be looked up again
12972    #[doc(alias = "GTK_SYSTEM_SETTING_ICON_THEME")]
12973    IconTheme,
12974    #[doc(hidden)]
12975    __Unknown(i32),
12976}
12977
12978#[doc(hidden)]
12979impl IntoGlib for SystemSetting {
12980    type GlibType = ffi::GtkSystemSetting;
12981
12982    #[inline]
12983    fn into_glib(self) -> ffi::GtkSystemSetting {
12984        match self {
12985            Self::Dpi => ffi::GTK_SYSTEM_SETTING_DPI,
12986            Self::FontName => ffi::GTK_SYSTEM_SETTING_FONT_NAME,
12987            Self::FontConfig => ffi::GTK_SYSTEM_SETTING_FONT_CONFIG,
12988            Self::Display => ffi::GTK_SYSTEM_SETTING_DISPLAY,
12989            Self::IconTheme => ffi::GTK_SYSTEM_SETTING_ICON_THEME,
12990            Self::__Unknown(value) => value,
12991        }
12992    }
12993}
12994
12995#[doc(hidden)]
12996impl FromGlib<ffi::GtkSystemSetting> for SystemSetting {
12997    #[inline]
12998    unsafe fn from_glib(value: ffi::GtkSystemSetting) -> Self {
12999        skip_assert_initialized!();
13000
13001        match value {
13002            ffi::GTK_SYSTEM_SETTING_DPI => Self::Dpi,
13003            ffi::GTK_SYSTEM_SETTING_FONT_NAME => Self::FontName,
13004            ffi::GTK_SYSTEM_SETTING_FONT_CONFIG => Self::FontConfig,
13005            ffi::GTK_SYSTEM_SETTING_DISPLAY => Self::Display,
13006            ffi::GTK_SYSTEM_SETTING_ICON_THEME => Self::IconTheme,
13007            value => Self::__Unknown(value),
13008        }
13009    }
13010}
13011
13012impl StaticType for SystemSetting {
13013    #[inline]
13014    #[doc(alias = "gtk_system_setting_get_type")]
13015    fn static_type() -> glib::Type {
13016        unsafe { from_glib(ffi::gtk_system_setting_get_type()) }
13017    }
13018}
13019
13020impl glib::HasParamSpec for SystemSetting {
13021    type ParamSpec = glib::ParamSpecEnum;
13022    type SetValue = Self;
13023    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13024
13025    fn param_spec_builder() -> Self::BuilderFn {
13026        Self::ParamSpec::builder_with_default
13027    }
13028}
13029
13030impl glib::value::ValueType for SystemSetting {
13031    type Type = Self;
13032}
13033
13034unsafe impl<'a> glib::value::FromValue<'a> for SystemSetting {
13035    type Checker = glib::value::GenericValueTypeChecker<Self>;
13036
13037    #[inline]
13038    unsafe fn from_value(value: &'a glib::Value) -> Self {
13039        skip_assert_initialized!();
13040        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13041    }
13042}
13043
13044impl ToValue for SystemSetting {
13045    #[inline]
13046    fn to_value(&self) -> glib::Value {
13047        let mut value = glib::Value::for_value_type::<Self>();
13048        unsafe {
13049            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13050        }
13051        value
13052    }
13053
13054    #[inline]
13055    fn value_type(&self) -> glib::Type {
13056        Self::static_type()
13057    }
13058}
13059
13060impl From<SystemSetting> for glib::Value {
13061    #[inline]
13062    fn from(v: SystemSetting) -> Self {
13063        skip_assert_initialized!();
13064        ToValue::to_value(&v)
13065    }
13066}
13067
13068/// Reading directions for text.
13069#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13070#[non_exhaustive]
13071#[doc(alias = "GtkTextDirection")]
13072pub enum TextDirection {
13073    /// No direction.
13074    #[doc(alias = "GTK_TEXT_DIR_NONE")]
13075    None,
13076    /// Left to right text direction.
13077    #[doc(alias = "GTK_TEXT_DIR_LTR")]
13078    Ltr,
13079    /// Right to left text direction.
13080    #[doc(alias = "GTK_TEXT_DIR_RTL")]
13081    Rtl,
13082    #[doc(hidden)]
13083    __Unknown(i32),
13084}
13085
13086#[doc(hidden)]
13087impl IntoGlib for TextDirection {
13088    type GlibType = ffi::GtkTextDirection;
13089
13090    #[inline]
13091    fn into_glib(self) -> ffi::GtkTextDirection {
13092        match self {
13093            Self::None => ffi::GTK_TEXT_DIR_NONE,
13094            Self::Ltr => ffi::GTK_TEXT_DIR_LTR,
13095            Self::Rtl => ffi::GTK_TEXT_DIR_RTL,
13096            Self::__Unknown(value) => value,
13097        }
13098    }
13099}
13100
13101#[doc(hidden)]
13102impl FromGlib<ffi::GtkTextDirection> for TextDirection {
13103    #[inline]
13104    unsafe fn from_glib(value: ffi::GtkTextDirection) -> Self {
13105        skip_assert_initialized!();
13106
13107        match value {
13108            ffi::GTK_TEXT_DIR_NONE => Self::None,
13109            ffi::GTK_TEXT_DIR_LTR => Self::Ltr,
13110            ffi::GTK_TEXT_DIR_RTL => Self::Rtl,
13111            value => Self::__Unknown(value),
13112        }
13113    }
13114}
13115
13116impl StaticType for TextDirection {
13117    #[inline]
13118    #[doc(alias = "gtk_text_direction_get_type")]
13119    fn static_type() -> glib::Type {
13120        unsafe { from_glib(ffi::gtk_text_direction_get_type()) }
13121    }
13122}
13123
13124impl glib::HasParamSpec for TextDirection {
13125    type ParamSpec = glib::ParamSpecEnum;
13126    type SetValue = Self;
13127    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13128
13129    fn param_spec_builder() -> Self::BuilderFn {
13130        Self::ParamSpec::builder_with_default
13131    }
13132}
13133
13134impl glib::value::ValueType for TextDirection {
13135    type Type = Self;
13136}
13137
13138unsafe impl<'a> glib::value::FromValue<'a> for TextDirection {
13139    type Checker = glib::value::GenericValueTypeChecker<Self>;
13140
13141    #[inline]
13142    unsafe fn from_value(value: &'a glib::Value) -> Self {
13143        skip_assert_initialized!();
13144        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13145    }
13146}
13147
13148impl ToValue for TextDirection {
13149    #[inline]
13150    fn to_value(&self) -> glib::Value {
13151        let mut value = glib::Value::for_value_type::<Self>();
13152        unsafe {
13153            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13154        }
13155        value
13156    }
13157
13158    #[inline]
13159    fn value_type(&self) -> glib::Type {
13160        Self::static_type()
13161    }
13162}
13163
13164impl From<TextDirection> for glib::Value {
13165    #[inline]
13166    fn from(v: TextDirection) -> Self {
13167        skip_assert_initialized!();
13168        ToValue::to_value(&v)
13169    }
13170}
13171
13172/// Granularity types that extend the text selection. Use the
13173/// `GtkTextView::extend-selection` signal to customize the selection.
13174#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13175#[non_exhaustive]
13176#[doc(alias = "GtkTextExtendSelection")]
13177pub enum TextExtendSelection {
13178    /// Selects the current word. It is triggered by
13179    ///   a double-click for example.
13180    #[doc(alias = "GTK_TEXT_EXTEND_SELECTION_WORD")]
13181    Word,
13182    /// Selects the current line. It is triggered by
13183    ///   a triple-click for example.
13184    #[doc(alias = "GTK_TEXT_EXTEND_SELECTION_LINE")]
13185    Line,
13186    #[doc(hidden)]
13187    __Unknown(i32),
13188}
13189
13190#[doc(hidden)]
13191impl IntoGlib for TextExtendSelection {
13192    type GlibType = ffi::GtkTextExtendSelection;
13193
13194    #[inline]
13195    fn into_glib(self) -> ffi::GtkTextExtendSelection {
13196        match self {
13197            Self::Word => ffi::GTK_TEXT_EXTEND_SELECTION_WORD,
13198            Self::Line => ffi::GTK_TEXT_EXTEND_SELECTION_LINE,
13199            Self::__Unknown(value) => value,
13200        }
13201    }
13202}
13203
13204#[doc(hidden)]
13205impl FromGlib<ffi::GtkTextExtendSelection> for TextExtendSelection {
13206    #[inline]
13207    unsafe fn from_glib(value: ffi::GtkTextExtendSelection) -> Self {
13208        skip_assert_initialized!();
13209
13210        match value {
13211            ffi::GTK_TEXT_EXTEND_SELECTION_WORD => Self::Word,
13212            ffi::GTK_TEXT_EXTEND_SELECTION_LINE => Self::Line,
13213            value => Self::__Unknown(value),
13214        }
13215    }
13216}
13217
13218impl StaticType for TextExtendSelection {
13219    #[inline]
13220    #[doc(alias = "gtk_text_extend_selection_get_type")]
13221    fn static_type() -> glib::Type {
13222        unsafe { from_glib(ffi::gtk_text_extend_selection_get_type()) }
13223    }
13224}
13225
13226impl glib::HasParamSpec for TextExtendSelection {
13227    type ParamSpec = glib::ParamSpecEnum;
13228    type SetValue = Self;
13229    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13230
13231    fn param_spec_builder() -> Self::BuilderFn {
13232        Self::ParamSpec::builder_with_default
13233    }
13234}
13235
13236impl glib::value::ValueType for TextExtendSelection {
13237    type Type = Self;
13238}
13239
13240unsafe impl<'a> glib::value::FromValue<'a> for TextExtendSelection {
13241    type Checker = glib::value::GenericValueTypeChecker<Self>;
13242
13243    #[inline]
13244    unsafe fn from_value(value: &'a glib::Value) -> Self {
13245        skip_assert_initialized!();
13246        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13247    }
13248}
13249
13250impl ToValue for TextExtendSelection {
13251    #[inline]
13252    fn to_value(&self) -> glib::Value {
13253        let mut value = glib::Value::for_value_type::<Self>();
13254        unsafe {
13255            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13256        }
13257        value
13258    }
13259
13260    #[inline]
13261    fn value_type(&self) -> glib::Type {
13262        Self::static_type()
13263    }
13264}
13265
13266impl From<TextExtendSelection> for glib::Value {
13267    #[inline]
13268    fn from(v: TextExtendSelection) -> Self {
13269        skip_assert_initialized!();
13270        ToValue::to_value(&v)
13271    }
13272}
13273
13274/// Used to reference the layers of [`TextView`][crate::TextView] for the purpose of customized
13275/// drawing with the ::snapshot_layer vfunc.
13276#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13277#[non_exhaustive]
13278#[doc(alias = "GtkTextViewLayer")]
13279pub enum TextViewLayer {
13280    /// The layer rendered below the text (but above the background).
13281    #[doc(alias = "GTK_TEXT_VIEW_LAYER_BELOW_TEXT")]
13282    BelowText,
13283    /// The layer rendered above the text.
13284    #[doc(alias = "GTK_TEXT_VIEW_LAYER_ABOVE_TEXT")]
13285    AboveText,
13286    #[doc(hidden)]
13287    __Unknown(i32),
13288}
13289
13290#[doc(hidden)]
13291impl IntoGlib for TextViewLayer {
13292    type GlibType = ffi::GtkTextViewLayer;
13293
13294    #[inline]
13295    fn into_glib(self) -> ffi::GtkTextViewLayer {
13296        match self {
13297            Self::BelowText => ffi::GTK_TEXT_VIEW_LAYER_BELOW_TEXT,
13298            Self::AboveText => ffi::GTK_TEXT_VIEW_LAYER_ABOVE_TEXT,
13299            Self::__Unknown(value) => value,
13300        }
13301    }
13302}
13303
13304#[doc(hidden)]
13305impl FromGlib<ffi::GtkTextViewLayer> for TextViewLayer {
13306    #[inline]
13307    unsafe fn from_glib(value: ffi::GtkTextViewLayer) -> Self {
13308        skip_assert_initialized!();
13309
13310        match value {
13311            ffi::GTK_TEXT_VIEW_LAYER_BELOW_TEXT => Self::BelowText,
13312            ffi::GTK_TEXT_VIEW_LAYER_ABOVE_TEXT => Self::AboveText,
13313            value => Self::__Unknown(value),
13314        }
13315    }
13316}
13317
13318impl StaticType for TextViewLayer {
13319    #[inline]
13320    #[doc(alias = "gtk_text_view_layer_get_type")]
13321    fn static_type() -> glib::Type {
13322        unsafe { from_glib(ffi::gtk_text_view_layer_get_type()) }
13323    }
13324}
13325
13326impl glib::HasParamSpec for TextViewLayer {
13327    type ParamSpec = glib::ParamSpecEnum;
13328    type SetValue = Self;
13329    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13330
13331    fn param_spec_builder() -> Self::BuilderFn {
13332        Self::ParamSpec::builder_with_default
13333    }
13334}
13335
13336impl glib::value::ValueType for TextViewLayer {
13337    type Type = Self;
13338}
13339
13340unsafe impl<'a> glib::value::FromValue<'a> for TextViewLayer {
13341    type Checker = glib::value::GenericValueTypeChecker<Self>;
13342
13343    #[inline]
13344    unsafe fn from_value(value: &'a glib::Value) -> Self {
13345        skip_assert_initialized!();
13346        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13347    }
13348}
13349
13350impl ToValue for TextViewLayer {
13351    #[inline]
13352    fn to_value(&self) -> glib::Value {
13353        let mut value = glib::Value::for_value_type::<Self>();
13354        unsafe {
13355            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13356        }
13357        value
13358    }
13359
13360    #[inline]
13361    fn value_type(&self) -> glib::Type {
13362        Self::static_type()
13363    }
13364}
13365
13366impl From<TextViewLayer> for glib::Value {
13367    #[inline]
13368    fn from(v: TextViewLayer) -> Self {
13369        skip_assert_initialized!();
13370        ToValue::to_value(&v)
13371    }
13372}
13373
13374/// Used to reference the parts of [`TextView`][crate::TextView].
13375#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13376#[non_exhaustive]
13377#[doc(alias = "GtkTextWindowType")]
13378pub enum TextWindowType {
13379    /// Window that floats over scrolling areas.
13380    #[doc(alias = "GTK_TEXT_WINDOW_WIDGET")]
13381    Widget,
13382    /// Scrollable text window.
13383    #[doc(alias = "GTK_TEXT_WINDOW_TEXT")]
13384    Text,
13385    /// Left side border window.
13386    #[doc(alias = "GTK_TEXT_WINDOW_LEFT")]
13387    Left,
13388    /// Right side border window.
13389    #[doc(alias = "GTK_TEXT_WINDOW_RIGHT")]
13390    Right,
13391    /// Top border window.
13392    #[doc(alias = "GTK_TEXT_WINDOW_TOP")]
13393    Top,
13394    /// Bottom border window.
13395    #[doc(alias = "GTK_TEXT_WINDOW_BOTTOM")]
13396    Bottom,
13397    #[doc(hidden)]
13398    __Unknown(i32),
13399}
13400
13401#[doc(hidden)]
13402impl IntoGlib for TextWindowType {
13403    type GlibType = ffi::GtkTextWindowType;
13404
13405    #[inline]
13406    fn into_glib(self) -> ffi::GtkTextWindowType {
13407        match self {
13408            Self::Widget => ffi::GTK_TEXT_WINDOW_WIDGET,
13409            Self::Text => ffi::GTK_TEXT_WINDOW_TEXT,
13410            Self::Left => ffi::GTK_TEXT_WINDOW_LEFT,
13411            Self::Right => ffi::GTK_TEXT_WINDOW_RIGHT,
13412            Self::Top => ffi::GTK_TEXT_WINDOW_TOP,
13413            Self::Bottom => ffi::GTK_TEXT_WINDOW_BOTTOM,
13414            Self::__Unknown(value) => value,
13415        }
13416    }
13417}
13418
13419#[doc(hidden)]
13420impl FromGlib<ffi::GtkTextWindowType> for TextWindowType {
13421    #[inline]
13422    unsafe fn from_glib(value: ffi::GtkTextWindowType) -> Self {
13423        skip_assert_initialized!();
13424
13425        match value {
13426            ffi::GTK_TEXT_WINDOW_WIDGET => Self::Widget,
13427            ffi::GTK_TEXT_WINDOW_TEXT => Self::Text,
13428            ffi::GTK_TEXT_WINDOW_LEFT => Self::Left,
13429            ffi::GTK_TEXT_WINDOW_RIGHT => Self::Right,
13430            ffi::GTK_TEXT_WINDOW_TOP => Self::Top,
13431            ffi::GTK_TEXT_WINDOW_BOTTOM => Self::Bottom,
13432            value => Self::__Unknown(value),
13433        }
13434    }
13435}
13436
13437impl StaticType for TextWindowType {
13438    #[inline]
13439    #[doc(alias = "gtk_text_window_type_get_type")]
13440    fn static_type() -> glib::Type {
13441        unsafe { from_glib(ffi::gtk_text_window_type_get_type()) }
13442    }
13443}
13444
13445impl glib::HasParamSpec for TextWindowType {
13446    type ParamSpec = glib::ParamSpecEnum;
13447    type SetValue = Self;
13448    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13449
13450    fn param_spec_builder() -> Self::BuilderFn {
13451        Self::ParamSpec::builder_with_default
13452    }
13453}
13454
13455impl glib::value::ValueType for TextWindowType {
13456    type Type = Self;
13457}
13458
13459unsafe impl<'a> glib::value::FromValue<'a> for TextWindowType {
13460    type Checker = glib::value::GenericValueTypeChecker<Self>;
13461
13462    #[inline]
13463    unsafe fn from_value(value: &'a glib::Value) -> Self {
13464        skip_assert_initialized!();
13465        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13466    }
13467}
13468
13469impl ToValue for TextWindowType {
13470    #[inline]
13471    fn to_value(&self) -> glib::Value {
13472        let mut value = glib::Value::for_value_type::<Self>();
13473        unsafe {
13474            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13475        }
13476        value
13477    }
13478
13479    #[inline]
13480    fn value_type(&self) -> glib::Type {
13481        Self::static_type()
13482    }
13483}
13484
13485impl From<TextWindowType> for glib::Value {
13486    #[inline]
13487    fn from(v: TextWindowType) -> Self {
13488        skip_assert_initialized!();
13489        ToValue::to_value(&v)
13490    }
13491}
13492
13493/// The sizing method the column uses to determine its width.  Please note
13494/// that [`Autosize`][Self::Autosize] are inefficient for large views, and
13495/// can make columns appear choppy.
13496///
13497/// # Deprecated since 4.20
13498///
13499/// There is no replacement.
13500#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13501#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13502#[non_exhaustive]
13503#[doc(alias = "GtkTreeViewColumnSizing")]
13504pub enum TreeViewColumnSizing {
13505    /// Columns only get bigger in reaction to changes in the model
13506    #[doc(alias = "GTK_TREE_VIEW_COLUMN_GROW_ONLY")]
13507    GrowOnly,
13508    /// Columns resize to be the optimal size every time the model changes.
13509    #[doc(alias = "GTK_TREE_VIEW_COLUMN_AUTOSIZE")]
13510    Autosize,
13511    /// Columns are a fixed numbers of pixels wide.
13512    #[doc(alias = "GTK_TREE_VIEW_COLUMN_FIXED")]
13513    Fixed,
13514    #[doc(hidden)]
13515    __Unknown(i32),
13516}
13517
13518#[allow(deprecated)]
13519#[doc(hidden)]
13520impl IntoGlib for TreeViewColumnSizing {
13521    type GlibType = ffi::GtkTreeViewColumnSizing;
13522
13523    #[inline]
13524    fn into_glib(self) -> ffi::GtkTreeViewColumnSizing {
13525        match self {
13526            Self::GrowOnly => ffi::GTK_TREE_VIEW_COLUMN_GROW_ONLY,
13527            Self::Autosize => ffi::GTK_TREE_VIEW_COLUMN_AUTOSIZE,
13528            Self::Fixed => ffi::GTK_TREE_VIEW_COLUMN_FIXED,
13529            Self::__Unknown(value) => value,
13530        }
13531    }
13532}
13533
13534#[allow(deprecated)]
13535#[doc(hidden)]
13536impl FromGlib<ffi::GtkTreeViewColumnSizing> for TreeViewColumnSizing {
13537    #[inline]
13538    unsafe fn from_glib(value: ffi::GtkTreeViewColumnSizing) -> Self {
13539        skip_assert_initialized!();
13540
13541        match value {
13542            ffi::GTK_TREE_VIEW_COLUMN_GROW_ONLY => Self::GrowOnly,
13543            ffi::GTK_TREE_VIEW_COLUMN_AUTOSIZE => Self::Autosize,
13544            ffi::GTK_TREE_VIEW_COLUMN_FIXED => Self::Fixed,
13545            value => Self::__Unknown(value),
13546        }
13547    }
13548}
13549
13550#[allow(deprecated)]
13551impl StaticType for TreeViewColumnSizing {
13552    #[inline]
13553    #[doc(alias = "gtk_tree_view_column_sizing_get_type")]
13554    fn static_type() -> glib::Type {
13555        unsafe { from_glib(ffi::gtk_tree_view_column_sizing_get_type()) }
13556    }
13557}
13558
13559#[allow(deprecated)]
13560impl glib::HasParamSpec for TreeViewColumnSizing {
13561    type ParamSpec = glib::ParamSpecEnum;
13562    type SetValue = Self;
13563    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13564
13565    fn param_spec_builder() -> Self::BuilderFn {
13566        Self::ParamSpec::builder_with_default
13567    }
13568}
13569
13570#[allow(deprecated)]
13571impl glib::value::ValueType for TreeViewColumnSizing {
13572    type Type = Self;
13573}
13574
13575#[allow(deprecated)]
13576unsafe impl<'a> glib::value::FromValue<'a> for TreeViewColumnSizing {
13577    type Checker = glib::value::GenericValueTypeChecker<Self>;
13578
13579    #[inline]
13580    unsafe fn from_value(value: &'a glib::Value) -> Self {
13581        skip_assert_initialized!();
13582        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13583    }
13584}
13585
13586#[allow(deprecated)]
13587impl ToValue for TreeViewColumnSizing {
13588    #[inline]
13589    fn to_value(&self) -> glib::Value {
13590        let mut value = glib::Value::for_value_type::<Self>();
13591        unsafe {
13592            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13593        }
13594        value
13595    }
13596
13597    #[inline]
13598    fn value_type(&self) -> glib::Type {
13599        Self::static_type()
13600    }
13601}
13602
13603#[allow(deprecated)]
13604impl From<TreeViewColumnSizing> for glib::Value {
13605    #[inline]
13606    fn from(v: TreeViewColumnSizing) -> Self {
13607        skip_assert_initialized!();
13608        ToValue::to_value(&v)
13609    }
13610}
13611
13612/// An enum for determining where a dropped row goes.
13613///
13614/// # Deprecated since 4.20
13615///
13616/// There is no replacement.
13617#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13618#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13619#[non_exhaustive]
13620#[doc(alias = "GtkTreeViewDropPosition")]
13621pub enum TreeViewDropPosition {
13622    /// dropped row is inserted before
13623    #[doc(alias = "GTK_TREE_VIEW_DROP_BEFORE")]
13624    Before,
13625    /// dropped row is inserted after
13626    #[doc(alias = "GTK_TREE_VIEW_DROP_AFTER")]
13627    After,
13628    /// dropped row becomes a child or is inserted before
13629    #[doc(alias = "GTK_TREE_VIEW_DROP_INTO_OR_BEFORE")]
13630    IntoOrBefore,
13631    /// dropped row becomes a child or is inserted after
13632    #[doc(alias = "GTK_TREE_VIEW_DROP_INTO_OR_AFTER")]
13633    IntoOrAfter,
13634    #[doc(hidden)]
13635    __Unknown(i32),
13636}
13637
13638#[allow(deprecated)]
13639#[doc(hidden)]
13640impl IntoGlib for TreeViewDropPosition {
13641    type GlibType = ffi::GtkTreeViewDropPosition;
13642
13643    #[inline]
13644    fn into_glib(self) -> ffi::GtkTreeViewDropPosition {
13645        match self {
13646            Self::Before => ffi::GTK_TREE_VIEW_DROP_BEFORE,
13647            Self::After => ffi::GTK_TREE_VIEW_DROP_AFTER,
13648            Self::IntoOrBefore => ffi::GTK_TREE_VIEW_DROP_INTO_OR_BEFORE,
13649            Self::IntoOrAfter => ffi::GTK_TREE_VIEW_DROP_INTO_OR_AFTER,
13650            Self::__Unknown(value) => value,
13651        }
13652    }
13653}
13654
13655#[allow(deprecated)]
13656#[doc(hidden)]
13657impl FromGlib<ffi::GtkTreeViewDropPosition> for TreeViewDropPosition {
13658    #[inline]
13659    unsafe fn from_glib(value: ffi::GtkTreeViewDropPosition) -> Self {
13660        skip_assert_initialized!();
13661
13662        match value {
13663            ffi::GTK_TREE_VIEW_DROP_BEFORE => Self::Before,
13664            ffi::GTK_TREE_VIEW_DROP_AFTER => Self::After,
13665            ffi::GTK_TREE_VIEW_DROP_INTO_OR_BEFORE => Self::IntoOrBefore,
13666            ffi::GTK_TREE_VIEW_DROP_INTO_OR_AFTER => Self::IntoOrAfter,
13667            value => Self::__Unknown(value),
13668        }
13669    }
13670}
13671
13672#[allow(deprecated)]
13673impl StaticType for TreeViewDropPosition {
13674    #[inline]
13675    #[doc(alias = "gtk_tree_view_drop_position_get_type")]
13676    fn static_type() -> glib::Type {
13677        unsafe { from_glib(ffi::gtk_tree_view_drop_position_get_type()) }
13678    }
13679}
13680
13681#[allow(deprecated)]
13682impl glib::HasParamSpec for TreeViewDropPosition {
13683    type ParamSpec = glib::ParamSpecEnum;
13684    type SetValue = Self;
13685    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13686
13687    fn param_spec_builder() -> Self::BuilderFn {
13688        Self::ParamSpec::builder_with_default
13689    }
13690}
13691
13692#[allow(deprecated)]
13693impl glib::value::ValueType for TreeViewDropPosition {
13694    type Type = Self;
13695}
13696
13697#[allow(deprecated)]
13698unsafe impl<'a> glib::value::FromValue<'a> for TreeViewDropPosition {
13699    type Checker = glib::value::GenericValueTypeChecker<Self>;
13700
13701    #[inline]
13702    unsafe fn from_value(value: &'a glib::Value) -> Self {
13703        skip_assert_initialized!();
13704        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13705    }
13706}
13707
13708#[allow(deprecated)]
13709impl ToValue for TreeViewDropPosition {
13710    #[inline]
13711    fn to_value(&self) -> glib::Value {
13712        let mut value = glib::Value::for_value_type::<Self>();
13713        unsafe {
13714            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13715        }
13716        value
13717    }
13718
13719    #[inline]
13720    fn value_type(&self) -> glib::Type {
13721        Self::static_type()
13722    }
13723}
13724
13725#[allow(deprecated)]
13726impl From<TreeViewDropPosition> for glib::Value {
13727    #[inline]
13728    fn from(v: TreeViewDropPosition) -> Self {
13729        skip_assert_initialized!();
13730        ToValue::to_value(&v)
13731    }
13732}
13733
13734/// Used to indicate which grid lines to draw in a tree view.
13735///
13736/// # Deprecated since 4.20
13737///
13738/// There is no replacement
13739#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13740#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13741#[non_exhaustive]
13742#[doc(alias = "GtkTreeViewGridLines")]
13743pub enum TreeViewGridLines {
13744    /// No grid lines.
13745    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_NONE")]
13746    None,
13747    /// Horizontal grid lines.
13748    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_HORIZONTAL")]
13749    Horizontal,
13750    /// Vertical grid lines.
13751    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_VERTICAL")]
13752    Vertical,
13753    /// Horizontal and vertical grid lines.
13754    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_BOTH")]
13755    Both,
13756    #[doc(hidden)]
13757    __Unknown(i32),
13758}
13759
13760#[allow(deprecated)]
13761#[doc(hidden)]
13762impl IntoGlib for TreeViewGridLines {
13763    type GlibType = ffi::GtkTreeViewGridLines;
13764
13765    #[inline]
13766    fn into_glib(self) -> ffi::GtkTreeViewGridLines {
13767        match self {
13768            Self::None => ffi::GTK_TREE_VIEW_GRID_LINES_NONE,
13769            Self::Horizontal => ffi::GTK_TREE_VIEW_GRID_LINES_HORIZONTAL,
13770            Self::Vertical => ffi::GTK_TREE_VIEW_GRID_LINES_VERTICAL,
13771            Self::Both => ffi::GTK_TREE_VIEW_GRID_LINES_BOTH,
13772            Self::__Unknown(value) => value,
13773        }
13774    }
13775}
13776
13777#[allow(deprecated)]
13778#[doc(hidden)]
13779impl FromGlib<ffi::GtkTreeViewGridLines> for TreeViewGridLines {
13780    #[inline]
13781    unsafe fn from_glib(value: ffi::GtkTreeViewGridLines) -> Self {
13782        skip_assert_initialized!();
13783
13784        match value {
13785            ffi::GTK_TREE_VIEW_GRID_LINES_NONE => Self::None,
13786            ffi::GTK_TREE_VIEW_GRID_LINES_HORIZONTAL => Self::Horizontal,
13787            ffi::GTK_TREE_VIEW_GRID_LINES_VERTICAL => Self::Vertical,
13788            ffi::GTK_TREE_VIEW_GRID_LINES_BOTH => Self::Both,
13789            value => Self::__Unknown(value),
13790        }
13791    }
13792}
13793
13794#[allow(deprecated)]
13795impl StaticType for TreeViewGridLines {
13796    #[inline]
13797    #[doc(alias = "gtk_tree_view_grid_lines_get_type")]
13798    fn static_type() -> glib::Type {
13799        unsafe { from_glib(ffi::gtk_tree_view_grid_lines_get_type()) }
13800    }
13801}
13802
13803#[allow(deprecated)]
13804impl glib::HasParamSpec for TreeViewGridLines {
13805    type ParamSpec = glib::ParamSpecEnum;
13806    type SetValue = Self;
13807    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13808
13809    fn param_spec_builder() -> Self::BuilderFn {
13810        Self::ParamSpec::builder_with_default
13811    }
13812}
13813
13814#[allow(deprecated)]
13815impl glib::value::ValueType for TreeViewGridLines {
13816    type Type = Self;
13817}
13818
13819#[allow(deprecated)]
13820unsafe impl<'a> glib::value::FromValue<'a> for TreeViewGridLines {
13821    type Checker = glib::value::GenericValueTypeChecker<Self>;
13822
13823    #[inline]
13824    unsafe fn from_value(value: &'a glib::Value) -> Self {
13825        skip_assert_initialized!();
13826        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13827    }
13828}
13829
13830#[allow(deprecated)]
13831impl ToValue for TreeViewGridLines {
13832    #[inline]
13833    fn to_value(&self) -> glib::Value {
13834        let mut value = glib::Value::for_value_type::<Self>();
13835        unsafe {
13836            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13837        }
13838        value
13839    }
13840
13841    #[inline]
13842    fn value_type(&self) -> glib::Type {
13843        Self::static_type()
13844    }
13845}
13846
13847#[allow(deprecated)]
13848impl From<TreeViewGridLines> for glib::Value {
13849    #[inline]
13850    fn from(v: TreeViewGridLines) -> Self {
13851        skip_assert_initialized!();
13852        ToValue::to_value(&v)
13853    }
13854}
13855
13856/// See also gtk_print_settings_set_paper_width().
13857#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13858#[non_exhaustive]
13859#[doc(alias = "GtkUnit")]
13860pub enum Unit {
13861    /// No units.
13862    #[doc(alias = "GTK_UNIT_NONE")]
13863    None,
13864    /// Dimensions in points.
13865    #[doc(alias = "GTK_UNIT_POINTS")]
13866    Points,
13867    /// Dimensions in inches.
13868    #[doc(alias = "GTK_UNIT_INCH")]
13869    Inch,
13870    /// Dimensions in millimeters
13871    #[doc(alias = "GTK_UNIT_MM")]
13872    Mm,
13873    #[doc(hidden)]
13874    __Unknown(i32),
13875}
13876
13877#[doc(hidden)]
13878impl IntoGlib for Unit {
13879    type GlibType = ffi::GtkUnit;
13880
13881    #[inline]
13882    fn into_glib(self) -> ffi::GtkUnit {
13883        match self {
13884            Self::None => ffi::GTK_UNIT_NONE,
13885            Self::Points => ffi::GTK_UNIT_POINTS,
13886            Self::Inch => ffi::GTK_UNIT_INCH,
13887            Self::Mm => ffi::GTK_UNIT_MM,
13888            Self::__Unknown(value) => value,
13889        }
13890    }
13891}
13892
13893#[doc(hidden)]
13894impl FromGlib<ffi::GtkUnit> for Unit {
13895    #[inline]
13896    unsafe fn from_glib(value: ffi::GtkUnit) -> Self {
13897        skip_assert_initialized!();
13898
13899        match value {
13900            ffi::GTK_UNIT_NONE => Self::None,
13901            ffi::GTK_UNIT_POINTS => Self::Points,
13902            ffi::GTK_UNIT_INCH => Self::Inch,
13903            ffi::GTK_UNIT_MM => Self::Mm,
13904            value => Self::__Unknown(value),
13905        }
13906    }
13907}
13908
13909impl StaticType for Unit {
13910    #[inline]
13911    #[doc(alias = "gtk_unit_get_type")]
13912    fn static_type() -> glib::Type {
13913        unsafe { from_glib(ffi::gtk_unit_get_type()) }
13914    }
13915}
13916
13917impl glib::HasParamSpec for Unit {
13918    type ParamSpec = glib::ParamSpecEnum;
13919    type SetValue = Self;
13920    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13921
13922    fn param_spec_builder() -> Self::BuilderFn {
13923        Self::ParamSpec::builder_with_default
13924    }
13925}
13926
13927impl glib::value::ValueType for Unit {
13928    type Type = Self;
13929}
13930
13931unsafe impl<'a> glib::value::FromValue<'a> for Unit {
13932    type Checker = glib::value::GenericValueTypeChecker<Self>;
13933
13934    #[inline]
13935    unsafe fn from_value(value: &'a glib::Value) -> Self {
13936        skip_assert_initialized!();
13937        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
13938    }
13939}
13940
13941impl ToValue for Unit {
13942    #[inline]
13943    fn to_value(&self) -> glib::Value {
13944        let mut value = glib::Value::for_value_type::<Self>();
13945        unsafe {
13946            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13947        }
13948        value
13949    }
13950
13951    #[inline]
13952    fn value_type(&self) -> glib::Type {
13953        Self::static_type()
13954    }
13955}
13956
13957impl From<Unit> for glib::Value {
13958    #[inline]
13959    fn from(v: Unit) -> Self {
13960        skip_assert_initialized!();
13961        ToValue::to_value(&v)
13962    }
13963}
13964
13965/// Determines which point or edge of a window is meant to remain fixed
13966/// when a window changes size.
13967#[cfg(feature = "v4_20")]
13968#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
13969#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13970#[non_exhaustive]
13971#[doc(alias = "GtkWindowGravity")]
13972pub enum WindowGravity {
13973    /// The top left corner
13974    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_LEFT")]
13975    TopLeft,
13976    /// The top edge
13977    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP")]
13978    Top,
13979    /// The top right corner
13980    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_RIGHT")]
13981    TopRight,
13982    /// The left edge
13983    #[doc(alias = "GTK_WINDOW_GRAVITY_LEFT")]
13984    Left,
13985    /// The center pointer
13986    #[doc(alias = "GTK_WINDOW_GRAVITY_CENTER")]
13987    Center,
13988    /// The right edge
13989    #[doc(alias = "GTK_WINDOW_GRAVITY_RIGHT")]
13990    Right,
13991    /// The bottom left corner
13992    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_LEFT")]
13993    BottomLeft,
13994    /// the bottom edge
13995    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM")]
13996    Bottom,
13997    /// The bottom right corner
13998    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_RIGHT")]
13999    BottomRight,
14000    /// The top left or top right corner,
14001    ///   depending on the text direction
14002    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_START")]
14003    TopStart,
14004    /// The top right or top left corner,
14005    ///   depending on the text direction
14006    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_END")]
14007    TopEnd,
14008    /// The left or right edge,
14009    ///   depending on the text direction
14010    #[doc(alias = "GTK_WINDOW_GRAVITY_START")]
14011    Start,
14012    /// The right or left edge,
14013    ///   depending on the text direction
14014    #[doc(alias = "GTK_WINDOW_GRAVITY_END")]
14015    End,
14016    /// The bottom left or top right corner,
14017    ///   depending on the text direction
14018    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_START")]
14019    BottomStart,
14020    /// The bottom right or top left corner,
14021    ///   depending on the text direction
14022    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_END")]
14023    BottomEnd,
14024    #[doc(hidden)]
14025    __Unknown(i32),
14026}
14027
14028#[cfg(feature = "v4_20")]
14029#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14030#[doc(hidden)]
14031impl IntoGlib for WindowGravity {
14032    type GlibType = ffi::GtkWindowGravity;
14033
14034    fn into_glib(self) -> ffi::GtkWindowGravity {
14035        match self {
14036            Self::TopLeft => ffi::GTK_WINDOW_GRAVITY_TOP_LEFT,
14037            Self::Top => ffi::GTK_WINDOW_GRAVITY_TOP,
14038            Self::TopRight => ffi::GTK_WINDOW_GRAVITY_TOP_RIGHT,
14039            Self::Left => ffi::GTK_WINDOW_GRAVITY_LEFT,
14040            Self::Center => ffi::GTK_WINDOW_GRAVITY_CENTER,
14041            Self::Right => ffi::GTK_WINDOW_GRAVITY_RIGHT,
14042            Self::BottomLeft => ffi::GTK_WINDOW_GRAVITY_BOTTOM_LEFT,
14043            Self::Bottom => ffi::GTK_WINDOW_GRAVITY_BOTTOM,
14044            Self::BottomRight => ffi::GTK_WINDOW_GRAVITY_BOTTOM_RIGHT,
14045            Self::TopStart => ffi::GTK_WINDOW_GRAVITY_TOP_START,
14046            Self::TopEnd => ffi::GTK_WINDOW_GRAVITY_TOP_END,
14047            Self::Start => ffi::GTK_WINDOW_GRAVITY_START,
14048            Self::End => ffi::GTK_WINDOW_GRAVITY_END,
14049            Self::BottomStart => ffi::GTK_WINDOW_GRAVITY_BOTTOM_START,
14050            Self::BottomEnd => ffi::GTK_WINDOW_GRAVITY_BOTTOM_END,
14051            Self::__Unknown(value) => value,
14052        }
14053    }
14054}
14055
14056#[cfg(feature = "v4_20")]
14057#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14058#[doc(hidden)]
14059impl FromGlib<ffi::GtkWindowGravity> for WindowGravity {
14060    unsafe fn from_glib(value: ffi::GtkWindowGravity) -> Self {
14061        skip_assert_initialized!();
14062
14063        match value {
14064            ffi::GTK_WINDOW_GRAVITY_TOP_LEFT => Self::TopLeft,
14065            ffi::GTK_WINDOW_GRAVITY_TOP => Self::Top,
14066            ffi::GTK_WINDOW_GRAVITY_TOP_RIGHT => Self::TopRight,
14067            ffi::GTK_WINDOW_GRAVITY_LEFT => Self::Left,
14068            ffi::GTK_WINDOW_GRAVITY_CENTER => Self::Center,
14069            ffi::GTK_WINDOW_GRAVITY_RIGHT => Self::Right,
14070            ffi::GTK_WINDOW_GRAVITY_BOTTOM_LEFT => Self::BottomLeft,
14071            ffi::GTK_WINDOW_GRAVITY_BOTTOM => Self::Bottom,
14072            ffi::GTK_WINDOW_GRAVITY_BOTTOM_RIGHT => Self::BottomRight,
14073            ffi::GTK_WINDOW_GRAVITY_TOP_START => Self::TopStart,
14074            ffi::GTK_WINDOW_GRAVITY_TOP_END => Self::TopEnd,
14075            ffi::GTK_WINDOW_GRAVITY_START => Self::Start,
14076            ffi::GTK_WINDOW_GRAVITY_END => Self::End,
14077            ffi::GTK_WINDOW_GRAVITY_BOTTOM_START => Self::BottomStart,
14078            ffi::GTK_WINDOW_GRAVITY_BOTTOM_END => Self::BottomEnd,
14079            value => Self::__Unknown(value),
14080        }
14081    }
14082}
14083
14084#[cfg(feature = "v4_20")]
14085#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14086impl StaticType for WindowGravity {
14087    #[inline]
14088    #[doc(alias = "gtk_window_gravity_get_type")]
14089    fn static_type() -> glib::Type {
14090        unsafe { from_glib(ffi::gtk_window_gravity_get_type()) }
14091    }
14092}
14093
14094#[cfg(feature = "v4_20")]
14095#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14096impl glib::HasParamSpec for WindowGravity {
14097    type ParamSpec = glib::ParamSpecEnum;
14098    type SetValue = Self;
14099    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14100
14101    fn param_spec_builder() -> Self::BuilderFn {
14102        Self::ParamSpec::builder_with_default
14103    }
14104}
14105
14106#[cfg(feature = "v4_20")]
14107#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14108impl glib::value::ValueType for WindowGravity {
14109    type Type = Self;
14110}
14111
14112#[cfg(feature = "v4_20")]
14113#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14114unsafe impl<'a> glib::value::FromValue<'a> for WindowGravity {
14115    type Checker = glib::value::GenericValueTypeChecker<Self>;
14116
14117    #[inline]
14118    unsafe fn from_value(value: &'a glib::Value) -> Self {
14119        skip_assert_initialized!();
14120        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
14121    }
14122}
14123
14124#[cfg(feature = "v4_20")]
14125#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14126impl ToValue for WindowGravity {
14127    #[inline]
14128    fn to_value(&self) -> glib::Value {
14129        let mut value = glib::Value::for_value_type::<Self>();
14130        unsafe {
14131            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14132        }
14133        value
14134    }
14135
14136    #[inline]
14137    fn value_type(&self) -> glib::Type {
14138        Self::static_type()
14139    }
14140}
14141
14142#[cfg(feature = "v4_20")]
14143#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14144impl From<WindowGravity> for glib::Value {
14145    #[inline]
14146    fn from(v: WindowGravity) -> Self {
14147        skip_assert_initialized!();
14148        ToValue::to_value(&v)
14149    }
14150}
14151
14152/// Describes a type of line wrapping.
14153#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
14154#[non_exhaustive]
14155#[doc(alias = "GtkWrapMode")]
14156pub enum WrapMode {
14157    /// do not wrap lines; just make the text area wider
14158    #[doc(alias = "GTK_WRAP_NONE")]
14159    None,
14160    /// wrap text, breaking lines anywhere the cursor can
14161    ///   appear (between characters, usually - if you want to be technical,
14162    ///   between graphemes, see pango_get_log_attrs())
14163    #[doc(alias = "GTK_WRAP_CHAR")]
14164    Char,
14165    /// wrap text, breaking lines in between words
14166    #[doc(alias = "GTK_WRAP_WORD")]
14167    Word,
14168    /// wrap text, breaking lines in between words, or if
14169    ///   that is not enough, also between graphemes
14170    #[doc(alias = "GTK_WRAP_WORD_CHAR")]
14171    WordChar,
14172    #[doc(hidden)]
14173    __Unknown(i32),
14174}
14175
14176#[doc(hidden)]
14177impl IntoGlib for WrapMode {
14178    type GlibType = ffi::GtkWrapMode;
14179
14180    #[inline]
14181    fn into_glib(self) -> ffi::GtkWrapMode {
14182        match self {
14183            Self::None => ffi::GTK_WRAP_NONE,
14184            Self::Char => ffi::GTK_WRAP_CHAR,
14185            Self::Word => ffi::GTK_WRAP_WORD,
14186            Self::WordChar => ffi::GTK_WRAP_WORD_CHAR,
14187            Self::__Unknown(value) => value,
14188        }
14189    }
14190}
14191
14192#[doc(hidden)]
14193impl FromGlib<ffi::GtkWrapMode> for WrapMode {
14194    #[inline]
14195    unsafe fn from_glib(value: ffi::GtkWrapMode) -> Self {
14196        skip_assert_initialized!();
14197
14198        match value {
14199            ffi::GTK_WRAP_NONE => Self::None,
14200            ffi::GTK_WRAP_CHAR => Self::Char,
14201            ffi::GTK_WRAP_WORD => Self::Word,
14202            ffi::GTK_WRAP_WORD_CHAR => Self::WordChar,
14203            value => Self::__Unknown(value),
14204        }
14205    }
14206}
14207
14208impl StaticType for WrapMode {
14209    #[inline]
14210    #[doc(alias = "gtk_wrap_mode_get_type")]
14211    fn static_type() -> glib::Type {
14212        unsafe { from_glib(ffi::gtk_wrap_mode_get_type()) }
14213    }
14214}
14215
14216impl glib::HasParamSpec for WrapMode {
14217    type ParamSpec = glib::ParamSpecEnum;
14218    type SetValue = Self;
14219    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14220
14221    fn param_spec_builder() -> Self::BuilderFn {
14222        Self::ParamSpec::builder_with_default
14223    }
14224}
14225
14226impl glib::value::ValueType for WrapMode {
14227    type Type = Self;
14228}
14229
14230unsafe impl<'a> glib::value::FromValue<'a> for WrapMode {
14231    type Checker = glib::value::GenericValueTypeChecker<Self>;
14232
14233    #[inline]
14234    unsafe fn from_value(value: &'a glib::Value) -> Self {
14235        skip_assert_initialized!();
14236        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
14237    }
14238}
14239
14240impl ToValue for WrapMode {
14241    #[inline]
14242    fn to_value(&self) -> glib::Value {
14243        let mut value = glib::Value::for_value_type::<Self>();
14244        unsafe {
14245            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14246        }
14247        value
14248    }
14249
14250    #[inline]
14251    fn value_type(&self) -> glib::Type {
14252        Self::static_type()
14253    }
14254}
14255
14256impl From<WrapMode> for glib::Value {
14257    #[inline]
14258    fn from(v: WrapMode) -> Self {
14259        skip_assert_initialized!();
14260        ToValue::to_value(&v)
14261    }
14262}