Skip to main content

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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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///  [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/).
2948#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2949#[non_exhaustive]
2950#[doc(alias = "GtkButtonsType")]
2951pub enum ButtonsType {
2952    /// no buttons at all
2953    #[doc(alias = "GTK_BUTTONS_NONE")]
2954    None,
2955    /// an OK button
2956    #[doc(alias = "GTK_BUTTONS_OK")]
2957    Ok,
2958    /// a Close button
2959    #[doc(alias = "GTK_BUTTONS_CLOSE")]
2960    Close,
2961    /// a Cancel button
2962    #[doc(alias = "GTK_BUTTONS_CANCEL")]
2963    Cancel,
2964    /// Yes and No buttons
2965    #[doc(alias = "GTK_BUTTONS_YES_NO")]
2966    YesNo,
2967    /// OK and Cancel buttons
2968    #[doc(alias = "GTK_BUTTONS_OK_CANCEL")]
2969    OkCancel,
2970    #[doc(hidden)]
2971    __Unknown(i32),
2972}
2973
2974#[doc(hidden)]
2975impl IntoGlib for ButtonsType {
2976    type GlibType = ffi::GtkButtonsType;
2977
2978    #[inline]
2979    fn into_glib(self) -> ffi::GtkButtonsType {
2980        match self {
2981            Self::None => ffi::GTK_BUTTONS_NONE,
2982            Self::Ok => ffi::GTK_BUTTONS_OK,
2983            Self::Close => ffi::GTK_BUTTONS_CLOSE,
2984            Self::Cancel => ffi::GTK_BUTTONS_CANCEL,
2985            Self::YesNo => ffi::GTK_BUTTONS_YES_NO,
2986            Self::OkCancel => ffi::GTK_BUTTONS_OK_CANCEL,
2987            Self::__Unknown(value) => value,
2988        }
2989    }
2990}
2991
2992#[doc(hidden)]
2993impl FromGlib<ffi::GtkButtonsType> for ButtonsType {
2994    #[inline]
2995    unsafe fn from_glib(value: ffi::GtkButtonsType) -> Self {
2996        skip_assert_initialized!();
2997
2998        match value {
2999            ffi::GTK_BUTTONS_NONE => Self::None,
3000            ffi::GTK_BUTTONS_OK => Self::Ok,
3001            ffi::GTK_BUTTONS_CLOSE => Self::Close,
3002            ffi::GTK_BUTTONS_CANCEL => Self::Cancel,
3003            ffi::GTK_BUTTONS_YES_NO => Self::YesNo,
3004            ffi::GTK_BUTTONS_OK_CANCEL => Self::OkCancel,
3005            value => Self::__Unknown(value),
3006        }
3007    }
3008}
3009
3010impl StaticType for ButtonsType {
3011    #[inline]
3012    #[doc(alias = "gtk_buttons_type_get_type")]
3013    fn static_type() -> glib::Type {
3014        unsafe { from_glib(ffi::gtk_buttons_type_get_type()) }
3015    }
3016}
3017
3018impl glib::HasParamSpec for ButtonsType {
3019    type ParamSpec = glib::ParamSpecEnum;
3020    type SetValue = Self;
3021    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3022
3023    fn param_spec_builder() -> Self::BuilderFn {
3024        Self::ParamSpec::builder_with_default
3025    }
3026}
3027
3028impl glib::value::ValueType for ButtonsType {
3029    type Type = Self;
3030}
3031
3032unsafe impl<'a> glib::value::FromValue<'a> for ButtonsType {
3033    type Checker = glib::value::GenericValueTypeChecker<Self>;
3034
3035    #[inline]
3036    unsafe fn from_value(value: &'a glib::Value) -> Self {
3037        skip_assert_initialized!();
3038        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3039    }
3040}
3041
3042impl ToValue for ButtonsType {
3043    #[inline]
3044    fn to_value(&self) -> glib::Value {
3045        let mut value = glib::Value::for_value_type::<Self>();
3046        unsafe {
3047            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3048        }
3049        value
3050    }
3051
3052    #[inline]
3053    fn value_type(&self) -> glib::Type {
3054        Self::static_type()
3055    }
3056}
3057
3058impl From<ButtonsType> for glib::Value {
3059    #[inline]
3060    fn from(v: ButtonsType) -> Self {
3061        skip_assert_initialized!();
3062        ToValue::to_value(&v)
3063    }
3064}
3065
3066/// The available modes for [`accel-mode`][struct@crate::CellRendererAccel#accel-mode].
3067///
3068/// # Deprecated since 4.20
3069///
3070/// There is no replacement
3071#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
3072#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3073#[non_exhaustive]
3074#[doc(alias = "GtkCellRendererAccelMode")]
3075pub enum CellRendererAccelMode {
3076    /// GTK accelerators mode
3077    #[doc(alias = "GTK_CELL_RENDERER_ACCEL_MODE_GTK")]
3078    Gtk,
3079    /// Other accelerator mode
3080    #[doc(alias = "GTK_CELL_RENDERER_ACCEL_MODE_OTHER")]
3081    Other,
3082    #[doc(hidden)]
3083    __Unknown(i32),
3084}
3085
3086#[allow(deprecated)]
3087#[doc(hidden)]
3088impl IntoGlib for CellRendererAccelMode {
3089    type GlibType = ffi::GtkCellRendererAccelMode;
3090
3091    #[inline]
3092    fn into_glib(self) -> ffi::GtkCellRendererAccelMode {
3093        match self {
3094            Self::Gtk => ffi::GTK_CELL_RENDERER_ACCEL_MODE_GTK,
3095            Self::Other => ffi::GTK_CELL_RENDERER_ACCEL_MODE_OTHER,
3096            Self::__Unknown(value) => value,
3097        }
3098    }
3099}
3100
3101#[allow(deprecated)]
3102#[doc(hidden)]
3103impl FromGlib<ffi::GtkCellRendererAccelMode> for CellRendererAccelMode {
3104    #[inline]
3105    unsafe fn from_glib(value: ffi::GtkCellRendererAccelMode) -> Self {
3106        skip_assert_initialized!();
3107
3108        match value {
3109            ffi::GTK_CELL_RENDERER_ACCEL_MODE_GTK => Self::Gtk,
3110            ffi::GTK_CELL_RENDERER_ACCEL_MODE_OTHER => Self::Other,
3111            value => Self::__Unknown(value),
3112        }
3113    }
3114}
3115
3116#[allow(deprecated)]
3117impl StaticType for CellRendererAccelMode {
3118    #[inline]
3119    #[doc(alias = "gtk_cell_renderer_accel_mode_get_type")]
3120    fn static_type() -> glib::Type {
3121        unsafe { from_glib(ffi::gtk_cell_renderer_accel_mode_get_type()) }
3122    }
3123}
3124
3125#[allow(deprecated)]
3126impl glib::HasParamSpec for CellRendererAccelMode {
3127    type ParamSpec = glib::ParamSpecEnum;
3128    type SetValue = Self;
3129    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3130
3131    fn param_spec_builder() -> Self::BuilderFn {
3132        Self::ParamSpec::builder_with_default
3133    }
3134}
3135
3136#[allow(deprecated)]
3137impl glib::value::ValueType for CellRendererAccelMode {
3138    type Type = Self;
3139}
3140
3141#[allow(deprecated)]
3142unsafe impl<'a> glib::value::FromValue<'a> for CellRendererAccelMode {
3143    type Checker = glib::value::GenericValueTypeChecker<Self>;
3144
3145    #[inline]
3146    unsafe fn from_value(value: &'a glib::Value) -> Self {
3147        skip_assert_initialized!();
3148        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3149    }
3150}
3151
3152#[allow(deprecated)]
3153impl ToValue for CellRendererAccelMode {
3154    #[inline]
3155    fn to_value(&self) -> glib::Value {
3156        let mut value = glib::Value::for_value_type::<Self>();
3157        unsafe {
3158            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3159        }
3160        value
3161    }
3162
3163    #[inline]
3164    fn value_type(&self) -> glib::Type {
3165        Self::static_type()
3166    }
3167}
3168
3169#[allow(deprecated)]
3170impl From<CellRendererAccelMode> for glib::Value {
3171    #[inline]
3172    fn from(v: CellRendererAccelMode) -> Self {
3173        skip_assert_initialized!();
3174        ToValue::to_value(&v)
3175    }
3176}
3177
3178/// Identifies how the user can interact with a particular cell.
3179///
3180/// # Deprecated since 4.20
3181///
3182/// There is no replacement.
3183#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
3184#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3185#[non_exhaustive]
3186#[doc(alias = "GtkCellRendererMode")]
3187pub enum CellRendererMode {
3188    /// The cell is just for display
3189    ///  and cannot be interacted with.  Note that this doesn’t mean that eg. the
3190    ///  row being drawn can’t be selected -- just that a particular element of
3191    ///  it cannot be individually modified.
3192    #[doc(alias = "GTK_CELL_RENDERER_MODE_INERT")]
3193    Inert,
3194    /// The cell can be clicked.
3195    #[doc(alias = "GTK_CELL_RENDERER_MODE_ACTIVATABLE")]
3196    Activatable,
3197    /// The cell can be edited or otherwise modified.
3198    #[doc(alias = "GTK_CELL_RENDERER_MODE_EDITABLE")]
3199    Editable,
3200    #[doc(hidden)]
3201    __Unknown(i32),
3202}
3203
3204#[allow(deprecated)]
3205#[doc(hidden)]
3206impl IntoGlib for CellRendererMode {
3207    type GlibType = ffi::GtkCellRendererMode;
3208
3209    #[inline]
3210    fn into_glib(self) -> ffi::GtkCellRendererMode {
3211        match self {
3212            Self::Inert => ffi::GTK_CELL_RENDERER_MODE_INERT,
3213            Self::Activatable => ffi::GTK_CELL_RENDERER_MODE_ACTIVATABLE,
3214            Self::Editable => ffi::GTK_CELL_RENDERER_MODE_EDITABLE,
3215            Self::__Unknown(value) => value,
3216        }
3217    }
3218}
3219
3220#[allow(deprecated)]
3221#[doc(hidden)]
3222impl FromGlib<ffi::GtkCellRendererMode> for CellRendererMode {
3223    #[inline]
3224    unsafe fn from_glib(value: ffi::GtkCellRendererMode) -> Self {
3225        skip_assert_initialized!();
3226
3227        match value {
3228            ffi::GTK_CELL_RENDERER_MODE_INERT => Self::Inert,
3229            ffi::GTK_CELL_RENDERER_MODE_ACTIVATABLE => Self::Activatable,
3230            ffi::GTK_CELL_RENDERER_MODE_EDITABLE => Self::Editable,
3231            value => Self::__Unknown(value),
3232        }
3233    }
3234}
3235
3236#[allow(deprecated)]
3237impl StaticType for CellRendererMode {
3238    #[inline]
3239    #[doc(alias = "gtk_cell_renderer_mode_get_type")]
3240    fn static_type() -> glib::Type {
3241        unsafe { from_glib(ffi::gtk_cell_renderer_mode_get_type()) }
3242    }
3243}
3244
3245#[allow(deprecated)]
3246impl glib::HasParamSpec for CellRendererMode {
3247    type ParamSpec = glib::ParamSpecEnum;
3248    type SetValue = Self;
3249    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3250
3251    fn param_spec_builder() -> Self::BuilderFn {
3252        Self::ParamSpec::builder_with_default
3253    }
3254}
3255
3256#[allow(deprecated)]
3257impl glib::value::ValueType for CellRendererMode {
3258    type Type = Self;
3259}
3260
3261#[allow(deprecated)]
3262unsafe impl<'a> glib::value::FromValue<'a> for CellRendererMode {
3263    type Checker = glib::value::GenericValueTypeChecker<Self>;
3264
3265    #[inline]
3266    unsafe fn from_value(value: &'a glib::Value) -> Self {
3267        skip_assert_initialized!();
3268        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3269    }
3270}
3271
3272#[allow(deprecated)]
3273impl ToValue for CellRendererMode {
3274    #[inline]
3275    fn to_value(&self) -> glib::Value {
3276        let mut value = glib::Value::for_value_type::<Self>();
3277        unsafe {
3278            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3279        }
3280        value
3281    }
3282
3283    #[inline]
3284    fn value_type(&self) -> glib::Type {
3285        Self::static_type()
3286    }
3287}
3288
3289#[allow(deprecated)]
3290impl From<CellRendererMode> for glib::Value {
3291    #[inline]
3292    fn from(v: CellRendererMode) -> Self {
3293        skip_assert_initialized!();
3294        ToValue::to_value(&v)
3295    }
3296}
3297
3298/// Describes how a [`StringSorter`][crate::StringSorter] turns strings into sort keys to
3299/// compare them.
3300///
3301/// Note that the result of sorting will in general depend on the current locale
3302/// unless the mode is @GTK_COLLATION_NONE.
3303#[cfg(feature = "v4_10")]
3304#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3305#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3306#[non_exhaustive]
3307#[doc(alias = "GtkCollation")]
3308pub enum Collation {
3309    /// Don't do any collation
3310    #[doc(alias = "GTK_COLLATION_NONE")]
3311    None,
3312    /// Use `utf8_collate_key()`
3313    #[doc(alias = "GTK_COLLATION_UNICODE")]
3314    Unicode,
3315    /// Use `utf8_collate_key_for_filename()`
3316    #[doc(alias = "GTK_COLLATION_FILENAME")]
3317    Filename,
3318    #[doc(hidden)]
3319    __Unknown(i32),
3320}
3321
3322#[cfg(feature = "v4_10")]
3323#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3324#[doc(hidden)]
3325impl IntoGlib for Collation {
3326    type GlibType = ffi::GtkCollation;
3327
3328    #[inline]
3329    fn into_glib(self) -> ffi::GtkCollation {
3330        match self {
3331            Self::None => ffi::GTK_COLLATION_NONE,
3332            Self::Unicode => ffi::GTK_COLLATION_UNICODE,
3333            Self::Filename => ffi::GTK_COLLATION_FILENAME,
3334            Self::__Unknown(value) => value,
3335        }
3336    }
3337}
3338
3339#[cfg(feature = "v4_10")]
3340#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3341#[doc(hidden)]
3342impl FromGlib<ffi::GtkCollation> for Collation {
3343    #[inline]
3344    unsafe fn from_glib(value: ffi::GtkCollation) -> Self {
3345        skip_assert_initialized!();
3346
3347        match value {
3348            ffi::GTK_COLLATION_NONE => Self::None,
3349            ffi::GTK_COLLATION_UNICODE => Self::Unicode,
3350            ffi::GTK_COLLATION_FILENAME => Self::Filename,
3351            value => Self::__Unknown(value),
3352        }
3353    }
3354}
3355
3356#[cfg(feature = "v4_10")]
3357#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3358impl StaticType for Collation {
3359    #[inline]
3360    #[doc(alias = "gtk_collation_get_type")]
3361    fn static_type() -> glib::Type {
3362        unsafe { from_glib(ffi::gtk_collation_get_type()) }
3363    }
3364}
3365
3366#[cfg(feature = "v4_10")]
3367#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3368impl glib::HasParamSpec for Collation {
3369    type ParamSpec = glib::ParamSpecEnum;
3370    type SetValue = Self;
3371    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3372
3373    fn param_spec_builder() -> Self::BuilderFn {
3374        Self::ParamSpec::builder_with_default
3375    }
3376}
3377
3378#[cfg(feature = "v4_10")]
3379#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3380impl glib::value::ValueType for Collation {
3381    type Type = Self;
3382}
3383
3384#[cfg(feature = "v4_10")]
3385#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3386unsafe impl<'a> glib::value::FromValue<'a> for Collation {
3387    type Checker = glib::value::GenericValueTypeChecker<Self>;
3388
3389    #[inline]
3390    unsafe fn from_value(value: &'a glib::Value) -> Self {
3391        skip_assert_initialized!();
3392        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3393    }
3394}
3395
3396#[cfg(feature = "v4_10")]
3397#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3398impl ToValue for Collation {
3399    #[inline]
3400    fn to_value(&self) -> glib::Value {
3401        let mut value = glib::Value::for_value_type::<Self>();
3402        unsafe {
3403            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3404        }
3405        value
3406    }
3407
3408    #[inline]
3409    fn value_type(&self) -> glib::Type {
3410        Self::static_type()
3411    }
3412}
3413
3414#[cfg(feature = "v4_10")]
3415#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3416impl From<Collation> for glib::Value {
3417    #[inline]
3418    fn from(v: Collation) -> Self {
3419        skip_assert_initialized!();
3420        ToValue::to_value(&v)
3421    }
3422}
3423
3424/// The widget attributes that can be used when creating a [`Constraint`][crate::Constraint].
3425#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3426#[non_exhaustive]
3427#[doc(alias = "GtkConstraintAttribute")]
3428pub enum ConstraintAttribute {
3429    /// No attribute, used for constant
3430    ///   relations
3431    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_NONE")]
3432    None,
3433    /// The left edge of a widget, regardless of
3434    ///   text direction
3435    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_LEFT")]
3436    Left,
3437    /// The right edge of a widget, regardless
3438    ///   of text direction
3439    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_RIGHT")]
3440    Right,
3441    /// The top edge of a widget
3442    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_TOP")]
3443    Top,
3444    /// The bottom edge of a widget
3445    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_BOTTOM")]
3446    Bottom,
3447    /// The leading edge of a widget, depending
3448    ///   on text direction; equivalent to [`Left`][Self::Left] for LTR
3449    ///   languages, and [`Right`][Self::Right] for RTL ones
3450    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_START")]
3451    Start,
3452    /// The trailing edge of a widget, depending
3453    ///   on text direction; equivalent to [`Right`][Self::Right] for LTR
3454    ///   languages, and [`Left`][Self::Left] for RTL ones
3455    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_END")]
3456    End,
3457    /// The width of a widget
3458    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_WIDTH")]
3459    Width,
3460    /// The height of a widget
3461    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_HEIGHT")]
3462    Height,
3463    /// The center of a widget, on the
3464    ///   horizontal axis
3465    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_CENTER_X")]
3466    CenterX,
3467    /// The center of a widget, on the
3468    ///   vertical axis
3469    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y")]
3470    CenterY,
3471    /// The baseline of a widget
3472    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_BASELINE")]
3473    Baseline,
3474    #[doc(hidden)]
3475    __Unknown(i32),
3476}
3477
3478#[doc(hidden)]
3479impl IntoGlib for ConstraintAttribute {
3480    type GlibType = ffi::GtkConstraintAttribute;
3481
3482    #[inline]
3483    fn into_glib(self) -> ffi::GtkConstraintAttribute {
3484        match self {
3485            Self::None => ffi::GTK_CONSTRAINT_ATTRIBUTE_NONE,
3486            Self::Left => ffi::GTK_CONSTRAINT_ATTRIBUTE_LEFT,
3487            Self::Right => ffi::GTK_CONSTRAINT_ATTRIBUTE_RIGHT,
3488            Self::Top => ffi::GTK_CONSTRAINT_ATTRIBUTE_TOP,
3489            Self::Bottom => ffi::GTK_CONSTRAINT_ATTRIBUTE_BOTTOM,
3490            Self::Start => ffi::GTK_CONSTRAINT_ATTRIBUTE_START,
3491            Self::End => ffi::GTK_CONSTRAINT_ATTRIBUTE_END,
3492            Self::Width => ffi::GTK_CONSTRAINT_ATTRIBUTE_WIDTH,
3493            Self::Height => ffi::GTK_CONSTRAINT_ATTRIBUTE_HEIGHT,
3494            Self::CenterX => ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_X,
3495            Self::CenterY => ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y,
3496            Self::Baseline => ffi::GTK_CONSTRAINT_ATTRIBUTE_BASELINE,
3497            Self::__Unknown(value) => value,
3498        }
3499    }
3500}
3501
3502#[doc(hidden)]
3503impl FromGlib<ffi::GtkConstraintAttribute> for ConstraintAttribute {
3504    #[inline]
3505    unsafe fn from_glib(value: ffi::GtkConstraintAttribute) -> Self {
3506        skip_assert_initialized!();
3507
3508        match value {
3509            ffi::GTK_CONSTRAINT_ATTRIBUTE_NONE => Self::None,
3510            ffi::GTK_CONSTRAINT_ATTRIBUTE_LEFT => Self::Left,
3511            ffi::GTK_CONSTRAINT_ATTRIBUTE_RIGHT => Self::Right,
3512            ffi::GTK_CONSTRAINT_ATTRIBUTE_TOP => Self::Top,
3513            ffi::GTK_CONSTRAINT_ATTRIBUTE_BOTTOM => Self::Bottom,
3514            ffi::GTK_CONSTRAINT_ATTRIBUTE_START => Self::Start,
3515            ffi::GTK_CONSTRAINT_ATTRIBUTE_END => Self::End,
3516            ffi::GTK_CONSTRAINT_ATTRIBUTE_WIDTH => Self::Width,
3517            ffi::GTK_CONSTRAINT_ATTRIBUTE_HEIGHT => Self::Height,
3518            ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_X => Self::CenterX,
3519            ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y => Self::CenterY,
3520            ffi::GTK_CONSTRAINT_ATTRIBUTE_BASELINE => Self::Baseline,
3521            value => Self::__Unknown(value),
3522        }
3523    }
3524}
3525
3526impl StaticType for ConstraintAttribute {
3527    #[inline]
3528    #[doc(alias = "gtk_constraint_attribute_get_type")]
3529    fn static_type() -> glib::Type {
3530        unsafe { from_glib(ffi::gtk_constraint_attribute_get_type()) }
3531    }
3532}
3533
3534impl glib::HasParamSpec for ConstraintAttribute {
3535    type ParamSpec = glib::ParamSpecEnum;
3536    type SetValue = Self;
3537    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3538
3539    fn param_spec_builder() -> Self::BuilderFn {
3540        Self::ParamSpec::builder_with_default
3541    }
3542}
3543
3544impl glib::value::ValueType for ConstraintAttribute {
3545    type Type = Self;
3546}
3547
3548unsafe impl<'a> glib::value::FromValue<'a> for ConstraintAttribute {
3549    type Checker = glib::value::GenericValueTypeChecker<Self>;
3550
3551    #[inline]
3552    unsafe fn from_value(value: &'a glib::Value) -> Self {
3553        skip_assert_initialized!();
3554        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3555    }
3556}
3557
3558impl ToValue for ConstraintAttribute {
3559    #[inline]
3560    fn to_value(&self) -> glib::Value {
3561        let mut value = glib::Value::for_value_type::<Self>();
3562        unsafe {
3563            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3564        }
3565        value
3566    }
3567
3568    #[inline]
3569    fn value_type(&self) -> glib::Type {
3570        Self::static_type()
3571    }
3572}
3573
3574impl From<ConstraintAttribute> for glib::Value {
3575    #[inline]
3576    fn from(v: ConstraintAttribute) -> Self {
3577        skip_assert_initialized!();
3578        ToValue::to_value(&v)
3579    }
3580}
3581
3582/// The relation between two terms of a constraint.
3583#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3584#[non_exhaustive]
3585#[doc(alias = "GtkConstraintRelation")]
3586pub enum ConstraintRelation {
3587    /// Less than, or equal
3588    #[doc(alias = "GTK_CONSTRAINT_RELATION_LE")]
3589    Le,
3590    /// Equal
3591    #[doc(alias = "GTK_CONSTRAINT_RELATION_EQ")]
3592    Eq,
3593    /// Greater than, or equal
3594    #[doc(alias = "GTK_CONSTRAINT_RELATION_GE")]
3595    Ge,
3596    #[doc(hidden)]
3597    __Unknown(i32),
3598}
3599
3600#[doc(hidden)]
3601impl IntoGlib for ConstraintRelation {
3602    type GlibType = ffi::GtkConstraintRelation;
3603
3604    #[inline]
3605    fn into_glib(self) -> ffi::GtkConstraintRelation {
3606        match self {
3607            Self::Le => ffi::GTK_CONSTRAINT_RELATION_LE,
3608            Self::Eq => ffi::GTK_CONSTRAINT_RELATION_EQ,
3609            Self::Ge => ffi::GTK_CONSTRAINT_RELATION_GE,
3610            Self::__Unknown(value) => value,
3611        }
3612    }
3613}
3614
3615#[doc(hidden)]
3616impl FromGlib<ffi::GtkConstraintRelation> for ConstraintRelation {
3617    #[inline]
3618    unsafe fn from_glib(value: ffi::GtkConstraintRelation) -> Self {
3619        skip_assert_initialized!();
3620
3621        match value {
3622            ffi::GTK_CONSTRAINT_RELATION_LE => Self::Le,
3623            ffi::GTK_CONSTRAINT_RELATION_EQ => Self::Eq,
3624            ffi::GTK_CONSTRAINT_RELATION_GE => Self::Ge,
3625            value => Self::__Unknown(value),
3626        }
3627    }
3628}
3629
3630impl StaticType for ConstraintRelation {
3631    #[inline]
3632    #[doc(alias = "gtk_constraint_relation_get_type")]
3633    fn static_type() -> glib::Type {
3634        unsafe { from_glib(ffi::gtk_constraint_relation_get_type()) }
3635    }
3636}
3637
3638impl glib::HasParamSpec for ConstraintRelation {
3639    type ParamSpec = glib::ParamSpecEnum;
3640    type SetValue = Self;
3641    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3642
3643    fn param_spec_builder() -> Self::BuilderFn {
3644        Self::ParamSpec::builder_with_default
3645    }
3646}
3647
3648impl glib::value::ValueType for ConstraintRelation {
3649    type Type = Self;
3650}
3651
3652unsafe impl<'a> glib::value::FromValue<'a> for ConstraintRelation {
3653    type Checker = glib::value::GenericValueTypeChecker<Self>;
3654
3655    #[inline]
3656    unsafe fn from_value(value: &'a glib::Value) -> Self {
3657        skip_assert_initialized!();
3658        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3659    }
3660}
3661
3662impl ToValue for ConstraintRelation {
3663    #[inline]
3664    fn to_value(&self) -> glib::Value {
3665        let mut value = glib::Value::for_value_type::<Self>();
3666        unsafe {
3667            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3668        }
3669        value
3670    }
3671
3672    #[inline]
3673    fn value_type(&self) -> glib::Type {
3674        Self::static_type()
3675    }
3676}
3677
3678impl From<ConstraintRelation> for glib::Value {
3679    #[inline]
3680    fn from(v: ConstraintRelation) -> Self {
3681        skip_assert_initialized!();
3682        ToValue::to_value(&v)
3683    }
3684}
3685
3686/// The strength of a constraint, expressed as a symbolic constant.
3687///
3688/// The strength of a [`Constraint`][crate::Constraint] can be expressed with any positive
3689/// integer; the values of this enumeration can be used for readability.
3690#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3691#[non_exhaustive]
3692#[doc(alias = "GtkConstraintStrength")]
3693pub enum ConstraintStrength {
3694    /// The constraint is required towards solving the layout
3695    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_REQUIRED")]
3696    Required,
3697    /// A strong constraint
3698    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_STRONG")]
3699    Strong,
3700    /// A medium constraint
3701    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_MEDIUM")]
3702    Medium,
3703    /// A weak constraint
3704    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_WEAK")]
3705    Weak,
3706    #[doc(hidden)]
3707    __Unknown(i32),
3708}
3709
3710#[doc(hidden)]
3711impl IntoGlib for ConstraintStrength {
3712    type GlibType = ffi::GtkConstraintStrength;
3713
3714    #[inline]
3715    fn into_glib(self) -> ffi::GtkConstraintStrength {
3716        match self {
3717            Self::Required => ffi::GTK_CONSTRAINT_STRENGTH_REQUIRED,
3718            Self::Strong => ffi::GTK_CONSTRAINT_STRENGTH_STRONG,
3719            Self::Medium => ffi::GTK_CONSTRAINT_STRENGTH_MEDIUM,
3720            Self::Weak => ffi::GTK_CONSTRAINT_STRENGTH_WEAK,
3721            Self::__Unknown(value) => value,
3722        }
3723    }
3724}
3725
3726#[doc(hidden)]
3727impl FromGlib<ffi::GtkConstraintStrength> for ConstraintStrength {
3728    #[inline]
3729    unsafe fn from_glib(value: ffi::GtkConstraintStrength) -> Self {
3730        skip_assert_initialized!();
3731
3732        match value {
3733            ffi::GTK_CONSTRAINT_STRENGTH_REQUIRED => Self::Required,
3734            ffi::GTK_CONSTRAINT_STRENGTH_STRONG => Self::Strong,
3735            ffi::GTK_CONSTRAINT_STRENGTH_MEDIUM => Self::Medium,
3736            ffi::GTK_CONSTRAINT_STRENGTH_WEAK => Self::Weak,
3737            value => Self::__Unknown(value),
3738        }
3739    }
3740}
3741
3742impl StaticType for ConstraintStrength {
3743    #[inline]
3744    #[doc(alias = "gtk_constraint_strength_get_type")]
3745    fn static_type() -> glib::Type {
3746        unsafe { from_glib(ffi::gtk_constraint_strength_get_type()) }
3747    }
3748}
3749
3750impl glib::HasParamSpec for ConstraintStrength {
3751    type ParamSpec = glib::ParamSpecEnum;
3752    type SetValue = Self;
3753    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3754
3755    fn param_spec_builder() -> Self::BuilderFn {
3756        Self::ParamSpec::builder_with_default
3757    }
3758}
3759
3760impl glib::value::ValueType for ConstraintStrength {
3761    type Type = Self;
3762}
3763
3764unsafe impl<'a> glib::value::FromValue<'a> for ConstraintStrength {
3765    type Checker = glib::value::GenericValueTypeChecker<Self>;
3766
3767    #[inline]
3768    unsafe fn from_value(value: &'a glib::Value) -> Self {
3769        skip_assert_initialized!();
3770        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3771    }
3772}
3773
3774impl ToValue for ConstraintStrength {
3775    #[inline]
3776    fn to_value(&self) -> glib::Value {
3777        let mut value = glib::Value::for_value_type::<Self>();
3778        unsafe {
3779            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3780        }
3781        value
3782    }
3783
3784    #[inline]
3785    fn value_type(&self) -> glib::Type {
3786        Self::static_type()
3787    }
3788}
3789
3790impl From<ConstraintStrength> for glib::Value {
3791    #[inline]
3792    fn from(v: ConstraintStrength) -> Self {
3793        skip_assert_initialized!();
3794        ToValue::to_value(&v)
3795    }
3796}
3797
3798/// Domain for VFL parsing errors.
3799#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3800#[non_exhaustive]
3801#[doc(alias = "GtkConstraintVflParserError")]
3802pub enum ConstraintVflParserError {
3803    /// Invalid or unknown symbol
3804    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL")]
3805    InvalidSymbol,
3806    /// Invalid or unknown attribute
3807    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE")]
3808    InvalidAttribute,
3809    /// Invalid or unknown view
3810    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW")]
3811    InvalidView,
3812    /// Invalid or unknown metric
3813    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC")]
3814    InvalidMetric,
3815    /// Invalid or unknown priority
3816    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY")]
3817    InvalidPriority,
3818    /// Invalid or unknown relation
3819    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION")]
3820    InvalidRelation,
3821    #[doc(hidden)]
3822    __Unknown(i32),
3823}
3824
3825#[doc(hidden)]
3826impl IntoGlib for ConstraintVflParserError {
3827    type GlibType = ffi::GtkConstraintVflParserError;
3828
3829    #[inline]
3830    fn into_glib(self) -> ffi::GtkConstraintVflParserError {
3831        match self {
3832            Self::InvalidSymbol => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL,
3833            Self::InvalidAttribute => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE,
3834            Self::InvalidView => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW,
3835            Self::InvalidMetric => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC,
3836            Self::InvalidPriority => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY,
3837            Self::InvalidRelation => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION,
3838            Self::__Unknown(value) => value,
3839        }
3840    }
3841}
3842
3843#[doc(hidden)]
3844impl FromGlib<ffi::GtkConstraintVflParserError> for ConstraintVflParserError {
3845    #[inline]
3846    unsafe fn from_glib(value: ffi::GtkConstraintVflParserError) -> Self {
3847        skip_assert_initialized!();
3848
3849        match value {
3850            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL => Self::InvalidSymbol,
3851            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
3852            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW => Self::InvalidView,
3853            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC => Self::InvalidMetric,
3854            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY => Self::InvalidPriority,
3855            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION => Self::InvalidRelation,
3856            value => Self::__Unknown(value),
3857        }
3858    }
3859}
3860
3861impl glib::error::ErrorDomain for ConstraintVflParserError {
3862    #[inline]
3863    fn domain() -> glib::Quark {
3864        skip_assert_initialized!();
3865
3866        unsafe { from_glib(ffi::gtk_constraint_vfl_parser_error_quark()) }
3867    }
3868
3869    #[inline]
3870    fn code(self) -> i32 {
3871        self.into_glib()
3872    }
3873
3874    #[inline]
3875    #[allow(clippy::match_single_binding)]
3876    fn from(code: i32) -> Option<Self> {
3877        skip_assert_initialized!();
3878        match unsafe { from_glib(code) } {
3879            value => Some(value),
3880        }
3881    }
3882}
3883
3884impl StaticType for ConstraintVflParserError {
3885    #[inline]
3886    #[doc(alias = "gtk_constraint_vfl_parser_error_get_type")]
3887    fn static_type() -> glib::Type {
3888        unsafe { from_glib(ffi::gtk_constraint_vfl_parser_error_get_type()) }
3889    }
3890}
3891
3892impl glib::HasParamSpec for ConstraintVflParserError {
3893    type ParamSpec = glib::ParamSpecEnum;
3894    type SetValue = Self;
3895    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3896
3897    fn param_spec_builder() -> Self::BuilderFn {
3898        Self::ParamSpec::builder_with_default
3899    }
3900}
3901
3902impl glib::value::ValueType for ConstraintVflParserError {
3903    type Type = Self;
3904}
3905
3906unsafe impl<'a> glib::value::FromValue<'a> for ConstraintVflParserError {
3907    type Checker = glib::value::GenericValueTypeChecker<Self>;
3908
3909    #[inline]
3910    unsafe fn from_value(value: &'a glib::Value) -> Self {
3911        skip_assert_initialized!();
3912        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3913    }
3914}
3915
3916impl ToValue for ConstraintVflParserError {
3917    #[inline]
3918    fn to_value(&self) -> glib::Value {
3919        let mut value = glib::Value::for_value_type::<Self>();
3920        unsafe {
3921            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3922        }
3923        value
3924    }
3925
3926    #[inline]
3927    fn value_type(&self) -> glib::Type {
3928        Self::static_type()
3929    }
3930}
3931
3932impl From<ConstraintVflParserError> for glib::Value {
3933    #[inline]
3934    fn from(v: ConstraintVflParserError) -> Self {
3935        skip_assert_initialized!();
3936        ToValue::to_value(&v)
3937    }
3938}
3939
3940/// Controls how a content should be made to fit inside an allocation.
3941#[cfg(feature = "v4_8")]
3942#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3943#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3944#[non_exhaustive]
3945#[doc(alias = "GtkContentFit")]
3946pub enum ContentFit {
3947    /// Make the content fill the entire allocation,
3948    ///   without taking its aspect ratio in consideration. The resulting
3949    ///   content will appear as stretched if its aspect ratio is different
3950    ///   from the allocation aspect ratio.
3951    #[doc(alias = "GTK_CONTENT_FIT_FILL")]
3952    Fill,
3953    /// Scale the content to fit the allocation,
3954    ///   while taking its aspect ratio in consideration. The resulting
3955    ///   content will appear as letterboxed if its aspect ratio is different
3956    ///   from the allocation aspect ratio.
3957    #[doc(alias = "GTK_CONTENT_FIT_CONTAIN")]
3958    Contain,
3959    /// Cover the entire allocation, while taking
3960    ///   the content aspect ratio in consideration. The resulting content
3961    ///   will appear as clipped if its aspect ratio is different from the
3962    ///   allocation aspect ratio.
3963    #[doc(alias = "GTK_CONTENT_FIT_COVER")]
3964    Cover,
3965    /// The content is scaled down to fit the
3966    ///   allocation, if needed, otherwise its original size is used.
3967    #[doc(alias = "GTK_CONTENT_FIT_SCALE_DOWN")]
3968    ScaleDown,
3969    #[doc(hidden)]
3970    __Unknown(i32),
3971}
3972
3973#[cfg(feature = "v4_8")]
3974#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3975#[doc(hidden)]
3976impl IntoGlib for ContentFit {
3977    type GlibType = ffi::GtkContentFit;
3978
3979    #[inline]
3980    fn into_glib(self) -> ffi::GtkContentFit {
3981        match self {
3982            Self::Fill => ffi::GTK_CONTENT_FIT_FILL,
3983            Self::Contain => ffi::GTK_CONTENT_FIT_CONTAIN,
3984            Self::Cover => ffi::GTK_CONTENT_FIT_COVER,
3985            Self::ScaleDown => ffi::GTK_CONTENT_FIT_SCALE_DOWN,
3986            Self::__Unknown(value) => value,
3987        }
3988    }
3989}
3990
3991#[cfg(feature = "v4_8")]
3992#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3993#[doc(hidden)]
3994impl FromGlib<ffi::GtkContentFit> for ContentFit {
3995    #[inline]
3996    unsafe fn from_glib(value: ffi::GtkContentFit) -> Self {
3997        skip_assert_initialized!();
3998
3999        match value {
4000            ffi::GTK_CONTENT_FIT_FILL => Self::Fill,
4001            ffi::GTK_CONTENT_FIT_CONTAIN => Self::Contain,
4002            ffi::GTK_CONTENT_FIT_COVER => Self::Cover,
4003            ffi::GTK_CONTENT_FIT_SCALE_DOWN => Self::ScaleDown,
4004            value => Self::__Unknown(value),
4005        }
4006    }
4007}
4008
4009#[cfg(feature = "v4_8")]
4010#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4011impl StaticType for ContentFit {
4012    #[inline]
4013    #[doc(alias = "gtk_content_fit_get_type")]
4014    fn static_type() -> glib::Type {
4015        unsafe { from_glib(ffi::gtk_content_fit_get_type()) }
4016    }
4017}
4018
4019#[cfg(feature = "v4_8")]
4020#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4021impl glib::HasParamSpec for ContentFit {
4022    type ParamSpec = glib::ParamSpecEnum;
4023    type SetValue = Self;
4024    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4025
4026    fn param_spec_builder() -> Self::BuilderFn {
4027        Self::ParamSpec::builder_with_default
4028    }
4029}
4030
4031#[cfg(feature = "v4_8")]
4032#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4033impl glib::value::ValueType for ContentFit {
4034    type Type = Self;
4035}
4036
4037#[cfg(feature = "v4_8")]
4038#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4039unsafe impl<'a> glib::value::FromValue<'a> for ContentFit {
4040    type Checker = glib::value::GenericValueTypeChecker<Self>;
4041
4042    #[inline]
4043    unsafe fn from_value(value: &'a glib::Value) -> Self {
4044        skip_assert_initialized!();
4045        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4046    }
4047}
4048
4049#[cfg(feature = "v4_8")]
4050#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4051impl ToValue for ContentFit {
4052    #[inline]
4053    fn to_value(&self) -> glib::Value {
4054        let mut value = glib::Value::for_value_type::<Self>();
4055        unsafe {
4056            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4057        }
4058        value
4059    }
4060
4061    #[inline]
4062    fn value_type(&self) -> glib::Type {
4063        Self::static_type()
4064    }
4065}
4066
4067#[cfg(feature = "v4_8")]
4068#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4069impl From<ContentFit> for glib::Value {
4070    #[inline]
4071    fn from(v: ContentFit) -> Self {
4072        skip_assert_initialized!();
4073        ToValue::to_value(&v)
4074    }
4075}
4076
4077/// Specifies which corner a child widget should be placed in when packed into
4078/// a [`ScrolledWindow`][crate::ScrolledWindow]
4079///
4080/// This is effectively the opposite of where the scroll bars are placed.
4081#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4082#[non_exhaustive]
4083#[doc(alias = "GtkCornerType")]
4084pub enum CornerType {
4085    /// Place the scrollbars on the right and bottom of the
4086    ///   widget (default behaviour).
4087    #[doc(alias = "GTK_CORNER_TOP_LEFT")]
4088    TopLeft,
4089    /// Place the scrollbars on the top and right of the
4090    ///   widget.
4091    #[doc(alias = "GTK_CORNER_BOTTOM_LEFT")]
4092    BottomLeft,
4093    /// Place the scrollbars on the left and bottom of the
4094    ///   widget.
4095    #[doc(alias = "GTK_CORNER_TOP_RIGHT")]
4096    TopRight,
4097    /// Place the scrollbars on the top and left of the
4098    ///   widget.
4099    #[doc(alias = "GTK_CORNER_BOTTOM_RIGHT")]
4100    BottomRight,
4101    #[doc(hidden)]
4102    __Unknown(i32),
4103}
4104
4105#[doc(hidden)]
4106impl IntoGlib for CornerType {
4107    type GlibType = ffi::GtkCornerType;
4108
4109    #[inline]
4110    fn into_glib(self) -> ffi::GtkCornerType {
4111        match self {
4112            Self::TopLeft => ffi::GTK_CORNER_TOP_LEFT,
4113            Self::BottomLeft => ffi::GTK_CORNER_BOTTOM_LEFT,
4114            Self::TopRight => ffi::GTK_CORNER_TOP_RIGHT,
4115            Self::BottomRight => ffi::GTK_CORNER_BOTTOM_RIGHT,
4116            Self::__Unknown(value) => value,
4117        }
4118    }
4119}
4120
4121#[doc(hidden)]
4122impl FromGlib<ffi::GtkCornerType> for CornerType {
4123    #[inline]
4124    unsafe fn from_glib(value: ffi::GtkCornerType) -> Self {
4125        skip_assert_initialized!();
4126
4127        match value {
4128            ffi::GTK_CORNER_TOP_LEFT => Self::TopLeft,
4129            ffi::GTK_CORNER_BOTTOM_LEFT => Self::BottomLeft,
4130            ffi::GTK_CORNER_TOP_RIGHT => Self::TopRight,
4131            ffi::GTK_CORNER_BOTTOM_RIGHT => Self::BottomRight,
4132            value => Self::__Unknown(value),
4133        }
4134    }
4135}
4136
4137impl StaticType for CornerType {
4138    #[inline]
4139    #[doc(alias = "gtk_corner_type_get_type")]
4140    fn static_type() -> glib::Type {
4141        unsafe { from_glib(ffi::gtk_corner_type_get_type()) }
4142    }
4143}
4144
4145impl glib::HasParamSpec for CornerType {
4146    type ParamSpec = glib::ParamSpecEnum;
4147    type SetValue = Self;
4148    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4149
4150    fn param_spec_builder() -> Self::BuilderFn {
4151        Self::ParamSpec::builder_with_default
4152    }
4153}
4154
4155impl glib::value::ValueType for CornerType {
4156    type Type = Self;
4157}
4158
4159unsafe impl<'a> glib::value::FromValue<'a> for CornerType {
4160    type Checker = glib::value::GenericValueTypeChecker<Self>;
4161
4162    #[inline]
4163    unsafe fn from_value(value: &'a glib::Value) -> Self {
4164        skip_assert_initialized!();
4165        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4166    }
4167}
4168
4169impl ToValue for CornerType {
4170    #[inline]
4171    fn to_value(&self) -> glib::Value {
4172        let mut value = glib::Value::for_value_type::<Self>();
4173        unsafe {
4174            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4175        }
4176        value
4177    }
4178
4179    #[inline]
4180    fn value_type(&self) -> glib::Type {
4181        Self::static_type()
4182    }
4183}
4184
4185impl From<CornerType> for glib::Value {
4186    #[inline]
4187    fn from(v: CornerType) -> Self {
4188        skip_assert_initialized!();
4189        ToValue::to_value(&v)
4190    }
4191}
4192
4193/// Errors that can occur while parsing CSS.
4194///
4195/// These errors are unexpected and will cause parts of the given CSS
4196/// to be ignored.
4197#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4198#[non_exhaustive]
4199#[doc(alias = "GtkCssParserError")]
4200pub enum CssParserError {
4201    /// Unknown failure.
4202    #[doc(alias = "GTK_CSS_PARSER_ERROR_FAILED")]
4203    Failed,
4204    /// The given text does not form valid syntax
4205    #[doc(alias = "GTK_CSS_PARSER_ERROR_SYNTAX")]
4206    Syntax,
4207    /// Failed to import a resource
4208    #[doc(alias = "GTK_CSS_PARSER_ERROR_IMPORT")]
4209    Import,
4210    /// The given name has not been defined
4211    #[doc(alias = "GTK_CSS_PARSER_ERROR_NAME")]
4212    Name,
4213    /// The given value is not correct
4214    #[doc(alias = "GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE")]
4215    UnknownValue,
4216    #[doc(hidden)]
4217    __Unknown(i32),
4218}
4219
4220#[doc(hidden)]
4221impl IntoGlib for CssParserError {
4222    type GlibType = ffi::GtkCssParserError;
4223
4224    #[inline]
4225    fn into_glib(self) -> ffi::GtkCssParserError {
4226        match self {
4227            Self::Failed => ffi::GTK_CSS_PARSER_ERROR_FAILED,
4228            Self::Syntax => ffi::GTK_CSS_PARSER_ERROR_SYNTAX,
4229            Self::Import => ffi::GTK_CSS_PARSER_ERROR_IMPORT,
4230            Self::Name => ffi::GTK_CSS_PARSER_ERROR_NAME,
4231            Self::UnknownValue => ffi::GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE,
4232            Self::__Unknown(value) => value,
4233        }
4234    }
4235}
4236
4237#[doc(hidden)]
4238impl FromGlib<ffi::GtkCssParserError> for CssParserError {
4239    #[inline]
4240    unsafe fn from_glib(value: ffi::GtkCssParserError) -> Self {
4241        skip_assert_initialized!();
4242
4243        match value {
4244            ffi::GTK_CSS_PARSER_ERROR_FAILED => Self::Failed,
4245            ffi::GTK_CSS_PARSER_ERROR_SYNTAX => Self::Syntax,
4246            ffi::GTK_CSS_PARSER_ERROR_IMPORT => Self::Import,
4247            ffi::GTK_CSS_PARSER_ERROR_NAME => Self::Name,
4248            ffi::GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE => Self::UnknownValue,
4249            value => Self::__Unknown(value),
4250        }
4251    }
4252}
4253
4254impl glib::error::ErrorDomain for CssParserError {
4255    #[inline]
4256    fn domain() -> glib::Quark {
4257        skip_assert_initialized!();
4258
4259        unsafe { from_glib(ffi::gtk_css_parser_error_quark()) }
4260    }
4261
4262    #[inline]
4263    fn code(self) -> i32 {
4264        self.into_glib()
4265    }
4266
4267    #[inline]
4268    #[allow(clippy::match_single_binding)]
4269    fn from(code: i32) -> Option<Self> {
4270        skip_assert_initialized!();
4271        match unsafe { from_glib(code) } {
4272            Self::__Unknown(_) => Some(Self::Failed),
4273            value => Some(value),
4274        }
4275    }
4276}
4277
4278/// Warnings that can occur while parsing CSS.
4279///
4280/// Unlike [`CssParserError`][crate::CssParserError]s, warnings do not cause the parser to
4281/// skip any input, but they indicate issues that should be fixed.
4282#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4283#[non_exhaustive]
4284#[doc(alias = "GtkCssParserWarning")]
4285pub enum CssParserWarning {
4286    /// The given construct is
4287    ///   deprecated and will be removed in a future version
4288    #[doc(alias = "GTK_CSS_PARSER_WARNING_DEPRECATED")]
4289    Deprecated,
4290    /// A syntax construct was used
4291    ///   that should be avoided
4292    #[doc(alias = "GTK_CSS_PARSER_WARNING_SYNTAX")]
4293    Syntax,
4294    /// A feature is not implemented
4295    #[doc(alias = "GTK_CSS_PARSER_WARNING_UNIMPLEMENTED")]
4296    Unimplemented,
4297    #[doc(hidden)]
4298    __Unknown(i32),
4299}
4300
4301#[doc(hidden)]
4302impl IntoGlib for CssParserWarning {
4303    type GlibType = ffi::GtkCssParserWarning;
4304
4305    #[inline]
4306    fn into_glib(self) -> ffi::GtkCssParserWarning {
4307        match self {
4308            Self::Deprecated => ffi::GTK_CSS_PARSER_WARNING_DEPRECATED,
4309            Self::Syntax => ffi::GTK_CSS_PARSER_WARNING_SYNTAX,
4310            Self::Unimplemented => ffi::GTK_CSS_PARSER_WARNING_UNIMPLEMENTED,
4311            Self::__Unknown(value) => value,
4312        }
4313    }
4314}
4315
4316#[doc(hidden)]
4317impl FromGlib<ffi::GtkCssParserWarning> for CssParserWarning {
4318    #[inline]
4319    unsafe fn from_glib(value: ffi::GtkCssParserWarning) -> Self {
4320        skip_assert_initialized!();
4321
4322        match value {
4323            ffi::GTK_CSS_PARSER_WARNING_DEPRECATED => Self::Deprecated,
4324            ffi::GTK_CSS_PARSER_WARNING_SYNTAX => Self::Syntax,
4325            ffi::GTK_CSS_PARSER_WARNING_UNIMPLEMENTED => Self::Unimplemented,
4326            value => Self::__Unknown(value),
4327        }
4328    }
4329}
4330
4331/// Passed to various keybinding signals for deleting text.
4332#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4333#[non_exhaustive]
4334#[doc(alias = "GtkDeleteType")]
4335pub enum DeleteType {
4336    /// Delete characters.
4337    #[doc(alias = "GTK_DELETE_CHARS")]
4338    Chars,
4339    /// Delete only the portion of the word to the
4340    ///   left/right of cursor if we’re in the middle of a word.
4341    #[doc(alias = "GTK_DELETE_WORD_ENDS")]
4342    WordEnds,
4343    /// Delete words.
4344    #[doc(alias = "GTK_DELETE_WORDS")]
4345    Words,
4346    /// Delete display-lines. Display-lines
4347    ///   refers to the visible lines, with respect to the current line
4348    ///   breaks. As opposed to paragraphs, which are defined by line
4349    ///   breaks in the input.
4350    #[doc(alias = "GTK_DELETE_DISPLAY_LINES")]
4351    DisplayLines,
4352    /// Delete only the portion of the
4353    ///   display-line to the left/right of cursor.
4354    #[doc(alias = "GTK_DELETE_DISPLAY_LINE_ENDS")]
4355    DisplayLineEnds,
4356    /// Delete to the end of the
4357    ///   paragraph. Like C-k in Emacs (or its reverse).
4358    #[doc(alias = "GTK_DELETE_PARAGRAPH_ENDS")]
4359    ParagraphEnds,
4360    /// Delete entire line. Like C-k in pico.
4361    #[doc(alias = "GTK_DELETE_PARAGRAPHS")]
4362    Paragraphs,
4363    /// Delete only whitespace. Like M-\ in Emacs.
4364    #[doc(alias = "GTK_DELETE_WHITESPACE")]
4365    Whitespace,
4366    #[doc(hidden)]
4367    __Unknown(i32),
4368}
4369
4370#[doc(hidden)]
4371impl IntoGlib for DeleteType {
4372    type GlibType = ffi::GtkDeleteType;
4373
4374    #[inline]
4375    fn into_glib(self) -> ffi::GtkDeleteType {
4376        match self {
4377            Self::Chars => ffi::GTK_DELETE_CHARS,
4378            Self::WordEnds => ffi::GTK_DELETE_WORD_ENDS,
4379            Self::Words => ffi::GTK_DELETE_WORDS,
4380            Self::DisplayLines => ffi::GTK_DELETE_DISPLAY_LINES,
4381            Self::DisplayLineEnds => ffi::GTK_DELETE_DISPLAY_LINE_ENDS,
4382            Self::ParagraphEnds => ffi::GTK_DELETE_PARAGRAPH_ENDS,
4383            Self::Paragraphs => ffi::GTK_DELETE_PARAGRAPHS,
4384            Self::Whitespace => ffi::GTK_DELETE_WHITESPACE,
4385            Self::__Unknown(value) => value,
4386        }
4387    }
4388}
4389
4390#[doc(hidden)]
4391impl FromGlib<ffi::GtkDeleteType> for DeleteType {
4392    #[inline]
4393    unsafe fn from_glib(value: ffi::GtkDeleteType) -> Self {
4394        skip_assert_initialized!();
4395
4396        match value {
4397            ffi::GTK_DELETE_CHARS => Self::Chars,
4398            ffi::GTK_DELETE_WORD_ENDS => Self::WordEnds,
4399            ffi::GTK_DELETE_WORDS => Self::Words,
4400            ffi::GTK_DELETE_DISPLAY_LINES => Self::DisplayLines,
4401            ffi::GTK_DELETE_DISPLAY_LINE_ENDS => Self::DisplayLineEnds,
4402            ffi::GTK_DELETE_PARAGRAPH_ENDS => Self::ParagraphEnds,
4403            ffi::GTK_DELETE_PARAGRAPHS => Self::Paragraphs,
4404            ffi::GTK_DELETE_WHITESPACE => Self::Whitespace,
4405            value => Self::__Unknown(value),
4406        }
4407    }
4408}
4409
4410impl StaticType for DeleteType {
4411    #[inline]
4412    #[doc(alias = "gtk_delete_type_get_type")]
4413    fn static_type() -> glib::Type {
4414        unsafe { from_glib(ffi::gtk_delete_type_get_type()) }
4415    }
4416}
4417
4418impl glib::HasParamSpec for DeleteType {
4419    type ParamSpec = glib::ParamSpecEnum;
4420    type SetValue = Self;
4421    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4422
4423    fn param_spec_builder() -> Self::BuilderFn {
4424        Self::ParamSpec::builder_with_default
4425    }
4426}
4427
4428impl glib::value::ValueType for DeleteType {
4429    type Type = Self;
4430}
4431
4432unsafe impl<'a> glib::value::FromValue<'a> for DeleteType {
4433    type Checker = glib::value::GenericValueTypeChecker<Self>;
4434
4435    #[inline]
4436    unsafe fn from_value(value: &'a glib::Value) -> Self {
4437        skip_assert_initialized!();
4438        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4439    }
4440}
4441
4442impl ToValue for DeleteType {
4443    #[inline]
4444    fn to_value(&self) -> glib::Value {
4445        let mut value = glib::Value::for_value_type::<Self>();
4446        unsafe {
4447            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4448        }
4449        value
4450    }
4451
4452    #[inline]
4453    fn value_type(&self) -> glib::Type {
4454        Self::static_type()
4455    }
4456}
4457
4458impl From<DeleteType> for glib::Value {
4459    #[inline]
4460    fn from(v: DeleteType) -> Self {
4461        skip_assert_initialized!();
4462        ToValue::to_value(&v)
4463    }
4464}
4465
4466/// Error codes in the `GTK_DIALOG_ERROR` domain that can be returned
4467/// by async dialog functions.
4468#[cfg(feature = "v4_10")]
4469#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4470#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4471#[non_exhaustive]
4472#[doc(alias = "GtkDialogError")]
4473pub enum DialogError {
4474    /// Generic error condition for when
4475    ///   an operation fails and no more specific code is applicable
4476    #[doc(alias = "GTK_DIALOG_ERROR_FAILED")]
4477    Failed,
4478    /// The async function call was cancelled
4479    ///   via its `GCancellable`
4480    #[doc(alias = "GTK_DIALOG_ERROR_CANCELLED")]
4481    Cancelled,
4482    /// The operation was cancelled
4483    ///   by the user (via a Cancel or Close button)
4484    #[doc(alias = "GTK_DIALOG_ERROR_DISMISSED")]
4485    Dismissed,
4486    #[doc(hidden)]
4487    __Unknown(i32),
4488}
4489
4490#[cfg(feature = "v4_10")]
4491#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4492#[doc(hidden)]
4493impl IntoGlib for DialogError {
4494    type GlibType = ffi::GtkDialogError;
4495
4496    #[inline]
4497    fn into_glib(self) -> ffi::GtkDialogError {
4498        match self {
4499            Self::Failed => ffi::GTK_DIALOG_ERROR_FAILED,
4500            Self::Cancelled => ffi::GTK_DIALOG_ERROR_CANCELLED,
4501            Self::Dismissed => ffi::GTK_DIALOG_ERROR_DISMISSED,
4502            Self::__Unknown(value) => value,
4503        }
4504    }
4505}
4506
4507#[cfg(feature = "v4_10")]
4508#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4509#[doc(hidden)]
4510impl FromGlib<ffi::GtkDialogError> for DialogError {
4511    #[inline]
4512    unsafe fn from_glib(value: ffi::GtkDialogError) -> Self {
4513        skip_assert_initialized!();
4514
4515        match value {
4516            ffi::GTK_DIALOG_ERROR_FAILED => Self::Failed,
4517            ffi::GTK_DIALOG_ERROR_CANCELLED => Self::Cancelled,
4518            ffi::GTK_DIALOG_ERROR_DISMISSED => Self::Dismissed,
4519            value => Self::__Unknown(value),
4520        }
4521    }
4522}
4523
4524#[cfg(feature = "v4_10")]
4525#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4526impl glib::error::ErrorDomain for DialogError {
4527    #[inline]
4528    fn domain() -> glib::Quark {
4529        skip_assert_initialized!();
4530
4531        unsafe { from_glib(ffi::gtk_dialog_error_quark()) }
4532    }
4533
4534    #[inline]
4535    fn code(self) -> i32 {
4536        self.into_glib()
4537    }
4538
4539    #[inline]
4540    #[allow(clippy::match_single_binding)]
4541    fn from(code: i32) -> Option<Self> {
4542        skip_assert_initialized!();
4543        match unsafe { from_glib(code) } {
4544            Self::__Unknown(_) => Some(Self::Failed),
4545            value => Some(value),
4546        }
4547    }
4548}
4549
4550#[cfg(feature = "v4_10")]
4551#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4552impl StaticType for DialogError {
4553    #[inline]
4554    #[doc(alias = "gtk_dialog_error_get_type")]
4555    fn static_type() -> glib::Type {
4556        unsafe { from_glib(ffi::gtk_dialog_error_get_type()) }
4557    }
4558}
4559
4560#[cfg(feature = "v4_10")]
4561#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4562impl glib::HasParamSpec for DialogError {
4563    type ParamSpec = glib::ParamSpecEnum;
4564    type SetValue = Self;
4565    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4566
4567    fn param_spec_builder() -> Self::BuilderFn {
4568        Self::ParamSpec::builder_with_default
4569    }
4570}
4571
4572#[cfg(feature = "v4_10")]
4573#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4574impl glib::value::ValueType for DialogError {
4575    type Type = Self;
4576}
4577
4578#[cfg(feature = "v4_10")]
4579#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4580unsafe impl<'a> glib::value::FromValue<'a> for DialogError {
4581    type Checker = glib::value::GenericValueTypeChecker<Self>;
4582
4583    #[inline]
4584    unsafe fn from_value(value: &'a glib::Value) -> Self {
4585        skip_assert_initialized!();
4586        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4587    }
4588}
4589
4590#[cfg(feature = "v4_10")]
4591#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4592impl ToValue for DialogError {
4593    #[inline]
4594    fn to_value(&self) -> glib::Value {
4595        let mut value = glib::Value::for_value_type::<Self>();
4596        unsafe {
4597            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4598        }
4599        value
4600    }
4601
4602    #[inline]
4603    fn value_type(&self) -> glib::Type {
4604        Self::static_type()
4605    }
4606}
4607
4608#[cfg(feature = "v4_10")]
4609#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4610impl From<DialogError> for glib::Value {
4611    #[inline]
4612    fn from(v: DialogError) -> Self {
4613        skip_assert_initialized!();
4614        ToValue::to_value(&v)
4615    }
4616}
4617
4618/// Focus movement types.
4619#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4620#[non_exhaustive]
4621#[doc(alias = "GtkDirectionType")]
4622pub enum DirectionType {
4623    /// Move forward.
4624    #[doc(alias = "GTK_DIR_TAB_FORWARD")]
4625    TabForward,
4626    /// Move backward.
4627    #[doc(alias = "GTK_DIR_TAB_BACKWARD")]
4628    TabBackward,
4629    /// Move up.
4630    #[doc(alias = "GTK_DIR_UP")]
4631    Up,
4632    /// Move down.
4633    #[doc(alias = "GTK_DIR_DOWN")]
4634    Down,
4635    /// Move left.
4636    #[doc(alias = "GTK_DIR_LEFT")]
4637    Left,
4638    /// Move right.
4639    #[doc(alias = "GTK_DIR_RIGHT")]
4640    Right,
4641    #[doc(hidden)]
4642    __Unknown(i32),
4643}
4644
4645#[doc(hidden)]
4646impl IntoGlib for DirectionType {
4647    type GlibType = ffi::GtkDirectionType;
4648
4649    #[inline]
4650    fn into_glib(self) -> ffi::GtkDirectionType {
4651        match self {
4652            Self::TabForward => ffi::GTK_DIR_TAB_FORWARD,
4653            Self::TabBackward => ffi::GTK_DIR_TAB_BACKWARD,
4654            Self::Up => ffi::GTK_DIR_UP,
4655            Self::Down => ffi::GTK_DIR_DOWN,
4656            Self::Left => ffi::GTK_DIR_LEFT,
4657            Self::Right => ffi::GTK_DIR_RIGHT,
4658            Self::__Unknown(value) => value,
4659        }
4660    }
4661}
4662
4663#[doc(hidden)]
4664impl FromGlib<ffi::GtkDirectionType> for DirectionType {
4665    #[inline]
4666    unsafe fn from_glib(value: ffi::GtkDirectionType) -> Self {
4667        skip_assert_initialized!();
4668
4669        match value {
4670            ffi::GTK_DIR_TAB_FORWARD => Self::TabForward,
4671            ffi::GTK_DIR_TAB_BACKWARD => Self::TabBackward,
4672            ffi::GTK_DIR_UP => Self::Up,
4673            ffi::GTK_DIR_DOWN => Self::Down,
4674            ffi::GTK_DIR_LEFT => Self::Left,
4675            ffi::GTK_DIR_RIGHT => Self::Right,
4676            value => Self::__Unknown(value),
4677        }
4678    }
4679}
4680
4681impl StaticType for DirectionType {
4682    #[inline]
4683    #[doc(alias = "gtk_direction_type_get_type")]
4684    fn static_type() -> glib::Type {
4685        unsafe { from_glib(ffi::gtk_direction_type_get_type()) }
4686    }
4687}
4688
4689impl glib::HasParamSpec for DirectionType {
4690    type ParamSpec = glib::ParamSpecEnum;
4691    type SetValue = Self;
4692    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4693
4694    fn param_spec_builder() -> Self::BuilderFn {
4695        Self::ParamSpec::builder_with_default
4696    }
4697}
4698
4699impl glib::value::ValueType for DirectionType {
4700    type Type = Self;
4701}
4702
4703unsafe impl<'a> glib::value::FromValue<'a> for DirectionType {
4704    type Checker = glib::value::GenericValueTypeChecker<Self>;
4705
4706    #[inline]
4707    unsafe fn from_value(value: &'a glib::Value) -> Self {
4708        skip_assert_initialized!();
4709        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4710    }
4711}
4712
4713impl ToValue for DirectionType {
4714    #[inline]
4715    fn to_value(&self) -> glib::Value {
4716        let mut value = glib::Value::for_value_type::<Self>();
4717        unsafe {
4718            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4719        }
4720        value
4721    }
4722
4723    #[inline]
4724    fn value_type(&self) -> glib::Type {
4725        Self::static_type()
4726    }
4727}
4728
4729impl From<DirectionType> for glib::Value {
4730    #[inline]
4731    fn from(v: DirectionType) -> Self {
4732        skip_assert_initialized!();
4733        ToValue::to_value(&v)
4734    }
4735}
4736
4737/// The identifiers for [`Editable`][crate::Editable] properties.
4738///
4739/// See [`Editable::install_properties()`][crate::Editable::install_properties()] for details on how to
4740/// implement the [`Editable`][crate::Editable] interface.
4741#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4742#[non_exhaustive]
4743#[doc(alias = "GtkEditableProperties")]
4744pub enum EditableProperties {
4745    /// the property id for [`text`][struct@crate::Editable#text]
4746    #[doc(alias = "GTK_EDITABLE_PROP_TEXT")]
4747    PropText,
4748    /// the property id for [`cursor-position`][struct@crate::Editable#cursor-position]
4749    #[doc(alias = "GTK_EDITABLE_PROP_CURSOR_POSITION")]
4750    PropCursorPosition,
4751    /// the property id for [`selection-bound`][struct@crate::Editable#selection-bound]
4752    #[doc(alias = "GTK_EDITABLE_PROP_SELECTION_BOUND")]
4753    PropSelectionBound,
4754    /// the property id for [`editable`][struct@crate::Editable#editable]
4755    #[doc(alias = "GTK_EDITABLE_PROP_EDITABLE")]
4756    PropEditable,
4757    /// the property id for [`width-chars`][struct@crate::Editable#width-chars]
4758    #[doc(alias = "GTK_EDITABLE_PROP_WIDTH_CHARS")]
4759    PropWidthChars,
4760    /// the property id for [`max-width-chars`][struct@crate::Editable#max-width-chars]
4761    #[doc(alias = "GTK_EDITABLE_PROP_MAX_WIDTH_CHARS")]
4762    PropMaxWidthChars,
4763    /// the property id for [`xalign`][struct@crate::Editable#xalign]
4764    #[doc(alias = "GTK_EDITABLE_PROP_XALIGN")]
4765    PropXalign,
4766    /// the property id for [`enable-undo`][struct@crate::Editable#enable-undo]
4767    #[doc(alias = "GTK_EDITABLE_PROP_ENABLE_UNDO")]
4768    PropEnableUndo,
4769    /// the property id for [`complete-text`][struct@crate::Editable#complete-text]
4770    #[doc(alias = "GTK_EDITABLE_PROP_COMPLETE_TEXT")]
4771    PropCompleteText,
4772    /// the property id for [`input-interceptor`][struct@crate::Editable#input-interceptor]
4773    #[doc(alias = "GTK_EDITABLE_PROP_INPUT_INTERCEPTOR")]
4774    PropInputInterceptor,
4775    /// the number of properties
4776    #[doc(alias = "GTK_EDITABLE_NUM_PROPERTIES")]
4777    NumProperties,
4778    #[doc(hidden)]
4779    __Unknown(i32),
4780}
4781
4782#[doc(hidden)]
4783impl IntoGlib for EditableProperties {
4784    type GlibType = ffi::GtkEditableProperties;
4785
4786    #[inline]
4787    fn into_glib(self) -> ffi::GtkEditableProperties {
4788        match self {
4789            Self::PropText => ffi::GTK_EDITABLE_PROP_TEXT,
4790            Self::PropCursorPosition => ffi::GTK_EDITABLE_PROP_CURSOR_POSITION,
4791            Self::PropSelectionBound => ffi::GTK_EDITABLE_PROP_SELECTION_BOUND,
4792            Self::PropEditable => ffi::GTK_EDITABLE_PROP_EDITABLE,
4793            Self::PropWidthChars => ffi::GTK_EDITABLE_PROP_WIDTH_CHARS,
4794            Self::PropMaxWidthChars => ffi::GTK_EDITABLE_PROP_MAX_WIDTH_CHARS,
4795            Self::PropXalign => ffi::GTK_EDITABLE_PROP_XALIGN,
4796            Self::PropEnableUndo => ffi::GTK_EDITABLE_PROP_ENABLE_UNDO,
4797            Self::PropCompleteText => ffi::GTK_EDITABLE_PROP_COMPLETE_TEXT,
4798            Self::PropInputInterceptor => ffi::GTK_EDITABLE_PROP_INPUT_INTERCEPTOR,
4799            Self::NumProperties => ffi::GTK_EDITABLE_NUM_PROPERTIES,
4800            Self::__Unknown(value) => value,
4801        }
4802    }
4803}
4804
4805#[doc(hidden)]
4806impl FromGlib<ffi::GtkEditableProperties> for EditableProperties {
4807    #[inline]
4808    unsafe fn from_glib(value: ffi::GtkEditableProperties) -> Self {
4809        skip_assert_initialized!();
4810
4811        match value {
4812            ffi::GTK_EDITABLE_PROP_TEXT => Self::PropText,
4813            ffi::GTK_EDITABLE_PROP_CURSOR_POSITION => Self::PropCursorPosition,
4814            ffi::GTK_EDITABLE_PROP_SELECTION_BOUND => Self::PropSelectionBound,
4815            ffi::GTK_EDITABLE_PROP_EDITABLE => Self::PropEditable,
4816            ffi::GTK_EDITABLE_PROP_WIDTH_CHARS => Self::PropWidthChars,
4817            ffi::GTK_EDITABLE_PROP_MAX_WIDTH_CHARS => Self::PropMaxWidthChars,
4818            ffi::GTK_EDITABLE_PROP_XALIGN => Self::PropXalign,
4819            ffi::GTK_EDITABLE_PROP_ENABLE_UNDO => Self::PropEnableUndo,
4820            ffi::GTK_EDITABLE_PROP_COMPLETE_TEXT => Self::PropCompleteText,
4821            ffi::GTK_EDITABLE_PROP_INPUT_INTERCEPTOR => Self::PropInputInterceptor,
4822            ffi::GTK_EDITABLE_NUM_PROPERTIES => Self::NumProperties,
4823            value => Self::__Unknown(value),
4824        }
4825    }
4826}
4827
4828impl StaticType for EditableProperties {
4829    #[inline]
4830    #[doc(alias = "gtk_editable_properties_get_type")]
4831    fn static_type() -> glib::Type {
4832        unsafe { from_glib(ffi::gtk_editable_properties_get_type()) }
4833    }
4834}
4835
4836impl glib::HasParamSpec for EditableProperties {
4837    type ParamSpec = glib::ParamSpecEnum;
4838    type SetValue = Self;
4839    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4840
4841    fn param_spec_builder() -> Self::BuilderFn {
4842        Self::ParamSpec::builder_with_default
4843    }
4844}
4845
4846impl glib::value::ValueType for EditableProperties {
4847    type Type = Self;
4848}
4849
4850unsafe impl<'a> glib::value::FromValue<'a> for EditableProperties {
4851    type Checker = glib::value::GenericValueTypeChecker<Self>;
4852
4853    #[inline]
4854    unsafe fn from_value(value: &'a glib::Value) -> Self {
4855        skip_assert_initialized!();
4856        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4857    }
4858}
4859
4860impl ToValue for EditableProperties {
4861    #[inline]
4862    fn to_value(&self) -> glib::Value {
4863        let mut value = glib::Value::for_value_type::<Self>();
4864        unsafe {
4865            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4866        }
4867        value
4868    }
4869
4870    #[inline]
4871    fn value_type(&self) -> glib::Type {
4872        Self::static_type()
4873    }
4874}
4875
4876impl From<EditableProperties> for glib::Value {
4877    #[inline]
4878    fn from(v: EditableProperties) -> Self {
4879        skip_assert_initialized!();
4880        ToValue::to_value(&v)
4881    }
4882}
4883
4884/// Specifies the side of the entry at which an icon is placed.
4885#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4886#[non_exhaustive]
4887#[doc(alias = "GtkEntryIconPosition")]
4888pub enum EntryIconPosition {
4889    /// At the beginning of the entry (depending on the text direction).
4890    #[doc(alias = "GTK_ENTRY_ICON_PRIMARY")]
4891    Primary,
4892    /// At the end of the entry (depending on the text direction).
4893    #[doc(alias = "GTK_ENTRY_ICON_SECONDARY")]
4894    Secondary,
4895    #[doc(hidden)]
4896    __Unknown(i32),
4897}
4898
4899#[doc(hidden)]
4900impl IntoGlib for EntryIconPosition {
4901    type GlibType = ffi::GtkEntryIconPosition;
4902
4903    #[inline]
4904    fn into_glib(self) -> ffi::GtkEntryIconPosition {
4905        match self {
4906            Self::Primary => ffi::GTK_ENTRY_ICON_PRIMARY,
4907            Self::Secondary => ffi::GTK_ENTRY_ICON_SECONDARY,
4908            Self::__Unknown(value) => value,
4909        }
4910    }
4911}
4912
4913#[doc(hidden)]
4914impl FromGlib<ffi::GtkEntryIconPosition> for EntryIconPosition {
4915    #[inline]
4916    unsafe fn from_glib(value: ffi::GtkEntryIconPosition) -> Self {
4917        skip_assert_initialized!();
4918
4919        match value {
4920            ffi::GTK_ENTRY_ICON_PRIMARY => Self::Primary,
4921            ffi::GTK_ENTRY_ICON_SECONDARY => Self::Secondary,
4922            value => Self::__Unknown(value),
4923        }
4924    }
4925}
4926
4927impl StaticType for EntryIconPosition {
4928    #[inline]
4929    #[doc(alias = "gtk_entry_icon_position_get_type")]
4930    fn static_type() -> glib::Type {
4931        unsafe { from_glib(ffi::gtk_entry_icon_position_get_type()) }
4932    }
4933}
4934
4935impl glib::HasParamSpec for EntryIconPosition {
4936    type ParamSpec = glib::ParamSpecEnum;
4937    type SetValue = Self;
4938    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4939
4940    fn param_spec_builder() -> Self::BuilderFn {
4941        Self::ParamSpec::builder_with_default
4942    }
4943}
4944
4945impl glib::value::ValueType for EntryIconPosition {
4946    type Type = Self;
4947}
4948
4949unsafe impl<'a> glib::value::FromValue<'a> for EntryIconPosition {
4950    type Checker = glib::value::GenericValueTypeChecker<Self>;
4951
4952    #[inline]
4953    unsafe fn from_value(value: &'a glib::Value) -> Self {
4954        skip_assert_initialized!();
4955        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4956    }
4957}
4958
4959impl ToValue for EntryIconPosition {
4960    #[inline]
4961    fn to_value(&self) -> glib::Value {
4962        let mut value = glib::Value::for_value_type::<Self>();
4963        unsafe {
4964            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4965        }
4966        value
4967    }
4968
4969    #[inline]
4970    fn value_type(&self) -> glib::Type {
4971        Self::static_type()
4972    }
4973}
4974
4975impl From<EntryIconPosition> for glib::Value {
4976    #[inline]
4977    fn from(v: EntryIconPosition) -> Self {
4978        skip_assert_initialized!();
4979        ToValue::to_value(&v)
4980    }
4981}
4982
4983/// Describes the state of a [`gdk::EventSequence`][crate::gdk::EventSequence] in a [`Gesture`][crate::Gesture].
4984#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4985#[non_exhaustive]
4986#[doc(alias = "GtkEventSequenceState")]
4987pub enum EventSequenceState {
4988    /// The sequence is handled, but not grabbed.
4989    #[doc(alias = "GTK_EVENT_SEQUENCE_NONE")]
4990    None,
4991    /// The sequence is handled and grabbed.
4992    #[doc(alias = "GTK_EVENT_SEQUENCE_CLAIMED")]
4993    Claimed,
4994    /// The sequence is denied.
4995    #[doc(alias = "GTK_EVENT_SEQUENCE_DENIED")]
4996    Denied,
4997    #[doc(hidden)]
4998    __Unknown(i32),
4999}
5000
5001#[doc(hidden)]
5002impl IntoGlib for EventSequenceState {
5003    type GlibType = ffi::GtkEventSequenceState;
5004
5005    #[inline]
5006    fn into_glib(self) -> ffi::GtkEventSequenceState {
5007        match self {
5008            Self::None => ffi::GTK_EVENT_SEQUENCE_NONE,
5009            Self::Claimed => ffi::GTK_EVENT_SEQUENCE_CLAIMED,
5010            Self::Denied => ffi::GTK_EVENT_SEQUENCE_DENIED,
5011            Self::__Unknown(value) => value,
5012        }
5013    }
5014}
5015
5016#[doc(hidden)]
5017impl FromGlib<ffi::GtkEventSequenceState> for EventSequenceState {
5018    #[inline]
5019    unsafe fn from_glib(value: ffi::GtkEventSequenceState) -> Self {
5020        skip_assert_initialized!();
5021
5022        match value {
5023            ffi::GTK_EVENT_SEQUENCE_NONE => Self::None,
5024            ffi::GTK_EVENT_SEQUENCE_CLAIMED => Self::Claimed,
5025            ffi::GTK_EVENT_SEQUENCE_DENIED => Self::Denied,
5026            value => Self::__Unknown(value),
5027        }
5028    }
5029}
5030
5031impl StaticType for EventSequenceState {
5032    #[inline]
5033    #[doc(alias = "gtk_event_sequence_state_get_type")]
5034    fn static_type() -> glib::Type {
5035        unsafe { from_glib(ffi::gtk_event_sequence_state_get_type()) }
5036    }
5037}
5038
5039impl glib::HasParamSpec for EventSequenceState {
5040    type ParamSpec = glib::ParamSpecEnum;
5041    type SetValue = Self;
5042    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5043
5044    fn param_spec_builder() -> Self::BuilderFn {
5045        Self::ParamSpec::builder_with_default
5046    }
5047}
5048
5049impl glib::value::ValueType for EventSequenceState {
5050    type Type = Self;
5051}
5052
5053unsafe impl<'a> glib::value::FromValue<'a> for EventSequenceState {
5054    type Checker = glib::value::GenericValueTypeChecker<Self>;
5055
5056    #[inline]
5057    unsafe fn from_value(value: &'a glib::Value) -> Self {
5058        skip_assert_initialized!();
5059        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5060    }
5061}
5062
5063impl ToValue for EventSequenceState {
5064    #[inline]
5065    fn to_value(&self) -> glib::Value {
5066        let mut value = glib::Value::for_value_type::<Self>();
5067        unsafe {
5068            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5069        }
5070        value
5071    }
5072
5073    #[inline]
5074    fn value_type(&self) -> glib::Type {
5075        Self::static_type()
5076    }
5077}
5078
5079impl From<EventSequenceState> for glib::Value {
5080    #[inline]
5081    fn from(v: EventSequenceState) -> Self {
5082        skip_assert_initialized!();
5083        ToValue::to_value(&v)
5084    }
5085}
5086
5087/// Describes whether a [`FileChooser`][crate::FileChooser] is being used to open existing files
5088/// or to save to a possibly new file.
5089#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5090#[non_exhaustive]
5091#[doc(alias = "GtkFileChooserAction")]
5092pub enum FileChooserAction {
5093    /// Indicates open mode.  The file chooser
5094    ///  will only let the user pick an existing file.
5095    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_OPEN")]
5096    Open,
5097    /// Indicates save mode.  The file chooser
5098    ///  will let the user pick an existing file, or type in a new
5099    ///  filename.
5100    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_SAVE")]
5101    Save,
5102    /// Indicates an Open mode for
5103    ///  selecting folders.  The file chooser will let the user pick an
5104    ///  existing folder.
5105    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER")]
5106    SelectFolder,
5107    #[doc(hidden)]
5108    __Unknown(i32),
5109}
5110
5111#[doc(hidden)]
5112impl IntoGlib for FileChooserAction {
5113    type GlibType = ffi::GtkFileChooserAction;
5114
5115    #[inline]
5116    fn into_glib(self) -> ffi::GtkFileChooserAction {
5117        match self {
5118            Self::Open => ffi::GTK_FILE_CHOOSER_ACTION_OPEN,
5119            Self::Save => ffi::GTK_FILE_CHOOSER_ACTION_SAVE,
5120            Self::SelectFolder => ffi::GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
5121            Self::__Unknown(value) => value,
5122        }
5123    }
5124}
5125
5126#[doc(hidden)]
5127impl FromGlib<ffi::GtkFileChooserAction> for FileChooserAction {
5128    #[inline]
5129    unsafe fn from_glib(value: ffi::GtkFileChooserAction) -> Self {
5130        skip_assert_initialized!();
5131
5132        match value {
5133            ffi::GTK_FILE_CHOOSER_ACTION_OPEN => Self::Open,
5134            ffi::GTK_FILE_CHOOSER_ACTION_SAVE => Self::Save,
5135            ffi::GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER => Self::SelectFolder,
5136            value => Self::__Unknown(value),
5137        }
5138    }
5139}
5140
5141impl StaticType for FileChooserAction {
5142    #[inline]
5143    #[doc(alias = "gtk_file_chooser_action_get_type")]
5144    fn static_type() -> glib::Type {
5145        unsafe { from_glib(ffi::gtk_file_chooser_action_get_type()) }
5146    }
5147}
5148
5149impl glib::HasParamSpec for FileChooserAction {
5150    type ParamSpec = glib::ParamSpecEnum;
5151    type SetValue = Self;
5152    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5153
5154    fn param_spec_builder() -> Self::BuilderFn {
5155        Self::ParamSpec::builder_with_default
5156    }
5157}
5158
5159impl glib::value::ValueType for FileChooserAction {
5160    type Type = Self;
5161}
5162
5163unsafe impl<'a> glib::value::FromValue<'a> for FileChooserAction {
5164    type Checker = glib::value::GenericValueTypeChecker<Self>;
5165
5166    #[inline]
5167    unsafe fn from_value(value: &'a glib::Value) -> Self {
5168        skip_assert_initialized!();
5169        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5170    }
5171}
5172
5173impl ToValue for FileChooserAction {
5174    #[inline]
5175    fn to_value(&self) -> glib::Value {
5176        let mut value = glib::Value::for_value_type::<Self>();
5177        unsafe {
5178            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5179        }
5180        value
5181    }
5182
5183    #[inline]
5184    fn value_type(&self) -> glib::Type {
5185        Self::static_type()
5186    }
5187}
5188
5189impl From<FileChooserAction> for glib::Value {
5190    #[inline]
5191    fn from(v: FileChooserAction) -> Self {
5192        skip_assert_initialized!();
5193        ToValue::to_value(&v)
5194    }
5195}
5196
5197/// These identify the various errors that can occur while calling
5198/// [`FileChooser`][crate::FileChooser] functions.
5199///
5200/// # Deprecated since 4.20
5201///
5202/// There is no replacement
5203#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
5204#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5205#[non_exhaustive]
5206#[doc(alias = "GtkFileChooserError")]
5207pub enum FileChooserError {
5208    /// Indicates that a file does not exist.
5209    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_NONEXISTENT")]
5210    Nonexistent,
5211    /// Indicates a malformed filename.
5212    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_BAD_FILENAME")]
5213    BadFilename,
5214    /// Indicates a duplicate path (e.g. when
5215    ///  adding a bookmark).
5216    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS")]
5217    AlreadyExists,
5218    /// Indicates an incomplete hostname
5219    ///  (e.g. "http://foo" without a slash after that).
5220    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME")]
5221    IncompleteHostname,
5222    #[doc(hidden)]
5223    __Unknown(i32),
5224}
5225
5226#[allow(deprecated)]
5227#[doc(hidden)]
5228impl IntoGlib for FileChooserError {
5229    type GlibType = ffi::GtkFileChooserError;
5230
5231    #[inline]
5232    fn into_glib(self) -> ffi::GtkFileChooserError {
5233        match self {
5234            Self::Nonexistent => ffi::GTK_FILE_CHOOSER_ERROR_NONEXISTENT,
5235            Self::BadFilename => ffi::GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
5236            Self::AlreadyExists => ffi::GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS,
5237            Self::IncompleteHostname => ffi::GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME,
5238            Self::__Unknown(value) => value,
5239        }
5240    }
5241}
5242
5243#[allow(deprecated)]
5244#[doc(hidden)]
5245impl FromGlib<ffi::GtkFileChooserError> for FileChooserError {
5246    #[inline]
5247    unsafe fn from_glib(value: ffi::GtkFileChooserError) -> Self {
5248        skip_assert_initialized!();
5249
5250        match value {
5251            ffi::GTK_FILE_CHOOSER_ERROR_NONEXISTENT => Self::Nonexistent,
5252            ffi::GTK_FILE_CHOOSER_ERROR_BAD_FILENAME => Self::BadFilename,
5253            ffi::GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS => Self::AlreadyExists,
5254            ffi::GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME => Self::IncompleteHostname,
5255            value => Self::__Unknown(value),
5256        }
5257    }
5258}
5259
5260#[allow(deprecated)]
5261impl glib::error::ErrorDomain for FileChooserError {
5262    #[inline]
5263    fn domain() -> glib::Quark {
5264        skip_assert_initialized!();
5265
5266        unsafe { from_glib(ffi::gtk_file_chooser_error_quark()) }
5267    }
5268
5269    #[inline]
5270    fn code(self) -> i32 {
5271        self.into_glib()
5272    }
5273
5274    #[inline]
5275    #[allow(clippy::match_single_binding)]
5276    fn from(code: i32) -> Option<Self> {
5277        skip_assert_initialized!();
5278        match unsafe { from_glib(code) } {
5279            value => Some(value),
5280        }
5281    }
5282}
5283
5284#[allow(deprecated)]
5285impl StaticType for FileChooserError {
5286    #[inline]
5287    #[doc(alias = "gtk_file_chooser_error_get_type")]
5288    fn static_type() -> glib::Type {
5289        unsafe { from_glib(ffi::gtk_file_chooser_error_get_type()) }
5290    }
5291}
5292
5293#[allow(deprecated)]
5294impl glib::HasParamSpec for FileChooserError {
5295    type ParamSpec = glib::ParamSpecEnum;
5296    type SetValue = Self;
5297    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5298
5299    fn param_spec_builder() -> Self::BuilderFn {
5300        Self::ParamSpec::builder_with_default
5301    }
5302}
5303
5304#[allow(deprecated)]
5305impl glib::value::ValueType for FileChooserError {
5306    type Type = Self;
5307}
5308
5309#[allow(deprecated)]
5310unsafe impl<'a> glib::value::FromValue<'a> for FileChooserError {
5311    type Checker = glib::value::GenericValueTypeChecker<Self>;
5312
5313    #[inline]
5314    unsafe fn from_value(value: &'a glib::Value) -> Self {
5315        skip_assert_initialized!();
5316        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5317    }
5318}
5319
5320#[allow(deprecated)]
5321impl ToValue for FileChooserError {
5322    #[inline]
5323    fn to_value(&self) -> glib::Value {
5324        let mut value = glib::Value::for_value_type::<Self>();
5325        unsafe {
5326            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5327        }
5328        value
5329    }
5330
5331    #[inline]
5332    fn value_type(&self) -> glib::Type {
5333        Self::static_type()
5334    }
5335}
5336
5337#[allow(deprecated)]
5338impl From<FileChooserError> for glib::Value {
5339    #[inline]
5340    fn from(v: FileChooserError) -> Self {
5341        skip_assert_initialized!();
5342        ToValue::to_value(&v)
5343    }
5344}
5345
5346/// Describes changes in a filter in more detail and allows objects
5347/// using the filter to optimize refiltering items.
5348///
5349/// If you are writing an implementation and are not sure which
5350/// value to pass, `GTK_FILTER_CHANGE_DIFFERENT` is always a correct
5351/// choice.
5352///
5353/// New values may be added in the future.
5354#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5355#[non_exhaustive]
5356#[doc(alias = "GtkFilterChange")]
5357pub enum FilterChange {
5358    /// The filter change cannot be
5359    ///   described with any of the other enumeration values
5360    #[doc(alias = "GTK_FILTER_CHANGE_DIFFERENT")]
5361    Different,
5362    /// The filter is less strict than
5363    ///   it was before: All items that it used to return true
5364    ///   still return true, others now may, too.
5365    #[doc(alias = "GTK_FILTER_CHANGE_LESS_STRICT")]
5366    LessStrict,
5367    /// The filter is more strict than
5368    ///   it was before: All items that it used to return false
5369    ///   still return false, others now may, too.
5370    #[doc(alias = "GTK_FILTER_CHANGE_MORE_STRICT")]
5371    MoreStrict,
5372    /// Similar to [enum@Gtk.FilterChange.DIFFERENT],
5373    /// but signs that item watches should be recreated. This is used by
5374    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5375    /// change.
5376    #[cfg(feature = "v4_20")]
5377    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5378    #[doc(alias = "GTK_FILTER_CHANGE_DIFFERENT_REWATCH")]
5379    DifferentRewatch,
5380    /// Similar to [enum@Gtk.FilterChange.LESS_STRICT],
5381    /// but signs that item watches should be recreated. This is used by
5382    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5383    /// change.
5384    #[cfg(feature = "v4_20")]
5385    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5386    #[doc(alias = "GTK_FILTER_CHANGE_LESS_STRICT_REWATCH")]
5387    LessStrictRewatch,
5388    /// Similar to [enum@Gtk.FilterChange.MORE_STRICT],
5389    /// but signs that item watches should be recreated. This is used by
5390    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5391    /// change.
5392    #[cfg(feature = "v4_20")]
5393    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5394    #[doc(alias = "GTK_FILTER_CHANGE_MORE_STRICT_REWATCH")]
5395    MoreStrictRewatch,
5396    #[doc(hidden)]
5397    __Unknown(i32),
5398}
5399
5400#[doc(hidden)]
5401impl IntoGlib for FilterChange {
5402    type GlibType = ffi::GtkFilterChange;
5403
5404    #[inline]
5405    fn into_glib(self) -> ffi::GtkFilterChange {
5406        match self {
5407            Self::Different => ffi::GTK_FILTER_CHANGE_DIFFERENT,
5408            Self::LessStrict => ffi::GTK_FILTER_CHANGE_LESS_STRICT,
5409            Self::MoreStrict => ffi::GTK_FILTER_CHANGE_MORE_STRICT,
5410            #[cfg(feature = "v4_20")]
5411            Self::DifferentRewatch => ffi::GTK_FILTER_CHANGE_DIFFERENT_REWATCH,
5412            #[cfg(feature = "v4_20")]
5413            Self::LessStrictRewatch => ffi::GTK_FILTER_CHANGE_LESS_STRICT_REWATCH,
5414            #[cfg(feature = "v4_20")]
5415            Self::MoreStrictRewatch => ffi::GTK_FILTER_CHANGE_MORE_STRICT_REWATCH,
5416            Self::__Unknown(value) => value,
5417        }
5418    }
5419}
5420
5421#[doc(hidden)]
5422impl FromGlib<ffi::GtkFilterChange> for FilterChange {
5423    #[inline]
5424    unsafe fn from_glib(value: ffi::GtkFilterChange) -> Self {
5425        skip_assert_initialized!();
5426
5427        match value {
5428            ffi::GTK_FILTER_CHANGE_DIFFERENT => Self::Different,
5429            ffi::GTK_FILTER_CHANGE_LESS_STRICT => Self::LessStrict,
5430            ffi::GTK_FILTER_CHANGE_MORE_STRICT => Self::MoreStrict,
5431            #[cfg(feature = "v4_20")]
5432            ffi::GTK_FILTER_CHANGE_DIFFERENT_REWATCH => Self::DifferentRewatch,
5433            #[cfg(feature = "v4_20")]
5434            ffi::GTK_FILTER_CHANGE_LESS_STRICT_REWATCH => Self::LessStrictRewatch,
5435            #[cfg(feature = "v4_20")]
5436            ffi::GTK_FILTER_CHANGE_MORE_STRICT_REWATCH => Self::MoreStrictRewatch,
5437            value => Self::__Unknown(value),
5438        }
5439    }
5440}
5441
5442impl StaticType for FilterChange {
5443    #[inline]
5444    #[doc(alias = "gtk_filter_change_get_type")]
5445    fn static_type() -> glib::Type {
5446        unsafe { from_glib(ffi::gtk_filter_change_get_type()) }
5447    }
5448}
5449
5450impl glib::HasParamSpec for FilterChange {
5451    type ParamSpec = glib::ParamSpecEnum;
5452    type SetValue = Self;
5453    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5454
5455    fn param_spec_builder() -> Self::BuilderFn {
5456        Self::ParamSpec::builder_with_default
5457    }
5458}
5459
5460impl glib::value::ValueType for FilterChange {
5461    type Type = Self;
5462}
5463
5464unsafe impl<'a> glib::value::FromValue<'a> for FilterChange {
5465    type Checker = glib::value::GenericValueTypeChecker<Self>;
5466
5467    #[inline]
5468    unsafe fn from_value(value: &'a glib::Value) -> Self {
5469        skip_assert_initialized!();
5470        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5471    }
5472}
5473
5474impl ToValue for FilterChange {
5475    #[inline]
5476    fn to_value(&self) -> glib::Value {
5477        let mut value = glib::Value::for_value_type::<Self>();
5478        unsafe {
5479            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5480        }
5481        value
5482    }
5483
5484    #[inline]
5485    fn value_type(&self) -> glib::Type {
5486        Self::static_type()
5487    }
5488}
5489
5490impl From<FilterChange> for glib::Value {
5491    #[inline]
5492    fn from(v: FilterChange) -> Self {
5493        skip_assert_initialized!();
5494        ToValue::to_value(&v)
5495    }
5496}
5497
5498/// Describes the known strictness of a filter.
5499///
5500/// Note that for filters where the strictness is not known,
5501/// `GTK_FILTER_MATCH_SOME` is always an acceptable value,
5502/// even if a filter does match all or no items.
5503#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5504#[non_exhaustive]
5505#[doc(alias = "GtkFilterMatch")]
5506pub enum FilterMatch {
5507    /// The filter matches some items,
5508    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] may return true or false
5509    #[doc(alias = "GTK_FILTER_MATCH_SOME")]
5510    Some,
5511    /// The filter does not match any item,
5512    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] will always return false
5513    #[doc(alias = "GTK_FILTER_MATCH_NONE")]
5514    None,
5515    /// The filter matches all items,
5516    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] will alays return true
5517    #[doc(alias = "GTK_FILTER_MATCH_ALL")]
5518    All,
5519    #[doc(hidden)]
5520    __Unknown(i32),
5521}
5522
5523#[doc(hidden)]
5524impl IntoGlib for FilterMatch {
5525    type GlibType = ffi::GtkFilterMatch;
5526
5527    #[inline]
5528    fn into_glib(self) -> ffi::GtkFilterMatch {
5529        match self {
5530            Self::Some => ffi::GTK_FILTER_MATCH_SOME,
5531            Self::None => ffi::GTK_FILTER_MATCH_NONE,
5532            Self::All => ffi::GTK_FILTER_MATCH_ALL,
5533            Self::__Unknown(value) => value,
5534        }
5535    }
5536}
5537
5538#[doc(hidden)]
5539impl FromGlib<ffi::GtkFilterMatch> for FilterMatch {
5540    #[inline]
5541    unsafe fn from_glib(value: ffi::GtkFilterMatch) -> Self {
5542        skip_assert_initialized!();
5543
5544        match value {
5545            ffi::GTK_FILTER_MATCH_SOME => Self::Some,
5546            ffi::GTK_FILTER_MATCH_NONE => Self::None,
5547            ffi::GTK_FILTER_MATCH_ALL => Self::All,
5548            value => Self::__Unknown(value),
5549        }
5550    }
5551}
5552
5553impl StaticType for FilterMatch {
5554    #[inline]
5555    #[doc(alias = "gtk_filter_match_get_type")]
5556    fn static_type() -> glib::Type {
5557        unsafe { from_glib(ffi::gtk_filter_match_get_type()) }
5558    }
5559}
5560
5561impl glib::HasParamSpec for FilterMatch {
5562    type ParamSpec = glib::ParamSpecEnum;
5563    type SetValue = Self;
5564    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5565
5566    fn param_spec_builder() -> Self::BuilderFn {
5567        Self::ParamSpec::builder_with_default
5568    }
5569}
5570
5571impl glib::value::ValueType for FilterMatch {
5572    type Type = Self;
5573}
5574
5575unsafe impl<'a> glib::value::FromValue<'a> for FilterMatch {
5576    type Checker = glib::value::GenericValueTypeChecker<Self>;
5577
5578    #[inline]
5579    unsafe fn from_value(value: &'a glib::Value) -> Self {
5580        skip_assert_initialized!();
5581        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5582    }
5583}
5584
5585impl ToValue for FilterMatch {
5586    #[inline]
5587    fn to_value(&self) -> glib::Value {
5588        let mut value = glib::Value::for_value_type::<Self>();
5589        unsafe {
5590            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5591        }
5592        value
5593    }
5594
5595    #[inline]
5596    fn value_type(&self) -> glib::Type {
5597        Self::static_type()
5598    }
5599}
5600
5601impl From<FilterMatch> for glib::Value {
5602    #[inline]
5603    fn from(v: FilterMatch) -> Self {
5604        skip_assert_initialized!();
5605        ToValue::to_value(&v)
5606    }
5607}
5608
5609/// The level of granularity for the font selection.
5610///
5611/// Depending on this value, the [`pango::FontDescription`][crate::pango::FontDescription] that
5612/// is returned by [`FontDialogButton::font_desc()`][crate::FontDialogButton::font_desc()]
5613/// will have more or less fields set.
5614#[cfg(feature = "v4_10")]
5615#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5616#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5617#[non_exhaustive]
5618#[doc(alias = "GtkFontLevel")]
5619pub enum FontLevel {
5620    /// Select a font family
5621    #[doc(alias = "GTK_FONT_LEVEL_FAMILY")]
5622    Family,
5623    /// Select a font face (i.e. a family and a style)
5624    #[doc(alias = "GTK_FONT_LEVEL_FACE")]
5625    Face,
5626    /// Select a font (i.e. a face with a size, and possibly font variations)
5627    #[doc(alias = "GTK_FONT_LEVEL_FONT")]
5628    Font,
5629    /// Select a font and font features
5630    #[doc(alias = "GTK_FONT_LEVEL_FEATURES")]
5631    Features,
5632    #[doc(hidden)]
5633    __Unknown(i32),
5634}
5635
5636#[cfg(feature = "v4_10")]
5637#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5638#[doc(hidden)]
5639impl IntoGlib for FontLevel {
5640    type GlibType = ffi::GtkFontLevel;
5641
5642    #[inline]
5643    fn into_glib(self) -> ffi::GtkFontLevel {
5644        match self {
5645            Self::Family => ffi::GTK_FONT_LEVEL_FAMILY,
5646            Self::Face => ffi::GTK_FONT_LEVEL_FACE,
5647            Self::Font => ffi::GTK_FONT_LEVEL_FONT,
5648            Self::Features => ffi::GTK_FONT_LEVEL_FEATURES,
5649            Self::__Unknown(value) => value,
5650        }
5651    }
5652}
5653
5654#[cfg(feature = "v4_10")]
5655#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5656#[doc(hidden)]
5657impl FromGlib<ffi::GtkFontLevel> for FontLevel {
5658    #[inline]
5659    unsafe fn from_glib(value: ffi::GtkFontLevel) -> Self {
5660        skip_assert_initialized!();
5661
5662        match value {
5663            ffi::GTK_FONT_LEVEL_FAMILY => Self::Family,
5664            ffi::GTK_FONT_LEVEL_FACE => Self::Face,
5665            ffi::GTK_FONT_LEVEL_FONT => Self::Font,
5666            ffi::GTK_FONT_LEVEL_FEATURES => Self::Features,
5667            value => Self::__Unknown(value),
5668        }
5669    }
5670}
5671
5672#[cfg(feature = "v4_10")]
5673#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5674impl StaticType for FontLevel {
5675    #[inline]
5676    #[doc(alias = "gtk_font_level_get_type")]
5677    fn static_type() -> glib::Type {
5678        unsafe { from_glib(ffi::gtk_font_level_get_type()) }
5679    }
5680}
5681
5682#[cfg(feature = "v4_10")]
5683#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5684impl glib::HasParamSpec for FontLevel {
5685    type ParamSpec = glib::ParamSpecEnum;
5686    type SetValue = Self;
5687    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5688
5689    fn param_spec_builder() -> Self::BuilderFn {
5690        Self::ParamSpec::builder_with_default
5691    }
5692}
5693
5694#[cfg(feature = "v4_10")]
5695#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5696impl glib::value::ValueType for FontLevel {
5697    type Type = Self;
5698}
5699
5700#[cfg(feature = "v4_10")]
5701#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5702unsafe impl<'a> glib::value::FromValue<'a> for FontLevel {
5703    type Checker = glib::value::GenericValueTypeChecker<Self>;
5704
5705    #[inline]
5706    unsafe fn from_value(value: &'a glib::Value) -> Self {
5707        skip_assert_initialized!();
5708        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5709    }
5710}
5711
5712#[cfg(feature = "v4_10")]
5713#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5714impl ToValue for FontLevel {
5715    #[inline]
5716    fn to_value(&self) -> glib::Value {
5717        let mut value = glib::Value::for_value_type::<Self>();
5718        unsafe {
5719            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5720        }
5721        value
5722    }
5723
5724    #[inline]
5725    fn value_type(&self) -> glib::Type {
5726        Self::static_type()
5727    }
5728}
5729
5730#[cfg(feature = "v4_10")]
5731#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5732impl From<FontLevel> for glib::Value {
5733    #[inline]
5734    fn from(v: FontLevel) -> Self {
5735        skip_assert_initialized!();
5736        ToValue::to_value(&v)
5737    }
5738}
5739
5740/// Values for the [`gtk-font-rendering`][struct@crate::Settings#gtk-font-rendering] setting
5741/// that influence how GTK renders fonts.
5742#[cfg(feature = "v4_16")]
5743#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5744#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5745#[non_exhaustive]
5746#[doc(alias = "GtkFontRendering")]
5747pub enum FontRendering {
5748    /// Set up font rendering automatically,
5749    ///   taking factors like screen resolution and scale into account
5750    #[doc(alias = "GTK_FONT_RENDERING_AUTOMATIC")]
5751    Automatic,
5752    /// Follow low-level font-related settings
5753    ///   when configuring font rendering
5754    #[doc(alias = "GTK_FONT_RENDERING_MANUAL")]
5755    Manual,
5756    #[doc(hidden)]
5757    __Unknown(i32),
5758}
5759
5760#[cfg(feature = "v4_16")]
5761#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5762#[doc(hidden)]
5763impl IntoGlib for FontRendering {
5764    type GlibType = ffi::GtkFontRendering;
5765
5766    #[inline]
5767    fn into_glib(self) -> ffi::GtkFontRendering {
5768        match self {
5769            Self::Automatic => ffi::GTK_FONT_RENDERING_AUTOMATIC,
5770            Self::Manual => ffi::GTK_FONT_RENDERING_MANUAL,
5771            Self::__Unknown(value) => value,
5772        }
5773    }
5774}
5775
5776#[cfg(feature = "v4_16")]
5777#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5778#[doc(hidden)]
5779impl FromGlib<ffi::GtkFontRendering> for FontRendering {
5780    #[inline]
5781    unsafe fn from_glib(value: ffi::GtkFontRendering) -> Self {
5782        skip_assert_initialized!();
5783
5784        match value {
5785            ffi::GTK_FONT_RENDERING_AUTOMATIC => Self::Automatic,
5786            ffi::GTK_FONT_RENDERING_MANUAL => Self::Manual,
5787            value => Self::__Unknown(value),
5788        }
5789    }
5790}
5791
5792#[cfg(feature = "v4_16")]
5793#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5794impl StaticType for FontRendering {
5795    #[inline]
5796    #[doc(alias = "gtk_font_rendering_get_type")]
5797    fn static_type() -> glib::Type {
5798        unsafe { from_glib(ffi::gtk_font_rendering_get_type()) }
5799    }
5800}
5801
5802#[cfg(feature = "v4_16")]
5803#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5804impl glib::HasParamSpec for FontRendering {
5805    type ParamSpec = glib::ParamSpecEnum;
5806    type SetValue = Self;
5807    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5808
5809    fn param_spec_builder() -> Self::BuilderFn {
5810        Self::ParamSpec::builder_with_default
5811    }
5812}
5813
5814#[cfg(feature = "v4_16")]
5815#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5816impl glib::value::ValueType for FontRendering {
5817    type Type = Self;
5818}
5819
5820#[cfg(feature = "v4_16")]
5821#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5822unsafe impl<'a> glib::value::FromValue<'a> for FontRendering {
5823    type Checker = glib::value::GenericValueTypeChecker<Self>;
5824
5825    #[inline]
5826    unsafe fn from_value(value: &'a glib::Value) -> Self {
5827        skip_assert_initialized!();
5828        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5829    }
5830}
5831
5832#[cfg(feature = "v4_16")]
5833#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5834impl ToValue for FontRendering {
5835    #[inline]
5836    fn to_value(&self) -> glib::Value {
5837        let mut value = glib::Value::for_value_type::<Self>();
5838        unsafe {
5839            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5840        }
5841        value
5842    }
5843
5844    #[inline]
5845    fn value_type(&self) -> glib::Type {
5846        Self::static_type()
5847    }
5848}
5849
5850#[cfg(feature = "v4_16")]
5851#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5852impl From<FontRendering> for glib::Value {
5853    #[inline]
5854    fn from(v: FontRendering) -> Self {
5855        skip_assert_initialized!();
5856        ToValue::to_value(&v)
5857    }
5858}
5859
5860/// Represents the state of graphics offloading.
5861#[cfg(feature = "v4_14")]
5862#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5863#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5864#[non_exhaustive]
5865#[doc(alias = "GtkGraphicsOffloadEnabled")]
5866pub enum GraphicsOffloadEnabled {
5867    /// Graphics offloading is enabled.
5868    #[doc(alias = "GTK_GRAPHICS_OFFLOAD_ENABLED")]
5869    Enabled,
5870    /// Graphics offloading is disabled.
5871    #[doc(alias = "GTK_GRAPHICS_OFFLOAD_DISABLED")]
5872    Disabled,
5873    #[doc(hidden)]
5874    __Unknown(i32),
5875}
5876
5877#[cfg(feature = "v4_14")]
5878#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5879#[doc(hidden)]
5880impl IntoGlib for GraphicsOffloadEnabled {
5881    type GlibType = ffi::GtkGraphicsOffloadEnabled;
5882
5883    #[inline]
5884    fn into_glib(self) -> ffi::GtkGraphicsOffloadEnabled {
5885        match self {
5886            Self::Enabled => ffi::GTK_GRAPHICS_OFFLOAD_ENABLED,
5887            Self::Disabled => ffi::GTK_GRAPHICS_OFFLOAD_DISABLED,
5888            Self::__Unknown(value) => value,
5889        }
5890    }
5891}
5892
5893#[cfg(feature = "v4_14")]
5894#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5895#[doc(hidden)]
5896impl FromGlib<ffi::GtkGraphicsOffloadEnabled> for GraphicsOffloadEnabled {
5897    #[inline]
5898    unsafe fn from_glib(value: ffi::GtkGraphicsOffloadEnabled) -> Self {
5899        skip_assert_initialized!();
5900
5901        match value {
5902            ffi::GTK_GRAPHICS_OFFLOAD_ENABLED => Self::Enabled,
5903            ffi::GTK_GRAPHICS_OFFLOAD_DISABLED => Self::Disabled,
5904            value => Self::__Unknown(value),
5905        }
5906    }
5907}
5908
5909#[cfg(feature = "v4_14")]
5910#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5911impl StaticType for GraphicsOffloadEnabled {
5912    #[inline]
5913    #[doc(alias = "gtk_graphics_offload_enabled_get_type")]
5914    fn static_type() -> glib::Type {
5915        unsafe { from_glib(ffi::gtk_graphics_offload_enabled_get_type()) }
5916    }
5917}
5918
5919#[cfg(feature = "v4_14")]
5920#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5921impl glib::HasParamSpec for GraphicsOffloadEnabled {
5922    type ParamSpec = glib::ParamSpecEnum;
5923    type SetValue = Self;
5924    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5925
5926    fn param_spec_builder() -> Self::BuilderFn {
5927        Self::ParamSpec::builder_with_default
5928    }
5929}
5930
5931#[cfg(feature = "v4_14")]
5932#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5933impl glib::value::ValueType for GraphicsOffloadEnabled {
5934    type Type = Self;
5935}
5936
5937#[cfg(feature = "v4_14")]
5938#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5939unsafe impl<'a> glib::value::FromValue<'a> for GraphicsOffloadEnabled {
5940    type Checker = glib::value::GenericValueTypeChecker<Self>;
5941
5942    #[inline]
5943    unsafe fn from_value(value: &'a glib::Value) -> Self {
5944        skip_assert_initialized!();
5945        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5946    }
5947}
5948
5949#[cfg(feature = "v4_14")]
5950#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5951impl ToValue for GraphicsOffloadEnabled {
5952    #[inline]
5953    fn to_value(&self) -> glib::Value {
5954        let mut value = glib::Value::for_value_type::<Self>();
5955        unsafe {
5956            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5957        }
5958        value
5959    }
5960
5961    #[inline]
5962    fn value_type(&self) -> glib::Type {
5963        Self::static_type()
5964    }
5965}
5966
5967#[cfg(feature = "v4_14")]
5968#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5969impl From<GraphicsOffloadEnabled> for glib::Value {
5970    #[inline]
5971    fn from(v: GraphicsOffloadEnabled) -> Self {
5972        skip_assert_initialized!();
5973        ToValue::to_value(&v)
5974    }
5975}
5976
5977/// Built-in icon sizes.
5978///
5979/// Icon sizes default to being inherited. Where they cannot be
5980/// inherited, text size is the default.
5981///
5982/// All widgets which use [`IconSize`][crate::IconSize] set the normal-icons or
5983/// large-icons style classes correspondingly, and let themes
5984/// determine the actual size to be used with the
5985/// `-gtk-icon-size` CSS property.
5986#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5987#[non_exhaustive]
5988#[doc(alias = "GtkIconSize")]
5989pub enum IconSize {
5990    /// Keep the size of the parent element
5991    #[doc(alias = "GTK_ICON_SIZE_INHERIT")]
5992    Inherit,
5993    /// Size similar to text size
5994    #[doc(alias = "GTK_ICON_SIZE_NORMAL")]
5995    Normal,
5996    /// Large size, for example in an icon view
5997    #[doc(alias = "GTK_ICON_SIZE_LARGE")]
5998    Large,
5999    #[doc(hidden)]
6000    __Unknown(i32),
6001}
6002
6003#[doc(hidden)]
6004impl IntoGlib for IconSize {
6005    type GlibType = ffi::GtkIconSize;
6006
6007    #[inline]
6008    fn into_glib(self) -> ffi::GtkIconSize {
6009        match self {
6010            Self::Inherit => ffi::GTK_ICON_SIZE_INHERIT,
6011            Self::Normal => ffi::GTK_ICON_SIZE_NORMAL,
6012            Self::Large => ffi::GTK_ICON_SIZE_LARGE,
6013            Self::__Unknown(value) => value,
6014        }
6015    }
6016}
6017
6018#[doc(hidden)]
6019impl FromGlib<ffi::GtkIconSize> for IconSize {
6020    #[inline]
6021    unsafe fn from_glib(value: ffi::GtkIconSize) -> Self {
6022        skip_assert_initialized!();
6023
6024        match value {
6025            ffi::GTK_ICON_SIZE_INHERIT => Self::Inherit,
6026            ffi::GTK_ICON_SIZE_NORMAL => Self::Normal,
6027            ffi::GTK_ICON_SIZE_LARGE => Self::Large,
6028            value => Self::__Unknown(value),
6029        }
6030    }
6031}
6032
6033impl StaticType for IconSize {
6034    #[inline]
6035    #[doc(alias = "gtk_icon_size_get_type")]
6036    fn static_type() -> glib::Type {
6037        unsafe { from_glib(ffi::gtk_icon_size_get_type()) }
6038    }
6039}
6040
6041impl glib::HasParamSpec for IconSize {
6042    type ParamSpec = glib::ParamSpecEnum;
6043    type SetValue = Self;
6044    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6045
6046    fn param_spec_builder() -> Self::BuilderFn {
6047        Self::ParamSpec::builder_with_default
6048    }
6049}
6050
6051impl glib::value::ValueType for IconSize {
6052    type Type = Self;
6053}
6054
6055unsafe impl<'a> glib::value::FromValue<'a> for IconSize {
6056    type Checker = glib::value::GenericValueTypeChecker<Self>;
6057
6058    #[inline]
6059    unsafe fn from_value(value: &'a glib::Value) -> Self {
6060        skip_assert_initialized!();
6061        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6062    }
6063}
6064
6065impl ToValue for IconSize {
6066    #[inline]
6067    fn to_value(&self) -> glib::Value {
6068        let mut value = glib::Value::for_value_type::<Self>();
6069        unsafe {
6070            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6071        }
6072        value
6073    }
6074
6075    #[inline]
6076    fn value_type(&self) -> glib::Type {
6077        Self::static_type()
6078    }
6079}
6080
6081impl From<IconSize> for glib::Value {
6082    #[inline]
6083    fn from(v: IconSize) -> Self {
6084        skip_assert_initialized!();
6085        ToValue::to_value(&v)
6086    }
6087}
6088
6089/// Error codes for [`IconTheme`][crate::IconTheme] operations.
6090#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6091#[non_exhaustive]
6092#[doc(alias = "GtkIconThemeError")]
6093pub enum IconThemeError {
6094    /// The icon specified does not exist in the theme
6095    #[doc(alias = "GTK_ICON_THEME_NOT_FOUND")]
6096    NotFound,
6097    /// An unspecified error occurred.
6098    #[doc(alias = "GTK_ICON_THEME_FAILED")]
6099    Failed,
6100    #[doc(hidden)]
6101    __Unknown(i32),
6102}
6103
6104#[doc(hidden)]
6105impl IntoGlib for IconThemeError {
6106    type GlibType = ffi::GtkIconThemeError;
6107
6108    #[inline]
6109    fn into_glib(self) -> ffi::GtkIconThemeError {
6110        match self {
6111            Self::NotFound => ffi::GTK_ICON_THEME_NOT_FOUND,
6112            Self::Failed => ffi::GTK_ICON_THEME_FAILED,
6113            Self::__Unknown(value) => value,
6114        }
6115    }
6116}
6117
6118#[doc(hidden)]
6119impl FromGlib<ffi::GtkIconThemeError> for IconThemeError {
6120    #[inline]
6121    unsafe fn from_glib(value: ffi::GtkIconThemeError) -> Self {
6122        skip_assert_initialized!();
6123
6124        match value {
6125            ffi::GTK_ICON_THEME_NOT_FOUND => Self::NotFound,
6126            ffi::GTK_ICON_THEME_FAILED => Self::Failed,
6127            value => Self::__Unknown(value),
6128        }
6129    }
6130}
6131
6132impl glib::error::ErrorDomain for IconThemeError {
6133    #[inline]
6134    fn domain() -> glib::Quark {
6135        skip_assert_initialized!();
6136
6137        unsafe { from_glib(ffi::gtk_icon_theme_error_quark()) }
6138    }
6139
6140    #[inline]
6141    fn code(self) -> i32 {
6142        self.into_glib()
6143    }
6144
6145    #[inline]
6146    #[allow(clippy::match_single_binding)]
6147    fn from(code: i32) -> Option<Self> {
6148        skip_assert_initialized!();
6149        match unsafe { from_glib(code) } {
6150            Self::__Unknown(_) => Some(Self::Failed),
6151            value => Some(value),
6152        }
6153    }
6154}
6155
6156impl StaticType for IconThemeError {
6157    #[inline]
6158    #[doc(alias = "gtk_icon_theme_error_get_type")]
6159    fn static_type() -> glib::Type {
6160        unsafe { from_glib(ffi::gtk_icon_theme_error_get_type()) }
6161    }
6162}
6163
6164impl glib::HasParamSpec for IconThemeError {
6165    type ParamSpec = glib::ParamSpecEnum;
6166    type SetValue = Self;
6167    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6168
6169    fn param_spec_builder() -> Self::BuilderFn {
6170        Self::ParamSpec::builder_with_default
6171    }
6172}
6173
6174impl glib::value::ValueType for IconThemeError {
6175    type Type = Self;
6176}
6177
6178unsafe impl<'a> glib::value::FromValue<'a> for IconThemeError {
6179    type Checker = glib::value::GenericValueTypeChecker<Self>;
6180
6181    #[inline]
6182    unsafe fn from_value(value: &'a glib::Value) -> Self {
6183        skip_assert_initialized!();
6184        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6185    }
6186}
6187
6188impl ToValue for IconThemeError {
6189    #[inline]
6190    fn to_value(&self) -> glib::Value {
6191        let mut value = glib::Value::for_value_type::<Self>();
6192        unsafe {
6193            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6194        }
6195        value
6196    }
6197
6198    #[inline]
6199    fn value_type(&self) -> glib::Type {
6200        Self::static_type()
6201    }
6202}
6203
6204impl From<IconThemeError> for glib::Value {
6205    #[inline]
6206    fn from(v: IconThemeError) -> Self {
6207        skip_assert_initialized!();
6208        ToValue::to_value(&v)
6209    }
6210}
6211
6212/// An enum for determining where a dropped item goes.
6213///
6214/// # Deprecated since 4.20
6215///
6216/// There is no replacement.
6217#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
6218#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6219#[non_exhaustive]
6220#[doc(alias = "GtkIconViewDropPosition")]
6221pub enum IconViewDropPosition {
6222    /// no drop possible
6223    #[doc(alias = "GTK_ICON_VIEW_NO_DROP")]
6224    NoDrop,
6225    /// dropped item replaces the item
6226    #[doc(alias = "GTK_ICON_VIEW_DROP_INTO")]
6227    DropInto,
6228    /// dropped item is inserted to the left
6229    #[doc(alias = "GTK_ICON_VIEW_DROP_LEFT")]
6230    DropLeft,
6231    /// dropped item is inserted to the right
6232    #[doc(alias = "GTK_ICON_VIEW_DROP_RIGHT")]
6233    DropRight,
6234    /// dropped item is inserted above
6235    #[doc(alias = "GTK_ICON_VIEW_DROP_ABOVE")]
6236    DropAbove,
6237    /// dropped item is inserted below
6238    #[doc(alias = "GTK_ICON_VIEW_DROP_BELOW")]
6239    DropBelow,
6240    #[doc(hidden)]
6241    __Unknown(i32),
6242}
6243
6244#[allow(deprecated)]
6245#[doc(hidden)]
6246impl IntoGlib for IconViewDropPosition {
6247    type GlibType = ffi::GtkIconViewDropPosition;
6248
6249    #[inline]
6250    fn into_glib(self) -> ffi::GtkIconViewDropPosition {
6251        match self {
6252            Self::NoDrop => ffi::GTK_ICON_VIEW_NO_DROP,
6253            Self::DropInto => ffi::GTK_ICON_VIEW_DROP_INTO,
6254            Self::DropLeft => ffi::GTK_ICON_VIEW_DROP_LEFT,
6255            Self::DropRight => ffi::GTK_ICON_VIEW_DROP_RIGHT,
6256            Self::DropAbove => ffi::GTK_ICON_VIEW_DROP_ABOVE,
6257            Self::DropBelow => ffi::GTK_ICON_VIEW_DROP_BELOW,
6258            Self::__Unknown(value) => value,
6259        }
6260    }
6261}
6262
6263#[allow(deprecated)]
6264#[doc(hidden)]
6265impl FromGlib<ffi::GtkIconViewDropPosition> for IconViewDropPosition {
6266    #[inline]
6267    unsafe fn from_glib(value: ffi::GtkIconViewDropPosition) -> Self {
6268        skip_assert_initialized!();
6269
6270        match value {
6271            ffi::GTK_ICON_VIEW_NO_DROP => Self::NoDrop,
6272            ffi::GTK_ICON_VIEW_DROP_INTO => Self::DropInto,
6273            ffi::GTK_ICON_VIEW_DROP_LEFT => Self::DropLeft,
6274            ffi::GTK_ICON_VIEW_DROP_RIGHT => Self::DropRight,
6275            ffi::GTK_ICON_VIEW_DROP_ABOVE => Self::DropAbove,
6276            ffi::GTK_ICON_VIEW_DROP_BELOW => Self::DropBelow,
6277            value => Self::__Unknown(value),
6278        }
6279    }
6280}
6281
6282#[allow(deprecated)]
6283impl StaticType for IconViewDropPosition {
6284    #[inline]
6285    #[doc(alias = "gtk_icon_view_drop_position_get_type")]
6286    fn static_type() -> glib::Type {
6287        unsafe { from_glib(ffi::gtk_icon_view_drop_position_get_type()) }
6288    }
6289}
6290
6291#[allow(deprecated)]
6292impl glib::HasParamSpec for IconViewDropPosition {
6293    type ParamSpec = glib::ParamSpecEnum;
6294    type SetValue = Self;
6295    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6296
6297    fn param_spec_builder() -> Self::BuilderFn {
6298        Self::ParamSpec::builder_with_default
6299    }
6300}
6301
6302#[allow(deprecated)]
6303impl glib::value::ValueType for IconViewDropPosition {
6304    type Type = Self;
6305}
6306
6307#[allow(deprecated)]
6308unsafe impl<'a> glib::value::FromValue<'a> for IconViewDropPosition {
6309    type Checker = glib::value::GenericValueTypeChecker<Self>;
6310
6311    #[inline]
6312    unsafe fn from_value(value: &'a glib::Value) -> Self {
6313        skip_assert_initialized!();
6314        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6315    }
6316}
6317
6318#[allow(deprecated)]
6319impl ToValue for IconViewDropPosition {
6320    #[inline]
6321    fn to_value(&self) -> glib::Value {
6322        let mut value = glib::Value::for_value_type::<Self>();
6323        unsafe {
6324            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6325        }
6326        value
6327    }
6328
6329    #[inline]
6330    fn value_type(&self) -> glib::Type {
6331        Self::static_type()
6332    }
6333}
6334
6335#[allow(deprecated)]
6336impl From<IconViewDropPosition> for glib::Value {
6337    #[inline]
6338    fn from(v: IconViewDropPosition) -> Self {
6339        skip_assert_initialized!();
6340        ToValue::to_value(&v)
6341    }
6342}
6343
6344/// Describes the image data representation used by a [`Image`][crate::Image].
6345///
6346/// If you want to get the image from the widget, you can only get the
6347/// currently-stored representation; for instance, if the gtk_image_get_storage_type()
6348/// returns [`Paintable`][Self::Paintable], then you can call gtk_image_get_paintable().
6349///
6350/// For empty images, you can request any storage type (call any of the "get"
6351/// functions), but they will all return [`None`] values.
6352#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6353#[non_exhaustive]
6354#[doc(alias = "GtkImageType")]
6355pub enum ImageType {
6356    /// there is no image displayed by the widget
6357    #[doc(alias = "GTK_IMAGE_EMPTY")]
6358    Empty,
6359    /// the widget contains a named icon
6360    #[doc(alias = "GTK_IMAGE_ICON_NAME")]
6361    IconName,
6362    /// the widget contains a `GIcon`
6363    #[doc(alias = "GTK_IMAGE_GICON")]
6364    Gicon,
6365    /// the widget contains a [`gdk::Paintable`][crate::gdk::Paintable]
6366    #[doc(alias = "GTK_IMAGE_PAINTABLE")]
6367    Paintable,
6368    #[doc(hidden)]
6369    __Unknown(i32),
6370}
6371
6372#[doc(hidden)]
6373impl IntoGlib for ImageType {
6374    type GlibType = ffi::GtkImageType;
6375
6376    #[inline]
6377    fn into_glib(self) -> ffi::GtkImageType {
6378        match self {
6379            Self::Empty => ffi::GTK_IMAGE_EMPTY,
6380            Self::IconName => ffi::GTK_IMAGE_ICON_NAME,
6381            Self::Gicon => ffi::GTK_IMAGE_GICON,
6382            Self::Paintable => ffi::GTK_IMAGE_PAINTABLE,
6383            Self::__Unknown(value) => value,
6384        }
6385    }
6386}
6387
6388#[doc(hidden)]
6389impl FromGlib<ffi::GtkImageType> for ImageType {
6390    #[inline]
6391    unsafe fn from_glib(value: ffi::GtkImageType) -> Self {
6392        skip_assert_initialized!();
6393
6394        match value {
6395            ffi::GTK_IMAGE_EMPTY => Self::Empty,
6396            ffi::GTK_IMAGE_ICON_NAME => Self::IconName,
6397            ffi::GTK_IMAGE_GICON => Self::Gicon,
6398            ffi::GTK_IMAGE_PAINTABLE => Self::Paintable,
6399            value => Self::__Unknown(value),
6400        }
6401    }
6402}
6403
6404impl StaticType for ImageType {
6405    #[inline]
6406    #[doc(alias = "gtk_image_type_get_type")]
6407    fn static_type() -> glib::Type {
6408        unsafe { from_glib(ffi::gtk_image_type_get_type()) }
6409    }
6410}
6411
6412impl glib::HasParamSpec for ImageType {
6413    type ParamSpec = glib::ParamSpecEnum;
6414    type SetValue = Self;
6415    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6416
6417    fn param_spec_builder() -> Self::BuilderFn {
6418        Self::ParamSpec::builder_with_default
6419    }
6420}
6421
6422impl glib::value::ValueType for ImageType {
6423    type Type = Self;
6424}
6425
6426unsafe impl<'a> glib::value::FromValue<'a> for ImageType {
6427    type Checker = glib::value::GenericValueTypeChecker<Self>;
6428
6429    #[inline]
6430    unsafe fn from_value(value: &'a glib::Value) -> Self {
6431        skip_assert_initialized!();
6432        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6433    }
6434}
6435
6436impl ToValue for ImageType {
6437    #[inline]
6438    fn to_value(&self) -> glib::Value {
6439        let mut value = glib::Value::for_value_type::<Self>();
6440        unsafe {
6441            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6442        }
6443        value
6444    }
6445
6446    #[inline]
6447    fn value_type(&self) -> glib::Type {
6448        Self::static_type()
6449    }
6450}
6451
6452impl From<ImageType> for glib::Value {
6453    #[inline]
6454    fn from(v: ImageType) -> Self {
6455        skip_assert_initialized!();
6456        ToValue::to_value(&v)
6457    }
6458}
6459
6460/// Describes primary purpose of the input widget.
6461///
6462/// This information is useful for on-screen keyboards and similar input
6463/// methods to decide which keys should be presented to the user.
6464///
6465/// Note that the purpose is not meant to impose a totally strict rule
6466/// about allowed characters, and does not replace input validation.
6467/// It is fine for an on-screen keyboard to let the user override the
6468/// character set restriction that is expressed by the purpose. The
6469/// application is expected to validate the entry contents, even if
6470/// it specified a purpose.
6471///
6472/// The difference between [`Digits`][Self::Digits] and
6473/// [`Number`][Self::Number] is that the former accepts only digits
6474/// while the latter also some punctuation (like commas or points, plus,
6475/// minus) and “e” or “E” as in 3.14E+000.
6476///
6477/// This enumeration may be extended in the future; input methods should
6478/// interpret unknown values as “free form”.
6479#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6480#[non_exhaustive]
6481#[doc(alias = "GtkInputPurpose")]
6482pub enum InputPurpose {
6483    /// Allow any character
6484    #[doc(alias = "GTK_INPUT_PURPOSE_FREE_FORM")]
6485    FreeForm,
6486    /// Allow only alphabetic characters
6487    #[doc(alias = "GTK_INPUT_PURPOSE_ALPHA")]
6488    Alpha,
6489    /// Allow only digits
6490    #[doc(alias = "GTK_INPUT_PURPOSE_DIGITS")]
6491    Digits,
6492    /// Edited field expects numbers
6493    #[doc(alias = "GTK_INPUT_PURPOSE_NUMBER")]
6494    Number,
6495    /// Edited field expects phone number
6496    #[doc(alias = "GTK_INPUT_PURPOSE_PHONE")]
6497    Phone,
6498    /// Edited field expects URL
6499    #[doc(alias = "GTK_INPUT_PURPOSE_URL")]
6500    Url,
6501    /// Edited field expects email address
6502    #[doc(alias = "GTK_INPUT_PURPOSE_EMAIL")]
6503    Email,
6504    /// Edited field expects the name of a person
6505    #[doc(alias = "GTK_INPUT_PURPOSE_NAME")]
6506    Name,
6507    /// Like [`FreeForm`][Self::FreeForm], but characters are hidden
6508    #[doc(alias = "GTK_INPUT_PURPOSE_PASSWORD")]
6509    Password,
6510    /// Like [`Digits`][Self::Digits], but characters are hidden
6511    #[doc(alias = "GTK_INPUT_PURPOSE_PIN")]
6512    Pin,
6513    /// Allow any character, in addition to control codes
6514    #[doc(alias = "GTK_INPUT_PURPOSE_TERMINAL")]
6515    Terminal,
6516    #[doc(hidden)]
6517    __Unknown(i32),
6518}
6519
6520#[doc(hidden)]
6521impl IntoGlib for InputPurpose {
6522    type GlibType = ffi::GtkInputPurpose;
6523
6524    #[inline]
6525    fn into_glib(self) -> ffi::GtkInputPurpose {
6526        match self {
6527            Self::FreeForm => ffi::GTK_INPUT_PURPOSE_FREE_FORM,
6528            Self::Alpha => ffi::GTK_INPUT_PURPOSE_ALPHA,
6529            Self::Digits => ffi::GTK_INPUT_PURPOSE_DIGITS,
6530            Self::Number => ffi::GTK_INPUT_PURPOSE_NUMBER,
6531            Self::Phone => ffi::GTK_INPUT_PURPOSE_PHONE,
6532            Self::Url => ffi::GTK_INPUT_PURPOSE_URL,
6533            Self::Email => ffi::GTK_INPUT_PURPOSE_EMAIL,
6534            Self::Name => ffi::GTK_INPUT_PURPOSE_NAME,
6535            Self::Password => ffi::GTK_INPUT_PURPOSE_PASSWORD,
6536            Self::Pin => ffi::GTK_INPUT_PURPOSE_PIN,
6537            Self::Terminal => ffi::GTK_INPUT_PURPOSE_TERMINAL,
6538            Self::__Unknown(value) => value,
6539        }
6540    }
6541}
6542
6543#[doc(hidden)]
6544impl FromGlib<ffi::GtkInputPurpose> for InputPurpose {
6545    #[inline]
6546    unsafe fn from_glib(value: ffi::GtkInputPurpose) -> Self {
6547        skip_assert_initialized!();
6548
6549        match value {
6550            ffi::GTK_INPUT_PURPOSE_FREE_FORM => Self::FreeForm,
6551            ffi::GTK_INPUT_PURPOSE_ALPHA => Self::Alpha,
6552            ffi::GTK_INPUT_PURPOSE_DIGITS => Self::Digits,
6553            ffi::GTK_INPUT_PURPOSE_NUMBER => Self::Number,
6554            ffi::GTK_INPUT_PURPOSE_PHONE => Self::Phone,
6555            ffi::GTK_INPUT_PURPOSE_URL => Self::Url,
6556            ffi::GTK_INPUT_PURPOSE_EMAIL => Self::Email,
6557            ffi::GTK_INPUT_PURPOSE_NAME => Self::Name,
6558            ffi::GTK_INPUT_PURPOSE_PASSWORD => Self::Password,
6559            ffi::GTK_INPUT_PURPOSE_PIN => Self::Pin,
6560            ffi::GTK_INPUT_PURPOSE_TERMINAL => Self::Terminal,
6561            value => Self::__Unknown(value),
6562        }
6563    }
6564}
6565
6566impl StaticType for InputPurpose {
6567    #[inline]
6568    #[doc(alias = "gtk_input_purpose_get_type")]
6569    fn static_type() -> glib::Type {
6570        unsafe { from_glib(ffi::gtk_input_purpose_get_type()) }
6571    }
6572}
6573
6574impl glib::HasParamSpec for InputPurpose {
6575    type ParamSpec = glib::ParamSpecEnum;
6576    type SetValue = Self;
6577    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6578
6579    fn param_spec_builder() -> Self::BuilderFn {
6580        Self::ParamSpec::builder_with_default
6581    }
6582}
6583
6584impl glib::value::ValueType for InputPurpose {
6585    type Type = Self;
6586}
6587
6588unsafe impl<'a> glib::value::FromValue<'a> for InputPurpose {
6589    type Checker = glib::value::GenericValueTypeChecker<Self>;
6590
6591    #[inline]
6592    unsafe fn from_value(value: &'a glib::Value) -> Self {
6593        skip_assert_initialized!();
6594        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6595    }
6596}
6597
6598impl ToValue for InputPurpose {
6599    #[inline]
6600    fn to_value(&self) -> glib::Value {
6601        let mut value = glib::Value::for_value_type::<Self>();
6602        unsafe {
6603            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6604        }
6605        value
6606    }
6607
6608    #[inline]
6609    fn value_type(&self) -> glib::Type {
6610        Self::static_type()
6611    }
6612}
6613
6614impl From<InputPurpose> for glib::Value {
6615    #[inline]
6616    fn from(v: InputPurpose) -> Self {
6617        skip_assert_initialized!();
6618        ToValue::to_value(&v)
6619    }
6620}
6621
6622/// The different methods to handle text in #GtkInscription when it doesn't
6623/// fit the available space.
6624#[cfg(feature = "v4_8")]
6625#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6626#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6627#[non_exhaustive]
6628#[doc(alias = "GtkInscriptionOverflow")]
6629pub enum InscriptionOverflow {
6630    /// Clip the remaining text
6631    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_CLIP")]
6632    Clip,
6633    /// Omit characters at the start of the text
6634    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START")]
6635    EllipsizeStart,
6636    /// Omit characters at the middle of the text
6637    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE")]
6638    EllipsizeMiddle,
6639    /// Omit characters at the end of the text
6640    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END")]
6641    EllipsizeEnd,
6642    #[doc(hidden)]
6643    __Unknown(i32),
6644}
6645
6646#[cfg(feature = "v4_8")]
6647#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6648#[doc(hidden)]
6649impl IntoGlib for InscriptionOverflow {
6650    type GlibType = ffi::GtkInscriptionOverflow;
6651
6652    #[inline]
6653    fn into_glib(self) -> ffi::GtkInscriptionOverflow {
6654        match self {
6655            Self::Clip => ffi::GTK_INSCRIPTION_OVERFLOW_CLIP,
6656            Self::EllipsizeStart => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START,
6657            Self::EllipsizeMiddle => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE,
6658            Self::EllipsizeEnd => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END,
6659            Self::__Unknown(value) => value,
6660        }
6661    }
6662}
6663
6664#[cfg(feature = "v4_8")]
6665#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6666#[doc(hidden)]
6667impl FromGlib<ffi::GtkInscriptionOverflow> for InscriptionOverflow {
6668    #[inline]
6669    unsafe fn from_glib(value: ffi::GtkInscriptionOverflow) -> Self {
6670        skip_assert_initialized!();
6671
6672        match value {
6673            ffi::GTK_INSCRIPTION_OVERFLOW_CLIP => Self::Clip,
6674            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START => Self::EllipsizeStart,
6675            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE => Self::EllipsizeMiddle,
6676            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END => Self::EllipsizeEnd,
6677            value => Self::__Unknown(value),
6678        }
6679    }
6680}
6681
6682#[cfg(feature = "v4_8")]
6683#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6684impl StaticType for InscriptionOverflow {
6685    #[inline]
6686    #[doc(alias = "gtk_inscription_overflow_get_type")]
6687    fn static_type() -> glib::Type {
6688        unsafe { from_glib(ffi::gtk_inscription_overflow_get_type()) }
6689    }
6690}
6691
6692#[cfg(feature = "v4_8")]
6693#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6694impl glib::HasParamSpec for InscriptionOverflow {
6695    type ParamSpec = glib::ParamSpecEnum;
6696    type SetValue = Self;
6697    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6698
6699    fn param_spec_builder() -> Self::BuilderFn {
6700        Self::ParamSpec::builder_with_default
6701    }
6702}
6703
6704#[cfg(feature = "v4_8")]
6705#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6706impl glib::value::ValueType for InscriptionOverflow {
6707    type Type = Self;
6708}
6709
6710#[cfg(feature = "v4_8")]
6711#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6712unsafe impl<'a> glib::value::FromValue<'a> for InscriptionOverflow {
6713    type Checker = glib::value::GenericValueTypeChecker<Self>;
6714
6715    #[inline]
6716    unsafe fn from_value(value: &'a glib::Value) -> Self {
6717        skip_assert_initialized!();
6718        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6719    }
6720}
6721
6722#[cfg(feature = "v4_8")]
6723#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6724impl ToValue for InscriptionOverflow {
6725    #[inline]
6726    fn to_value(&self) -> glib::Value {
6727        let mut value = glib::Value::for_value_type::<Self>();
6728        unsafe {
6729            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6730        }
6731        value
6732    }
6733
6734    #[inline]
6735    fn value_type(&self) -> glib::Type {
6736        Self::static_type()
6737    }
6738}
6739
6740#[cfg(feature = "v4_8")]
6741#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6742impl From<InscriptionOverflow> for glib::Value {
6743    #[inline]
6744    fn from(v: InscriptionOverflow) -> Self {
6745        skip_assert_initialized!();
6746        ToValue::to_value(&v)
6747    }
6748}
6749
6750/// Values for the [`gtk-interface-color-scheme`][struct@crate::Settings#gtk-interface-color-scheme]
6751/// and [`prefers-color-scheme`][struct@crate::CssProvider#prefers-color-scheme] properties
6752/// that indicates what color scheme is used.
6753///
6754/// This information can be used inside CSS via media queries.
6755///
6756/// More values may be added to this enumeration. Unknown values
6757/// should be treated the same as `GTK_INTERFACE_COLOR_SCHEME_DEFAULT`.
6758#[cfg(feature = "v4_20")]
6759#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6760#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6761#[non_exhaustive]
6762#[doc(alias = "GtkInterfaceColorScheme")]
6763pub enum InterfaceColorScheme {
6764    /// The system doesn't support color schemes
6765    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED")]
6766    Unsupported,
6767    /// The default color scheme is used
6768    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_DEFAULT")]
6769    Default,
6770    /// A dark color scheme is used
6771    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_DARK")]
6772    Dark,
6773    /// A light color scheme is used
6774    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_LIGHT")]
6775    Light,
6776    #[doc(hidden)]
6777    __Unknown(i32),
6778}
6779
6780#[cfg(feature = "v4_20")]
6781#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6782#[doc(hidden)]
6783impl IntoGlib for InterfaceColorScheme {
6784    type GlibType = ffi::GtkInterfaceColorScheme;
6785
6786    #[inline]
6787    fn into_glib(self) -> ffi::GtkInterfaceColorScheme {
6788        match self {
6789            Self::Unsupported => ffi::GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED,
6790            Self::Default => ffi::GTK_INTERFACE_COLOR_SCHEME_DEFAULT,
6791            Self::Dark => ffi::GTK_INTERFACE_COLOR_SCHEME_DARK,
6792            Self::Light => ffi::GTK_INTERFACE_COLOR_SCHEME_LIGHT,
6793            Self::__Unknown(value) => value,
6794        }
6795    }
6796}
6797
6798#[cfg(feature = "v4_20")]
6799#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6800#[doc(hidden)]
6801impl FromGlib<ffi::GtkInterfaceColorScheme> for InterfaceColorScheme {
6802    #[inline]
6803    unsafe fn from_glib(value: ffi::GtkInterfaceColorScheme) -> Self {
6804        skip_assert_initialized!();
6805
6806        match value {
6807            ffi::GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED => Self::Unsupported,
6808            ffi::GTK_INTERFACE_COLOR_SCHEME_DEFAULT => Self::Default,
6809            ffi::GTK_INTERFACE_COLOR_SCHEME_DARK => Self::Dark,
6810            ffi::GTK_INTERFACE_COLOR_SCHEME_LIGHT => Self::Light,
6811            value => Self::__Unknown(value),
6812        }
6813    }
6814}
6815
6816#[cfg(feature = "v4_20")]
6817#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6818impl StaticType for InterfaceColorScheme {
6819    #[inline]
6820    #[doc(alias = "gtk_interface_color_scheme_get_type")]
6821    fn static_type() -> glib::Type {
6822        unsafe { from_glib(ffi::gtk_interface_color_scheme_get_type()) }
6823    }
6824}
6825
6826#[cfg(feature = "v4_20")]
6827#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6828impl glib::HasParamSpec for InterfaceColorScheme {
6829    type ParamSpec = glib::ParamSpecEnum;
6830    type SetValue = Self;
6831    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6832
6833    fn param_spec_builder() -> Self::BuilderFn {
6834        Self::ParamSpec::builder_with_default
6835    }
6836}
6837
6838#[cfg(feature = "v4_20")]
6839#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6840impl glib::value::ValueType for InterfaceColorScheme {
6841    type Type = Self;
6842}
6843
6844#[cfg(feature = "v4_20")]
6845#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6846unsafe impl<'a> glib::value::FromValue<'a> for InterfaceColorScheme {
6847    type Checker = glib::value::GenericValueTypeChecker<Self>;
6848
6849    #[inline]
6850    unsafe fn from_value(value: &'a glib::Value) -> Self {
6851        skip_assert_initialized!();
6852        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6853    }
6854}
6855
6856#[cfg(feature = "v4_20")]
6857#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6858impl ToValue for InterfaceColorScheme {
6859    #[inline]
6860    fn to_value(&self) -> glib::Value {
6861        let mut value = glib::Value::for_value_type::<Self>();
6862        unsafe {
6863            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6864        }
6865        value
6866    }
6867
6868    #[inline]
6869    fn value_type(&self) -> glib::Type {
6870        Self::static_type()
6871    }
6872}
6873
6874#[cfg(feature = "v4_20")]
6875#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6876impl From<InterfaceColorScheme> for glib::Value {
6877    #[inline]
6878    fn from(v: InterfaceColorScheme) -> Self {
6879        skip_assert_initialized!();
6880        ToValue::to_value(&v)
6881    }
6882}
6883
6884/// Values for the [`gtk-interface-contrast`][struct@crate::Settings#gtk-interface-contrast]
6885/// and [`prefers-contrast`][struct@crate::CssProvider#prefers-contrast] properties
6886/// that indicates the preferred level of contrast.
6887///
6888/// This information can be used inside CSS via media queries.
6889///
6890/// More values may be added to this enumeration. Unknown values
6891/// should be treated the same as `GTK_INTERFACE_CONTRAST_NO_PREFERENCE`.
6892#[cfg(feature = "v4_20")]
6893#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6894#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6895#[non_exhaustive]
6896#[doc(alias = "GtkInterfaceContrast")]
6897pub enum InterfaceContrast {
6898    /// The system doesn't support contrast levels
6899    #[doc(alias = "GTK_INTERFACE_CONTRAST_UNSUPPORTED")]
6900    Unsupported,
6901    /// No particular preference for contrast
6902    #[doc(alias = "GTK_INTERFACE_CONTRAST_NO_PREFERENCE")]
6903    NoPreference,
6904    /// More contrast is preferred
6905    #[doc(alias = "GTK_INTERFACE_CONTRAST_MORE")]
6906    More,
6907    /// Less contrast is preferred
6908    #[doc(alias = "GTK_INTERFACE_CONTRAST_LESS")]
6909    Less,
6910    #[doc(hidden)]
6911    __Unknown(i32),
6912}
6913
6914#[cfg(feature = "v4_20")]
6915#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6916#[doc(hidden)]
6917impl IntoGlib for InterfaceContrast {
6918    type GlibType = ffi::GtkInterfaceContrast;
6919
6920    #[inline]
6921    fn into_glib(self) -> ffi::GtkInterfaceContrast {
6922        match self {
6923            Self::Unsupported => ffi::GTK_INTERFACE_CONTRAST_UNSUPPORTED,
6924            Self::NoPreference => ffi::GTK_INTERFACE_CONTRAST_NO_PREFERENCE,
6925            Self::More => ffi::GTK_INTERFACE_CONTRAST_MORE,
6926            Self::Less => ffi::GTK_INTERFACE_CONTRAST_LESS,
6927            Self::__Unknown(value) => value,
6928        }
6929    }
6930}
6931
6932#[cfg(feature = "v4_20")]
6933#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6934#[doc(hidden)]
6935impl FromGlib<ffi::GtkInterfaceContrast> for InterfaceContrast {
6936    #[inline]
6937    unsafe fn from_glib(value: ffi::GtkInterfaceContrast) -> Self {
6938        skip_assert_initialized!();
6939
6940        match value {
6941            ffi::GTK_INTERFACE_CONTRAST_UNSUPPORTED => Self::Unsupported,
6942            ffi::GTK_INTERFACE_CONTRAST_NO_PREFERENCE => Self::NoPreference,
6943            ffi::GTK_INTERFACE_CONTRAST_MORE => Self::More,
6944            ffi::GTK_INTERFACE_CONTRAST_LESS => Self::Less,
6945            value => Self::__Unknown(value),
6946        }
6947    }
6948}
6949
6950#[cfg(feature = "v4_20")]
6951#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6952impl StaticType for InterfaceContrast {
6953    #[inline]
6954    #[doc(alias = "gtk_interface_contrast_get_type")]
6955    fn static_type() -> glib::Type {
6956        unsafe { from_glib(ffi::gtk_interface_contrast_get_type()) }
6957    }
6958}
6959
6960#[cfg(feature = "v4_20")]
6961#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6962impl glib::HasParamSpec for InterfaceContrast {
6963    type ParamSpec = glib::ParamSpecEnum;
6964    type SetValue = Self;
6965    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6966
6967    fn param_spec_builder() -> Self::BuilderFn {
6968        Self::ParamSpec::builder_with_default
6969    }
6970}
6971
6972#[cfg(feature = "v4_20")]
6973#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6974impl glib::value::ValueType for InterfaceContrast {
6975    type Type = Self;
6976}
6977
6978#[cfg(feature = "v4_20")]
6979#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6980unsafe impl<'a> glib::value::FromValue<'a> for InterfaceContrast {
6981    type Checker = glib::value::GenericValueTypeChecker<Self>;
6982
6983    #[inline]
6984    unsafe fn from_value(value: &'a glib::Value) -> Self {
6985        skip_assert_initialized!();
6986        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6987    }
6988}
6989
6990#[cfg(feature = "v4_20")]
6991#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6992impl ToValue for InterfaceContrast {
6993    #[inline]
6994    fn to_value(&self) -> glib::Value {
6995        let mut value = glib::Value::for_value_type::<Self>();
6996        unsafe {
6997            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6998        }
6999        value
7000    }
7001
7002    #[inline]
7003    fn value_type(&self) -> glib::Type {
7004        Self::static_type()
7005    }
7006}
7007
7008#[cfg(feature = "v4_20")]
7009#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
7010impl From<InterfaceContrast> for glib::Value {
7011    #[inline]
7012    fn from(v: InterfaceContrast) -> Self {
7013        skip_assert_initialized!();
7014        ToValue::to_value(&v)
7015    }
7016}
7017
7018/// Used for justifying the text inside a [`Label`][crate::Label] widget.
7019#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7020#[non_exhaustive]
7021#[doc(alias = "GtkJustification")]
7022pub enum Justification {
7023    /// The text is placed at the left edge of the label.
7024    #[doc(alias = "GTK_JUSTIFY_LEFT")]
7025    Left,
7026    /// The text is placed at the right edge of the label.
7027    #[doc(alias = "GTK_JUSTIFY_RIGHT")]
7028    Right,
7029    /// The text is placed in the center of the label.
7030    #[doc(alias = "GTK_JUSTIFY_CENTER")]
7031    Center,
7032    /// The text is placed is distributed across the label.
7033    #[doc(alias = "GTK_JUSTIFY_FILL")]
7034    Fill,
7035    #[doc(hidden)]
7036    __Unknown(i32),
7037}
7038
7039#[doc(hidden)]
7040impl IntoGlib for Justification {
7041    type GlibType = ffi::GtkJustification;
7042
7043    #[inline]
7044    fn into_glib(self) -> ffi::GtkJustification {
7045        match self {
7046            Self::Left => ffi::GTK_JUSTIFY_LEFT,
7047            Self::Right => ffi::GTK_JUSTIFY_RIGHT,
7048            Self::Center => ffi::GTK_JUSTIFY_CENTER,
7049            Self::Fill => ffi::GTK_JUSTIFY_FILL,
7050            Self::__Unknown(value) => value,
7051        }
7052    }
7053}
7054
7055#[doc(hidden)]
7056impl FromGlib<ffi::GtkJustification> for Justification {
7057    #[inline]
7058    unsafe fn from_glib(value: ffi::GtkJustification) -> Self {
7059        skip_assert_initialized!();
7060
7061        match value {
7062            ffi::GTK_JUSTIFY_LEFT => Self::Left,
7063            ffi::GTK_JUSTIFY_RIGHT => Self::Right,
7064            ffi::GTK_JUSTIFY_CENTER => Self::Center,
7065            ffi::GTK_JUSTIFY_FILL => Self::Fill,
7066            value => Self::__Unknown(value),
7067        }
7068    }
7069}
7070
7071impl StaticType for Justification {
7072    #[inline]
7073    #[doc(alias = "gtk_justification_get_type")]
7074    fn static_type() -> glib::Type {
7075        unsafe { from_glib(ffi::gtk_justification_get_type()) }
7076    }
7077}
7078
7079impl glib::HasParamSpec for Justification {
7080    type ParamSpec = glib::ParamSpecEnum;
7081    type SetValue = Self;
7082    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7083
7084    fn param_spec_builder() -> Self::BuilderFn {
7085        Self::ParamSpec::builder_with_default
7086    }
7087}
7088
7089impl glib::value::ValueType for Justification {
7090    type Type = Self;
7091}
7092
7093unsafe impl<'a> glib::value::FromValue<'a> for Justification {
7094    type Checker = glib::value::GenericValueTypeChecker<Self>;
7095
7096    #[inline]
7097    unsafe fn from_value(value: &'a glib::Value) -> Self {
7098        skip_assert_initialized!();
7099        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7100    }
7101}
7102
7103impl ToValue for Justification {
7104    #[inline]
7105    fn to_value(&self) -> glib::Value {
7106        let mut value = glib::Value::for_value_type::<Self>();
7107        unsafe {
7108            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7109        }
7110        value
7111    }
7112
7113    #[inline]
7114    fn value_type(&self) -> glib::Type {
7115        Self::static_type()
7116    }
7117}
7118
7119impl From<Justification> for glib::Value {
7120    #[inline]
7121    fn from(v: Justification) -> Self {
7122        skip_assert_initialized!();
7123        ToValue::to_value(&v)
7124    }
7125}
7126
7127/// Describes how [`LevelBar`][crate::LevelBar] contents should be rendered.
7128///
7129/// Note that this enumeration could be extended with additional modes
7130/// in the future.
7131#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7132#[non_exhaustive]
7133#[doc(alias = "GtkLevelBarMode")]
7134pub enum LevelBarMode {
7135    /// the bar has a continuous mode
7136    #[doc(alias = "GTK_LEVEL_BAR_MODE_CONTINUOUS")]
7137    Continuous,
7138    /// the bar has a discrete mode
7139    #[doc(alias = "GTK_LEVEL_BAR_MODE_DISCRETE")]
7140    Discrete,
7141    #[doc(hidden)]
7142    __Unknown(i32),
7143}
7144
7145#[doc(hidden)]
7146impl IntoGlib for LevelBarMode {
7147    type GlibType = ffi::GtkLevelBarMode;
7148
7149    #[inline]
7150    fn into_glib(self) -> ffi::GtkLevelBarMode {
7151        match self {
7152            Self::Continuous => ffi::GTK_LEVEL_BAR_MODE_CONTINUOUS,
7153            Self::Discrete => ffi::GTK_LEVEL_BAR_MODE_DISCRETE,
7154            Self::__Unknown(value) => value,
7155        }
7156    }
7157}
7158
7159#[doc(hidden)]
7160impl FromGlib<ffi::GtkLevelBarMode> for LevelBarMode {
7161    #[inline]
7162    unsafe fn from_glib(value: ffi::GtkLevelBarMode) -> Self {
7163        skip_assert_initialized!();
7164
7165        match value {
7166            ffi::GTK_LEVEL_BAR_MODE_CONTINUOUS => Self::Continuous,
7167            ffi::GTK_LEVEL_BAR_MODE_DISCRETE => Self::Discrete,
7168            value => Self::__Unknown(value),
7169        }
7170    }
7171}
7172
7173impl StaticType for LevelBarMode {
7174    #[inline]
7175    #[doc(alias = "gtk_level_bar_mode_get_type")]
7176    fn static_type() -> glib::Type {
7177        unsafe { from_glib(ffi::gtk_level_bar_mode_get_type()) }
7178    }
7179}
7180
7181impl glib::HasParamSpec for LevelBarMode {
7182    type ParamSpec = glib::ParamSpecEnum;
7183    type SetValue = Self;
7184    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7185
7186    fn param_spec_builder() -> Self::BuilderFn {
7187        Self::ParamSpec::builder_with_default
7188    }
7189}
7190
7191impl glib::value::ValueType for LevelBarMode {
7192    type Type = Self;
7193}
7194
7195unsafe impl<'a> glib::value::FromValue<'a> for LevelBarMode {
7196    type Checker = glib::value::GenericValueTypeChecker<Self>;
7197
7198    #[inline]
7199    unsafe fn from_value(value: &'a glib::Value) -> Self {
7200        skip_assert_initialized!();
7201        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7202    }
7203}
7204
7205impl ToValue for LevelBarMode {
7206    #[inline]
7207    fn to_value(&self) -> glib::Value {
7208        let mut value = glib::Value::for_value_type::<Self>();
7209        unsafe {
7210            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7211        }
7212        value
7213    }
7214
7215    #[inline]
7216    fn value_type(&self) -> glib::Type {
7217        Self::static_type()
7218    }
7219}
7220
7221impl From<LevelBarMode> for glib::Value {
7222    #[inline]
7223    fn from(v: LevelBarMode) -> Self {
7224        skip_assert_initialized!();
7225        ToValue::to_value(&v)
7226    }
7227}
7228
7229/// The type of license for an application.
7230///
7231/// This enumeration can be expanded at later date.
7232#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7233#[non_exhaustive]
7234#[doc(alias = "GtkLicense")]
7235pub enum License {
7236    /// No license specified
7237    #[doc(alias = "GTK_LICENSE_UNKNOWN")]
7238    Unknown,
7239    /// A license text is going to be specified by the
7240    ///   developer
7241    #[doc(alias = "GTK_LICENSE_CUSTOM")]
7242    Custom,
7243    /// The GNU General Public License, version 2.0 or later
7244    #[doc(alias = "GTK_LICENSE_GPL_2_0")]
7245    Gpl20,
7246    /// The GNU General Public License, version 3.0 or later
7247    #[doc(alias = "GTK_LICENSE_GPL_3_0")]
7248    Gpl30,
7249    /// The GNU Lesser General Public License, version 2.1 or later
7250    #[doc(alias = "GTK_LICENSE_LGPL_2_1")]
7251    Lgpl21,
7252    /// The GNU Lesser General Public License, version 3.0 or later
7253    #[doc(alias = "GTK_LICENSE_LGPL_3_0")]
7254    Lgpl30,
7255    /// The BSD standard license
7256    #[doc(alias = "GTK_LICENSE_BSD")]
7257    Bsd,
7258    /// The MIT/X11 standard license
7259    #[doc(alias = "GTK_LICENSE_MIT_X11")]
7260    MitX11,
7261    /// The Artistic License, version 2.0
7262    #[doc(alias = "GTK_LICENSE_ARTISTIC")]
7263    Artistic,
7264    /// The GNU General Public License, version 2.0 only
7265    #[doc(alias = "GTK_LICENSE_GPL_2_0_ONLY")]
7266    Gpl20Only,
7267    /// The GNU General Public License, version 3.0 only
7268    #[doc(alias = "GTK_LICENSE_GPL_3_0_ONLY")]
7269    Gpl30Only,
7270    /// The GNU Lesser General Public License, version 2.1 only
7271    #[doc(alias = "GTK_LICENSE_LGPL_2_1_ONLY")]
7272    Lgpl21Only,
7273    /// The GNU Lesser General Public License, version 3.0 only
7274    #[doc(alias = "GTK_LICENSE_LGPL_3_0_ONLY")]
7275    Lgpl30Only,
7276    /// The GNU Affero General Public License, version 3.0 or later
7277    #[doc(alias = "GTK_LICENSE_AGPL_3_0")]
7278    Agpl30,
7279    /// The GNU Affero General Public License, version 3.0 only
7280    #[doc(alias = "GTK_LICENSE_AGPL_3_0_ONLY")]
7281    Agpl30Only,
7282    /// The 3-clause BSD licence
7283    #[doc(alias = "GTK_LICENSE_BSD_3")]
7284    Bsd3,
7285    /// The Apache License, version 2.0
7286    #[doc(alias = "GTK_LICENSE_APACHE_2_0")]
7287    Apache20,
7288    /// The Mozilla Public License, version 2.0
7289    #[doc(alias = "GTK_LICENSE_MPL_2_0")]
7290    Mpl20,
7291    /// Zero-Clause BSD license
7292    #[cfg(feature = "v4_14")]
7293    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
7294    #[doc(alias = "GTK_LICENSE_0BSD")]
7295    _0bsd,
7296    #[doc(hidden)]
7297    __Unknown(i32),
7298}
7299
7300#[doc(hidden)]
7301impl IntoGlib for License {
7302    type GlibType = ffi::GtkLicense;
7303
7304    fn into_glib(self) -> ffi::GtkLicense {
7305        match self {
7306            Self::Unknown => ffi::GTK_LICENSE_UNKNOWN,
7307            Self::Custom => ffi::GTK_LICENSE_CUSTOM,
7308            Self::Gpl20 => ffi::GTK_LICENSE_GPL_2_0,
7309            Self::Gpl30 => ffi::GTK_LICENSE_GPL_3_0,
7310            Self::Lgpl21 => ffi::GTK_LICENSE_LGPL_2_1,
7311            Self::Lgpl30 => ffi::GTK_LICENSE_LGPL_3_0,
7312            Self::Bsd => ffi::GTK_LICENSE_BSD,
7313            Self::MitX11 => ffi::GTK_LICENSE_MIT_X11,
7314            Self::Artistic => ffi::GTK_LICENSE_ARTISTIC,
7315            Self::Gpl20Only => ffi::GTK_LICENSE_GPL_2_0_ONLY,
7316            Self::Gpl30Only => ffi::GTK_LICENSE_GPL_3_0_ONLY,
7317            Self::Lgpl21Only => ffi::GTK_LICENSE_LGPL_2_1_ONLY,
7318            Self::Lgpl30Only => ffi::GTK_LICENSE_LGPL_3_0_ONLY,
7319            Self::Agpl30 => ffi::GTK_LICENSE_AGPL_3_0,
7320            Self::Agpl30Only => ffi::GTK_LICENSE_AGPL_3_0_ONLY,
7321            Self::Bsd3 => ffi::GTK_LICENSE_BSD_3,
7322            Self::Apache20 => ffi::GTK_LICENSE_APACHE_2_0,
7323            Self::Mpl20 => ffi::GTK_LICENSE_MPL_2_0,
7324            #[cfg(feature = "v4_14")]
7325            Self::_0bsd => ffi::GTK_LICENSE_0BSD,
7326            Self::__Unknown(value) => value,
7327        }
7328    }
7329}
7330
7331#[doc(hidden)]
7332impl FromGlib<ffi::GtkLicense> for License {
7333    unsafe fn from_glib(value: ffi::GtkLicense) -> Self {
7334        skip_assert_initialized!();
7335
7336        match value {
7337            ffi::GTK_LICENSE_UNKNOWN => Self::Unknown,
7338            ffi::GTK_LICENSE_CUSTOM => Self::Custom,
7339            ffi::GTK_LICENSE_GPL_2_0 => Self::Gpl20,
7340            ffi::GTK_LICENSE_GPL_3_0 => Self::Gpl30,
7341            ffi::GTK_LICENSE_LGPL_2_1 => Self::Lgpl21,
7342            ffi::GTK_LICENSE_LGPL_3_0 => Self::Lgpl30,
7343            ffi::GTK_LICENSE_BSD => Self::Bsd,
7344            ffi::GTK_LICENSE_MIT_X11 => Self::MitX11,
7345            ffi::GTK_LICENSE_ARTISTIC => Self::Artistic,
7346            ffi::GTK_LICENSE_GPL_2_0_ONLY => Self::Gpl20Only,
7347            ffi::GTK_LICENSE_GPL_3_0_ONLY => Self::Gpl30Only,
7348            ffi::GTK_LICENSE_LGPL_2_1_ONLY => Self::Lgpl21Only,
7349            ffi::GTK_LICENSE_LGPL_3_0_ONLY => Self::Lgpl30Only,
7350            ffi::GTK_LICENSE_AGPL_3_0 => Self::Agpl30,
7351            ffi::GTK_LICENSE_AGPL_3_0_ONLY => Self::Agpl30Only,
7352            ffi::GTK_LICENSE_BSD_3 => Self::Bsd3,
7353            ffi::GTK_LICENSE_APACHE_2_0 => Self::Apache20,
7354            ffi::GTK_LICENSE_MPL_2_0 => Self::Mpl20,
7355            #[cfg(feature = "v4_14")]
7356            ffi::GTK_LICENSE_0BSD => Self::_0bsd,
7357            value => Self::__Unknown(value),
7358        }
7359    }
7360}
7361
7362impl StaticType for License {
7363    #[inline]
7364    #[doc(alias = "gtk_license_get_type")]
7365    fn static_type() -> glib::Type {
7366        unsafe { from_glib(ffi::gtk_license_get_type()) }
7367    }
7368}
7369
7370impl glib::HasParamSpec for License {
7371    type ParamSpec = glib::ParamSpecEnum;
7372    type SetValue = Self;
7373    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7374
7375    fn param_spec_builder() -> Self::BuilderFn {
7376        Self::ParamSpec::builder_with_default
7377    }
7378}
7379
7380impl glib::value::ValueType for License {
7381    type Type = Self;
7382}
7383
7384unsafe impl<'a> glib::value::FromValue<'a> for License {
7385    type Checker = glib::value::GenericValueTypeChecker<Self>;
7386
7387    #[inline]
7388    unsafe fn from_value(value: &'a glib::Value) -> Self {
7389        skip_assert_initialized!();
7390        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7391    }
7392}
7393
7394impl ToValue for License {
7395    #[inline]
7396    fn to_value(&self) -> glib::Value {
7397        let mut value = glib::Value::for_value_type::<Self>();
7398        unsafe {
7399            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7400        }
7401        value
7402    }
7403
7404    #[inline]
7405    fn value_type(&self) -> glib::Type {
7406        Self::static_type()
7407    }
7408}
7409
7410impl From<License> for glib::Value {
7411    #[inline]
7412    fn from(v: License) -> Self {
7413        skip_assert_initialized!();
7414        ToValue::to_value(&v)
7415    }
7416}
7417
7418///  key
7419/// in a [`ListView`][crate::ListView].
7420#[cfg(feature = "v4_12")]
7421#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7422#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7423#[non_exhaustive]
7424#[doc(alias = "GtkListTabBehavior")]
7425pub enum ListTabBehavior {
7426    /// Cycle through all focusable items of the list
7427    #[doc(alias = "GTK_LIST_TAB_ALL")]
7428    All,
7429    /// Cycle through a single list element, then move
7430    ///   focus out of the list. Moving focus between items needs to be
7431    ///   done with the arrow keys.
7432    #[doc(alias = "GTK_LIST_TAB_ITEM")]
7433    Item,
7434    /// Cycle only through a single cell, then
7435    ///   move focus out of the list. Moving focus between cells needs to
7436    ///   be done with the arrow keys. This is only relevant for
7437    ///   cell-based widgets like #GtkColumnView, otherwise it behaves
7438    ///   like `GTK_LIST_TAB_ITEM`.
7439    #[doc(alias = "GTK_LIST_TAB_CELL")]
7440    Cell,
7441    #[doc(hidden)]
7442    __Unknown(i32),
7443}
7444
7445#[cfg(feature = "v4_12")]
7446#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7447#[doc(hidden)]
7448impl IntoGlib for ListTabBehavior {
7449    type GlibType = ffi::GtkListTabBehavior;
7450
7451    #[inline]
7452    fn into_glib(self) -> ffi::GtkListTabBehavior {
7453        match self {
7454            Self::All => ffi::GTK_LIST_TAB_ALL,
7455            Self::Item => ffi::GTK_LIST_TAB_ITEM,
7456            Self::Cell => ffi::GTK_LIST_TAB_CELL,
7457            Self::__Unknown(value) => value,
7458        }
7459    }
7460}
7461
7462#[cfg(feature = "v4_12")]
7463#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7464#[doc(hidden)]
7465impl FromGlib<ffi::GtkListTabBehavior> for ListTabBehavior {
7466    #[inline]
7467    unsafe fn from_glib(value: ffi::GtkListTabBehavior) -> Self {
7468        skip_assert_initialized!();
7469
7470        match value {
7471            ffi::GTK_LIST_TAB_ALL => Self::All,
7472            ffi::GTK_LIST_TAB_ITEM => Self::Item,
7473            ffi::GTK_LIST_TAB_CELL => Self::Cell,
7474            value => Self::__Unknown(value),
7475        }
7476    }
7477}
7478
7479#[cfg(feature = "v4_12")]
7480#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7481impl StaticType for ListTabBehavior {
7482    #[inline]
7483    #[doc(alias = "gtk_list_tab_behavior_get_type")]
7484    fn static_type() -> glib::Type {
7485        unsafe { from_glib(ffi::gtk_list_tab_behavior_get_type()) }
7486    }
7487}
7488
7489#[cfg(feature = "v4_12")]
7490#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7491impl glib::HasParamSpec for ListTabBehavior {
7492    type ParamSpec = glib::ParamSpecEnum;
7493    type SetValue = Self;
7494    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7495
7496    fn param_spec_builder() -> Self::BuilderFn {
7497        Self::ParamSpec::builder_with_default
7498    }
7499}
7500
7501#[cfg(feature = "v4_12")]
7502#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7503impl glib::value::ValueType for ListTabBehavior {
7504    type Type = Self;
7505}
7506
7507#[cfg(feature = "v4_12")]
7508#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7509unsafe impl<'a> glib::value::FromValue<'a> for ListTabBehavior {
7510    type Checker = glib::value::GenericValueTypeChecker<Self>;
7511
7512    #[inline]
7513    unsafe fn from_value(value: &'a glib::Value) -> Self {
7514        skip_assert_initialized!();
7515        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7516    }
7517}
7518
7519#[cfg(feature = "v4_12")]
7520#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7521impl ToValue for ListTabBehavior {
7522    #[inline]
7523    fn to_value(&self) -> glib::Value {
7524        let mut value = glib::Value::for_value_type::<Self>();
7525        unsafe {
7526            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7527        }
7528        value
7529    }
7530
7531    #[inline]
7532    fn value_type(&self) -> glib::Type {
7533        Self::static_type()
7534    }
7535}
7536
7537#[cfg(feature = "v4_12")]
7538#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7539impl From<ListTabBehavior> for glib::Value {
7540    #[inline]
7541    fn from(v: ListTabBehavior) -> Self {
7542        skip_assert_initialized!();
7543        ToValue::to_value(&v)
7544    }
7545}
7546
7547/// The type of message being displayed in a [`MessageDialog`][crate::MessageDialog].
7548#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7549#[non_exhaustive]
7550#[doc(alias = "GtkMessageType")]
7551pub enum MessageType {
7552    /// Informational message
7553    #[doc(alias = "GTK_MESSAGE_INFO")]
7554    Info,
7555    /// Non-fatal warning message
7556    #[doc(alias = "GTK_MESSAGE_WARNING")]
7557    Warning,
7558    /// Question requiring a choice
7559    #[doc(alias = "GTK_MESSAGE_QUESTION")]
7560    Question,
7561    /// Fatal error message
7562    #[doc(alias = "GTK_MESSAGE_ERROR")]
7563    Error,
7564    /// None of the above
7565    #[doc(alias = "GTK_MESSAGE_OTHER")]
7566    Other,
7567    #[doc(hidden)]
7568    __Unknown(i32),
7569}
7570
7571#[doc(hidden)]
7572impl IntoGlib for MessageType {
7573    type GlibType = ffi::GtkMessageType;
7574
7575    #[inline]
7576    fn into_glib(self) -> ffi::GtkMessageType {
7577        match self {
7578            Self::Info => ffi::GTK_MESSAGE_INFO,
7579            Self::Warning => ffi::GTK_MESSAGE_WARNING,
7580            Self::Question => ffi::GTK_MESSAGE_QUESTION,
7581            Self::Error => ffi::GTK_MESSAGE_ERROR,
7582            Self::Other => ffi::GTK_MESSAGE_OTHER,
7583            Self::__Unknown(value) => value,
7584        }
7585    }
7586}
7587
7588#[doc(hidden)]
7589impl FromGlib<ffi::GtkMessageType> for MessageType {
7590    #[inline]
7591    unsafe fn from_glib(value: ffi::GtkMessageType) -> Self {
7592        skip_assert_initialized!();
7593
7594        match value {
7595            ffi::GTK_MESSAGE_INFO => Self::Info,
7596            ffi::GTK_MESSAGE_WARNING => Self::Warning,
7597            ffi::GTK_MESSAGE_QUESTION => Self::Question,
7598            ffi::GTK_MESSAGE_ERROR => Self::Error,
7599            ffi::GTK_MESSAGE_OTHER => Self::Other,
7600            value => Self::__Unknown(value),
7601        }
7602    }
7603}
7604
7605impl StaticType for MessageType {
7606    #[inline]
7607    #[doc(alias = "gtk_message_type_get_type")]
7608    fn static_type() -> glib::Type {
7609        unsafe { from_glib(ffi::gtk_message_type_get_type()) }
7610    }
7611}
7612
7613impl glib::HasParamSpec for MessageType {
7614    type ParamSpec = glib::ParamSpecEnum;
7615    type SetValue = Self;
7616    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7617
7618    fn param_spec_builder() -> Self::BuilderFn {
7619        Self::ParamSpec::builder_with_default
7620    }
7621}
7622
7623impl glib::value::ValueType for MessageType {
7624    type Type = Self;
7625}
7626
7627unsafe impl<'a> glib::value::FromValue<'a> for MessageType {
7628    type Checker = glib::value::GenericValueTypeChecker<Self>;
7629
7630    #[inline]
7631    unsafe fn from_value(value: &'a glib::Value) -> Self {
7632        skip_assert_initialized!();
7633        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7634    }
7635}
7636
7637impl ToValue for MessageType {
7638    #[inline]
7639    fn to_value(&self) -> glib::Value {
7640        let mut value = glib::Value::for_value_type::<Self>();
7641        unsafe {
7642            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7643        }
7644        value
7645    }
7646
7647    #[inline]
7648    fn value_type(&self) -> glib::Type {
7649        Self::static_type()
7650    }
7651}
7652
7653impl From<MessageType> for glib::Value {
7654    #[inline]
7655    fn from(v: MessageType) -> Self {
7656        skip_assert_initialized!();
7657        ToValue::to_value(&v)
7658    }
7659}
7660
7661/// Passed as argument to various keybinding signals for moving the
7662/// cursor position.
7663#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7664#[non_exhaustive]
7665#[doc(alias = "GtkMovementStep")]
7666pub enum MovementStep {
7667    /// Move forward or back by graphemes
7668    #[doc(alias = "GTK_MOVEMENT_LOGICAL_POSITIONS")]
7669    LogicalPositions,
7670    /// Move left or right by graphemes
7671    #[doc(alias = "GTK_MOVEMENT_VISUAL_POSITIONS")]
7672    VisualPositions,
7673    /// Move forward or back by words
7674    #[doc(alias = "GTK_MOVEMENT_WORDS")]
7675    Words,
7676    /// Move up or down lines (wrapped lines)
7677    #[doc(alias = "GTK_MOVEMENT_DISPLAY_LINES")]
7678    DisplayLines,
7679    /// Move to either end of a line
7680    #[doc(alias = "GTK_MOVEMENT_DISPLAY_LINE_ENDS")]
7681    DisplayLineEnds,
7682    /// Move up or down paragraphs (newline-ended lines)
7683    #[doc(alias = "GTK_MOVEMENT_PARAGRAPHS")]
7684    Paragraphs,
7685    /// Move to either end of a paragraph
7686    #[doc(alias = "GTK_MOVEMENT_PARAGRAPH_ENDS")]
7687    ParagraphEnds,
7688    /// Move by pages
7689    #[doc(alias = "GTK_MOVEMENT_PAGES")]
7690    Pages,
7691    /// Move to ends of the buffer
7692    #[doc(alias = "GTK_MOVEMENT_BUFFER_ENDS")]
7693    BufferEnds,
7694    /// Move horizontally by pages
7695    #[doc(alias = "GTK_MOVEMENT_HORIZONTAL_PAGES")]
7696    HorizontalPages,
7697    #[doc(hidden)]
7698    __Unknown(i32),
7699}
7700
7701#[doc(hidden)]
7702impl IntoGlib for MovementStep {
7703    type GlibType = ffi::GtkMovementStep;
7704
7705    #[inline]
7706    fn into_glib(self) -> ffi::GtkMovementStep {
7707        match self {
7708            Self::LogicalPositions => ffi::GTK_MOVEMENT_LOGICAL_POSITIONS,
7709            Self::VisualPositions => ffi::GTK_MOVEMENT_VISUAL_POSITIONS,
7710            Self::Words => ffi::GTK_MOVEMENT_WORDS,
7711            Self::DisplayLines => ffi::GTK_MOVEMENT_DISPLAY_LINES,
7712            Self::DisplayLineEnds => ffi::GTK_MOVEMENT_DISPLAY_LINE_ENDS,
7713            Self::Paragraphs => ffi::GTK_MOVEMENT_PARAGRAPHS,
7714            Self::ParagraphEnds => ffi::GTK_MOVEMENT_PARAGRAPH_ENDS,
7715            Self::Pages => ffi::GTK_MOVEMENT_PAGES,
7716            Self::BufferEnds => ffi::GTK_MOVEMENT_BUFFER_ENDS,
7717            Self::HorizontalPages => ffi::GTK_MOVEMENT_HORIZONTAL_PAGES,
7718            Self::__Unknown(value) => value,
7719        }
7720    }
7721}
7722
7723#[doc(hidden)]
7724impl FromGlib<ffi::GtkMovementStep> for MovementStep {
7725    #[inline]
7726    unsafe fn from_glib(value: ffi::GtkMovementStep) -> Self {
7727        skip_assert_initialized!();
7728
7729        match value {
7730            ffi::GTK_MOVEMENT_LOGICAL_POSITIONS => Self::LogicalPositions,
7731            ffi::GTK_MOVEMENT_VISUAL_POSITIONS => Self::VisualPositions,
7732            ffi::GTK_MOVEMENT_WORDS => Self::Words,
7733            ffi::GTK_MOVEMENT_DISPLAY_LINES => Self::DisplayLines,
7734            ffi::GTK_MOVEMENT_DISPLAY_LINE_ENDS => Self::DisplayLineEnds,
7735            ffi::GTK_MOVEMENT_PARAGRAPHS => Self::Paragraphs,
7736            ffi::GTK_MOVEMENT_PARAGRAPH_ENDS => Self::ParagraphEnds,
7737            ffi::GTK_MOVEMENT_PAGES => Self::Pages,
7738            ffi::GTK_MOVEMENT_BUFFER_ENDS => Self::BufferEnds,
7739            ffi::GTK_MOVEMENT_HORIZONTAL_PAGES => Self::HorizontalPages,
7740            value => Self::__Unknown(value),
7741        }
7742    }
7743}
7744
7745impl StaticType for MovementStep {
7746    #[inline]
7747    #[doc(alias = "gtk_movement_step_get_type")]
7748    fn static_type() -> glib::Type {
7749        unsafe { from_glib(ffi::gtk_movement_step_get_type()) }
7750    }
7751}
7752
7753impl glib::HasParamSpec for MovementStep {
7754    type ParamSpec = glib::ParamSpecEnum;
7755    type SetValue = Self;
7756    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7757
7758    fn param_spec_builder() -> Self::BuilderFn {
7759        Self::ParamSpec::builder_with_default
7760    }
7761}
7762
7763impl glib::value::ValueType for MovementStep {
7764    type Type = Self;
7765}
7766
7767unsafe impl<'a> glib::value::FromValue<'a> for MovementStep {
7768    type Checker = glib::value::GenericValueTypeChecker<Self>;
7769
7770    #[inline]
7771    unsafe fn from_value(value: &'a glib::Value) -> Self {
7772        skip_assert_initialized!();
7773        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7774    }
7775}
7776
7777impl ToValue for MovementStep {
7778    #[inline]
7779    fn to_value(&self) -> glib::Value {
7780        let mut value = glib::Value::for_value_type::<Self>();
7781        unsafe {
7782            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7783        }
7784        value
7785    }
7786
7787    #[inline]
7788    fn value_type(&self) -> glib::Type {
7789        Self::static_type()
7790    }
7791}
7792
7793impl From<MovementStep> for glib::Value {
7794    #[inline]
7795    fn from(v: MovementStep) -> Self {
7796        skip_assert_initialized!();
7797        ToValue::to_value(&v)
7798    }
7799}
7800
7801/// Options for selecting a different wrap mode for natural size
7802/// requests.
7803///
7804/// See for example the [`natural-wrap-mode`][struct@crate::Label#natural-wrap-mode] property.
7805#[cfg(feature = "v4_6")]
7806#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7807#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7808#[non_exhaustive]
7809#[doc(alias = "GtkNaturalWrapMode")]
7810pub enum NaturalWrapMode {
7811    /// Inherit the minimum size request.
7812    ///   In particular, this should be used with [`pango::WrapMode::Char`][crate::pango::WrapMode::Char].
7813    #[doc(alias = "GTK_NATURAL_WRAP_INHERIT")]
7814    Inherit,
7815    /// Try not to wrap the text. This mode is the
7816    ///   closest to GTK3's behavior but can lead to a wide label leaving
7817    ///   lots of empty space below the text.
7818    #[doc(alias = "GTK_NATURAL_WRAP_NONE")]
7819    None,
7820    /// Attempt to wrap at word boundaries. This
7821    ///   is useful in particular when using [`pango::WrapMode::WordChar`][crate::pango::WrapMode::WordChar] as the
7822    ///   wrap mode.
7823    #[doc(alias = "GTK_NATURAL_WRAP_WORD")]
7824    Word,
7825    #[doc(hidden)]
7826    __Unknown(i32),
7827}
7828
7829#[cfg(feature = "v4_6")]
7830#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7831#[doc(hidden)]
7832impl IntoGlib for NaturalWrapMode {
7833    type GlibType = ffi::GtkNaturalWrapMode;
7834
7835    #[inline]
7836    fn into_glib(self) -> ffi::GtkNaturalWrapMode {
7837        match self {
7838            Self::Inherit => ffi::GTK_NATURAL_WRAP_INHERIT,
7839            Self::None => ffi::GTK_NATURAL_WRAP_NONE,
7840            Self::Word => ffi::GTK_NATURAL_WRAP_WORD,
7841            Self::__Unknown(value) => value,
7842        }
7843    }
7844}
7845
7846#[cfg(feature = "v4_6")]
7847#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7848#[doc(hidden)]
7849impl FromGlib<ffi::GtkNaturalWrapMode> for NaturalWrapMode {
7850    #[inline]
7851    unsafe fn from_glib(value: ffi::GtkNaturalWrapMode) -> Self {
7852        skip_assert_initialized!();
7853
7854        match value {
7855            ffi::GTK_NATURAL_WRAP_INHERIT => Self::Inherit,
7856            ffi::GTK_NATURAL_WRAP_NONE => Self::None,
7857            ffi::GTK_NATURAL_WRAP_WORD => Self::Word,
7858            value => Self::__Unknown(value),
7859        }
7860    }
7861}
7862
7863#[cfg(feature = "v4_6")]
7864#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7865impl StaticType for NaturalWrapMode {
7866    #[inline]
7867    #[doc(alias = "gtk_natural_wrap_mode_get_type")]
7868    fn static_type() -> glib::Type {
7869        unsafe { from_glib(ffi::gtk_natural_wrap_mode_get_type()) }
7870    }
7871}
7872
7873#[cfg(feature = "v4_6")]
7874#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7875impl glib::HasParamSpec for NaturalWrapMode {
7876    type ParamSpec = glib::ParamSpecEnum;
7877    type SetValue = Self;
7878    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7879
7880    fn param_spec_builder() -> Self::BuilderFn {
7881        Self::ParamSpec::builder_with_default
7882    }
7883}
7884
7885#[cfg(feature = "v4_6")]
7886#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7887impl glib::value::ValueType for NaturalWrapMode {
7888    type Type = Self;
7889}
7890
7891#[cfg(feature = "v4_6")]
7892#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7893unsafe impl<'a> glib::value::FromValue<'a> for NaturalWrapMode {
7894    type Checker = glib::value::GenericValueTypeChecker<Self>;
7895
7896    #[inline]
7897    unsafe fn from_value(value: &'a glib::Value) -> Self {
7898        skip_assert_initialized!();
7899        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7900    }
7901}
7902
7903#[cfg(feature = "v4_6")]
7904#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7905impl ToValue for NaturalWrapMode {
7906    #[inline]
7907    fn to_value(&self) -> glib::Value {
7908        let mut value = glib::Value::for_value_type::<Self>();
7909        unsafe {
7910            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7911        }
7912        value
7913    }
7914
7915    #[inline]
7916    fn value_type(&self) -> glib::Type {
7917        Self::static_type()
7918    }
7919}
7920
7921#[cfg(feature = "v4_6")]
7922#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7923impl From<NaturalWrapMode> for glib::Value {
7924    #[inline]
7925    fn from(v: NaturalWrapMode) -> Self {
7926        skip_assert_initialized!();
7927        ToValue::to_value(&v)
7928    }
7929}
7930
7931/// The parameter used in the action signals of [`Notebook`][crate::Notebook].
7932#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7933#[non_exhaustive]
7934#[doc(alias = "GtkNotebookTab")]
7935pub enum NotebookTab {
7936    /// the first tab in the notebook
7937    #[doc(alias = "GTK_NOTEBOOK_TAB_FIRST")]
7938    First,
7939    /// the last tab in the notebook
7940    #[doc(alias = "GTK_NOTEBOOK_TAB_LAST")]
7941    Last,
7942    #[doc(hidden)]
7943    __Unknown(i32),
7944}
7945
7946#[doc(hidden)]
7947impl IntoGlib for NotebookTab {
7948    type GlibType = ffi::GtkNotebookTab;
7949
7950    #[inline]
7951    fn into_glib(self) -> ffi::GtkNotebookTab {
7952        match self {
7953            Self::First => ffi::GTK_NOTEBOOK_TAB_FIRST,
7954            Self::Last => ffi::GTK_NOTEBOOK_TAB_LAST,
7955            Self::__Unknown(value) => value,
7956        }
7957    }
7958}
7959
7960#[doc(hidden)]
7961impl FromGlib<ffi::GtkNotebookTab> for NotebookTab {
7962    #[inline]
7963    unsafe fn from_glib(value: ffi::GtkNotebookTab) -> Self {
7964        skip_assert_initialized!();
7965
7966        match value {
7967            ffi::GTK_NOTEBOOK_TAB_FIRST => Self::First,
7968            ffi::GTK_NOTEBOOK_TAB_LAST => Self::Last,
7969            value => Self::__Unknown(value),
7970        }
7971    }
7972}
7973
7974impl StaticType for NotebookTab {
7975    #[inline]
7976    #[doc(alias = "gtk_notebook_tab_get_type")]
7977    fn static_type() -> glib::Type {
7978        unsafe { from_glib(ffi::gtk_notebook_tab_get_type()) }
7979    }
7980}
7981
7982impl glib::HasParamSpec for NotebookTab {
7983    type ParamSpec = glib::ParamSpecEnum;
7984    type SetValue = Self;
7985    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7986
7987    fn param_spec_builder() -> Self::BuilderFn {
7988        Self::ParamSpec::builder_with_default
7989    }
7990}
7991
7992impl glib::value::ValueType for NotebookTab {
7993    type Type = Self;
7994}
7995
7996unsafe impl<'a> glib::value::FromValue<'a> for NotebookTab {
7997    type Checker = glib::value::GenericValueTypeChecker<Self>;
7998
7999    #[inline]
8000    unsafe fn from_value(value: &'a glib::Value) -> Self {
8001        skip_assert_initialized!();
8002        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8003    }
8004}
8005
8006impl ToValue for NotebookTab {
8007    #[inline]
8008    fn to_value(&self) -> glib::Value {
8009        let mut value = glib::Value::for_value_type::<Self>();
8010        unsafe {
8011            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8012        }
8013        value
8014    }
8015
8016    #[inline]
8017    fn value_type(&self) -> glib::Type {
8018        Self::static_type()
8019    }
8020}
8021
8022impl From<NotebookTab> for glib::Value {
8023    #[inline]
8024    fn from(v: NotebookTab) -> Self {
8025        skip_assert_initialized!();
8026        ToValue::to_value(&v)
8027    }
8028}
8029
8030/// Used to determine the layout of pages on a sheet when printing
8031/// multiple pages per sheet.
8032#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8033#[non_exhaustive]
8034#[doc(alias = "GtkNumberUpLayout")]
8035pub enum NumberUpLayout {
8036    /// ![](layout-lrtb.png)
8037    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM")]
8038    Lrtb,
8039    /// ![](layout-lrbt.png)
8040    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP")]
8041    Lrbt,
8042    /// ![](layout-rltb.png)
8043    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM")]
8044    Rltb,
8045    /// ![](layout-rlbt.png)
8046    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP")]
8047    Rlbt,
8048    /// ![](layout-tblr.png)
8049    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT")]
8050    Tblr,
8051    /// ![](layout-tbrl.png)
8052    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT")]
8053    Tbrl,
8054    /// ![](layout-btlr.png)
8055    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT")]
8056    Btlr,
8057    /// ![](layout-btrl.png)
8058    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT")]
8059    Btrl,
8060    #[doc(hidden)]
8061    __Unknown(i32),
8062}
8063
8064#[doc(hidden)]
8065impl IntoGlib for NumberUpLayout {
8066    type GlibType = ffi::GtkNumberUpLayout;
8067
8068    #[inline]
8069    fn into_glib(self) -> ffi::GtkNumberUpLayout {
8070        match self {
8071            Self::Lrtb => ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM,
8072            Self::Lrbt => ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP,
8073            Self::Rltb => ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM,
8074            Self::Rlbt => ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP,
8075            Self::Tblr => ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT,
8076            Self::Tbrl => ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT,
8077            Self::Btlr => ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT,
8078            Self::Btrl => ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT,
8079            Self::__Unknown(value) => value,
8080        }
8081    }
8082}
8083
8084#[doc(hidden)]
8085impl FromGlib<ffi::GtkNumberUpLayout> for NumberUpLayout {
8086    #[inline]
8087    unsafe fn from_glib(value: ffi::GtkNumberUpLayout) -> Self {
8088        skip_assert_initialized!();
8089
8090        match value {
8091            ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM => Self::Lrtb,
8092            ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP => Self::Lrbt,
8093            ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM => Self::Rltb,
8094            ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP => Self::Rlbt,
8095            ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT => Self::Tblr,
8096            ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT => Self::Tbrl,
8097            ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT => Self::Btlr,
8098            ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT => Self::Btrl,
8099            value => Self::__Unknown(value),
8100        }
8101    }
8102}
8103
8104impl StaticType for NumberUpLayout {
8105    #[inline]
8106    #[doc(alias = "gtk_number_up_layout_get_type")]
8107    fn static_type() -> glib::Type {
8108        unsafe { from_glib(ffi::gtk_number_up_layout_get_type()) }
8109    }
8110}
8111
8112impl glib::HasParamSpec for NumberUpLayout {
8113    type ParamSpec = glib::ParamSpecEnum;
8114    type SetValue = Self;
8115    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8116
8117    fn param_spec_builder() -> Self::BuilderFn {
8118        Self::ParamSpec::builder_with_default
8119    }
8120}
8121
8122impl glib::value::ValueType for NumberUpLayout {
8123    type Type = Self;
8124}
8125
8126unsafe impl<'a> glib::value::FromValue<'a> for NumberUpLayout {
8127    type Checker = glib::value::GenericValueTypeChecker<Self>;
8128
8129    #[inline]
8130    unsafe fn from_value(value: &'a glib::Value) -> Self {
8131        skip_assert_initialized!();
8132        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8133    }
8134}
8135
8136impl ToValue for NumberUpLayout {
8137    #[inline]
8138    fn to_value(&self) -> glib::Value {
8139        let mut value = glib::Value::for_value_type::<Self>();
8140        unsafe {
8141            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8142        }
8143        value
8144    }
8145
8146    #[inline]
8147    fn value_type(&self) -> glib::Type {
8148        Self::static_type()
8149    }
8150}
8151
8152impl From<NumberUpLayout> for glib::Value {
8153    #[inline]
8154    fn from(v: NumberUpLayout) -> Self {
8155        skip_assert_initialized!();
8156        ToValue::to_value(&v)
8157    }
8158}
8159
8160/// Describes the way two values can be compared.
8161///
8162/// These values can be used with a `callback::GLib::CompareFunc. However,
8163/// a `GCompareFunc` is allowed to return any integer values.
8164/// For converting such a value to a [`Ordering`][crate::Ordering] value, use
8165/// `Gtk::Ordering::from_cmpfunc()`.
8166#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8167#[non_exhaustive]
8168#[doc(alias = "GtkOrdering")]
8169pub enum Ordering {
8170    /// the first value is smaller than the second
8171    #[doc(alias = "GTK_ORDERING_SMALLER")]
8172    Smaller,
8173    /// the two values are equal
8174    #[doc(alias = "GTK_ORDERING_EQUAL")]
8175    Equal,
8176    /// the first value is larger than the second
8177    #[doc(alias = "GTK_ORDERING_LARGER")]
8178    Larger,
8179    #[doc(hidden)]
8180    __Unknown(i32),
8181}
8182
8183#[doc(hidden)]
8184impl IntoGlib for Ordering {
8185    type GlibType = ffi::GtkOrdering;
8186
8187    #[inline]
8188    fn into_glib(self) -> ffi::GtkOrdering {
8189        match self {
8190            Self::Smaller => ffi::GTK_ORDERING_SMALLER,
8191            Self::Equal => ffi::GTK_ORDERING_EQUAL,
8192            Self::Larger => ffi::GTK_ORDERING_LARGER,
8193            Self::__Unknown(value) => value,
8194        }
8195    }
8196}
8197
8198#[doc(hidden)]
8199impl FromGlib<ffi::GtkOrdering> for Ordering {
8200    #[inline]
8201    unsafe fn from_glib(value: ffi::GtkOrdering) -> Self {
8202        skip_assert_initialized!();
8203
8204        match value {
8205            ffi::GTK_ORDERING_SMALLER => Self::Smaller,
8206            ffi::GTK_ORDERING_EQUAL => Self::Equal,
8207            ffi::GTK_ORDERING_LARGER => Self::Larger,
8208            value => Self::__Unknown(value),
8209        }
8210    }
8211}
8212
8213impl StaticType for Ordering {
8214    #[inline]
8215    #[doc(alias = "gtk_ordering_get_type")]
8216    fn static_type() -> glib::Type {
8217        unsafe { from_glib(ffi::gtk_ordering_get_type()) }
8218    }
8219}
8220
8221impl glib::HasParamSpec for Ordering {
8222    type ParamSpec = glib::ParamSpecEnum;
8223    type SetValue = Self;
8224    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8225
8226    fn param_spec_builder() -> Self::BuilderFn {
8227        Self::ParamSpec::builder_with_default
8228    }
8229}
8230
8231impl glib::value::ValueType for Ordering {
8232    type Type = Self;
8233}
8234
8235unsafe impl<'a> glib::value::FromValue<'a> for Ordering {
8236    type Checker = glib::value::GenericValueTypeChecker<Self>;
8237
8238    #[inline]
8239    unsafe fn from_value(value: &'a glib::Value) -> Self {
8240        skip_assert_initialized!();
8241        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8242    }
8243}
8244
8245impl ToValue for Ordering {
8246    #[inline]
8247    fn to_value(&self) -> glib::Value {
8248        let mut value = glib::Value::for_value_type::<Self>();
8249        unsafe {
8250            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8251        }
8252        value
8253    }
8254
8255    #[inline]
8256    fn value_type(&self) -> glib::Type {
8257        Self::static_type()
8258    }
8259}
8260
8261impl From<Ordering> for glib::Value {
8262    #[inline]
8263    fn from(v: Ordering) -> Self {
8264        skip_assert_initialized!();
8265        ToValue::to_value(&v)
8266    }
8267}
8268
8269/// Represents the orientation of widgets and other objects.
8270///
8271/// Typical examples are [`Box`][crate::Box] or [`GesturePan`][crate::GesturePan].
8272#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8273#[non_exhaustive]
8274#[doc(alias = "GtkOrientation")]
8275pub enum Orientation {
8276    /// The element is in horizontal orientation.
8277    #[doc(alias = "GTK_ORIENTATION_HORIZONTAL")]
8278    Horizontal,
8279    /// The element is in vertical orientation.
8280    #[doc(alias = "GTK_ORIENTATION_VERTICAL")]
8281    Vertical,
8282    #[doc(hidden)]
8283    __Unknown(i32),
8284}
8285
8286#[doc(hidden)]
8287impl IntoGlib for Orientation {
8288    type GlibType = ffi::GtkOrientation;
8289
8290    #[inline]
8291    fn into_glib(self) -> ffi::GtkOrientation {
8292        match self {
8293            Self::Horizontal => ffi::GTK_ORIENTATION_HORIZONTAL,
8294            Self::Vertical => ffi::GTK_ORIENTATION_VERTICAL,
8295            Self::__Unknown(value) => value,
8296        }
8297    }
8298}
8299
8300#[doc(hidden)]
8301impl FromGlib<ffi::GtkOrientation> for Orientation {
8302    #[inline]
8303    unsafe fn from_glib(value: ffi::GtkOrientation) -> Self {
8304        skip_assert_initialized!();
8305
8306        match value {
8307            ffi::GTK_ORIENTATION_HORIZONTAL => Self::Horizontal,
8308            ffi::GTK_ORIENTATION_VERTICAL => Self::Vertical,
8309            value => Self::__Unknown(value),
8310        }
8311    }
8312}
8313
8314impl StaticType for Orientation {
8315    #[inline]
8316    #[doc(alias = "gtk_orientation_get_type")]
8317    fn static_type() -> glib::Type {
8318        unsafe { from_glib(ffi::gtk_orientation_get_type()) }
8319    }
8320}
8321
8322impl glib::HasParamSpec for Orientation {
8323    type ParamSpec = glib::ParamSpecEnum;
8324    type SetValue = Self;
8325    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8326
8327    fn param_spec_builder() -> Self::BuilderFn {
8328        Self::ParamSpec::builder_with_default
8329    }
8330}
8331
8332impl glib::value::ValueType for Orientation {
8333    type Type = Self;
8334}
8335
8336unsafe impl<'a> glib::value::FromValue<'a> for Orientation {
8337    type Checker = glib::value::GenericValueTypeChecker<Self>;
8338
8339    #[inline]
8340    unsafe fn from_value(value: &'a glib::Value) -> Self {
8341        skip_assert_initialized!();
8342        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8343    }
8344}
8345
8346impl ToValue for Orientation {
8347    #[inline]
8348    fn to_value(&self) -> glib::Value {
8349        let mut value = glib::Value::for_value_type::<Self>();
8350        unsafe {
8351            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8352        }
8353        value
8354    }
8355
8356    #[inline]
8357    fn value_type(&self) -> glib::Type {
8358        Self::static_type()
8359    }
8360}
8361
8362impl From<Orientation> for glib::Value {
8363    #[inline]
8364    fn from(v: Orientation) -> Self {
8365        skip_assert_initialized!();
8366        ToValue::to_value(&v)
8367    }
8368}
8369
8370/// Defines how content overflowing a given area should be handled.
8371///
8372/// This is used in [`WidgetExt::set_overflow()`][crate::prelude::WidgetExt::set_overflow()]. The
8373/// [`overflow`][struct@crate::Widget#overflow] property is modeled after the
8374/// CSS overflow property, but implements it only partially.
8375#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8376#[non_exhaustive]
8377#[doc(alias = "GtkOverflow")]
8378pub enum Overflow {
8379    /// No change is applied. Content is drawn at the specified
8380    ///   position.
8381    #[doc(alias = "GTK_OVERFLOW_VISIBLE")]
8382    Visible,
8383    /// Content is clipped to the bounds of the area. Content
8384    ///   outside the area is not drawn and cannot be interacted with.
8385    #[doc(alias = "GTK_OVERFLOW_HIDDEN")]
8386    Hidden,
8387    #[doc(hidden)]
8388    __Unknown(i32),
8389}
8390
8391#[doc(hidden)]
8392impl IntoGlib for Overflow {
8393    type GlibType = ffi::GtkOverflow;
8394
8395    #[inline]
8396    fn into_glib(self) -> ffi::GtkOverflow {
8397        match self {
8398            Self::Visible => ffi::GTK_OVERFLOW_VISIBLE,
8399            Self::Hidden => ffi::GTK_OVERFLOW_HIDDEN,
8400            Self::__Unknown(value) => value,
8401        }
8402    }
8403}
8404
8405#[doc(hidden)]
8406impl FromGlib<ffi::GtkOverflow> for Overflow {
8407    #[inline]
8408    unsafe fn from_glib(value: ffi::GtkOverflow) -> Self {
8409        skip_assert_initialized!();
8410
8411        match value {
8412            ffi::GTK_OVERFLOW_VISIBLE => Self::Visible,
8413            ffi::GTK_OVERFLOW_HIDDEN => Self::Hidden,
8414            value => Self::__Unknown(value),
8415        }
8416    }
8417}
8418
8419impl StaticType for Overflow {
8420    #[inline]
8421    #[doc(alias = "gtk_overflow_get_type")]
8422    fn static_type() -> glib::Type {
8423        unsafe { from_glib(ffi::gtk_overflow_get_type()) }
8424    }
8425}
8426
8427impl glib::HasParamSpec for Overflow {
8428    type ParamSpec = glib::ParamSpecEnum;
8429    type SetValue = Self;
8430    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8431
8432    fn param_spec_builder() -> Self::BuilderFn {
8433        Self::ParamSpec::builder_with_default
8434    }
8435}
8436
8437impl glib::value::ValueType for Overflow {
8438    type Type = Self;
8439}
8440
8441unsafe impl<'a> glib::value::FromValue<'a> for Overflow {
8442    type Checker = glib::value::GenericValueTypeChecker<Self>;
8443
8444    #[inline]
8445    unsafe fn from_value(value: &'a glib::Value) -> Self {
8446        skip_assert_initialized!();
8447        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8448    }
8449}
8450
8451impl ToValue for Overflow {
8452    #[inline]
8453    fn to_value(&self) -> glib::Value {
8454        let mut value = glib::Value::for_value_type::<Self>();
8455        unsafe {
8456            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8457        }
8458        value
8459    }
8460
8461    #[inline]
8462    fn value_type(&self) -> glib::Type {
8463        Self::static_type()
8464    }
8465}
8466
8467impl From<Overflow> for glib::Value {
8468    #[inline]
8469    fn from(v: Overflow) -> Self {
8470        skip_assert_initialized!();
8471        ToValue::to_value(&v)
8472    }
8473}
8474
8475/// Represents the packing location of a children in its parent.
8476///
8477/// See [`WindowControls`][crate::WindowControls] for example.
8478#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8479#[non_exhaustive]
8480#[doc(alias = "GtkPackType")]
8481pub enum PackType {
8482    /// The child is packed into the start of the widget
8483    #[doc(alias = "GTK_PACK_START")]
8484    Start,
8485    /// The child is packed into the end of the widget
8486    #[doc(alias = "GTK_PACK_END")]
8487    End,
8488    #[doc(hidden)]
8489    __Unknown(i32),
8490}
8491
8492#[doc(hidden)]
8493impl IntoGlib for PackType {
8494    type GlibType = ffi::GtkPackType;
8495
8496    #[inline]
8497    fn into_glib(self) -> ffi::GtkPackType {
8498        match self {
8499            Self::Start => ffi::GTK_PACK_START,
8500            Self::End => ffi::GTK_PACK_END,
8501            Self::__Unknown(value) => value,
8502        }
8503    }
8504}
8505
8506#[doc(hidden)]
8507impl FromGlib<ffi::GtkPackType> for PackType {
8508    #[inline]
8509    unsafe fn from_glib(value: ffi::GtkPackType) -> Self {
8510        skip_assert_initialized!();
8511
8512        match value {
8513            ffi::GTK_PACK_START => Self::Start,
8514            ffi::GTK_PACK_END => Self::End,
8515            value => Self::__Unknown(value),
8516        }
8517    }
8518}
8519
8520impl StaticType for PackType {
8521    #[inline]
8522    #[doc(alias = "gtk_pack_type_get_type")]
8523    fn static_type() -> glib::Type {
8524        unsafe { from_glib(ffi::gtk_pack_type_get_type()) }
8525    }
8526}
8527
8528impl glib::HasParamSpec for PackType {
8529    type ParamSpec = glib::ParamSpecEnum;
8530    type SetValue = Self;
8531    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8532
8533    fn param_spec_builder() -> Self::BuilderFn {
8534        Self::ParamSpec::builder_with_default
8535    }
8536}
8537
8538impl glib::value::ValueType for PackType {
8539    type Type = Self;
8540}
8541
8542unsafe impl<'a> glib::value::FromValue<'a> for PackType {
8543    type Checker = glib::value::GenericValueTypeChecker<Self>;
8544
8545    #[inline]
8546    unsafe fn from_value(value: &'a glib::Value) -> Self {
8547        skip_assert_initialized!();
8548        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8549    }
8550}
8551
8552impl ToValue for PackType {
8553    #[inline]
8554    fn to_value(&self) -> glib::Value {
8555        let mut value = glib::Value::for_value_type::<Self>();
8556        unsafe {
8557            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8558        }
8559        value
8560    }
8561
8562    #[inline]
8563    fn value_type(&self) -> glib::Type {
8564        Self::static_type()
8565    }
8566}
8567
8568impl From<PackType> for glib::Value {
8569    #[inline]
8570    fn from(v: PackType) -> Self {
8571        skip_assert_initialized!();
8572        ToValue::to_value(&v)
8573    }
8574}
8575
8576/// The type of a pad action.
8577#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8578#[non_exhaustive]
8579#[doc(alias = "GtkPadActionType")]
8580pub enum PadActionType {
8581    /// Action is triggered by a pad button
8582    #[doc(alias = "GTK_PAD_ACTION_BUTTON")]
8583    Button,
8584    /// Action is triggered by a pad ring
8585    #[doc(alias = "GTK_PAD_ACTION_RING")]
8586    Ring,
8587    /// Action is triggered by a pad strip
8588    #[doc(alias = "GTK_PAD_ACTION_STRIP")]
8589    Strip,
8590    /// Action is triggered by a pad dial
8591    #[doc(alias = "GTK_PAD_ACTION_DIAL")]
8592    Dial,
8593    #[doc(hidden)]
8594    __Unknown(i32),
8595}
8596
8597#[doc(hidden)]
8598impl IntoGlib for PadActionType {
8599    type GlibType = ffi::GtkPadActionType;
8600
8601    #[inline]
8602    fn into_glib(self) -> ffi::GtkPadActionType {
8603        match self {
8604            Self::Button => ffi::GTK_PAD_ACTION_BUTTON,
8605            Self::Ring => ffi::GTK_PAD_ACTION_RING,
8606            Self::Strip => ffi::GTK_PAD_ACTION_STRIP,
8607            Self::Dial => ffi::GTK_PAD_ACTION_DIAL,
8608            Self::__Unknown(value) => value,
8609        }
8610    }
8611}
8612
8613#[doc(hidden)]
8614impl FromGlib<ffi::GtkPadActionType> for PadActionType {
8615    #[inline]
8616    unsafe fn from_glib(value: ffi::GtkPadActionType) -> Self {
8617        skip_assert_initialized!();
8618
8619        match value {
8620            ffi::GTK_PAD_ACTION_BUTTON => Self::Button,
8621            ffi::GTK_PAD_ACTION_RING => Self::Ring,
8622            ffi::GTK_PAD_ACTION_STRIP => Self::Strip,
8623            ffi::GTK_PAD_ACTION_DIAL => Self::Dial,
8624            value => Self::__Unknown(value),
8625        }
8626    }
8627}
8628
8629impl StaticType for PadActionType {
8630    #[inline]
8631    #[doc(alias = "gtk_pad_action_type_get_type")]
8632    fn static_type() -> glib::Type {
8633        unsafe { from_glib(ffi::gtk_pad_action_type_get_type()) }
8634    }
8635}
8636
8637impl glib::HasParamSpec for PadActionType {
8638    type ParamSpec = glib::ParamSpecEnum;
8639    type SetValue = Self;
8640    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8641
8642    fn param_spec_builder() -> Self::BuilderFn {
8643        Self::ParamSpec::builder_with_default
8644    }
8645}
8646
8647impl glib::value::ValueType for PadActionType {
8648    type Type = Self;
8649}
8650
8651unsafe impl<'a> glib::value::FromValue<'a> for PadActionType {
8652    type Checker = glib::value::GenericValueTypeChecker<Self>;
8653
8654    #[inline]
8655    unsafe fn from_value(value: &'a glib::Value) -> Self {
8656        skip_assert_initialized!();
8657        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8658    }
8659}
8660
8661impl ToValue for PadActionType {
8662    #[inline]
8663    fn to_value(&self) -> glib::Value {
8664        let mut value = glib::Value::for_value_type::<Self>();
8665        unsafe {
8666            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8667        }
8668        value
8669    }
8670
8671    #[inline]
8672    fn value_type(&self) -> glib::Type {
8673        Self::static_type()
8674    }
8675}
8676
8677impl From<PadActionType> for glib::Value {
8678    #[inline]
8679    fn from(v: PadActionType) -> Self {
8680        skip_assert_initialized!();
8681        ToValue::to_value(&v)
8682    }
8683}
8684
8685/// See also gtk_print_settings_set_orientation().
8686#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8687#[non_exhaustive]
8688#[doc(alias = "GtkPageOrientation")]
8689pub enum PageOrientation {
8690    /// Portrait mode.
8691    #[doc(alias = "GTK_PAGE_ORIENTATION_PORTRAIT")]
8692    Portrait,
8693    /// Landscape mode.
8694    #[doc(alias = "GTK_PAGE_ORIENTATION_LANDSCAPE")]
8695    Landscape,
8696    /// Reverse portrait mode.
8697    #[doc(alias = "GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT")]
8698    ReversePortrait,
8699    /// Reverse landscape mode.
8700    #[doc(alias = "GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE")]
8701    ReverseLandscape,
8702    #[doc(hidden)]
8703    __Unknown(i32),
8704}
8705
8706#[doc(hidden)]
8707impl IntoGlib for PageOrientation {
8708    type GlibType = ffi::GtkPageOrientation;
8709
8710    #[inline]
8711    fn into_glib(self) -> ffi::GtkPageOrientation {
8712        match self {
8713            Self::Portrait => ffi::GTK_PAGE_ORIENTATION_PORTRAIT,
8714            Self::Landscape => ffi::GTK_PAGE_ORIENTATION_LANDSCAPE,
8715            Self::ReversePortrait => ffi::GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT,
8716            Self::ReverseLandscape => ffi::GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE,
8717            Self::__Unknown(value) => value,
8718        }
8719    }
8720}
8721
8722#[doc(hidden)]
8723impl FromGlib<ffi::GtkPageOrientation> for PageOrientation {
8724    #[inline]
8725    unsafe fn from_glib(value: ffi::GtkPageOrientation) -> Self {
8726        skip_assert_initialized!();
8727
8728        match value {
8729            ffi::GTK_PAGE_ORIENTATION_PORTRAIT => Self::Portrait,
8730            ffi::GTK_PAGE_ORIENTATION_LANDSCAPE => Self::Landscape,
8731            ffi::GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT => Self::ReversePortrait,
8732            ffi::GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE => Self::ReverseLandscape,
8733            value => Self::__Unknown(value),
8734        }
8735    }
8736}
8737
8738impl StaticType for PageOrientation {
8739    #[inline]
8740    #[doc(alias = "gtk_page_orientation_get_type")]
8741    fn static_type() -> glib::Type {
8742        unsafe { from_glib(ffi::gtk_page_orientation_get_type()) }
8743    }
8744}
8745
8746impl glib::HasParamSpec for PageOrientation {
8747    type ParamSpec = glib::ParamSpecEnum;
8748    type SetValue = Self;
8749    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8750
8751    fn param_spec_builder() -> Self::BuilderFn {
8752        Self::ParamSpec::builder_with_default
8753    }
8754}
8755
8756impl glib::value::ValueType for PageOrientation {
8757    type Type = Self;
8758}
8759
8760unsafe impl<'a> glib::value::FromValue<'a> for PageOrientation {
8761    type Checker = glib::value::GenericValueTypeChecker<Self>;
8762
8763    #[inline]
8764    unsafe fn from_value(value: &'a glib::Value) -> Self {
8765        skip_assert_initialized!();
8766        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8767    }
8768}
8769
8770impl ToValue for PageOrientation {
8771    #[inline]
8772    fn to_value(&self) -> glib::Value {
8773        let mut value = glib::Value::for_value_type::<Self>();
8774        unsafe {
8775            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8776        }
8777        value
8778    }
8779
8780    #[inline]
8781    fn value_type(&self) -> glib::Type {
8782        Self::static_type()
8783    }
8784}
8785
8786impl From<PageOrientation> for glib::Value {
8787    #[inline]
8788    fn from(v: PageOrientation) -> Self {
8789        skip_assert_initialized!();
8790        ToValue::to_value(&v)
8791    }
8792}
8793
8794/// See also gtk_print_job_set_page_set().
8795#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8796#[non_exhaustive]
8797#[doc(alias = "GtkPageSet")]
8798pub enum PageSet {
8799    /// All pages.
8800    #[doc(alias = "GTK_PAGE_SET_ALL")]
8801    All,
8802    /// Even pages.
8803    #[doc(alias = "GTK_PAGE_SET_EVEN")]
8804    Even,
8805    /// Odd pages.
8806    #[doc(alias = "GTK_PAGE_SET_ODD")]
8807    Odd,
8808    #[doc(hidden)]
8809    __Unknown(i32),
8810}
8811
8812#[doc(hidden)]
8813impl IntoGlib for PageSet {
8814    type GlibType = ffi::GtkPageSet;
8815
8816    #[inline]
8817    fn into_glib(self) -> ffi::GtkPageSet {
8818        match self {
8819            Self::All => ffi::GTK_PAGE_SET_ALL,
8820            Self::Even => ffi::GTK_PAGE_SET_EVEN,
8821            Self::Odd => ffi::GTK_PAGE_SET_ODD,
8822            Self::__Unknown(value) => value,
8823        }
8824    }
8825}
8826
8827#[doc(hidden)]
8828impl FromGlib<ffi::GtkPageSet> for PageSet {
8829    #[inline]
8830    unsafe fn from_glib(value: ffi::GtkPageSet) -> Self {
8831        skip_assert_initialized!();
8832
8833        match value {
8834            ffi::GTK_PAGE_SET_ALL => Self::All,
8835            ffi::GTK_PAGE_SET_EVEN => Self::Even,
8836            ffi::GTK_PAGE_SET_ODD => Self::Odd,
8837            value => Self::__Unknown(value),
8838        }
8839    }
8840}
8841
8842impl StaticType for PageSet {
8843    #[inline]
8844    #[doc(alias = "gtk_page_set_get_type")]
8845    fn static_type() -> glib::Type {
8846        unsafe { from_glib(ffi::gtk_page_set_get_type()) }
8847    }
8848}
8849
8850impl glib::HasParamSpec for PageSet {
8851    type ParamSpec = glib::ParamSpecEnum;
8852    type SetValue = Self;
8853    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8854
8855    fn param_spec_builder() -> Self::BuilderFn {
8856        Self::ParamSpec::builder_with_default
8857    }
8858}
8859
8860impl glib::value::ValueType for PageSet {
8861    type Type = Self;
8862}
8863
8864unsafe impl<'a> glib::value::FromValue<'a> for PageSet {
8865    type Checker = glib::value::GenericValueTypeChecker<Self>;
8866
8867    #[inline]
8868    unsafe fn from_value(value: &'a glib::Value) -> Self {
8869        skip_assert_initialized!();
8870        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8871    }
8872}
8873
8874impl ToValue for PageSet {
8875    #[inline]
8876    fn to_value(&self) -> glib::Value {
8877        let mut value = glib::Value::for_value_type::<Self>();
8878        unsafe {
8879            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8880        }
8881        value
8882    }
8883
8884    #[inline]
8885    fn value_type(&self) -> glib::Type {
8886        Self::static_type()
8887    }
8888}
8889
8890impl From<PageSet> for glib::Value {
8891    #[inline]
8892    fn from(v: PageSet) -> Self {
8893        skip_assert_initialized!();
8894        ToValue::to_value(&v)
8895    }
8896}
8897
8898/// Describes the panning direction of a [`GesturePan`][crate::GesturePan].
8899#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8900#[non_exhaustive]
8901#[doc(alias = "GtkPanDirection")]
8902pub enum PanDirection {
8903    /// panned towards the left
8904    #[doc(alias = "GTK_PAN_DIRECTION_LEFT")]
8905    Left,
8906    /// panned towards the right
8907    #[doc(alias = "GTK_PAN_DIRECTION_RIGHT")]
8908    Right,
8909    /// panned upwards
8910    #[doc(alias = "GTK_PAN_DIRECTION_UP")]
8911    Up,
8912    /// panned downwards
8913    #[doc(alias = "GTK_PAN_DIRECTION_DOWN")]
8914    Down,
8915    #[doc(hidden)]
8916    __Unknown(i32),
8917}
8918
8919#[doc(hidden)]
8920impl IntoGlib for PanDirection {
8921    type GlibType = ffi::GtkPanDirection;
8922
8923    #[inline]
8924    fn into_glib(self) -> ffi::GtkPanDirection {
8925        match self {
8926            Self::Left => ffi::GTK_PAN_DIRECTION_LEFT,
8927            Self::Right => ffi::GTK_PAN_DIRECTION_RIGHT,
8928            Self::Up => ffi::GTK_PAN_DIRECTION_UP,
8929            Self::Down => ffi::GTK_PAN_DIRECTION_DOWN,
8930            Self::__Unknown(value) => value,
8931        }
8932    }
8933}
8934
8935#[doc(hidden)]
8936impl FromGlib<ffi::GtkPanDirection> for PanDirection {
8937    #[inline]
8938    unsafe fn from_glib(value: ffi::GtkPanDirection) -> Self {
8939        skip_assert_initialized!();
8940
8941        match value {
8942            ffi::GTK_PAN_DIRECTION_LEFT => Self::Left,
8943            ffi::GTK_PAN_DIRECTION_RIGHT => Self::Right,
8944            ffi::GTK_PAN_DIRECTION_UP => Self::Up,
8945            ffi::GTK_PAN_DIRECTION_DOWN => Self::Down,
8946            value => Self::__Unknown(value),
8947        }
8948    }
8949}
8950
8951impl StaticType for PanDirection {
8952    #[inline]
8953    #[doc(alias = "gtk_pan_direction_get_type")]
8954    fn static_type() -> glib::Type {
8955        unsafe { from_glib(ffi::gtk_pan_direction_get_type()) }
8956    }
8957}
8958
8959impl glib::HasParamSpec for PanDirection {
8960    type ParamSpec = glib::ParamSpecEnum;
8961    type SetValue = Self;
8962    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8963
8964    fn param_spec_builder() -> Self::BuilderFn {
8965        Self::ParamSpec::builder_with_default
8966    }
8967}
8968
8969impl glib::value::ValueType for PanDirection {
8970    type Type = Self;
8971}
8972
8973unsafe impl<'a> glib::value::FromValue<'a> for PanDirection {
8974    type Checker = glib::value::GenericValueTypeChecker<Self>;
8975
8976    #[inline]
8977    unsafe fn from_value(value: &'a glib::Value) -> Self {
8978        skip_assert_initialized!();
8979        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8980    }
8981}
8982
8983impl ToValue for PanDirection {
8984    #[inline]
8985    fn to_value(&self) -> glib::Value {
8986        let mut value = glib::Value::for_value_type::<Self>();
8987        unsafe {
8988            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8989        }
8990        value
8991    }
8992
8993    #[inline]
8994    fn value_type(&self) -> glib::Type {
8995        Self::static_type()
8996    }
8997}
8998
8999impl From<PanDirection> for glib::Value {
9000    #[inline]
9001    fn from(v: PanDirection) -> Self {
9002        skip_assert_initialized!();
9003        ToValue::to_value(&v)
9004    }
9005}
9006
9007/// Determines how the size should be computed to achieve the one of the
9008/// visibility mode for the scrollbars.
9009#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9010#[non_exhaustive]
9011#[doc(alias = "GtkPolicyType")]
9012pub enum PolicyType {
9013    /// The scrollbar is always visible. The view size is
9014    ///   independent of the content.
9015    #[doc(alias = "GTK_POLICY_ALWAYS")]
9016    Always,
9017    /// The scrollbar will appear and disappear as necessary.
9018    ///   For example, when all of a [`TreeView`][crate::TreeView] can not be seen.
9019    #[doc(alias = "GTK_POLICY_AUTOMATIC")]
9020    Automatic,
9021    /// The scrollbar should never appear. In this mode the
9022    ///   content determines the size.
9023    #[doc(alias = "GTK_POLICY_NEVER")]
9024    Never,
9025    /// Don't show a scrollbar, but don't force the
9026    ///   size to follow the content. This can be used e.g. to make multiple
9027    ///   scrolled windows share a scrollbar.
9028    #[doc(alias = "GTK_POLICY_EXTERNAL")]
9029    External,
9030    #[doc(hidden)]
9031    __Unknown(i32),
9032}
9033
9034#[doc(hidden)]
9035impl IntoGlib for PolicyType {
9036    type GlibType = ffi::GtkPolicyType;
9037
9038    #[inline]
9039    fn into_glib(self) -> ffi::GtkPolicyType {
9040        match self {
9041            Self::Always => ffi::GTK_POLICY_ALWAYS,
9042            Self::Automatic => ffi::GTK_POLICY_AUTOMATIC,
9043            Self::Never => ffi::GTK_POLICY_NEVER,
9044            Self::External => ffi::GTK_POLICY_EXTERNAL,
9045            Self::__Unknown(value) => value,
9046        }
9047    }
9048}
9049
9050#[doc(hidden)]
9051impl FromGlib<ffi::GtkPolicyType> for PolicyType {
9052    #[inline]
9053    unsafe fn from_glib(value: ffi::GtkPolicyType) -> Self {
9054        skip_assert_initialized!();
9055
9056        match value {
9057            ffi::GTK_POLICY_ALWAYS => Self::Always,
9058            ffi::GTK_POLICY_AUTOMATIC => Self::Automatic,
9059            ffi::GTK_POLICY_NEVER => Self::Never,
9060            ffi::GTK_POLICY_EXTERNAL => Self::External,
9061            value => Self::__Unknown(value),
9062        }
9063    }
9064}
9065
9066impl StaticType for PolicyType {
9067    #[inline]
9068    #[doc(alias = "gtk_policy_type_get_type")]
9069    fn static_type() -> glib::Type {
9070        unsafe { from_glib(ffi::gtk_policy_type_get_type()) }
9071    }
9072}
9073
9074impl glib::HasParamSpec for PolicyType {
9075    type ParamSpec = glib::ParamSpecEnum;
9076    type SetValue = Self;
9077    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9078
9079    fn param_spec_builder() -> Self::BuilderFn {
9080        Self::ParamSpec::builder_with_default
9081    }
9082}
9083
9084impl glib::value::ValueType for PolicyType {
9085    type Type = Self;
9086}
9087
9088unsafe impl<'a> glib::value::FromValue<'a> for PolicyType {
9089    type Checker = glib::value::GenericValueTypeChecker<Self>;
9090
9091    #[inline]
9092    unsafe fn from_value(value: &'a glib::Value) -> Self {
9093        skip_assert_initialized!();
9094        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9095    }
9096}
9097
9098impl ToValue for PolicyType {
9099    #[inline]
9100    fn to_value(&self) -> glib::Value {
9101        let mut value = glib::Value::for_value_type::<Self>();
9102        unsafe {
9103            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9104        }
9105        value
9106    }
9107
9108    #[inline]
9109    fn value_type(&self) -> glib::Type {
9110        Self::static_type()
9111    }
9112}
9113
9114impl From<PolicyType> for glib::Value {
9115    #[inline]
9116    fn from(v: PolicyType) -> Self {
9117        skip_assert_initialized!();
9118        ToValue::to_value(&v)
9119    }
9120}
9121
9122/// Describes which edge of a widget a certain feature is positioned at.
9123///
9124/// For examples, see the tabs of a [`Notebook`][crate::Notebook], or the label
9125/// of a [`Scale`][crate::Scale].
9126#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9127#[non_exhaustive]
9128#[doc(alias = "GtkPositionType")]
9129pub enum PositionType {
9130    /// The feature is at the left edge.
9131    #[doc(alias = "GTK_POS_LEFT")]
9132    Left,
9133    /// The feature is at the right edge.
9134    #[doc(alias = "GTK_POS_RIGHT")]
9135    Right,
9136    /// The feature is at the top edge.
9137    #[doc(alias = "GTK_POS_TOP")]
9138    Top,
9139    /// The feature is at the bottom edge.
9140    #[doc(alias = "GTK_POS_BOTTOM")]
9141    Bottom,
9142    #[doc(hidden)]
9143    __Unknown(i32),
9144}
9145
9146#[doc(hidden)]
9147impl IntoGlib for PositionType {
9148    type GlibType = ffi::GtkPositionType;
9149
9150    #[inline]
9151    fn into_glib(self) -> ffi::GtkPositionType {
9152        match self {
9153            Self::Left => ffi::GTK_POS_LEFT,
9154            Self::Right => ffi::GTK_POS_RIGHT,
9155            Self::Top => ffi::GTK_POS_TOP,
9156            Self::Bottom => ffi::GTK_POS_BOTTOM,
9157            Self::__Unknown(value) => value,
9158        }
9159    }
9160}
9161
9162#[doc(hidden)]
9163impl FromGlib<ffi::GtkPositionType> for PositionType {
9164    #[inline]
9165    unsafe fn from_glib(value: ffi::GtkPositionType) -> Self {
9166        skip_assert_initialized!();
9167
9168        match value {
9169            ffi::GTK_POS_LEFT => Self::Left,
9170            ffi::GTK_POS_RIGHT => Self::Right,
9171            ffi::GTK_POS_TOP => Self::Top,
9172            ffi::GTK_POS_BOTTOM => Self::Bottom,
9173            value => Self::__Unknown(value),
9174        }
9175    }
9176}
9177
9178impl StaticType for PositionType {
9179    #[inline]
9180    #[doc(alias = "gtk_position_type_get_type")]
9181    fn static_type() -> glib::Type {
9182        unsafe { from_glib(ffi::gtk_position_type_get_type()) }
9183    }
9184}
9185
9186impl glib::HasParamSpec for PositionType {
9187    type ParamSpec = glib::ParamSpecEnum;
9188    type SetValue = Self;
9189    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9190
9191    fn param_spec_builder() -> Self::BuilderFn {
9192        Self::ParamSpec::builder_with_default
9193    }
9194}
9195
9196impl glib::value::ValueType for PositionType {
9197    type Type = Self;
9198}
9199
9200unsafe impl<'a> glib::value::FromValue<'a> for PositionType {
9201    type Checker = glib::value::GenericValueTypeChecker<Self>;
9202
9203    #[inline]
9204    unsafe fn from_value(value: &'a glib::Value) -> Self {
9205        skip_assert_initialized!();
9206        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9207    }
9208}
9209
9210impl ToValue for PositionType {
9211    #[inline]
9212    fn to_value(&self) -> glib::Value {
9213        let mut value = glib::Value::for_value_type::<Self>();
9214        unsafe {
9215            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9216        }
9217        value
9218    }
9219
9220    #[inline]
9221    fn value_type(&self) -> glib::Type {
9222        Self::static_type()
9223    }
9224}
9225
9226impl From<PositionType> for glib::Value {
9227    #[inline]
9228    fn from(v: PositionType) -> Self {
9229        skip_assert_initialized!();
9230        ToValue::to_value(&v)
9231    }
9232}
9233
9234/// See also gtk_print_settings_set_duplex().
9235#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9236#[non_exhaustive]
9237#[doc(alias = "GtkPrintDuplex")]
9238pub enum PrintDuplex {
9239    /// No duplex.
9240    #[doc(alias = "GTK_PRINT_DUPLEX_SIMPLEX")]
9241    Simplex,
9242    /// Horizontal duplex.
9243    #[doc(alias = "GTK_PRINT_DUPLEX_HORIZONTAL")]
9244    Horizontal,
9245    /// Vertical duplex.
9246    #[doc(alias = "GTK_PRINT_DUPLEX_VERTICAL")]
9247    Vertical,
9248    #[doc(hidden)]
9249    __Unknown(i32),
9250}
9251
9252#[doc(hidden)]
9253impl IntoGlib for PrintDuplex {
9254    type GlibType = ffi::GtkPrintDuplex;
9255
9256    #[inline]
9257    fn into_glib(self) -> ffi::GtkPrintDuplex {
9258        match self {
9259            Self::Simplex => ffi::GTK_PRINT_DUPLEX_SIMPLEX,
9260            Self::Horizontal => ffi::GTK_PRINT_DUPLEX_HORIZONTAL,
9261            Self::Vertical => ffi::GTK_PRINT_DUPLEX_VERTICAL,
9262            Self::__Unknown(value) => value,
9263        }
9264    }
9265}
9266
9267#[doc(hidden)]
9268impl FromGlib<ffi::GtkPrintDuplex> for PrintDuplex {
9269    #[inline]
9270    unsafe fn from_glib(value: ffi::GtkPrintDuplex) -> Self {
9271        skip_assert_initialized!();
9272
9273        match value {
9274            ffi::GTK_PRINT_DUPLEX_SIMPLEX => Self::Simplex,
9275            ffi::GTK_PRINT_DUPLEX_HORIZONTAL => Self::Horizontal,
9276            ffi::GTK_PRINT_DUPLEX_VERTICAL => Self::Vertical,
9277            value => Self::__Unknown(value),
9278        }
9279    }
9280}
9281
9282impl StaticType for PrintDuplex {
9283    #[inline]
9284    #[doc(alias = "gtk_print_duplex_get_type")]
9285    fn static_type() -> glib::Type {
9286        unsafe { from_glib(ffi::gtk_print_duplex_get_type()) }
9287    }
9288}
9289
9290impl glib::HasParamSpec for PrintDuplex {
9291    type ParamSpec = glib::ParamSpecEnum;
9292    type SetValue = Self;
9293    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9294
9295    fn param_spec_builder() -> Self::BuilderFn {
9296        Self::ParamSpec::builder_with_default
9297    }
9298}
9299
9300impl glib::value::ValueType for PrintDuplex {
9301    type Type = Self;
9302}
9303
9304unsafe impl<'a> glib::value::FromValue<'a> for PrintDuplex {
9305    type Checker = glib::value::GenericValueTypeChecker<Self>;
9306
9307    #[inline]
9308    unsafe fn from_value(value: &'a glib::Value) -> Self {
9309        skip_assert_initialized!();
9310        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9311    }
9312}
9313
9314impl ToValue for PrintDuplex {
9315    #[inline]
9316    fn to_value(&self) -> glib::Value {
9317        let mut value = glib::Value::for_value_type::<Self>();
9318        unsafe {
9319            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9320        }
9321        value
9322    }
9323
9324    #[inline]
9325    fn value_type(&self) -> glib::Type {
9326        Self::static_type()
9327    }
9328}
9329
9330impl From<PrintDuplex> for glib::Value {
9331    #[inline]
9332    fn from(v: PrintDuplex) -> Self {
9333        skip_assert_initialized!();
9334        ToValue::to_value(&v)
9335    }
9336}
9337
9338/// Error codes that identify various errors that can occur while
9339/// using the GTK printing support.
9340#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9341#[non_exhaustive]
9342#[doc(alias = "GtkPrintError")]
9343pub enum PrintError {
9344    /// An unspecified error occurred.
9345    #[doc(alias = "GTK_PRINT_ERROR_GENERAL")]
9346    General,
9347    /// An internal error occurred.
9348    #[doc(alias = "GTK_PRINT_ERROR_INTERNAL_ERROR")]
9349    InternalError,
9350    /// A memory allocation failed.
9351    #[doc(alias = "GTK_PRINT_ERROR_NOMEM")]
9352    Nomem,
9353    /// An error occurred while loading a page setup
9354    ///   or paper size from a key file.
9355    #[doc(alias = "GTK_PRINT_ERROR_INVALID_FILE")]
9356    InvalidFile,
9357    #[doc(hidden)]
9358    __Unknown(i32),
9359}
9360
9361#[doc(hidden)]
9362impl IntoGlib for PrintError {
9363    type GlibType = ffi::GtkPrintError;
9364
9365    #[inline]
9366    fn into_glib(self) -> ffi::GtkPrintError {
9367        match self {
9368            Self::General => ffi::GTK_PRINT_ERROR_GENERAL,
9369            Self::InternalError => ffi::GTK_PRINT_ERROR_INTERNAL_ERROR,
9370            Self::Nomem => ffi::GTK_PRINT_ERROR_NOMEM,
9371            Self::InvalidFile => ffi::GTK_PRINT_ERROR_INVALID_FILE,
9372            Self::__Unknown(value) => value,
9373        }
9374    }
9375}
9376
9377#[doc(hidden)]
9378impl FromGlib<ffi::GtkPrintError> for PrintError {
9379    #[inline]
9380    unsafe fn from_glib(value: ffi::GtkPrintError) -> Self {
9381        skip_assert_initialized!();
9382
9383        match value {
9384            ffi::GTK_PRINT_ERROR_GENERAL => Self::General,
9385            ffi::GTK_PRINT_ERROR_INTERNAL_ERROR => Self::InternalError,
9386            ffi::GTK_PRINT_ERROR_NOMEM => Self::Nomem,
9387            ffi::GTK_PRINT_ERROR_INVALID_FILE => Self::InvalidFile,
9388            value => Self::__Unknown(value),
9389        }
9390    }
9391}
9392
9393impl glib::error::ErrorDomain for PrintError {
9394    #[inline]
9395    fn domain() -> glib::Quark {
9396        skip_assert_initialized!();
9397
9398        unsafe { from_glib(ffi::gtk_print_error_quark()) }
9399    }
9400
9401    #[inline]
9402    fn code(self) -> i32 {
9403        self.into_glib()
9404    }
9405
9406    #[inline]
9407    #[allow(clippy::match_single_binding)]
9408    fn from(code: i32) -> Option<Self> {
9409        skip_assert_initialized!();
9410        match unsafe { from_glib(code) } {
9411            value => Some(value),
9412        }
9413    }
9414}
9415
9416impl StaticType for PrintError {
9417    #[inline]
9418    #[doc(alias = "gtk_print_error_get_type")]
9419    fn static_type() -> glib::Type {
9420        unsafe { from_glib(ffi::gtk_print_error_get_type()) }
9421    }
9422}
9423
9424impl glib::HasParamSpec for PrintError {
9425    type ParamSpec = glib::ParamSpecEnum;
9426    type SetValue = Self;
9427    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9428
9429    fn param_spec_builder() -> Self::BuilderFn {
9430        Self::ParamSpec::builder_with_default
9431    }
9432}
9433
9434impl glib::value::ValueType for PrintError {
9435    type Type = Self;
9436}
9437
9438unsafe impl<'a> glib::value::FromValue<'a> for PrintError {
9439    type Checker = glib::value::GenericValueTypeChecker<Self>;
9440
9441    #[inline]
9442    unsafe fn from_value(value: &'a glib::Value) -> Self {
9443        skip_assert_initialized!();
9444        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9445    }
9446}
9447
9448impl ToValue for PrintError {
9449    #[inline]
9450    fn to_value(&self) -> glib::Value {
9451        let mut value = glib::Value::for_value_type::<Self>();
9452        unsafe {
9453            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9454        }
9455        value
9456    }
9457
9458    #[inline]
9459    fn value_type(&self) -> glib::Type {
9460        Self::static_type()
9461    }
9462}
9463
9464impl From<PrintError> for glib::Value {
9465    #[inline]
9466    fn from(v: PrintError) -> Self {
9467        skip_assert_initialized!();
9468        ToValue::to_value(&v)
9469    }
9470}
9471
9472/// Determines what action the print operation should perform.
9473///
9474/// A parameter of this typs is passed to [`PrintOperationExt::run()`][crate::prelude::PrintOperationExt::run()].
9475#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9476#[non_exhaustive]
9477#[doc(alias = "GtkPrintOperationAction")]
9478pub enum PrintOperationAction {
9479    /// Show the print dialog.
9480    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG")]
9481    PrintDialog,
9482    /// Start to print without showing
9483    ///   the print dialog, based on the current print settings, if possible.
9484    ///   Depending on the platform, a print dialog might appear anyway.
9485    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PRINT")]
9486    Print,
9487    /// Show the print preview.
9488    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PREVIEW")]
9489    Preview,
9490    /// Export to a file. This requires
9491    ///   the export-filename property to be set.
9492    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_EXPORT")]
9493    Export,
9494    #[doc(hidden)]
9495    __Unknown(i32),
9496}
9497
9498#[doc(hidden)]
9499impl IntoGlib for PrintOperationAction {
9500    type GlibType = ffi::GtkPrintOperationAction;
9501
9502    #[inline]
9503    fn into_glib(self) -> ffi::GtkPrintOperationAction {
9504        match self {
9505            Self::PrintDialog => ffi::GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
9506            Self::Print => ffi::GTK_PRINT_OPERATION_ACTION_PRINT,
9507            Self::Preview => ffi::GTK_PRINT_OPERATION_ACTION_PREVIEW,
9508            Self::Export => ffi::GTK_PRINT_OPERATION_ACTION_EXPORT,
9509            Self::__Unknown(value) => value,
9510        }
9511    }
9512}
9513
9514#[doc(hidden)]
9515impl FromGlib<ffi::GtkPrintOperationAction> for PrintOperationAction {
9516    #[inline]
9517    unsafe fn from_glib(value: ffi::GtkPrintOperationAction) -> Self {
9518        skip_assert_initialized!();
9519
9520        match value {
9521            ffi::GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG => Self::PrintDialog,
9522            ffi::GTK_PRINT_OPERATION_ACTION_PRINT => Self::Print,
9523            ffi::GTK_PRINT_OPERATION_ACTION_PREVIEW => Self::Preview,
9524            ffi::GTK_PRINT_OPERATION_ACTION_EXPORT => Self::Export,
9525            value => Self::__Unknown(value),
9526        }
9527    }
9528}
9529
9530impl StaticType for PrintOperationAction {
9531    #[inline]
9532    #[doc(alias = "gtk_print_operation_action_get_type")]
9533    fn static_type() -> glib::Type {
9534        unsafe { from_glib(ffi::gtk_print_operation_action_get_type()) }
9535    }
9536}
9537
9538impl glib::HasParamSpec for PrintOperationAction {
9539    type ParamSpec = glib::ParamSpecEnum;
9540    type SetValue = Self;
9541    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9542
9543    fn param_spec_builder() -> Self::BuilderFn {
9544        Self::ParamSpec::builder_with_default
9545    }
9546}
9547
9548impl glib::value::ValueType for PrintOperationAction {
9549    type Type = Self;
9550}
9551
9552unsafe impl<'a> glib::value::FromValue<'a> for PrintOperationAction {
9553    type Checker = glib::value::GenericValueTypeChecker<Self>;
9554
9555    #[inline]
9556    unsafe fn from_value(value: &'a glib::Value) -> Self {
9557        skip_assert_initialized!();
9558        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9559    }
9560}
9561
9562impl ToValue for PrintOperationAction {
9563    #[inline]
9564    fn to_value(&self) -> glib::Value {
9565        let mut value = glib::Value::for_value_type::<Self>();
9566        unsafe {
9567            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9568        }
9569        value
9570    }
9571
9572    #[inline]
9573    fn value_type(&self) -> glib::Type {
9574        Self::static_type()
9575    }
9576}
9577
9578impl From<PrintOperationAction> for glib::Value {
9579    #[inline]
9580    fn from(v: PrintOperationAction) -> Self {
9581        skip_assert_initialized!();
9582        ToValue::to_value(&v)
9583    }
9584}
9585
9586/// The result of a print operation.
9587///
9588/// A value of this type is returned by [`PrintOperationExt::run()`][crate::prelude::PrintOperationExt::run()].
9589#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9590#[non_exhaustive]
9591#[doc(alias = "GtkPrintOperationResult")]
9592pub enum PrintOperationResult {
9593    /// An error has occurred.
9594    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_ERROR")]
9595    Error,
9596    /// The print settings should be stored.
9597    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_APPLY")]
9598    Apply,
9599    /// The print operation has been canceled,
9600    ///   the print settings should not be stored.
9601    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_CANCEL")]
9602    Cancel,
9603    /// The print operation is not complete
9604    ///   yet. This value will only be returned when running asynchronously.
9605    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_IN_PROGRESS")]
9606    InProgress,
9607    #[doc(hidden)]
9608    __Unknown(i32),
9609}
9610
9611#[doc(hidden)]
9612impl IntoGlib for PrintOperationResult {
9613    type GlibType = ffi::GtkPrintOperationResult;
9614
9615    #[inline]
9616    fn into_glib(self) -> ffi::GtkPrintOperationResult {
9617        match self {
9618            Self::Error => ffi::GTK_PRINT_OPERATION_RESULT_ERROR,
9619            Self::Apply => ffi::GTK_PRINT_OPERATION_RESULT_APPLY,
9620            Self::Cancel => ffi::GTK_PRINT_OPERATION_RESULT_CANCEL,
9621            Self::InProgress => ffi::GTK_PRINT_OPERATION_RESULT_IN_PROGRESS,
9622            Self::__Unknown(value) => value,
9623        }
9624    }
9625}
9626
9627#[doc(hidden)]
9628impl FromGlib<ffi::GtkPrintOperationResult> for PrintOperationResult {
9629    #[inline]
9630    unsafe fn from_glib(value: ffi::GtkPrintOperationResult) -> Self {
9631        skip_assert_initialized!();
9632
9633        match value {
9634            ffi::GTK_PRINT_OPERATION_RESULT_ERROR => Self::Error,
9635            ffi::GTK_PRINT_OPERATION_RESULT_APPLY => Self::Apply,
9636            ffi::GTK_PRINT_OPERATION_RESULT_CANCEL => Self::Cancel,
9637            ffi::GTK_PRINT_OPERATION_RESULT_IN_PROGRESS => Self::InProgress,
9638            value => Self::__Unknown(value),
9639        }
9640    }
9641}
9642
9643impl StaticType for PrintOperationResult {
9644    #[inline]
9645    #[doc(alias = "gtk_print_operation_result_get_type")]
9646    fn static_type() -> glib::Type {
9647        unsafe { from_glib(ffi::gtk_print_operation_result_get_type()) }
9648    }
9649}
9650
9651impl glib::HasParamSpec for PrintOperationResult {
9652    type ParamSpec = glib::ParamSpecEnum;
9653    type SetValue = Self;
9654    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9655
9656    fn param_spec_builder() -> Self::BuilderFn {
9657        Self::ParamSpec::builder_with_default
9658    }
9659}
9660
9661impl glib::value::ValueType for PrintOperationResult {
9662    type Type = Self;
9663}
9664
9665unsafe impl<'a> glib::value::FromValue<'a> for PrintOperationResult {
9666    type Checker = glib::value::GenericValueTypeChecker<Self>;
9667
9668    #[inline]
9669    unsafe fn from_value(value: &'a glib::Value) -> Self {
9670        skip_assert_initialized!();
9671        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9672    }
9673}
9674
9675impl ToValue for PrintOperationResult {
9676    #[inline]
9677    fn to_value(&self) -> glib::Value {
9678        let mut value = glib::Value::for_value_type::<Self>();
9679        unsafe {
9680            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9681        }
9682        value
9683    }
9684
9685    #[inline]
9686    fn value_type(&self) -> glib::Type {
9687        Self::static_type()
9688    }
9689}
9690
9691impl From<PrintOperationResult> for glib::Value {
9692    #[inline]
9693    fn from(v: PrintOperationResult) -> Self {
9694        skip_assert_initialized!();
9695        ToValue::to_value(&v)
9696    }
9697}
9698
9699/// See also gtk_print_job_set_pages()
9700#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9701#[non_exhaustive]
9702#[doc(alias = "GtkPrintPages")]
9703pub enum PrintPages {
9704    /// All pages.
9705    #[doc(alias = "GTK_PRINT_PAGES_ALL")]
9706    All,
9707    /// Current page.
9708    #[doc(alias = "GTK_PRINT_PAGES_CURRENT")]
9709    Current,
9710    /// Range of pages.
9711    #[doc(alias = "GTK_PRINT_PAGES_RANGES")]
9712    Ranges,
9713    /// Selected pages.
9714    #[doc(alias = "GTK_PRINT_PAGES_SELECTION")]
9715    Selection,
9716    #[doc(hidden)]
9717    __Unknown(i32),
9718}
9719
9720#[doc(hidden)]
9721impl IntoGlib for PrintPages {
9722    type GlibType = ffi::GtkPrintPages;
9723
9724    #[inline]
9725    fn into_glib(self) -> ffi::GtkPrintPages {
9726        match self {
9727            Self::All => ffi::GTK_PRINT_PAGES_ALL,
9728            Self::Current => ffi::GTK_PRINT_PAGES_CURRENT,
9729            Self::Ranges => ffi::GTK_PRINT_PAGES_RANGES,
9730            Self::Selection => ffi::GTK_PRINT_PAGES_SELECTION,
9731            Self::__Unknown(value) => value,
9732        }
9733    }
9734}
9735
9736#[doc(hidden)]
9737impl FromGlib<ffi::GtkPrintPages> for PrintPages {
9738    #[inline]
9739    unsafe fn from_glib(value: ffi::GtkPrintPages) -> Self {
9740        skip_assert_initialized!();
9741
9742        match value {
9743            ffi::GTK_PRINT_PAGES_ALL => Self::All,
9744            ffi::GTK_PRINT_PAGES_CURRENT => Self::Current,
9745            ffi::GTK_PRINT_PAGES_RANGES => Self::Ranges,
9746            ffi::GTK_PRINT_PAGES_SELECTION => Self::Selection,
9747            value => Self::__Unknown(value),
9748        }
9749    }
9750}
9751
9752impl StaticType for PrintPages {
9753    #[inline]
9754    #[doc(alias = "gtk_print_pages_get_type")]
9755    fn static_type() -> glib::Type {
9756        unsafe { from_glib(ffi::gtk_print_pages_get_type()) }
9757    }
9758}
9759
9760impl glib::HasParamSpec for PrintPages {
9761    type ParamSpec = glib::ParamSpecEnum;
9762    type SetValue = Self;
9763    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9764
9765    fn param_spec_builder() -> Self::BuilderFn {
9766        Self::ParamSpec::builder_with_default
9767    }
9768}
9769
9770impl glib::value::ValueType for PrintPages {
9771    type Type = Self;
9772}
9773
9774unsafe impl<'a> glib::value::FromValue<'a> for PrintPages {
9775    type Checker = glib::value::GenericValueTypeChecker<Self>;
9776
9777    #[inline]
9778    unsafe fn from_value(value: &'a glib::Value) -> Self {
9779        skip_assert_initialized!();
9780        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9781    }
9782}
9783
9784impl ToValue for PrintPages {
9785    #[inline]
9786    fn to_value(&self) -> glib::Value {
9787        let mut value = glib::Value::for_value_type::<Self>();
9788        unsafe {
9789            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9790        }
9791        value
9792    }
9793
9794    #[inline]
9795    fn value_type(&self) -> glib::Type {
9796        Self::static_type()
9797    }
9798}
9799
9800impl From<PrintPages> for glib::Value {
9801    #[inline]
9802    fn from(v: PrintPages) -> Self {
9803        skip_assert_initialized!();
9804        ToValue::to_value(&v)
9805    }
9806}
9807
9808/// See also gtk_print_settings_set_quality().
9809#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9810#[non_exhaustive]
9811#[doc(alias = "GtkPrintQuality")]
9812pub enum PrintQuality {
9813    /// Low quality.
9814    #[doc(alias = "GTK_PRINT_QUALITY_LOW")]
9815    Low,
9816    /// Normal quality.
9817    #[doc(alias = "GTK_PRINT_QUALITY_NORMAL")]
9818    Normal,
9819    /// High quality.
9820    #[doc(alias = "GTK_PRINT_QUALITY_HIGH")]
9821    High,
9822    /// Draft quality.
9823    #[doc(alias = "GTK_PRINT_QUALITY_DRAFT")]
9824    Draft,
9825    #[doc(hidden)]
9826    __Unknown(i32),
9827}
9828
9829#[doc(hidden)]
9830impl IntoGlib for PrintQuality {
9831    type GlibType = ffi::GtkPrintQuality;
9832
9833    #[inline]
9834    fn into_glib(self) -> ffi::GtkPrintQuality {
9835        match self {
9836            Self::Low => ffi::GTK_PRINT_QUALITY_LOW,
9837            Self::Normal => ffi::GTK_PRINT_QUALITY_NORMAL,
9838            Self::High => ffi::GTK_PRINT_QUALITY_HIGH,
9839            Self::Draft => ffi::GTK_PRINT_QUALITY_DRAFT,
9840            Self::__Unknown(value) => value,
9841        }
9842    }
9843}
9844
9845#[doc(hidden)]
9846impl FromGlib<ffi::GtkPrintQuality> for PrintQuality {
9847    #[inline]
9848    unsafe fn from_glib(value: ffi::GtkPrintQuality) -> Self {
9849        skip_assert_initialized!();
9850
9851        match value {
9852            ffi::GTK_PRINT_QUALITY_LOW => Self::Low,
9853            ffi::GTK_PRINT_QUALITY_NORMAL => Self::Normal,
9854            ffi::GTK_PRINT_QUALITY_HIGH => Self::High,
9855            ffi::GTK_PRINT_QUALITY_DRAFT => Self::Draft,
9856            value => Self::__Unknown(value),
9857        }
9858    }
9859}
9860
9861impl StaticType for PrintQuality {
9862    #[inline]
9863    #[doc(alias = "gtk_print_quality_get_type")]
9864    fn static_type() -> glib::Type {
9865        unsafe { from_glib(ffi::gtk_print_quality_get_type()) }
9866    }
9867}
9868
9869impl glib::HasParamSpec for PrintQuality {
9870    type ParamSpec = glib::ParamSpecEnum;
9871    type SetValue = Self;
9872    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9873
9874    fn param_spec_builder() -> Self::BuilderFn {
9875        Self::ParamSpec::builder_with_default
9876    }
9877}
9878
9879impl glib::value::ValueType for PrintQuality {
9880    type Type = Self;
9881}
9882
9883unsafe impl<'a> glib::value::FromValue<'a> for PrintQuality {
9884    type Checker = glib::value::GenericValueTypeChecker<Self>;
9885
9886    #[inline]
9887    unsafe fn from_value(value: &'a glib::Value) -> Self {
9888        skip_assert_initialized!();
9889        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9890    }
9891}
9892
9893impl ToValue for PrintQuality {
9894    #[inline]
9895    fn to_value(&self) -> glib::Value {
9896        let mut value = glib::Value::for_value_type::<Self>();
9897        unsafe {
9898            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9899        }
9900        value
9901    }
9902
9903    #[inline]
9904    fn value_type(&self) -> glib::Type {
9905        Self::static_type()
9906    }
9907}
9908
9909impl From<PrintQuality> for glib::Value {
9910    #[inline]
9911    fn from(v: PrintQuality) -> Self {
9912        skip_assert_initialized!();
9913        ToValue::to_value(&v)
9914    }
9915}
9916
9917/// The status gives a rough indication of the completion of a running
9918/// print operation.
9919#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9920#[non_exhaustive]
9921#[doc(alias = "GtkPrintStatus")]
9922pub enum PrintStatus {
9923    /// The printing has not started yet; this
9924    ///   status is set initially, and while the print dialog is shown.
9925    #[doc(alias = "GTK_PRINT_STATUS_INITIAL")]
9926    Initial,
9927    /// This status is set while the begin-print
9928    ///   signal is emitted and during pagination.
9929    #[doc(alias = "GTK_PRINT_STATUS_PREPARING")]
9930    Preparing,
9931    /// This status is set while the
9932    ///   pages are being rendered.
9933    #[doc(alias = "GTK_PRINT_STATUS_GENERATING_DATA")]
9934    GeneratingData,
9935    /// The print job is being sent off to the
9936    ///   printer.
9937    #[doc(alias = "GTK_PRINT_STATUS_SENDING_DATA")]
9938    SendingData,
9939    /// The print job has been sent to the printer,
9940    ///   but is not printed for some reason, e.g. the printer may be stopped.
9941    #[doc(alias = "GTK_PRINT_STATUS_PENDING")]
9942    Pending,
9943    /// Some problem has occurred during
9944    ///   printing, e.g. a paper jam.
9945    #[doc(alias = "GTK_PRINT_STATUS_PENDING_ISSUE")]
9946    PendingIssue,
9947    /// The printer is processing the print job.
9948    #[doc(alias = "GTK_PRINT_STATUS_PRINTING")]
9949    Printing,
9950    /// The printing has been completed successfully.
9951    #[doc(alias = "GTK_PRINT_STATUS_FINISHED")]
9952    Finished,
9953    /// The printing has been aborted.
9954    #[doc(alias = "GTK_PRINT_STATUS_FINISHED_ABORTED")]
9955    FinishedAborted,
9956    #[doc(hidden)]
9957    __Unknown(i32),
9958}
9959
9960#[doc(hidden)]
9961impl IntoGlib for PrintStatus {
9962    type GlibType = ffi::GtkPrintStatus;
9963
9964    #[inline]
9965    fn into_glib(self) -> ffi::GtkPrintStatus {
9966        match self {
9967            Self::Initial => ffi::GTK_PRINT_STATUS_INITIAL,
9968            Self::Preparing => ffi::GTK_PRINT_STATUS_PREPARING,
9969            Self::GeneratingData => ffi::GTK_PRINT_STATUS_GENERATING_DATA,
9970            Self::SendingData => ffi::GTK_PRINT_STATUS_SENDING_DATA,
9971            Self::Pending => ffi::GTK_PRINT_STATUS_PENDING,
9972            Self::PendingIssue => ffi::GTK_PRINT_STATUS_PENDING_ISSUE,
9973            Self::Printing => ffi::GTK_PRINT_STATUS_PRINTING,
9974            Self::Finished => ffi::GTK_PRINT_STATUS_FINISHED,
9975            Self::FinishedAborted => ffi::GTK_PRINT_STATUS_FINISHED_ABORTED,
9976            Self::__Unknown(value) => value,
9977        }
9978    }
9979}
9980
9981#[doc(hidden)]
9982impl FromGlib<ffi::GtkPrintStatus> for PrintStatus {
9983    #[inline]
9984    unsafe fn from_glib(value: ffi::GtkPrintStatus) -> Self {
9985        skip_assert_initialized!();
9986
9987        match value {
9988            ffi::GTK_PRINT_STATUS_INITIAL => Self::Initial,
9989            ffi::GTK_PRINT_STATUS_PREPARING => Self::Preparing,
9990            ffi::GTK_PRINT_STATUS_GENERATING_DATA => Self::GeneratingData,
9991            ffi::GTK_PRINT_STATUS_SENDING_DATA => Self::SendingData,
9992            ffi::GTK_PRINT_STATUS_PENDING => Self::Pending,
9993            ffi::GTK_PRINT_STATUS_PENDING_ISSUE => Self::PendingIssue,
9994            ffi::GTK_PRINT_STATUS_PRINTING => Self::Printing,
9995            ffi::GTK_PRINT_STATUS_FINISHED => Self::Finished,
9996            ffi::GTK_PRINT_STATUS_FINISHED_ABORTED => Self::FinishedAborted,
9997            value => Self::__Unknown(value),
9998        }
9999    }
10000}
10001
10002impl StaticType for PrintStatus {
10003    #[inline]
10004    #[doc(alias = "gtk_print_status_get_type")]
10005    fn static_type() -> glib::Type {
10006        unsafe { from_glib(ffi::gtk_print_status_get_type()) }
10007    }
10008}
10009
10010impl glib::HasParamSpec for PrintStatus {
10011    type ParamSpec = glib::ParamSpecEnum;
10012    type SetValue = Self;
10013    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10014
10015    fn param_spec_builder() -> Self::BuilderFn {
10016        Self::ParamSpec::builder_with_default
10017    }
10018}
10019
10020impl glib::value::ValueType for PrintStatus {
10021    type Type = Self;
10022}
10023
10024unsafe impl<'a> glib::value::FromValue<'a> for PrintStatus {
10025    type Checker = glib::value::GenericValueTypeChecker<Self>;
10026
10027    #[inline]
10028    unsafe fn from_value(value: &'a glib::Value) -> Self {
10029        skip_assert_initialized!();
10030        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10031    }
10032}
10033
10034impl ToValue for PrintStatus {
10035    #[inline]
10036    fn to_value(&self) -> glib::Value {
10037        let mut value = glib::Value::for_value_type::<Self>();
10038        unsafe {
10039            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10040        }
10041        value
10042    }
10043
10044    #[inline]
10045    fn value_type(&self) -> glib::Type {
10046        Self::static_type()
10047    }
10048}
10049
10050impl From<PrintStatus> for glib::Value {
10051    #[inline]
10052    fn from(v: PrintStatus) -> Self {
10053        skip_assert_initialized!();
10054        ToValue::to_value(&v)
10055    }
10056}
10057
10058/// Describes limits of a [`EventController`][crate::EventController] for handling events
10059/// targeting other widgets.
10060#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10061#[non_exhaustive]
10062#[doc(alias = "GtkPropagationLimit")]
10063pub enum PropagationLimit {
10064    /// Events are handled regardless of what their
10065    ///   target is.
10066    #[doc(alias = "GTK_LIMIT_NONE")]
10067    None,
10068    /// Events are only handled if their target is in
10069    ///   the same [`Native`][crate::Native] (or widget with [`limit-events`][struct@crate::Widget#limit-events]
10070    ///   set) as the event controllers widget.
10071    ///   Note that some event types have two targets (origin and destination).
10072    #[doc(alias = "GTK_LIMIT_SAME_NATIVE")]
10073    SameNative,
10074    #[doc(hidden)]
10075    __Unknown(i32),
10076}
10077
10078#[doc(hidden)]
10079impl IntoGlib for PropagationLimit {
10080    type GlibType = ffi::GtkPropagationLimit;
10081
10082    #[inline]
10083    fn into_glib(self) -> ffi::GtkPropagationLimit {
10084        match self {
10085            Self::None => ffi::GTK_LIMIT_NONE,
10086            Self::SameNative => ffi::GTK_LIMIT_SAME_NATIVE,
10087            Self::__Unknown(value) => value,
10088        }
10089    }
10090}
10091
10092#[doc(hidden)]
10093impl FromGlib<ffi::GtkPropagationLimit> for PropagationLimit {
10094    #[inline]
10095    unsafe fn from_glib(value: ffi::GtkPropagationLimit) -> Self {
10096        skip_assert_initialized!();
10097
10098        match value {
10099            ffi::GTK_LIMIT_NONE => Self::None,
10100            ffi::GTK_LIMIT_SAME_NATIVE => Self::SameNative,
10101            value => Self::__Unknown(value),
10102        }
10103    }
10104}
10105
10106impl StaticType for PropagationLimit {
10107    #[inline]
10108    #[doc(alias = "gtk_propagation_limit_get_type")]
10109    fn static_type() -> glib::Type {
10110        unsafe { from_glib(ffi::gtk_propagation_limit_get_type()) }
10111    }
10112}
10113
10114impl glib::HasParamSpec for PropagationLimit {
10115    type ParamSpec = glib::ParamSpecEnum;
10116    type SetValue = Self;
10117    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10118
10119    fn param_spec_builder() -> Self::BuilderFn {
10120        Self::ParamSpec::builder_with_default
10121    }
10122}
10123
10124impl glib::value::ValueType for PropagationLimit {
10125    type Type = Self;
10126}
10127
10128unsafe impl<'a> glib::value::FromValue<'a> for PropagationLimit {
10129    type Checker = glib::value::GenericValueTypeChecker<Self>;
10130
10131    #[inline]
10132    unsafe fn from_value(value: &'a glib::Value) -> Self {
10133        skip_assert_initialized!();
10134        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10135    }
10136}
10137
10138impl ToValue for PropagationLimit {
10139    #[inline]
10140    fn to_value(&self) -> glib::Value {
10141        let mut value = glib::Value::for_value_type::<Self>();
10142        unsafe {
10143            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10144        }
10145        value
10146    }
10147
10148    #[inline]
10149    fn value_type(&self) -> glib::Type {
10150        Self::static_type()
10151    }
10152}
10153
10154impl From<PropagationLimit> for glib::Value {
10155    #[inline]
10156    fn from(v: PropagationLimit) -> Self {
10157        skip_assert_initialized!();
10158        ToValue::to_value(&v)
10159    }
10160}
10161
10162/// Describes the stage at which events are fed into a [`EventController`][crate::EventController].
10163#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10164#[non_exhaustive]
10165#[doc(alias = "GtkPropagationPhase")]
10166pub enum PropagationPhase {
10167    /// Events are not delivered.
10168    #[doc(alias = "GTK_PHASE_NONE")]
10169    None,
10170    /// Events are delivered in the capture phase. The
10171    ///   capture phase happens before the bubble phase, runs from the toplevel down
10172    ///   to the event widget. This option should only be used on containers that
10173    ///   might possibly handle events before their children do.
10174    #[doc(alias = "GTK_PHASE_CAPTURE")]
10175    Capture,
10176    /// Events are delivered in the bubble phase. The bubble
10177    ///   phase happens after the capture phase, and before the default handlers
10178    ///   are run. This phase runs from the event widget, up to the toplevel.
10179    #[doc(alias = "GTK_PHASE_BUBBLE")]
10180    Bubble,
10181    /// Events are delivered in the default widget event handlers,
10182    ///   note that widget implementations must chain up on button, motion, touch and
10183    ///   grab broken handlers for controllers in this phase to be run.
10184    #[doc(alias = "GTK_PHASE_TARGET")]
10185    Target,
10186    #[doc(hidden)]
10187    __Unknown(i32),
10188}
10189
10190#[doc(hidden)]
10191impl IntoGlib for PropagationPhase {
10192    type GlibType = ffi::GtkPropagationPhase;
10193
10194    #[inline]
10195    fn into_glib(self) -> ffi::GtkPropagationPhase {
10196        match self {
10197            Self::None => ffi::GTK_PHASE_NONE,
10198            Self::Capture => ffi::GTK_PHASE_CAPTURE,
10199            Self::Bubble => ffi::GTK_PHASE_BUBBLE,
10200            Self::Target => ffi::GTK_PHASE_TARGET,
10201            Self::__Unknown(value) => value,
10202        }
10203    }
10204}
10205
10206#[doc(hidden)]
10207impl FromGlib<ffi::GtkPropagationPhase> for PropagationPhase {
10208    #[inline]
10209    unsafe fn from_glib(value: ffi::GtkPropagationPhase) -> Self {
10210        skip_assert_initialized!();
10211
10212        match value {
10213            ffi::GTK_PHASE_NONE => Self::None,
10214            ffi::GTK_PHASE_CAPTURE => Self::Capture,
10215            ffi::GTK_PHASE_BUBBLE => Self::Bubble,
10216            ffi::GTK_PHASE_TARGET => Self::Target,
10217            value => Self::__Unknown(value),
10218        }
10219    }
10220}
10221
10222impl StaticType for PropagationPhase {
10223    #[inline]
10224    #[doc(alias = "gtk_propagation_phase_get_type")]
10225    fn static_type() -> glib::Type {
10226        unsafe { from_glib(ffi::gtk_propagation_phase_get_type()) }
10227    }
10228}
10229
10230impl glib::HasParamSpec for PropagationPhase {
10231    type ParamSpec = glib::ParamSpecEnum;
10232    type SetValue = Self;
10233    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10234
10235    fn param_spec_builder() -> Self::BuilderFn {
10236        Self::ParamSpec::builder_with_default
10237    }
10238}
10239
10240impl glib::value::ValueType for PropagationPhase {
10241    type Type = Self;
10242}
10243
10244unsafe impl<'a> glib::value::FromValue<'a> for PropagationPhase {
10245    type Checker = glib::value::GenericValueTypeChecker<Self>;
10246
10247    #[inline]
10248    unsafe fn from_value(value: &'a glib::Value) -> Self {
10249        skip_assert_initialized!();
10250        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10251    }
10252}
10253
10254impl ToValue for PropagationPhase {
10255    #[inline]
10256    fn to_value(&self) -> glib::Value {
10257        let mut value = glib::Value::for_value_type::<Self>();
10258        unsafe {
10259            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10260        }
10261        value
10262    }
10263
10264    #[inline]
10265    fn value_type(&self) -> glib::Type {
10266        Self::static_type()
10267    }
10268}
10269
10270impl From<PropagationPhase> for glib::Value {
10271    #[inline]
10272    fn from(v: PropagationPhase) -> Self {
10273        skip_assert_initialized!();
10274        ToValue::to_value(&v)
10275    }
10276}
10277
10278/// Error codes for [`RecentManager`][crate::RecentManager] operations
10279#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10280#[non_exhaustive]
10281#[doc(alias = "GtkRecentManagerError")]
10282pub enum RecentManagerError {
10283    /// the URI specified does not exists in
10284    ///   the recently used resources list.
10285    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_NOT_FOUND")]
10286    NotFound,
10287    /// the URI specified is not valid.
10288    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_INVALID_URI")]
10289    InvalidUri,
10290    /// the supplied string is not
10291    ///   UTF-8 encoded.
10292    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING")]
10293    InvalidEncoding,
10294    /// no application has registered
10295    ///   the specified item.
10296    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED")]
10297    NotRegistered,
10298    /// failure while reading the recently used
10299    ///   resources file.
10300    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_READ")]
10301    Read,
10302    /// failure while writing the recently used
10303    ///   resources file.
10304    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_WRITE")]
10305    Write,
10306    /// unspecified error.
10307    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_UNKNOWN")]
10308    Unknown,
10309    #[doc(hidden)]
10310    __Unknown(i32),
10311}
10312
10313#[doc(hidden)]
10314impl IntoGlib for RecentManagerError {
10315    type GlibType = ffi::GtkRecentManagerError;
10316
10317    #[inline]
10318    fn into_glib(self) -> ffi::GtkRecentManagerError {
10319        match self {
10320            Self::NotFound => ffi::GTK_RECENT_MANAGER_ERROR_NOT_FOUND,
10321            Self::InvalidUri => ffi::GTK_RECENT_MANAGER_ERROR_INVALID_URI,
10322            Self::InvalidEncoding => ffi::GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING,
10323            Self::NotRegistered => ffi::GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED,
10324            Self::Read => ffi::GTK_RECENT_MANAGER_ERROR_READ,
10325            Self::Write => ffi::GTK_RECENT_MANAGER_ERROR_WRITE,
10326            Self::Unknown => ffi::GTK_RECENT_MANAGER_ERROR_UNKNOWN,
10327            Self::__Unknown(value) => value,
10328        }
10329    }
10330}
10331
10332#[doc(hidden)]
10333impl FromGlib<ffi::GtkRecentManagerError> for RecentManagerError {
10334    #[inline]
10335    unsafe fn from_glib(value: ffi::GtkRecentManagerError) -> Self {
10336        skip_assert_initialized!();
10337
10338        match value {
10339            ffi::GTK_RECENT_MANAGER_ERROR_NOT_FOUND => Self::NotFound,
10340            ffi::GTK_RECENT_MANAGER_ERROR_INVALID_URI => Self::InvalidUri,
10341            ffi::GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING => Self::InvalidEncoding,
10342            ffi::GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED => Self::NotRegistered,
10343            ffi::GTK_RECENT_MANAGER_ERROR_READ => Self::Read,
10344            ffi::GTK_RECENT_MANAGER_ERROR_WRITE => Self::Write,
10345            ffi::GTK_RECENT_MANAGER_ERROR_UNKNOWN => Self::Unknown,
10346            value => Self::__Unknown(value),
10347        }
10348    }
10349}
10350
10351impl glib::error::ErrorDomain for RecentManagerError {
10352    #[inline]
10353    fn domain() -> glib::Quark {
10354        skip_assert_initialized!();
10355
10356        unsafe { from_glib(ffi::gtk_recent_manager_error_quark()) }
10357    }
10358
10359    #[inline]
10360    fn code(self) -> i32 {
10361        self.into_glib()
10362    }
10363
10364    #[inline]
10365    #[allow(clippy::match_single_binding)]
10366    fn from(code: i32) -> Option<Self> {
10367        skip_assert_initialized!();
10368        match unsafe { from_glib(code) } {
10369            value => Some(value),
10370        }
10371    }
10372}
10373
10374impl StaticType for RecentManagerError {
10375    #[inline]
10376    #[doc(alias = "gtk_recent_manager_error_get_type")]
10377    fn static_type() -> glib::Type {
10378        unsafe { from_glib(ffi::gtk_recent_manager_error_get_type()) }
10379    }
10380}
10381
10382impl glib::HasParamSpec for RecentManagerError {
10383    type ParamSpec = glib::ParamSpecEnum;
10384    type SetValue = Self;
10385    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10386
10387    fn param_spec_builder() -> Self::BuilderFn {
10388        Self::ParamSpec::builder_with_default
10389    }
10390}
10391
10392impl glib::value::ValueType for RecentManagerError {
10393    type Type = Self;
10394}
10395
10396unsafe impl<'a> glib::value::FromValue<'a> for RecentManagerError {
10397    type Checker = glib::value::GenericValueTypeChecker<Self>;
10398
10399    #[inline]
10400    unsafe fn from_value(value: &'a glib::Value) -> Self {
10401        skip_assert_initialized!();
10402        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10403    }
10404}
10405
10406impl ToValue for RecentManagerError {
10407    #[inline]
10408    fn to_value(&self) -> glib::Value {
10409        let mut value = glib::Value::for_value_type::<Self>();
10410        unsafe {
10411            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10412        }
10413        value
10414    }
10415
10416    #[inline]
10417    fn value_type(&self) -> glib::Type {
10418        Self::static_type()
10419    }
10420}
10421
10422impl From<RecentManagerError> for glib::Value {
10423    #[inline]
10424    fn from(v: RecentManagerError) -> Self {
10425        skip_assert_initialized!();
10426        ToValue::to_value(&v)
10427    }
10428}
10429
10430/// Values for the [`gtk-interface-reduced-motion`][struct@crate::Settings#gtk-interface-reduced-motion]
10431/// and [`prefers-reduced-motion`][struct@crate::CssProvider#prefers-reduced-motion] properties
10432/// that indicates the preferred level of motion animations.
10433///
10434/// This information can be used inside CSS via media queries.
10435#[cfg(feature = "v4_22")]
10436#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10437#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10438#[non_exhaustive]
10439#[doc(alias = "GtkReducedMotion")]
10440pub enum ReducedMotion {
10441    /// The user has made no preference known to the system
10442    #[doc(alias = "GTK_REDUCED_MOTION_NO_PREFERENCE")]
10443    NoPreference,
10444    /// The user has notified the system that they
10445    ///   prefer an interface that removes or replaces the types of motion-based
10446    ///   animation that either trigger discomfort for those with vestibular
10447    ///   motion sensitivity, or distraction for those with attention deficits
10448    #[doc(alias = "GTK_REDUCED_MOTION_REDUCE")]
10449    Reduce,
10450    #[doc(hidden)]
10451    __Unknown(i32),
10452}
10453
10454#[cfg(feature = "v4_22")]
10455#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10456#[doc(hidden)]
10457impl IntoGlib for ReducedMotion {
10458    type GlibType = ffi::GtkReducedMotion;
10459
10460    #[inline]
10461    fn into_glib(self) -> ffi::GtkReducedMotion {
10462        match self {
10463            Self::NoPreference => ffi::GTK_REDUCED_MOTION_NO_PREFERENCE,
10464            Self::Reduce => ffi::GTK_REDUCED_MOTION_REDUCE,
10465            Self::__Unknown(value) => value,
10466        }
10467    }
10468}
10469
10470#[cfg(feature = "v4_22")]
10471#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10472#[doc(hidden)]
10473impl FromGlib<ffi::GtkReducedMotion> for ReducedMotion {
10474    #[inline]
10475    unsafe fn from_glib(value: ffi::GtkReducedMotion) -> Self {
10476        skip_assert_initialized!();
10477
10478        match value {
10479            ffi::GTK_REDUCED_MOTION_NO_PREFERENCE => Self::NoPreference,
10480            ffi::GTK_REDUCED_MOTION_REDUCE => Self::Reduce,
10481            value => Self::__Unknown(value),
10482        }
10483    }
10484}
10485
10486#[cfg(feature = "v4_22")]
10487#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10488impl StaticType for ReducedMotion {
10489    #[inline]
10490    #[doc(alias = "gtk_reduced_motion_get_type")]
10491    fn static_type() -> glib::Type {
10492        unsafe { from_glib(ffi::gtk_reduced_motion_get_type()) }
10493    }
10494}
10495
10496#[cfg(feature = "v4_22")]
10497#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10498impl glib::HasParamSpec for ReducedMotion {
10499    type ParamSpec = glib::ParamSpecEnum;
10500    type SetValue = Self;
10501    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10502
10503    fn param_spec_builder() -> Self::BuilderFn {
10504        Self::ParamSpec::builder_with_default
10505    }
10506}
10507
10508#[cfg(feature = "v4_22")]
10509#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10510impl glib::value::ValueType for ReducedMotion {
10511    type Type = Self;
10512}
10513
10514#[cfg(feature = "v4_22")]
10515#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10516unsafe impl<'a> glib::value::FromValue<'a> for ReducedMotion {
10517    type Checker = glib::value::GenericValueTypeChecker<Self>;
10518
10519    #[inline]
10520    unsafe fn from_value(value: &'a glib::Value) -> Self {
10521        skip_assert_initialized!();
10522        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10523    }
10524}
10525
10526#[cfg(feature = "v4_22")]
10527#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10528impl ToValue for ReducedMotion {
10529    #[inline]
10530    fn to_value(&self) -> glib::Value {
10531        let mut value = glib::Value::for_value_type::<Self>();
10532        unsafe {
10533            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10534        }
10535        value
10536    }
10537
10538    #[inline]
10539    fn value_type(&self) -> glib::Type {
10540        Self::static_type()
10541    }
10542}
10543
10544#[cfg(feature = "v4_22")]
10545#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10546impl From<ReducedMotion> for glib::Value {
10547    #[inline]
10548    fn from(v: ReducedMotion) -> Self {
10549        skip_assert_initialized!();
10550        ToValue::to_value(&v)
10551    }
10552}
10553
10554/// These enumeration values describe the possible transitions
10555/// when the child of a [`Revealer`][crate::Revealer] widget is shown or hidden.
10556#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10557#[non_exhaustive]
10558#[doc(alias = "GtkRevealerTransitionType")]
10559pub enum RevealerTransitionType {
10560    /// No transition
10561    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_NONE")]
10562    None,
10563    /// Fade in
10564    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_CROSSFADE")]
10565    Crossfade,
10566    /// Slide in from the left
10567    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT")]
10568    SlideRight,
10569    /// Slide in from the right
10570    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT")]
10571    SlideLeft,
10572    /// Slide in from the bottom
10573    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP")]
10574    SlideUp,
10575    /// Slide in from the top
10576    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN")]
10577    SlideDown,
10578    /// Floop in from the left
10579    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT")]
10580    SwingRight,
10581    /// Floop in from the right
10582    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT")]
10583    SwingLeft,
10584    /// Floop in from the bottom
10585    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_UP")]
10586    SwingUp,
10587    /// Floop in from the top
10588    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN")]
10589    SwingDown,
10590    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10591    /// and [enum@Gtk.RevealerTransitionType.SLIDE_RIGHT].
10592    #[cfg(feature = "v4_22")]
10593    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10594    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT")]
10595    FadeSlideRight,
10596    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10597    /// and [enum@Gtk.RevealerTransitionType.SLIDE_LEFT].
10598    #[cfg(feature = "v4_22")]
10599    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10600    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT")]
10601    FadeSlideLeft,
10602    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10603    /// and [enum@Gtk.RevealerTransitionType.SLIDE_UP].
10604    #[cfg(feature = "v4_22")]
10605    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10606    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP")]
10607    FadeSlideUp,
10608    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10609    /// and [enum@Gtk.RevealerTransitionType.SLIDE_DOWN].
10610    #[cfg(feature = "v4_22")]
10611    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10612    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN")]
10613    FadeSlideDown,
10614    #[doc(hidden)]
10615    __Unknown(i32),
10616}
10617
10618#[doc(hidden)]
10619impl IntoGlib for RevealerTransitionType {
10620    type GlibType = ffi::GtkRevealerTransitionType;
10621
10622    fn into_glib(self) -> ffi::GtkRevealerTransitionType {
10623        match self {
10624            Self::None => ffi::GTK_REVEALER_TRANSITION_TYPE_NONE,
10625            Self::Crossfade => ffi::GTK_REVEALER_TRANSITION_TYPE_CROSSFADE,
10626            Self::SlideRight => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT,
10627            Self::SlideLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT,
10628            Self::SlideUp => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP,
10629            Self::SlideDown => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN,
10630            Self::SwingRight => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT,
10631            Self::SwingLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT,
10632            Self::SwingUp => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_UP,
10633            Self::SwingDown => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN,
10634            #[cfg(feature = "v4_22")]
10635            Self::FadeSlideRight => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT,
10636            #[cfg(feature = "v4_22")]
10637            Self::FadeSlideLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT,
10638            #[cfg(feature = "v4_22")]
10639            Self::FadeSlideUp => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP,
10640            #[cfg(feature = "v4_22")]
10641            Self::FadeSlideDown => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN,
10642            Self::__Unknown(value) => value,
10643        }
10644    }
10645}
10646
10647#[doc(hidden)]
10648impl FromGlib<ffi::GtkRevealerTransitionType> for RevealerTransitionType {
10649    unsafe fn from_glib(value: ffi::GtkRevealerTransitionType) -> Self {
10650        skip_assert_initialized!();
10651
10652        match value {
10653            ffi::GTK_REVEALER_TRANSITION_TYPE_NONE => Self::None,
10654            ffi::GTK_REVEALER_TRANSITION_TYPE_CROSSFADE => Self::Crossfade,
10655            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT => Self::SlideRight,
10656            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT => Self::SlideLeft,
10657            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP => Self::SlideUp,
10658            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN => Self::SlideDown,
10659            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT => Self::SwingRight,
10660            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT => Self::SwingLeft,
10661            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_UP => Self::SwingUp,
10662            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN => Self::SwingDown,
10663            #[cfg(feature = "v4_22")]
10664            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT => Self::FadeSlideRight,
10665            #[cfg(feature = "v4_22")]
10666            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT => Self::FadeSlideLeft,
10667            #[cfg(feature = "v4_22")]
10668            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP => Self::FadeSlideUp,
10669            #[cfg(feature = "v4_22")]
10670            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN => Self::FadeSlideDown,
10671            value => Self::__Unknown(value),
10672        }
10673    }
10674}
10675
10676impl StaticType for RevealerTransitionType {
10677    #[inline]
10678    #[doc(alias = "gtk_revealer_transition_type_get_type")]
10679    fn static_type() -> glib::Type {
10680        unsafe { from_glib(ffi::gtk_revealer_transition_type_get_type()) }
10681    }
10682}
10683
10684impl glib::HasParamSpec for RevealerTransitionType {
10685    type ParamSpec = glib::ParamSpecEnum;
10686    type SetValue = Self;
10687    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10688
10689    fn param_spec_builder() -> Self::BuilderFn {
10690        Self::ParamSpec::builder_with_default
10691    }
10692}
10693
10694impl glib::value::ValueType for RevealerTransitionType {
10695    type Type = Self;
10696}
10697
10698unsafe impl<'a> glib::value::FromValue<'a> for RevealerTransitionType {
10699    type Checker = glib::value::GenericValueTypeChecker<Self>;
10700
10701    #[inline]
10702    unsafe fn from_value(value: &'a glib::Value) -> Self {
10703        skip_assert_initialized!();
10704        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10705    }
10706}
10707
10708impl ToValue for RevealerTransitionType {
10709    #[inline]
10710    fn to_value(&self) -> glib::Value {
10711        let mut value = glib::Value::for_value_type::<Self>();
10712        unsafe {
10713            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10714        }
10715        value
10716    }
10717
10718    #[inline]
10719    fn value_type(&self) -> glib::Type {
10720        Self::static_type()
10721    }
10722}
10723
10724impl From<RevealerTransitionType> for glib::Value {
10725    #[inline]
10726    fn from(v: RevealerTransitionType) -> Self {
10727        skip_assert_initialized!();
10728        ToValue::to_value(&v)
10729    }
10730}
10731
10732/// Passed as argument to various keybinding signals.
10733#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10734#[non_exhaustive]
10735#[doc(alias = "GtkScrollStep")]
10736pub enum ScrollStep {
10737    /// Scroll in steps.
10738    #[doc(alias = "GTK_SCROLL_STEPS")]
10739    Steps,
10740    /// Scroll by pages.
10741    #[doc(alias = "GTK_SCROLL_PAGES")]
10742    Pages,
10743    /// Scroll to ends.
10744    #[doc(alias = "GTK_SCROLL_ENDS")]
10745    Ends,
10746    /// Scroll in horizontal steps.
10747    #[doc(alias = "GTK_SCROLL_HORIZONTAL_STEPS")]
10748    HorizontalSteps,
10749    /// Scroll by horizontal pages.
10750    #[doc(alias = "GTK_SCROLL_HORIZONTAL_PAGES")]
10751    HorizontalPages,
10752    /// Scroll to the horizontal ends.
10753    #[doc(alias = "GTK_SCROLL_HORIZONTAL_ENDS")]
10754    HorizontalEnds,
10755    #[doc(hidden)]
10756    __Unknown(i32),
10757}
10758
10759#[doc(hidden)]
10760impl IntoGlib for ScrollStep {
10761    type GlibType = ffi::GtkScrollStep;
10762
10763    #[inline]
10764    fn into_glib(self) -> ffi::GtkScrollStep {
10765        match self {
10766            Self::Steps => ffi::GTK_SCROLL_STEPS,
10767            Self::Pages => ffi::GTK_SCROLL_PAGES,
10768            Self::Ends => ffi::GTK_SCROLL_ENDS,
10769            Self::HorizontalSteps => ffi::GTK_SCROLL_HORIZONTAL_STEPS,
10770            Self::HorizontalPages => ffi::GTK_SCROLL_HORIZONTAL_PAGES,
10771            Self::HorizontalEnds => ffi::GTK_SCROLL_HORIZONTAL_ENDS,
10772            Self::__Unknown(value) => value,
10773        }
10774    }
10775}
10776
10777#[doc(hidden)]
10778impl FromGlib<ffi::GtkScrollStep> for ScrollStep {
10779    #[inline]
10780    unsafe fn from_glib(value: ffi::GtkScrollStep) -> Self {
10781        skip_assert_initialized!();
10782
10783        match value {
10784            ffi::GTK_SCROLL_STEPS => Self::Steps,
10785            ffi::GTK_SCROLL_PAGES => Self::Pages,
10786            ffi::GTK_SCROLL_ENDS => Self::Ends,
10787            ffi::GTK_SCROLL_HORIZONTAL_STEPS => Self::HorizontalSteps,
10788            ffi::GTK_SCROLL_HORIZONTAL_PAGES => Self::HorizontalPages,
10789            ffi::GTK_SCROLL_HORIZONTAL_ENDS => Self::HorizontalEnds,
10790            value => Self::__Unknown(value),
10791        }
10792    }
10793}
10794
10795impl StaticType for ScrollStep {
10796    #[inline]
10797    #[doc(alias = "gtk_scroll_step_get_type")]
10798    fn static_type() -> glib::Type {
10799        unsafe { from_glib(ffi::gtk_scroll_step_get_type()) }
10800    }
10801}
10802
10803impl glib::HasParamSpec for ScrollStep {
10804    type ParamSpec = glib::ParamSpecEnum;
10805    type SetValue = Self;
10806    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10807
10808    fn param_spec_builder() -> Self::BuilderFn {
10809        Self::ParamSpec::builder_with_default
10810    }
10811}
10812
10813impl glib::value::ValueType for ScrollStep {
10814    type Type = Self;
10815}
10816
10817unsafe impl<'a> glib::value::FromValue<'a> for ScrollStep {
10818    type Checker = glib::value::GenericValueTypeChecker<Self>;
10819
10820    #[inline]
10821    unsafe fn from_value(value: &'a glib::Value) -> Self {
10822        skip_assert_initialized!();
10823        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10824    }
10825}
10826
10827impl ToValue for ScrollStep {
10828    #[inline]
10829    fn to_value(&self) -> glib::Value {
10830        let mut value = glib::Value::for_value_type::<Self>();
10831        unsafe {
10832            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10833        }
10834        value
10835    }
10836
10837    #[inline]
10838    fn value_type(&self) -> glib::Type {
10839        Self::static_type()
10840    }
10841}
10842
10843impl From<ScrollStep> for glib::Value {
10844    #[inline]
10845    fn from(v: ScrollStep) -> Self {
10846        skip_assert_initialized!();
10847        ToValue::to_value(&v)
10848    }
10849}
10850
10851/// Scrolling types.
10852#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10853#[non_exhaustive]
10854#[doc(alias = "GtkScrollType")]
10855pub enum ScrollType {
10856    /// No scrolling.
10857    #[doc(alias = "GTK_SCROLL_NONE")]
10858    None,
10859    /// Jump to new location.
10860    #[doc(alias = "GTK_SCROLL_JUMP")]
10861    Jump,
10862    /// Step backward.
10863    #[doc(alias = "GTK_SCROLL_STEP_BACKWARD")]
10864    StepBackward,
10865    /// Step forward.
10866    #[doc(alias = "GTK_SCROLL_STEP_FORWARD")]
10867    StepForward,
10868    /// Page backward.
10869    #[doc(alias = "GTK_SCROLL_PAGE_BACKWARD")]
10870    PageBackward,
10871    /// Page forward.
10872    #[doc(alias = "GTK_SCROLL_PAGE_FORWARD")]
10873    PageForward,
10874    /// Step up.
10875    #[doc(alias = "GTK_SCROLL_STEP_UP")]
10876    StepUp,
10877    /// Step down.
10878    #[doc(alias = "GTK_SCROLL_STEP_DOWN")]
10879    StepDown,
10880    /// Page up.
10881    #[doc(alias = "GTK_SCROLL_PAGE_UP")]
10882    PageUp,
10883    /// Page down.
10884    #[doc(alias = "GTK_SCROLL_PAGE_DOWN")]
10885    PageDown,
10886    /// Step to the left.
10887    #[doc(alias = "GTK_SCROLL_STEP_LEFT")]
10888    StepLeft,
10889    /// Step to the right.
10890    #[doc(alias = "GTK_SCROLL_STEP_RIGHT")]
10891    StepRight,
10892    /// Page to the left.
10893    #[doc(alias = "GTK_SCROLL_PAGE_LEFT")]
10894    PageLeft,
10895    /// Page to the right.
10896    #[doc(alias = "GTK_SCROLL_PAGE_RIGHT")]
10897    PageRight,
10898    /// Scroll to start.
10899    #[doc(alias = "GTK_SCROLL_START")]
10900    Start,
10901    /// Scroll to end.
10902    #[doc(alias = "GTK_SCROLL_END")]
10903    End,
10904    #[doc(hidden)]
10905    __Unknown(i32),
10906}
10907
10908#[doc(hidden)]
10909impl IntoGlib for ScrollType {
10910    type GlibType = ffi::GtkScrollType;
10911
10912    fn into_glib(self) -> ffi::GtkScrollType {
10913        match self {
10914            Self::None => ffi::GTK_SCROLL_NONE,
10915            Self::Jump => ffi::GTK_SCROLL_JUMP,
10916            Self::StepBackward => ffi::GTK_SCROLL_STEP_BACKWARD,
10917            Self::StepForward => ffi::GTK_SCROLL_STEP_FORWARD,
10918            Self::PageBackward => ffi::GTK_SCROLL_PAGE_BACKWARD,
10919            Self::PageForward => ffi::GTK_SCROLL_PAGE_FORWARD,
10920            Self::StepUp => ffi::GTK_SCROLL_STEP_UP,
10921            Self::StepDown => ffi::GTK_SCROLL_STEP_DOWN,
10922            Self::PageUp => ffi::GTK_SCROLL_PAGE_UP,
10923            Self::PageDown => ffi::GTK_SCROLL_PAGE_DOWN,
10924            Self::StepLeft => ffi::GTK_SCROLL_STEP_LEFT,
10925            Self::StepRight => ffi::GTK_SCROLL_STEP_RIGHT,
10926            Self::PageLeft => ffi::GTK_SCROLL_PAGE_LEFT,
10927            Self::PageRight => ffi::GTK_SCROLL_PAGE_RIGHT,
10928            Self::Start => ffi::GTK_SCROLL_START,
10929            Self::End => ffi::GTK_SCROLL_END,
10930            Self::__Unknown(value) => value,
10931        }
10932    }
10933}
10934
10935#[doc(hidden)]
10936impl FromGlib<ffi::GtkScrollType> for ScrollType {
10937    unsafe fn from_glib(value: ffi::GtkScrollType) -> Self {
10938        skip_assert_initialized!();
10939
10940        match value {
10941            ffi::GTK_SCROLL_NONE => Self::None,
10942            ffi::GTK_SCROLL_JUMP => Self::Jump,
10943            ffi::GTK_SCROLL_STEP_BACKWARD => Self::StepBackward,
10944            ffi::GTK_SCROLL_STEP_FORWARD => Self::StepForward,
10945            ffi::GTK_SCROLL_PAGE_BACKWARD => Self::PageBackward,
10946            ffi::GTK_SCROLL_PAGE_FORWARD => Self::PageForward,
10947            ffi::GTK_SCROLL_STEP_UP => Self::StepUp,
10948            ffi::GTK_SCROLL_STEP_DOWN => Self::StepDown,
10949            ffi::GTK_SCROLL_PAGE_UP => Self::PageUp,
10950            ffi::GTK_SCROLL_PAGE_DOWN => Self::PageDown,
10951            ffi::GTK_SCROLL_STEP_LEFT => Self::StepLeft,
10952            ffi::GTK_SCROLL_STEP_RIGHT => Self::StepRight,
10953            ffi::GTK_SCROLL_PAGE_LEFT => Self::PageLeft,
10954            ffi::GTK_SCROLL_PAGE_RIGHT => Self::PageRight,
10955            ffi::GTK_SCROLL_START => Self::Start,
10956            ffi::GTK_SCROLL_END => Self::End,
10957            value => Self::__Unknown(value),
10958        }
10959    }
10960}
10961
10962impl StaticType for ScrollType {
10963    #[inline]
10964    #[doc(alias = "gtk_scroll_type_get_type")]
10965    fn static_type() -> glib::Type {
10966        unsafe { from_glib(ffi::gtk_scroll_type_get_type()) }
10967    }
10968}
10969
10970impl glib::HasParamSpec for ScrollType {
10971    type ParamSpec = glib::ParamSpecEnum;
10972    type SetValue = Self;
10973    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10974
10975    fn param_spec_builder() -> Self::BuilderFn {
10976        Self::ParamSpec::builder_with_default
10977    }
10978}
10979
10980impl glib::value::ValueType for ScrollType {
10981    type Type = Self;
10982}
10983
10984unsafe impl<'a> glib::value::FromValue<'a> for ScrollType {
10985    type Checker = glib::value::GenericValueTypeChecker<Self>;
10986
10987    #[inline]
10988    unsafe fn from_value(value: &'a glib::Value) -> Self {
10989        skip_assert_initialized!();
10990        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10991    }
10992}
10993
10994impl ToValue for ScrollType {
10995    #[inline]
10996    fn to_value(&self) -> glib::Value {
10997        let mut value = glib::Value::for_value_type::<Self>();
10998        unsafe {
10999            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11000        }
11001        value
11002    }
11003
11004    #[inline]
11005    fn value_type(&self) -> glib::Type {
11006        Self::static_type()
11007    }
11008}
11009
11010impl From<ScrollType> for glib::Value {
11011    #[inline]
11012    fn from(v: ScrollType) -> Self {
11013        skip_assert_initialized!();
11014        ToValue::to_value(&v)
11015    }
11016}
11017
11018/// Defines the policy to be used in a scrollable widget when updating
11019/// the scrolled window adjustments in a given orientation.
11020#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11021#[non_exhaustive]
11022#[doc(alias = "GtkScrollablePolicy")]
11023pub enum ScrollablePolicy {
11024    /// Scrollable adjustments are based on the minimum size
11025    #[doc(alias = "GTK_SCROLL_MINIMUM")]
11026    Minimum,
11027    /// Scrollable adjustments are based on the natural size
11028    #[doc(alias = "GTK_SCROLL_NATURAL")]
11029    Natural,
11030    #[doc(hidden)]
11031    __Unknown(i32),
11032}
11033
11034#[doc(hidden)]
11035impl IntoGlib for ScrollablePolicy {
11036    type GlibType = ffi::GtkScrollablePolicy;
11037
11038    #[inline]
11039    fn into_glib(self) -> ffi::GtkScrollablePolicy {
11040        match self {
11041            Self::Minimum => ffi::GTK_SCROLL_MINIMUM,
11042            Self::Natural => ffi::GTK_SCROLL_NATURAL,
11043            Self::__Unknown(value) => value,
11044        }
11045    }
11046}
11047
11048#[doc(hidden)]
11049impl FromGlib<ffi::GtkScrollablePolicy> for ScrollablePolicy {
11050    #[inline]
11051    unsafe fn from_glib(value: ffi::GtkScrollablePolicy) -> Self {
11052        skip_assert_initialized!();
11053
11054        match value {
11055            ffi::GTK_SCROLL_MINIMUM => Self::Minimum,
11056            ffi::GTK_SCROLL_NATURAL => Self::Natural,
11057            value => Self::__Unknown(value),
11058        }
11059    }
11060}
11061
11062impl StaticType for ScrollablePolicy {
11063    #[inline]
11064    #[doc(alias = "gtk_scrollable_policy_get_type")]
11065    fn static_type() -> glib::Type {
11066        unsafe { from_glib(ffi::gtk_scrollable_policy_get_type()) }
11067    }
11068}
11069
11070impl glib::HasParamSpec for ScrollablePolicy {
11071    type ParamSpec = glib::ParamSpecEnum;
11072    type SetValue = Self;
11073    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11074
11075    fn param_spec_builder() -> Self::BuilderFn {
11076        Self::ParamSpec::builder_with_default
11077    }
11078}
11079
11080impl glib::value::ValueType for ScrollablePolicy {
11081    type Type = Self;
11082}
11083
11084unsafe impl<'a> glib::value::FromValue<'a> for ScrollablePolicy {
11085    type Checker = glib::value::GenericValueTypeChecker<Self>;
11086
11087    #[inline]
11088    unsafe fn from_value(value: &'a glib::Value) -> Self {
11089        skip_assert_initialized!();
11090        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11091    }
11092}
11093
11094impl ToValue for ScrollablePolicy {
11095    #[inline]
11096    fn to_value(&self) -> glib::Value {
11097        let mut value = glib::Value::for_value_type::<Self>();
11098        unsafe {
11099            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11100        }
11101        value
11102    }
11103
11104    #[inline]
11105    fn value_type(&self) -> glib::Type {
11106        Self::static_type()
11107    }
11108}
11109
11110impl From<ScrollablePolicy> for glib::Value {
11111    #[inline]
11112    fn from(v: ScrollablePolicy) -> Self {
11113        skip_assert_initialized!();
11114        ToValue::to_value(&v)
11115    }
11116}
11117
11118/// Used to control what selections users are allowed to make.
11119#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11120#[non_exhaustive]
11121#[doc(alias = "GtkSelectionMode")]
11122pub enum SelectionMode {
11123    /// No selection is possible.
11124    #[doc(alias = "GTK_SELECTION_NONE")]
11125    None,
11126    /// Zero or one element may be selected.
11127    #[doc(alias = "GTK_SELECTION_SINGLE")]
11128    Single,
11129    /// Exactly one element is selected.
11130    ///   In some circumstances, such as initially or during a search
11131    ///   operation, it’s possible for no element to be selected with
11132    ///   [`Browse`][Self::Browse]. What is really enforced is that the user
11133    ///   can’t deselect a currently selected element except by selecting
11134    ///   another element.
11135    #[doc(alias = "GTK_SELECTION_BROWSE")]
11136    Browse,
11137    /// Any number of elements may be selected.
11138    ///   The Ctrl key may be used to enlarge the selection, and Shift
11139    ///   key to select between the focus and the child pointed to.
11140    ///   Some widgets may also allow Click-drag to select a range of elements.
11141    #[doc(alias = "GTK_SELECTION_MULTIPLE")]
11142    Multiple,
11143    #[doc(hidden)]
11144    __Unknown(i32),
11145}
11146
11147#[doc(hidden)]
11148impl IntoGlib for SelectionMode {
11149    type GlibType = ffi::GtkSelectionMode;
11150
11151    #[inline]
11152    fn into_glib(self) -> ffi::GtkSelectionMode {
11153        match self {
11154            Self::None => ffi::GTK_SELECTION_NONE,
11155            Self::Single => ffi::GTK_SELECTION_SINGLE,
11156            Self::Browse => ffi::GTK_SELECTION_BROWSE,
11157            Self::Multiple => ffi::GTK_SELECTION_MULTIPLE,
11158            Self::__Unknown(value) => value,
11159        }
11160    }
11161}
11162
11163#[doc(hidden)]
11164impl FromGlib<ffi::GtkSelectionMode> for SelectionMode {
11165    #[inline]
11166    unsafe fn from_glib(value: ffi::GtkSelectionMode) -> Self {
11167        skip_assert_initialized!();
11168
11169        match value {
11170            ffi::GTK_SELECTION_NONE => Self::None,
11171            ffi::GTK_SELECTION_SINGLE => Self::Single,
11172            ffi::GTK_SELECTION_BROWSE => Self::Browse,
11173            ffi::GTK_SELECTION_MULTIPLE => Self::Multiple,
11174            value => Self::__Unknown(value),
11175        }
11176    }
11177}
11178
11179impl StaticType for SelectionMode {
11180    #[inline]
11181    #[doc(alias = "gtk_selection_mode_get_type")]
11182    fn static_type() -> glib::Type {
11183        unsafe { from_glib(ffi::gtk_selection_mode_get_type()) }
11184    }
11185}
11186
11187impl glib::HasParamSpec for SelectionMode {
11188    type ParamSpec = glib::ParamSpecEnum;
11189    type SetValue = Self;
11190    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11191
11192    fn param_spec_builder() -> Self::BuilderFn {
11193        Self::ParamSpec::builder_with_default
11194    }
11195}
11196
11197impl glib::value::ValueType for SelectionMode {
11198    type Type = Self;
11199}
11200
11201unsafe impl<'a> glib::value::FromValue<'a> for SelectionMode {
11202    type Checker = glib::value::GenericValueTypeChecker<Self>;
11203
11204    #[inline]
11205    unsafe fn from_value(value: &'a glib::Value) -> Self {
11206        skip_assert_initialized!();
11207        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11208    }
11209}
11210
11211impl ToValue for SelectionMode {
11212    #[inline]
11213    fn to_value(&self) -> glib::Value {
11214        let mut value = glib::Value::for_value_type::<Self>();
11215        unsafe {
11216            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11217        }
11218        value
11219    }
11220
11221    #[inline]
11222    fn value_type(&self) -> glib::Type {
11223        Self::static_type()
11224    }
11225}
11226
11227impl From<SelectionMode> for glib::Value {
11228    #[inline]
11229    fn from(v: SelectionMode) -> Self {
11230        skip_assert_initialized!();
11231        ToValue::to_value(&v)
11232    }
11233}
11234
11235/// Determines how GTK handles the sensitivity of various controls,
11236/// such as combo box buttons.
11237#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11238#[non_exhaustive]
11239#[doc(alias = "GtkSensitivityType")]
11240pub enum SensitivityType {
11241    /// The control is made insensitive if no
11242    ///   action can be triggered
11243    #[doc(alias = "GTK_SENSITIVITY_AUTO")]
11244    Auto,
11245    /// The control is always sensitive
11246    #[doc(alias = "GTK_SENSITIVITY_ON")]
11247    On,
11248    /// The control is always insensitive
11249    #[doc(alias = "GTK_SENSITIVITY_OFF")]
11250    Off,
11251    #[doc(hidden)]
11252    __Unknown(i32),
11253}
11254
11255#[doc(hidden)]
11256impl IntoGlib for SensitivityType {
11257    type GlibType = ffi::GtkSensitivityType;
11258
11259    #[inline]
11260    fn into_glib(self) -> ffi::GtkSensitivityType {
11261        match self {
11262            Self::Auto => ffi::GTK_SENSITIVITY_AUTO,
11263            Self::On => ffi::GTK_SENSITIVITY_ON,
11264            Self::Off => ffi::GTK_SENSITIVITY_OFF,
11265            Self::__Unknown(value) => value,
11266        }
11267    }
11268}
11269
11270#[doc(hidden)]
11271impl FromGlib<ffi::GtkSensitivityType> for SensitivityType {
11272    #[inline]
11273    unsafe fn from_glib(value: ffi::GtkSensitivityType) -> Self {
11274        skip_assert_initialized!();
11275
11276        match value {
11277            ffi::GTK_SENSITIVITY_AUTO => Self::Auto,
11278            ffi::GTK_SENSITIVITY_ON => Self::On,
11279            ffi::GTK_SENSITIVITY_OFF => Self::Off,
11280            value => Self::__Unknown(value),
11281        }
11282    }
11283}
11284
11285impl StaticType for SensitivityType {
11286    #[inline]
11287    #[doc(alias = "gtk_sensitivity_type_get_type")]
11288    fn static_type() -> glib::Type {
11289        unsafe { from_glib(ffi::gtk_sensitivity_type_get_type()) }
11290    }
11291}
11292
11293impl glib::HasParamSpec for SensitivityType {
11294    type ParamSpec = glib::ParamSpecEnum;
11295    type SetValue = Self;
11296    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11297
11298    fn param_spec_builder() -> Self::BuilderFn {
11299        Self::ParamSpec::builder_with_default
11300    }
11301}
11302
11303impl glib::value::ValueType for SensitivityType {
11304    type Type = Self;
11305}
11306
11307unsafe impl<'a> glib::value::FromValue<'a> for SensitivityType {
11308    type Checker = glib::value::GenericValueTypeChecker<Self>;
11309
11310    #[inline]
11311    unsafe fn from_value(value: &'a glib::Value) -> Self {
11312        skip_assert_initialized!();
11313        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11314    }
11315}
11316
11317impl ToValue for SensitivityType {
11318    #[inline]
11319    fn to_value(&self) -> glib::Value {
11320        let mut value = glib::Value::for_value_type::<Self>();
11321        unsafe {
11322            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11323        }
11324        value
11325    }
11326
11327    #[inline]
11328    fn value_type(&self) -> glib::Type {
11329        Self::static_type()
11330    }
11331}
11332
11333impl From<SensitivityType> for glib::Value {
11334    #[inline]
11335    fn from(v: SensitivityType) -> Self {
11336        skip_assert_initialized!();
11337        ToValue::to_value(&v)
11338    }
11339}
11340
11341/// Describes where [`Shortcut`][crate::Shortcut]s added to a
11342/// [`ShortcutController`][crate::ShortcutController] get handled.
11343#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11344#[non_exhaustive]
11345#[doc(alias = "GtkShortcutScope")]
11346pub enum ShortcutScope {
11347    /// Shortcuts are handled inside
11348    ///   the widget the controller belongs to.
11349    #[doc(alias = "GTK_SHORTCUT_SCOPE_LOCAL")]
11350    Local,
11351    /// Shortcuts are handled by
11352    ///   the first ancestor that is a [`ShortcutManager`][crate::ShortcutManager]
11353    #[doc(alias = "GTK_SHORTCUT_SCOPE_MANAGED")]
11354    Managed,
11355    /// Shortcuts are handled by
11356    ///   the root widget.
11357    #[doc(alias = "GTK_SHORTCUT_SCOPE_GLOBAL")]
11358    Global,
11359    #[doc(hidden)]
11360    __Unknown(i32),
11361}
11362
11363#[doc(hidden)]
11364impl IntoGlib for ShortcutScope {
11365    type GlibType = ffi::GtkShortcutScope;
11366
11367    #[inline]
11368    fn into_glib(self) -> ffi::GtkShortcutScope {
11369        match self {
11370            Self::Local => ffi::GTK_SHORTCUT_SCOPE_LOCAL,
11371            Self::Managed => ffi::GTK_SHORTCUT_SCOPE_MANAGED,
11372            Self::Global => ffi::GTK_SHORTCUT_SCOPE_GLOBAL,
11373            Self::__Unknown(value) => value,
11374        }
11375    }
11376}
11377
11378#[doc(hidden)]
11379impl FromGlib<ffi::GtkShortcutScope> for ShortcutScope {
11380    #[inline]
11381    unsafe fn from_glib(value: ffi::GtkShortcutScope) -> Self {
11382        skip_assert_initialized!();
11383
11384        match value {
11385            ffi::GTK_SHORTCUT_SCOPE_LOCAL => Self::Local,
11386            ffi::GTK_SHORTCUT_SCOPE_MANAGED => Self::Managed,
11387            ffi::GTK_SHORTCUT_SCOPE_GLOBAL => Self::Global,
11388            value => Self::__Unknown(value),
11389        }
11390    }
11391}
11392
11393impl StaticType for ShortcutScope {
11394    #[inline]
11395    #[doc(alias = "gtk_shortcut_scope_get_type")]
11396    fn static_type() -> glib::Type {
11397        unsafe { from_glib(ffi::gtk_shortcut_scope_get_type()) }
11398    }
11399}
11400
11401impl glib::HasParamSpec for ShortcutScope {
11402    type ParamSpec = glib::ParamSpecEnum;
11403    type SetValue = Self;
11404    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11405
11406    fn param_spec_builder() -> Self::BuilderFn {
11407        Self::ParamSpec::builder_with_default
11408    }
11409}
11410
11411impl glib::value::ValueType for ShortcutScope {
11412    type Type = Self;
11413}
11414
11415unsafe impl<'a> glib::value::FromValue<'a> for ShortcutScope {
11416    type Checker = glib::value::GenericValueTypeChecker<Self>;
11417
11418    #[inline]
11419    unsafe fn from_value(value: &'a glib::Value) -> Self {
11420        skip_assert_initialized!();
11421        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11422    }
11423}
11424
11425impl ToValue for ShortcutScope {
11426    #[inline]
11427    fn to_value(&self) -> glib::Value {
11428        let mut value = glib::Value::for_value_type::<Self>();
11429        unsafe {
11430            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11431        }
11432        value
11433    }
11434
11435    #[inline]
11436    fn value_type(&self) -> glib::Type {
11437        Self::static_type()
11438    }
11439}
11440
11441impl From<ShortcutScope> for glib::Value {
11442    #[inline]
11443    fn from(v: ShortcutScope) -> Self {
11444        skip_assert_initialized!();
11445        ToValue::to_value(&v)
11446    }
11447}
11448
11449/// GtkShortcutType specifies the kind of shortcut that is being described.
11450///
11451/// More values may be added to this enumeration over time.
11452#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11453#[non_exhaustive]
11454#[doc(alias = "GtkShortcutType")]
11455pub enum ShortcutType {
11456    /// The shortcut is a keyboard accelerator. The GtkShortcutsShortcut:accelerator
11457    ///   property will be used.
11458    #[doc(alias = "GTK_SHORTCUT_ACCELERATOR")]
11459    Accelerator,
11460    /// The shortcut is a pinch gesture. GTK provides an icon and subtitle.
11461    #[doc(alias = "GTK_SHORTCUT_GESTURE_PINCH")]
11462    GesturePinch,
11463    /// The shortcut is a stretch gesture. GTK provides an icon and subtitle.
11464    #[doc(alias = "GTK_SHORTCUT_GESTURE_STRETCH")]
11465    GestureStretch,
11466    /// The shortcut is a clockwise rotation gesture. GTK provides an icon and subtitle.
11467    #[doc(alias = "GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE")]
11468    GestureRotateClockwise,
11469    /// The shortcut is a counterclockwise rotation gesture. GTK provides an icon and subtitle.
11470    #[doc(alias = "GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE")]
11471    GestureRotateCounterclockwise,
11472    /// The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
11473    #[doc(alias = "GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT")]
11474    GestureTwoFingerSwipeLeft,
11475    /// The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
11476    #[doc(alias = "GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT")]
11477    GestureTwoFingerSwipeRight,
11478    /// The shortcut is a gesture. The GtkShortcutsShortcut:icon property will be
11479    ///   used.
11480    #[doc(alias = "GTK_SHORTCUT_GESTURE")]
11481    Gesture,
11482    /// The shortcut is a swipe gesture. GTK provides an icon and subtitle.
11483    #[doc(alias = "GTK_SHORTCUT_GESTURE_SWIPE_LEFT")]
11484    GestureSwipeLeft,
11485    /// The shortcut is a swipe gesture. GTK provides an icon and subtitle.
11486    #[doc(alias = "GTK_SHORTCUT_GESTURE_SWIPE_RIGHT")]
11487    GestureSwipeRight,
11488    #[doc(hidden)]
11489    __Unknown(i32),
11490}
11491
11492#[doc(hidden)]
11493impl IntoGlib for ShortcutType {
11494    type GlibType = ffi::GtkShortcutType;
11495
11496    #[inline]
11497    fn into_glib(self) -> ffi::GtkShortcutType {
11498        match self {
11499            Self::Accelerator => ffi::GTK_SHORTCUT_ACCELERATOR,
11500            Self::GesturePinch => ffi::GTK_SHORTCUT_GESTURE_PINCH,
11501            Self::GestureStretch => ffi::GTK_SHORTCUT_GESTURE_STRETCH,
11502            Self::GestureRotateClockwise => ffi::GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE,
11503            Self::GestureRotateCounterclockwise => {
11504                ffi::GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE
11505            }
11506            Self::GestureTwoFingerSwipeLeft => ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT,
11507            Self::GestureTwoFingerSwipeRight => ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT,
11508            Self::Gesture => ffi::GTK_SHORTCUT_GESTURE,
11509            Self::GestureSwipeLeft => ffi::GTK_SHORTCUT_GESTURE_SWIPE_LEFT,
11510            Self::GestureSwipeRight => ffi::GTK_SHORTCUT_GESTURE_SWIPE_RIGHT,
11511            Self::__Unknown(value) => value,
11512        }
11513    }
11514}
11515
11516#[doc(hidden)]
11517impl FromGlib<ffi::GtkShortcutType> for ShortcutType {
11518    #[inline]
11519    unsafe fn from_glib(value: ffi::GtkShortcutType) -> Self {
11520        skip_assert_initialized!();
11521
11522        match value {
11523            ffi::GTK_SHORTCUT_ACCELERATOR => Self::Accelerator,
11524            ffi::GTK_SHORTCUT_GESTURE_PINCH => Self::GesturePinch,
11525            ffi::GTK_SHORTCUT_GESTURE_STRETCH => Self::GestureStretch,
11526            ffi::GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE => Self::GestureRotateClockwise,
11527            ffi::GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE => {
11528                Self::GestureRotateCounterclockwise
11529            }
11530            ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT => Self::GestureTwoFingerSwipeLeft,
11531            ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT => Self::GestureTwoFingerSwipeRight,
11532            ffi::GTK_SHORTCUT_GESTURE => Self::Gesture,
11533            ffi::GTK_SHORTCUT_GESTURE_SWIPE_LEFT => Self::GestureSwipeLeft,
11534            ffi::GTK_SHORTCUT_GESTURE_SWIPE_RIGHT => Self::GestureSwipeRight,
11535            value => Self::__Unknown(value),
11536        }
11537    }
11538}
11539
11540impl StaticType for ShortcutType {
11541    #[inline]
11542    #[doc(alias = "gtk_shortcut_type_get_type")]
11543    fn static_type() -> glib::Type {
11544        unsafe { from_glib(ffi::gtk_shortcut_type_get_type()) }
11545    }
11546}
11547
11548impl glib::HasParamSpec for ShortcutType {
11549    type ParamSpec = glib::ParamSpecEnum;
11550    type SetValue = Self;
11551    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11552
11553    fn param_spec_builder() -> Self::BuilderFn {
11554        Self::ParamSpec::builder_with_default
11555    }
11556}
11557
11558impl glib::value::ValueType for ShortcutType {
11559    type Type = Self;
11560}
11561
11562unsafe impl<'a> glib::value::FromValue<'a> for ShortcutType {
11563    type Checker = glib::value::GenericValueTypeChecker<Self>;
11564
11565    #[inline]
11566    unsafe fn from_value(value: &'a glib::Value) -> Self {
11567        skip_assert_initialized!();
11568        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11569    }
11570}
11571
11572impl ToValue for ShortcutType {
11573    #[inline]
11574    fn to_value(&self) -> glib::Value {
11575        let mut value = glib::Value::for_value_type::<Self>();
11576        unsafe {
11577            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11578        }
11579        value
11580    }
11581
11582    #[inline]
11583    fn value_type(&self) -> glib::Type {
11584        Self::static_type()
11585    }
11586}
11587
11588impl From<ShortcutType> for glib::Value {
11589    #[inline]
11590    fn from(v: ShortcutType) -> Self {
11591        skip_assert_initialized!();
11592        ToValue::to_value(&v)
11593    }
11594}
11595
11596/// The mode of the size group determines the directions in which the size
11597/// group affects the requested sizes of its component widgets.
11598#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11599#[non_exhaustive]
11600#[doc(alias = "GtkSizeGroupMode")]
11601pub enum SizeGroupMode {
11602    /// group has no effect
11603    #[doc(alias = "GTK_SIZE_GROUP_NONE")]
11604    None,
11605    /// group affects horizontal requisition
11606    #[doc(alias = "GTK_SIZE_GROUP_HORIZONTAL")]
11607    Horizontal,
11608    /// group affects vertical requisition
11609    #[doc(alias = "GTK_SIZE_GROUP_VERTICAL")]
11610    Vertical,
11611    /// group affects both horizontal and vertical requisition
11612    #[doc(alias = "GTK_SIZE_GROUP_BOTH")]
11613    Both,
11614    #[doc(hidden)]
11615    __Unknown(i32),
11616}
11617
11618#[doc(hidden)]
11619impl IntoGlib for SizeGroupMode {
11620    type GlibType = ffi::GtkSizeGroupMode;
11621
11622    #[inline]
11623    fn into_glib(self) -> ffi::GtkSizeGroupMode {
11624        match self {
11625            Self::None => ffi::GTK_SIZE_GROUP_NONE,
11626            Self::Horizontal => ffi::GTK_SIZE_GROUP_HORIZONTAL,
11627            Self::Vertical => ffi::GTK_SIZE_GROUP_VERTICAL,
11628            Self::Both => ffi::GTK_SIZE_GROUP_BOTH,
11629            Self::__Unknown(value) => value,
11630        }
11631    }
11632}
11633
11634#[doc(hidden)]
11635impl FromGlib<ffi::GtkSizeGroupMode> for SizeGroupMode {
11636    #[inline]
11637    unsafe fn from_glib(value: ffi::GtkSizeGroupMode) -> Self {
11638        skip_assert_initialized!();
11639
11640        match value {
11641            ffi::GTK_SIZE_GROUP_NONE => Self::None,
11642            ffi::GTK_SIZE_GROUP_HORIZONTAL => Self::Horizontal,
11643            ffi::GTK_SIZE_GROUP_VERTICAL => Self::Vertical,
11644            ffi::GTK_SIZE_GROUP_BOTH => Self::Both,
11645            value => Self::__Unknown(value),
11646        }
11647    }
11648}
11649
11650impl StaticType for SizeGroupMode {
11651    #[inline]
11652    #[doc(alias = "gtk_size_group_mode_get_type")]
11653    fn static_type() -> glib::Type {
11654        unsafe { from_glib(ffi::gtk_size_group_mode_get_type()) }
11655    }
11656}
11657
11658impl glib::HasParamSpec for SizeGroupMode {
11659    type ParamSpec = glib::ParamSpecEnum;
11660    type SetValue = Self;
11661    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11662
11663    fn param_spec_builder() -> Self::BuilderFn {
11664        Self::ParamSpec::builder_with_default
11665    }
11666}
11667
11668impl glib::value::ValueType for SizeGroupMode {
11669    type Type = Self;
11670}
11671
11672unsafe impl<'a> glib::value::FromValue<'a> for SizeGroupMode {
11673    type Checker = glib::value::GenericValueTypeChecker<Self>;
11674
11675    #[inline]
11676    unsafe fn from_value(value: &'a glib::Value) -> Self {
11677        skip_assert_initialized!();
11678        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11679    }
11680}
11681
11682impl ToValue for SizeGroupMode {
11683    #[inline]
11684    fn to_value(&self) -> glib::Value {
11685        let mut value = glib::Value::for_value_type::<Self>();
11686        unsafe {
11687            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11688        }
11689        value
11690    }
11691
11692    #[inline]
11693    fn value_type(&self) -> glib::Type {
11694        Self::static_type()
11695    }
11696}
11697
11698impl From<SizeGroupMode> for glib::Value {
11699    #[inline]
11700    fn from(v: SizeGroupMode) -> Self {
11701        skip_assert_initialized!();
11702        ToValue::to_value(&v)
11703    }
11704}
11705
11706/// Specifies a preference for height-for-width or
11707/// width-for-height geometry management.
11708#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11709#[non_exhaustive]
11710#[doc(alias = "GtkSizeRequestMode")]
11711pub enum SizeRequestMode {
11712    /// Prefer height-for-width geometry management
11713    #[doc(alias = "GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH")]
11714    HeightForWidth,
11715    /// Prefer width-for-height geometry management
11716    #[doc(alias = "GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT")]
11717    WidthForHeight,
11718    /// Don’t trade height-for-width or width-for-height
11719    #[doc(alias = "GTK_SIZE_REQUEST_CONSTANT_SIZE")]
11720    ConstantSize,
11721    #[doc(hidden)]
11722    __Unknown(i32),
11723}
11724
11725#[doc(hidden)]
11726impl IntoGlib for SizeRequestMode {
11727    type GlibType = ffi::GtkSizeRequestMode;
11728
11729    #[inline]
11730    fn into_glib(self) -> ffi::GtkSizeRequestMode {
11731        match self {
11732            Self::HeightForWidth => ffi::GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH,
11733            Self::WidthForHeight => ffi::GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT,
11734            Self::ConstantSize => ffi::GTK_SIZE_REQUEST_CONSTANT_SIZE,
11735            Self::__Unknown(value) => value,
11736        }
11737    }
11738}
11739
11740#[doc(hidden)]
11741impl FromGlib<ffi::GtkSizeRequestMode> for SizeRequestMode {
11742    #[inline]
11743    unsafe fn from_glib(value: ffi::GtkSizeRequestMode) -> Self {
11744        skip_assert_initialized!();
11745
11746        match value {
11747            ffi::GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH => Self::HeightForWidth,
11748            ffi::GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT => Self::WidthForHeight,
11749            ffi::GTK_SIZE_REQUEST_CONSTANT_SIZE => Self::ConstantSize,
11750            value => Self::__Unknown(value),
11751        }
11752    }
11753}
11754
11755impl StaticType for SizeRequestMode {
11756    #[inline]
11757    #[doc(alias = "gtk_size_request_mode_get_type")]
11758    fn static_type() -> glib::Type {
11759        unsafe { from_glib(ffi::gtk_size_request_mode_get_type()) }
11760    }
11761}
11762
11763impl glib::HasParamSpec for SizeRequestMode {
11764    type ParamSpec = glib::ParamSpecEnum;
11765    type SetValue = Self;
11766    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11767
11768    fn param_spec_builder() -> Self::BuilderFn {
11769        Self::ParamSpec::builder_with_default
11770    }
11771}
11772
11773impl glib::value::ValueType for SizeRequestMode {
11774    type Type = Self;
11775}
11776
11777unsafe impl<'a> glib::value::FromValue<'a> for SizeRequestMode {
11778    type Checker = glib::value::GenericValueTypeChecker<Self>;
11779
11780    #[inline]
11781    unsafe fn from_value(value: &'a glib::Value) -> Self {
11782        skip_assert_initialized!();
11783        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11784    }
11785}
11786
11787impl ToValue for SizeRequestMode {
11788    #[inline]
11789    fn to_value(&self) -> glib::Value {
11790        let mut value = glib::Value::for_value_type::<Self>();
11791        unsafe {
11792            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11793        }
11794        value
11795    }
11796
11797    #[inline]
11798    fn value_type(&self) -> glib::Type {
11799        Self::static_type()
11800    }
11801}
11802
11803impl From<SizeRequestMode> for glib::Value {
11804    #[inline]
11805    fn from(v: SizeRequestMode) -> Self {
11806        skip_assert_initialized!();
11807        ToValue::to_value(&v)
11808    }
11809}
11810
11811/// Determines the direction of a sort.
11812#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11813#[non_exhaustive]
11814#[doc(alias = "GtkSortType")]
11815pub enum SortType {
11816    /// Sorting is in ascending order.
11817    #[doc(alias = "GTK_SORT_ASCENDING")]
11818    Ascending,
11819    /// Sorting is in descending order.
11820    #[doc(alias = "GTK_SORT_DESCENDING")]
11821    Descending,
11822    #[doc(hidden)]
11823    __Unknown(i32),
11824}
11825
11826#[doc(hidden)]
11827impl IntoGlib for SortType {
11828    type GlibType = ffi::GtkSortType;
11829
11830    #[inline]
11831    fn into_glib(self) -> ffi::GtkSortType {
11832        match self {
11833            Self::Ascending => ffi::GTK_SORT_ASCENDING,
11834            Self::Descending => ffi::GTK_SORT_DESCENDING,
11835            Self::__Unknown(value) => value,
11836        }
11837    }
11838}
11839
11840#[doc(hidden)]
11841impl FromGlib<ffi::GtkSortType> for SortType {
11842    #[inline]
11843    unsafe fn from_glib(value: ffi::GtkSortType) -> Self {
11844        skip_assert_initialized!();
11845
11846        match value {
11847            ffi::GTK_SORT_ASCENDING => Self::Ascending,
11848            ffi::GTK_SORT_DESCENDING => Self::Descending,
11849            value => Self::__Unknown(value),
11850        }
11851    }
11852}
11853
11854impl StaticType for SortType {
11855    #[inline]
11856    #[doc(alias = "gtk_sort_type_get_type")]
11857    fn static_type() -> glib::Type {
11858        unsafe { from_glib(ffi::gtk_sort_type_get_type()) }
11859    }
11860}
11861
11862impl glib::HasParamSpec for SortType {
11863    type ParamSpec = glib::ParamSpecEnum;
11864    type SetValue = Self;
11865    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11866
11867    fn param_spec_builder() -> Self::BuilderFn {
11868        Self::ParamSpec::builder_with_default
11869    }
11870}
11871
11872impl glib::value::ValueType for SortType {
11873    type Type = Self;
11874}
11875
11876unsafe impl<'a> glib::value::FromValue<'a> for SortType {
11877    type Checker = glib::value::GenericValueTypeChecker<Self>;
11878
11879    #[inline]
11880    unsafe fn from_value(value: &'a glib::Value) -> Self {
11881        skip_assert_initialized!();
11882        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11883    }
11884}
11885
11886impl ToValue for SortType {
11887    #[inline]
11888    fn to_value(&self) -> glib::Value {
11889        let mut value = glib::Value::for_value_type::<Self>();
11890        unsafe {
11891            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11892        }
11893        value
11894    }
11895
11896    #[inline]
11897    fn value_type(&self) -> glib::Type {
11898        Self::static_type()
11899    }
11900}
11901
11902impl From<SortType> for glib::Value {
11903    #[inline]
11904    fn from(v: SortType) -> Self {
11905        skip_assert_initialized!();
11906        ToValue::to_value(&v)
11907    }
11908}
11909
11910/// Describes changes in a sorter in more detail and allows users
11911/// to optimize resorting.
11912#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11913#[non_exhaustive]
11914#[doc(alias = "GtkSorterChange")]
11915pub enum SorterChange {
11916    /// The sorter change cannot be described
11917    ///   by any of the other enumeration values
11918    #[doc(alias = "GTK_SORTER_CHANGE_DIFFERENT")]
11919    Different,
11920    /// The sort order was inverted. Comparisons
11921    ///   that returned [`Ordering::Smaller`][crate::Ordering::Smaller] now return [`Ordering::Larger`][crate::Ordering::Larger]
11922    ///   and vice versa. Other comparisons return the same values as before.
11923    #[doc(alias = "GTK_SORTER_CHANGE_INVERTED")]
11924    Inverted,
11925    /// The sorter is less strict: Comparisons
11926    ///   may now return [`Ordering::Equal`][crate::Ordering::Equal] that did not do so before.
11927    #[doc(alias = "GTK_SORTER_CHANGE_LESS_STRICT")]
11928    LessStrict,
11929    /// The sorter is more strict: Comparisons
11930    ///   that did return [`Ordering::Equal`][crate::Ordering::Equal] may not do so anymore.
11931    #[doc(alias = "GTK_SORTER_CHANGE_MORE_STRICT")]
11932    MoreStrict,
11933    #[doc(hidden)]
11934    __Unknown(i32),
11935}
11936
11937#[doc(hidden)]
11938impl IntoGlib for SorterChange {
11939    type GlibType = ffi::GtkSorterChange;
11940
11941    #[inline]
11942    fn into_glib(self) -> ffi::GtkSorterChange {
11943        match self {
11944            Self::Different => ffi::GTK_SORTER_CHANGE_DIFFERENT,
11945            Self::Inverted => ffi::GTK_SORTER_CHANGE_INVERTED,
11946            Self::LessStrict => ffi::GTK_SORTER_CHANGE_LESS_STRICT,
11947            Self::MoreStrict => ffi::GTK_SORTER_CHANGE_MORE_STRICT,
11948            Self::__Unknown(value) => value,
11949        }
11950    }
11951}
11952
11953#[doc(hidden)]
11954impl FromGlib<ffi::GtkSorterChange> for SorterChange {
11955    #[inline]
11956    unsafe fn from_glib(value: ffi::GtkSorterChange) -> Self {
11957        skip_assert_initialized!();
11958
11959        match value {
11960            ffi::GTK_SORTER_CHANGE_DIFFERENT => Self::Different,
11961            ffi::GTK_SORTER_CHANGE_INVERTED => Self::Inverted,
11962            ffi::GTK_SORTER_CHANGE_LESS_STRICT => Self::LessStrict,
11963            ffi::GTK_SORTER_CHANGE_MORE_STRICT => Self::MoreStrict,
11964            value => Self::__Unknown(value),
11965        }
11966    }
11967}
11968
11969impl StaticType for SorterChange {
11970    #[inline]
11971    #[doc(alias = "gtk_sorter_change_get_type")]
11972    fn static_type() -> glib::Type {
11973        unsafe { from_glib(ffi::gtk_sorter_change_get_type()) }
11974    }
11975}
11976
11977impl glib::HasParamSpec for SorterChange {
11978    type ParamSpec = glib::ParamSpecEnum;
11979    type SetValue = Self;
11980    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11981
11982    fn param_spec_builder() -> Self::BuilderFn {
11983        Self::ParamSpec::builder_with_default
11984    }
11985}
11986
11987impl glib::value::ValueType for SorterChange {
11988    type Type = Self;
11989}
11990
11991unsafe impl<'a> glib::value::FromValue<'a> for SorterChange {
11992    type Checker = glib::value::GenericValueTypeChecker<Self>;
11993
11994    #[inline]
11995    unsafe fn from_value(value: &'a glib::Value) -> Self {
11996        skip_assert_initialized!();
11997        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11998    }
11999}
12000
12001impl ToValue for SorterChange {
12002    #[inline]
12003    fn to_value(&self) -> glib::Value {
12004        let mut value = glib::Value::for_value_type::<Self>();
12005        unsafe {
12006            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12007        }
12008        value
12009    }
12010
12011    #[inline]
12012    fn value_type(&self) -> glib::Type {
12013        Self::static_type()
12014    }
12015}
12016
12017impl From<SorterChange> for glib::Value {
12018    #[inline]
12019    fn from(v: SorterChange) -> Self {
12020        skip_assert_initialized!();
12021        ToValue::to_value(&v)
12022    }
12023}
12024
12025/// Describes the type of order that a [`Sorter`][crate::Sorter] may produce.
12026#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12027#[non_exhaustive]
12028#[doc(alias = "GtkSorterOrder")]
12029pub enum SorterOrder {
12030    /// A partial order. Any [`Ordering`][crate::Ordering] is possible.
12031    #[doc(alias = "GTK_SORTER_ORDER_PARTIAL")]
12032    Partial,
12033    /// No order, all elements are considered equal.
12034    ///   gtk_sorter_compare() will only return [`Ordering::Equal`][crate::Ordering::Equal].
12035    #[doc(alias = "GTK_SORTER_ORDER_NONE")]
12036    None,
12037    /// A total order. gtk_sorter_compare() will only
12038    ///   return [`Ordering::Equal`][crate::Ordering::Equal] if an item is compared with itself. Two
12039    ///   different items will never cause this value to be returned.
12040    #[doc(alias = "GTK_SORTER_ORDER_TOTAL")]
12041    Total,
12042    #[doc(hidden)]
12043    __Unknown(i32),
12044}
12045
12046#[doc(hidden)]
12047impl IntoGlib for SorterOrder {
12048    type GlibType = ffi::GtkSorterOrder;
12049
12050    #[inline]
12051    fn into_glib(self) -> ffi::GtkSorterOrder {
12052        match self {
12053            Self::Partial => ffi::GTK_SORTER_ORDER_PARTIAL,
12054            Self::None => ffi::GTK_SORTER_ORDER_NONE,
12055            Self::Total => ffi::GTK_SORTER_ORDER_TOTAL,
12056            Self::__Unknown(value) => value,
12057        }
12058    }
12059}
12060
12061#[doc(hidden)]
12062impl FromGlib<ffi::GtkSorterOrder> for SorterOrder {
12063    #[inline]
12064    unsafe fn from_glib(value: ffi::GtkSorterOrder) -> Self {
12065        skip_assert_initialized!();
12066
12067        match value {
12068            ffi::GTK_SORTER_ORDER_PARTIAL => Self::Partial,
12069            ffi::GTK_SORTER_ORDER_NONE => Self::None,
12070            ffi::GTK_SORTER_ORDER_TOTAL => Self::Total,
12071            value => Self::__Unknown(value),
12072        }
12073    }
12074}
12075
12076impl StaticType for SorterOrder {
12077    #[inline]
12078    #[doc(alias = "gtk_sorter_order_get_type")]
12079    fn static_type() -> glib::Type {
12080        unsafe { from_glib(ffi::gtk_sorter_order_get_type()) }
12081    }
12082}
12083
12084impl glib::HasParamSpec for SorterOrder {
12085    type ParamSpec = glib::ParamSpecEnum;
12086    type SetValue = Self;
12087    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12088
12089    fn param_spec_builder() -> Self::BuilderFn {
12090        Self::ParamSpec::builder_with_default
12091    }
12092}
12093
12094impl glib::value::ValueType for SorterOrder {
12095    type Type = Self;
12096}
12097
12098unsafe impl<'a> glib::value::FromValue<'a> for SorterOrder {
12099    type Checker = glib::value::GenericValueTypeChecker<Self>;
12100
12101    #[inline]
12102    unsafe fn from_value(value: &'a glib::Value) -> Self {
12103        skip_assert_initialized!();
12104        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12105    }
12106}
12107
12108impl ToValue for SorterOrder {
12109    #[inline]
12110    fn to_value(&self) -> glib::Value {
12111        let mut value = glib::Value::for_value_type::<Self>();
12112        unsafe {
12113            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12114        }
12115        value
12116    }
12117
12118    #[inline]
12119    fn value_type(&self) -> glib::Type {
12120        Self::static_type()
12121    }
12122}
12123
12124impl From<SorterOrder> for glib::Value {
12125    #[inline]
12126    fn from(v: SorterOrder) -> Self {
12127        skip_assert_initialized!();
12128        ToValue::to_value(&v)
12129    }
12130}
12131
12132/// Determines whether the spin button displays values outside the adjustment
12133/// bounds.
12134///
12135/// See [`SpinButton::set_update_policy()`][crate::SpinButton::set_update_policy()].
12136#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12137#[non_exhaustive]
12138#[doc(alias = "GtkSpinButtonUpdatePolicy")]
12139pub enum SpinButtonUpdatePolicy {
12140    /// When refreshing your [`SpinButton`][crate::SpinButton], the value is
12141    ///   always displayed
12142    #[doc(alias = "GTK_UPDATE_ALWAYS")]
12143    Always,
12144    /// When refreshing your [`SpinButton`][crate::SpinButton], the value is
12145    ///   only displayed if it is valid within the bounds of the spin button's
12146    ///   adjustment
12147    #[doc(alias = "GTK_UPDATE_IF_VALID")]
12148    IfValid,
12149    #[doc(hidden)]
12150    __Unknown(i32),
12151}
12152
12153#[doc(hidden)]
12154impl IntoGlib for SpinButtonUpdatePolicy {
12155    type GlibType = ffi::GtkSpinButtonUpdatePolicy;
12156
12157    #[inline]
12158    fn into_glib(self) -> ffi::GtkSpinButtonUpdatePolicy {
12159        match self {
12160            Self::Always => ffi::GTK_UPDATE_ALWAYS,
12161            Self::IfValid => ffi::GTK_UPDATE_IF_VALID,
12162            Self::__Unknown(value) => value,
12163        }
12164    }
12165}
12166
12167#[doc(hidden)]
12168impl FromGlib<ffi::GtkSpinButtonUpdatePolicy> for SpinButtonUpdatePolicy {
12169    #[inline]
12170    unsafe fn from_glib(value: ffi::GtkSpinButtonUpdatePolicy) -> Self {
12171        skip_assert_initialized!();
12172
12173        match value {
12174            ffi::GTK_UPDATE_ALWAYS => Self::Always,
12175            ffi::GTK_UPDATE_IF_VALID => Self::IfValid,
12176            value => Self::__Unknown(value),
12177        }
12178    }
12179}
12180
12181impl StaticType for SpinButtonUpdatePolicy {
12182    #[inline]
12183    #[doc(alias = "gtk_spin_button_update_policy_get_type")]
12184    fn static_type() -> glib::Type {
12185        unsafe { from_glib(ffi::gtk_spin_button_update_policy_get_type()) }
12186    }
12187}
12188
12189impl glib::HasParamSpec for SpinButtonUpdatePolicy {
12190    type ParamSpec = glib::ParamSpecEnum;
12191    type SetValue = Self;
12192    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12193
12194    fn param_spec_builder() -> Self::BuilderFn {
12195        Self::ParamSpec::builder_with_default
12196    }
12197}
12198
12199impl glib::value::ValueType for SpinButtonUpdatePolicy {
12200    type Type = Self;
12201}
12202
12203unsafe impl<'a> glib::value::FromValue<'a> for SpinButtonUpdatePolicy {
12204    type Checker = glib::value::GenericValueTypeChecker<Self>;
12205
12206    #[inline]
12207    unsafe fn from_value(value: &'a glib::Value) -> Self {
12208        skip_assert_initialized!();
12209        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12210    }
12211}
12212
12213impl ToValue for SpinButtonUpdatePolicy {
12214    #[inline]
12215    fn to_value(&self) -> glib::Value {
12216        let mut value = glib::Value::for_value_type::<Self>();
12217        unsafe {
12218            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12219        }
12220        value
12221    }
12222
12223    #[inline]
12224    fn value_type(&self) -> glib::Type {
12225        Self::static_type()
12226    }
12227}
12228
12229impl From<SpinButtonUpdatePolicy> for glib::Value {
12230    #[inline]
12231    fn from(v: SpinButtonUpdatePolicy) -> Self {
12232        skip_assert_initialized!();
12233        ToValue::to_value(&v)
12234    }
12235}
12236
12237/// The values of the GtkSpinType enumeration are used to specify the
12238/// change to make in gtk_spin_button_spin().
12239#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12240#[non_exhaustive]
12241#[doc(alias = "GtkSpinType")]
12242pub enum SpinType {
12243    /// Increment by the adjustments step increment.
12244    #[doc(alias = "GTK_SPIN_STEP_FORWARD")]
12245    StepForward,
12246    /// Decrement by the adjustments step increment.
12247    #[doc(alias = "GTK_SPIN_STEP_BACKWARD")]
12248    StepBackward,
12249    /// Increment by the adjustments page increment.
12250    #[doc(alias = "GTK_SPIN_PAGE_FORWARD")]
12251    PageForward,
12252    /// Decrement by the adjustments page increment.
12253    #[doc(alias = "GTK_SPIN_PAGE_BACKWARD")]
12254    PageBackward,
12255    /// Go to the adjustments lower bound.
12256    #[doc(alias = "GTK_SPIN_HOME")]
12257    Home,
12258    /// Go to the adjustments upper bound.
12259    #[doc(alias = "GTK_SPIN_END")]
12260    End,
12261    /// Change by a specified amount.
12262    #[doc(alias = "GTK_SPIN_USER_DEFINED")]
12263    UserDefined,
12264    #[doc(hidden)]
12265    __Unknown(i32),
12266}
12267
12268#[doc(hidden)]
12269impl IntoGlib for SpinType {
12270    type GlibType = ffi::GtkSpinType;
12271
12272    #[inline]
12273    fn into_glib(self) -> ffi::GtkSpinType {
12274        match self {
12275            Self::StepForward => ffi::GTK_SPIN_STEP_FORWARD,
12276            Self::StepBackward => ffi::GTK_SPIN_STEP_BACKWARD,
12277            Self::PageForward => ffi::GTK_SPIN_PAGE_FORWARD,
12278            Self::PageBackward => ffi::GTK_SPIN_PAGE_BACKWARD,
12279            Self::Home => ffi::GTK_SPIN_HOME,
12280            Self::End => ffi::GTK_SPIN_END,
12281            Self::UserDefined => ffi::GTK_SPIN_USER_DEFINED,
12282            Self::__Unknown(value) => value,
12283        }
12284    }
12285}
12286
12287#[doc(hidden)]
12288impl FromGlib<ffi::GtkSpinType> for SpinType {
12289    #[inline]
12290    unsafe fn from_glib(value: ffi::GtkSpinType) -> Self {
12291        skip_assert_initialized!();
12292
12293        match value {
12294            ffi::GTK_SPIN_STEP_FORWARD => Self::StepForward,
12295            ffi::GTK_SPIN_STEP_BACKWARD => Self::StepBackward,
12296            ffi::GTK_SPIN_PAGE_FORWARD => Self::PageForward,
12297            ffi::GTK_SPIN_PAGE_BACKWARD => Self::PageBackward,
12298            ffi::GTK_SPIN_HOME => Self::Home,
12299            ffi::GTK_SPIN_END => Self::End,
12300            ffi::GTK_SPIN_USER_DEFINED => Self::UserDefined,
12301            value => Self::__Unknown(value),
12302        }
12303    }
12304}
12305
12306impl StaticType for SpinType {
12307    #[inline]
12308    #[doc(alias = "gtk_spin_type_get_type")]
12309    fn static_type() -> glib::Type {
12310        unsafe { from_glib(ffi::gtk_spin_type_get_type()) }
12311    }
12312}
12313
12314impl glib::HasParamSpec for SpinType {
12315    type ParamSpec = glib::ParamSpecEnum;
12316    type SetValue = Self;
12317    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12318
12319    fn param_spec_builder() -> Self::BuilderFn {
12320        Self::ParamSpec::builder_with_default
12321    }
12322}
12323
12324impl glib::value::ValueType for SpinType {
12325    type Type = Self;
12326}
12327
12328unsafe impl<'a> glib::value::FromValue<'a> for SpinType {
12329    type Checker = glib::value::GenericValueTypeChecker<Self>;
12330
12331    #[inline]
12332    unsafe fn from_value(value: &'a glib::Value) -> Self {
12333        skip_assert_initialized!();
12334        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12335    }
12336}
12337
12338impl ToValue for SpinType {
12339    #[inline]
12340    fn to_value(&self) -> glib::Value {
12341        let mut value = glib::Value::for_value_type::<Self>();
12342        unsafe {
12343            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12344        }
12345        value
12346    }
12347
12348    #[inline]
12349    fn value_type(&self) -> glib::Type {
12350        Self::static_type()
12351    }
12352}
12353
12354impl From<SpinType> for glib::Value {
12355    #[inline]
12356    fn from(v: SpinType) -> Self {
12357        skip_assert_initialized!();
12358        ToValue::to_value(&v)
12359    }
12360}
12361
12362/// Possible transitions between pages in a [`Stack`][crate::Stack] widget.
12363///
12364/// New values may be added to this enumeration over time.
12365#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12366#[non_exhaustive]
12367#[doc(alias = "GtkStackTransitionType")]
12368pub enum StackTransitionType {
12369    /// No transition
12370    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_NONE")]
12371    None,
12372    /// A cross-fade
12373    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_CROSSFADE")]
12374    Crossfade,
12375    /// Slide from left to right
12376    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT")]
12377    SlideRight,
12378    /// Slide from right to left
12379    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT")]
12380    SlideLeft,
12381    /// Slide from bottom up
12382    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_UP")]
12383    SlideUp,
12384    /// Slide from top down
12385    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN")]
12386    SlideDown,
12387    /// Slide from left or right according to the children order
12388    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT")]
12389    SlideLeftRight,
12390    /// Slide from top down or bottom up according to the order
12391    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN")]
12392    SlideUpDown,
12393    /// Cover the old page by sliding up
12394    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_UP")]
12395    OverUp,
12396    /// Cover the old page by sliding down
12397    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_DOWN")]
12398    OverDown,
12399    /// Cover the old page by sliding to the left
12400    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_LEFT")]
12401    OverLeft,
12402    /// Cover the old page by sliding to the right
12403    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_RIGHT")]
12404    OverRight,
12405    /// Uncover the new page by sliding up
12406    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_UP")]
12407    UnderUp,
12408    /// Uncover the new page by sliding down
12409    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_DOWN")]
12410    UnderDown,
12411    /// Uncover the new page by sliding to the left
12412    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_LEFT")]
12413    UnderLeft,
12414    /// Uncover the new page by sliding to the right
12415    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT")]
12416    UnderRight,
12417    /// Cover the old page sliding up or uncover the new page sliding down, according to order
12418    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN")]
12419    OverUpDown,
12420    /// Cover the old page sliding down or uncover the new page sliding up, according to order
12421    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP")]
12422    OverDownUp,
12423    /// Cover the old page sliding left or uncover the new page sliding right, according to order
12424    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT")]
12425    OverLeftRight,
12426    /// Cover the old page sliding right or uncover the new page sliding left, according to order
12427    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT")]
12428    OverRightLeft,
12429    /// Pretend the pages are sides of a cube and rotate that cube to the left
12430    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT")]
12431    RotateLeft,
12432    /// Pretend the pages are sides of a cube and rotate that cube to the right
12433    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT")]
12434    RotateRight,
12435    /// Pretend the pages are sides of a cube and rotate that cube to the left or right according to the children order
12436    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT")]
12437    RotateLeftRight,
12438    #[doc(hidden)]
12439    __Unknown(i32),
12440}
12441
12442#[doc(hidden)]
12443impl IntoGlib for StackTransitionType {
12444    type GlibType = ffi::GtkStackTransitionType;
12445
12446    fn into_glib(self) -> ffi::GtkStackTransitionType {
12447        match self {
12448            Self::None => ffi::GTK_STACK_TRANSITION_TYPE_NONE,
12449            Self::Crossfade => ffi::GTK_STACK_TRANSITION_TYPE_CROSSFADE,
12450            Self::SlideRight => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT,
12451            Self::SlideLeft => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT,
12452            Self::SlideUp => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP,
12453            Self::SlideDown => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN,
12454            Self::SlideLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT,
12455            Self::SlideUpDown => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN,
12456            Self::OverUp => ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP,
12457            Self::OverDown => ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN,
12458            Self::OverLeft => ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT,
12459            Self::OverRight => ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT,
12460            Self::UnderUp => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_UP,
12461            Self::UnderDown => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_DOWN,
12462            Self::UnderLeft => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_LEFT,
12463            Self::UnderRight => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT,
12464            Self::OverUpDown => ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN,
12465            Self::OverDownUp => ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP,
12466            Self::OverLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT,
12467            Self::OverRightLeft => ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT,
12468            Self::RotateLeft => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT,
12469            Self::RotateRight => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT,
12470            Self::RotateLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT,
12471            Self::__Unknown(value) => value,
12472        }
12473    }
12474}
12475
12476#[doc(hidden)]
12477impl FromGlib<ffi::GtkStackTransitionType> for StackTransitionType {
12478    unsafe fn from_glib(value: ffi::GtkStackTransitionType) -> Self {
12479        skip_assert_initialized!();
12480
12481        match value {
12482            ffi::GTK_STACK_TRANSITION_TYPE_NONE => Self::None,
12483            ffi::GTK_STACK_TRANSITION_TYPE_CROSSFADE => Self::Crossfade,
12484            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT => Self::SlideRight,
12485            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT => Self::SlideLeft,
12486            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP => Self::SlideUp,
12487            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN => Self::SlideDown,
12488            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT => Self::SlideLeftRight,
12489            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN => Self::SlideUpDown,
12490            ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP => Self::OverUp,
12491            ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN => Self::OverDown,
12492            ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT => Self::OverLeft,
12493            ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT => Self::OverRight,
12494            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_UP => Self::UnderUp,
12495            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_DOWN => Self::UnderDown,
12496            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_LEFT => Self::UnderLeft,
12497            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT => Self::UnderRight,
12498            ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN => Self::OverUpDown,
12499            ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP => Self::OverDownUp,
12500            ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT => Self::OverLeftRight,
12501            ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT => Self::OverRightLeft,
12502            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT => Self::RotateLeft,
12503            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT => Self::RotateRight,
12504            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT => Self::RotateLeftRight,
12505            value => Self::__Unknown(value),
12506        }
12507    }
12508}
12509
12510impl StaticType for StackTransitionType {
12511    #[inline]
12512    #[doc(alias = "gtk_stack_transition_type_get_type")]
12513    fn static_type() -> glib::Type {
12514        unsafe { from_glib(ffi::gtk_stack_transition_type_get_type()) }
12515    }
12516}
12517
12518impl glib::HasParamSpec for StackTransitionType {
12519    type ParamSpec = glib::ParamSpecEnum;
12520    type SetValue = Self;
12521    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12522
12523    fn param_spec_builder() -> Self::BuilderFn {
12524        Self::ParamSpec::builder_with_default
12525    }
12526}
12527
12528impl glib::value::ValueType for StackTransitionType {
12529    type Type = Self;
12530}
12531
12532unsafe impl<'a> glib::value::FromValue<'a> for StackTransitionType {
12533    type Checker = glib::value::GenericValueTypeChecker<Self>;
12534
12535    #[inline]
12536    unsafe fn from_value(value: &'a glib::Value) -> Self {
12537        skip_assert_initialized!();
12538        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12539    }
12540}
12541
12542impl ToValue for StackTransitionType {
12543    #[inline]
12544    fn to_value(&self) -> glib::Value {
12545        let mut value = glib::Value::for_value_type::<Self>();
12546        unsafe {
12547            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12548        }
12549        value
12550    }
12551
12552    #[inline]
12553    fn value_type(&self) -> glib::Type {
12554        Self::static_type()
12555    }
12556}
12557
12558impl From<StackTransitionType> for glib::Value {
12559    #[inline]
12560    fn from(v: StackTransitionType) -> Self {
12561        skip_assert_initialized!();
12562        ToValue::to_value(&v)
12563    }
12564}
12565
12566/// Specifies how search strings are matched inside text.
12567#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12568#[non_exhaustive]
12569#[doc(alias = "GtkStringFilterMatchMode")]
12570pub enum StringFilterMatchMode {
12571    /// The search string and
12572    ///   text must match exactly
12573    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_EXACT")]
12574    Exact,
12575    /// The search string
12576    ///   must be contained as a substring inside the text
12577    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_SUBSTRING")]
12578    Substring,
12579    /// The text must begin
12580    ///   with the search string
12581    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_PREFIX")]
12582    Prefix,
12583    #[doc(hidden)]
12584    __Unknown(i32),
12585}
12586
12587#[doc(hidden)]
12588impl IntoGlib for StringFilterMatchMode {
12589    type GlibType = ffi::GtkStringFilterMatchMode;
12590
12591    #[inline]
12592    fn into_glib(self) -> ffi::GtkStringFilterMatchMode {
12593        match self {
12594            Self::Exact => ffi::GTK_STRING_FILTER_MATCH_MODE_EXACT,
12595            Self::Substring => ffi::GTK_STRING_FILTER_MATCH_MODE_SUBSTRING,
12596            Self::Prefix => ffi::GTK_STRING_FILTER_MATCH_MODE_PREFIX,
12597            Self::__Unknown(value) => value,
12598        }
12599    }
12600}
12601
12602#[doc(hidden)]
12603impl FromGlib<ffi::GtkStringFilterMatchMode> for StringFilterMatchMode {
12604    #[inline]
12605    unsafe fn from_glib(value: ffi::GtkStringFilterMatchMode) -> Self {
12606        skip_assert_initialized!();
12607
12608        match value {
12609            ffi::GTK_STRING_FILTER_MATCH_MODE_EXACT => Self::Exact,
12610            ffi::GTK_STRING_FILTER_MATCH_MODE_SUBSTRING => Self::Substring,
12611            ffi::GTK_STRING_FILTER_MATCH_MODE_PREFIX => Self::Prefix,
12612            value => Self::__Unknown(value),
12613        }
12614    }
12615}
12616
12617impl StaticType for StringFilterMatchMode {
12618    #[inline]
12619    #[doc(alias = "gtk_string_filter_match_mode_get_type")]
12620    fn static_type() -> glib::Type {
12621        unsafe { from_glib(ffi::gtk_string_filter_match_mode_get_type()) }
12622    }
12623}
12624
12625impl glib::HasParamSpec for StringFilterMatchMode {
12626    type ParamSpec = glib::ParamSpecEnum;
12627    type SetValue = Self;
12628    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12629
12630    fn param_spec_builder() -> Self::BuilderFn {
12631        Self::ParamSpec::builder_with_default
12632    }
12633}
12634
12635impl glib::value::ValueType for StringFilterMatchMode {
12636    type Type = Self;
12637}
12638
12639unsafe impl<'a> glib::value::FromValue<'a> for StringFilterMatchMode {
12640    type Checker = glib::value::GenericValueTypeChecker<Self>;
12641
12642    #[inline]
12643    unsafe fn from_value(value: &'a glib::Value) -> Self {
12644        skip_assert_initialized!();
12645        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12646    }
12647}
12648
12649impl ToValue for StringFilterMatchMode {
12650    #[inline]
12651    fn to_value(&self) -> glib::Value {
12652        let mut value = glib::Value::for_value_type::<Self>();
12653        unsafe {
12654            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12655        }
12656        value
12657    }
12658
12659    #[inline]
12660    fn value_type(&self) -> glib::Type {
12661        Self::static_type()
12662    }
12663}
12664
12665impl From<StringFilterMatchMode> for glib::Value {
12666    #[inline]
12667    fn from(v: StringFilterMatchMode) -> Self {
12668        skip_assert_initialized!();
12669        ToValue::to_value(&v)
12670    }
12671}
12672
12673/// Error codes in the `GTK_SVG_ERROR` domain for errors
12674/// that happen during parsing or rendering of SVG.
12675#[cfg(feature = "v4_22")]
12676#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12677#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12678#[non_exhaustive]
12679#[doc(alias = "GtkSvgError")]
12680pub enum SvgError {
12681    /// The XML syntax is broken
12682    ///   in some way
12683    #[doc(alias = "GTK_SVG_ERROR_INVALID_SYNTAX")]
12684    InvalidSyntax,
12685    /// An XML element is invalid
12686    ///   (either because it is not part of SVG, or because it is
12687    ///   in the wrong place, or because it not implemented in GTK)
12688    #[doc(alias = "GTK_SVG_ERROR_INVALID_ELEMENT")]
12689    InvalidElement,
12690    /// An attribute is invalid
12691    ///   (either because it is not part of SVG, or because it is
12692    ///   not implemented in GTK, or its value is problematic)
12693    #[doc(alias = "GTK_SVG_ERROR_INVALID_ATTRIBUTE")]
12694    InvalidAttribute,
12695    /// A required attribute is missing
12696    #[doc(alias = "GTK_SVG_ERROR_MISSING_ATTRIBUTE")]
12697    MissingAttribute,
12698    /// A reference does not point to
12699    ///   a suitable element
12700    #[doc(alias = "GTK_SVG_ERROR_INVALID_REFERENCE")]
12701    InvalidReference,
12702    /// An animation could not be updated
12703    #[doc(alias = "GTK_SVG_ERROR_FAILED_UPDATE")]
12704    FailedUpdate,
12705    /// Rendering is not according to
12706    ///   expecations
12707    #[doc(alias = "GTK_SVG_ERROR_FAILED_RENDERING")]
12708    FailedRendering,
12709    /// An XML element is ignored,
12710    ///   but it should not affect rendering (this error code is used
12711    ///   for metadata and exension elements)
12712    #[doc(alias = "GTK_SVG_ERROR_IGNORED_ELEMENT")]
12713    IgnoredElement,
12714    /// An implementation limit has
12715    ///   been hit, such as the number of loaded shapes.
12716    #[doc(alias = "GTK_SVG_ERROR_LIMITS_EXCEEDED")]
12717    LimitsExceeded,
12718    /// The SVG uses features that
12719    ///   are not supported by [`Svg`][crate::Svg]. It may be advisable to use
12720    ///   a different SVG renderer.
12721    #[doc(alias = "GTK_SVG_ERROR_NOT_IMPLEMENTED")]
12722    NotImplemented,
12723    #[doc(alias = "GTK_SVG_ERROR_FEATURE_DISABLED")]
12724    FeatureDisabled,
12725    #[doc(hidden)]
12726    __Unknown(i32),
12727}
12728
12729#[cfg(feature = "v4_22")]
12730#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12731impl SvgError {
12732    #[doc(alias = "gtk_svg_error_get_attribute")]
12733    #[doc(alias = "get_attribute")]
12734    pub fn attribute(error: &glib::Error) -> Option<glib::GString> {
12735        assert_initialized_main_thread!();
12736        unsafe { from_glib_none(ffi::gtk_svg_error_get_attribute(error.to_glib_none().0)) }
12737    }
12738
12739    #[doc(alias = "gtk_svg_error_get_element")]
12740    #[doc(alias = "get_element")]
12741    pub fn element(error: &glib::Error) -> Option<glib::GString> {
12742        assert_initialized_main_thread!();
12743        unsafe { from_glib_none(ffi::gtk_svg_error_get_element(error.to_glib_none().0)) }
12744    }
12745
12746    //#[doc(alias = "gtk_svg_error_get_end")]
12747    //#[doc(alias = "get_end")]
12748    //pub fn end(error: &glib::Error) -> /*Ignored*/Option<SvgLocation> {
12749    //    unsafe { TODO: call ffi:gtk_svg_error_get_end() }
12750    //}
12751
12752    #[cfg(feature = "v4_24")]
12753    #[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
12754    #[doc(alias = "gtk_svg_error_get_input")]
12755    #[doc(alias = "get_input")]
12756    pub fn input(error: &glib::Error) -> Option<glib::GString> {
12757        assert_initialized_main_thread!();
12758        unsafe { from_glib_none(ffi::gtk_svg_error_get_input(error.to_glib_none().0)) }
12759    }
12760
12761    //#[doc(alias = "gtk_svg_error_get_start")]
12762    //#[doc(alias = "get_start")]
12763    //pub fn start(error: &glib::Error) -> /*Ignored*/Option<SvgLocation> {
12764    //    unsafe { TODO: call ffi:gtk_svg_error_get_start() }
12765    //}
12766
12767    #[doc(alias = "gtk_svg_error_quark")]
12768    pub fn quark() -> glib::Quark {
12769        assert_initialized_main_thread!();
12770        unsafe { from_glib(ffi::gtk_svg_error_quark()) }
12771    }
12772}
12773
12774#[cfg(feature = "v4_22")]
12775#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12776#[doc(hidden)]
12777impl IntoGlib for SvgError {
12778    type GlibType = ffi::GtkSvgError;
12779
12780    #[inline]
12781    fn into_glib(self) -> ffi::GtkSvgError {
12782        match self {
12783            Self::InvalidSyntax => ffi::GTK_SVG_ERROR_INVALID_SYNTAX,
12784            Self::InvalidElement => ffi::GTK_SVG_ERROR_INVALID_ELEMENT,
12785            Self::InvalidAttribute => ffi::GTK_SVG_ERROR_INVALID_ATTRIBUTE,
12786            Self::MissingAttribute => ffi::GTK_SVG_ERROR_MISSING_ATTRIBUTE,
12787            Self::InvalidReference => ffi::GTK_SVG_ERROR_INVALID_REFERENCE,
12788            Self::FailedUpdate => ffi::GTK_SVG_ERROR_FAILED_UPDATE,
12789            Self::FailedRendering => ffi::GTK_SVG_ERROR_FAILED_RENDERING,
12790            Self::IgnoredElement => ffi::GTK_SVG_ERROR_IGNORED_ELEMENT,
12791            Self::LimitsExceeded => ffi::GTK_SVG_ERROR_LIMITS_EXCEEDED,
12792            Self::NotImplemented => ffi::GTK_SVG_ERROR_NOT_IMPLEMENTED,
12793            Self::FeatureDisabled => ffi::GTK_SVG_ERROR_FEATURE_DISABLED,
12794            Self::__Unknown(value) => value,
12795        }
12796    }
12797}
12798
12799#[cfg(feature = "v4_22")]
12800#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12801#[doc(hidden)]
12802impl FromGlib<ffi::GtkSvgError> for SvgError {
12803    #[inline]
12804    unsafe fn from_glib(value: ffi::GtkSvgError) -> Self {
12805        skip_assert_initialized!();
12806
12807        match value {
12808            ffi::GTK_SVG_ERROR_INVALID_SYNTAX => Self::InvalidSyntax,
12809            ffi::GTK_SVG_ERROR_INVALID_ELEMENT => Self::InvalidElement,
12810            ffi::GTK_SVG_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
12811            ffi::GTK_SVG_ERROR_MISSING_ATTRIBUTE => Self::MissingAttribute,
12812            ffi::GTK_SVG_ERROR_INVALID_REFERENCE => Self::InvalidReference,
12813            ffi::GTK_SVG_ERROR_FAILED_UPDATE => Self::FailedUpdate,
12814            ffi::GTK_SVG_ERROR_FAILED_RENDERING => Self::FailedRendering,
12815            ffi::GTK_SVG_ERROR_IGNORED_ELEMENT => Self::IgnoredElement,
12816            ffi::GTK_SVG_ERROR_LIMITS_EXCEEDED => Self::LimitsExceeded,
12817            ffi::GTK_SVG_ERROR_NOT_IMPLEMENTED => Self::NotImplemented,
12818            ffi::GTK_SVG_ERROR_FEATURE_DISABLED => Self::FeatureDisabled,
12819            value => Self::__Unknown(value),
12820        }
12821    }
12822}
12823
12824#[cfg(feature = "v4_22")]
12825#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12826impl glib::error::ErrorDomain for SvgError {
12827    #[inline]
12828    fn domain() -> glib::Quark {
12829        skip_assert_initialized!();
12830
12831        static QUARK: ::std::sync::OnceLock<glib::ffi::GQuark> = ::std::sync::OnceLock::new();
12832        let quark = *QUARK.get_or_init(|| unsafe {
12833            glib::ffi::g_quark_from_static_string(c"GtkSvgError".as_ptr())
12834        });
12835        unsafe { from_glib(quark) }
12836    }
12837
12838    #[inline]
12839    fn code(self) -> i32 {
12840        self.into_glib()
12841    }
12842
12843    #[inline]
12844    #[allow(clippy::match_single_binding)]
12845    fn from(code: i32) -> Option<Self> {
12846        skip_assert_initialized!();
12847        match unsafe { from_glib(code) } {
12848            value => Some(value),
12849        }
12850    }
12851}
12852
12853#[cfg(feature = "v4_22")]
12854#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12855impl StaticType for SvgError {
12856    #[inline]
12857    #[doc(alias = "gtk_svg_error_get_type")]
12858    fn static_type() -> glib::Type {
12859        unsafe { from_glib(ffi::gtk_svg_error_get_type()) }
12860    }
12861}
12862
12863#[cfg(feature = "v4_22")]
12864#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12865impl glib::HasParamSpec for SvgError {
12866    type ParamSpec = glib::ParamSpecEnum;
12867    type SetValue = Self;
12868    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12869
12870    fn param_spec_builder() -> Self::BuilderFn {
12871        Self::ParamSpec::builder_with_default
12872    }
12873}
12874
12875#[cfg(feature = "v4_22")]
12876#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12877impl glib::value::ValueType for SvgError {
12878    type Type = Self;
12879}
12880
12881#[cfg(feature = "v4_22")]
12882#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12883unsafe impl<'a> glib::value::FromValue<'a> for SvgError {
12884    type Checker = glib::value::GenericValueTypeChecker<Self>;
12885
12886    #[inline]
12887    unsafe fn from_value(value: &'a glib::Value) -> Self {
12888        skip_assert_initialized!();
12889        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12890    }
12891}
12892
12893#[cfg(feature = "v4_22")]
12894#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12895impl ToValue for SvgError {
12896    #[inline]
12897    fn to_value(&self) -> glib::Value {
12898        let mut value = glib::Value::for_value_type::<Self>();
12899        unsafe {
12900            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12901        }
12902        value
12903    }
12904
12905    #[inline]
12906    fn value_type(&self) -> glib::Type {
12907        Self::static_type()
12908    }
12909}
12910
12911#[cfg(feature = "v4_22")]
12912#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12913impl From<SvgError> for glib::Value {
12914    #[inline]
12915    fn from(v: SvgError) -> Self {
12916        skip_assert_initialized!();
12917        ToValue::to_value(&v)
12918    }
12919}
12920
12921/// The indexes of colors passed to symbolic color rendering, such as
12922/// `vfunc::Gtk::SymbolicPaintable::snapshot_symbolic`.
12923///
12924/// More values may be added over time.
12925#[cfg(feature = "v4_6")]
12926#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12927#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12928#[non_exhaustive]
12929#[doc(alias = "GtkSymbolicColor")]
12930pub enum SymbolicColor {
12931    /// The default foreground color
12932    #[doc(alias = "GTK_SYMBOLIC_COLOR_FOREGROUND")]
12933    Foreground,
12934    /// Indication color for errors
12935    #[doc(alias = "GTK_SYMBOLIC_COLOR_ERROR")]
12936    Error,
12937    /// Indication color for warnings
12938    #[doc(alias = "GTK_SYMBOLIC_COLOR_WARNING")]
12939    Warning,
12940    /// Indication color for success
12941    #[doc(alias = "GTK_SYMBOLIC_COLOR_SUCCESS")]
12942    Success,
12943    /// The system accent color.
12944    #[cfg(feature = "v4_22")]
12945    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12946    #[doc(alias = "GTK_SYMBOLIC_COLOR_ACCENT")]
12947    Accent,
12948    #[doc(hidden)]
12949    __Unknown(i32),
12950}
12951
12952#[cfg(feature = "v4_6")]
12953#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12954#[doc(hidden)]
12955impl IntoGlib for SymbolicColor {
12956    type GlibType = ffi::GtkSymbolicColor;
12957
12958    #[inline]
12959    fn into_glib(self) -> ffi::GtkSymbolicColor {
12960        match self {
12961            Self::Foreground => ffi::GTK_SYMBOLIC_COLOR_FOREGROUND,
12962            Self::Error => ffi::GTK_SYMBOLIC_COLOR_ERROR,
12963            Self::Warning => ffi::GTK_SYMBOLIC_COLOR_WARNING,
12964            Self::Success => ffi::GTK_SYMBOLIC_COLOR_SUCCESS,
12965            #[cfg(feature = "v4_22")]
12966            Self::Accent => ffi::GTK_SYMBOLIC_COLOR_ACCENT,
12967            Self::__Unknown(value) => value,
12968        }
12969    }
12970}
12971
12972#[cfg(feature = "v4_6")]
12973#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12974#[doc(hidden)]
12975impl FromGlib<ffi::GtkSymbolicColor> for SymbolicColor {
12976    #[inline]
12977    unsafe fn from_glib(value: ffi::GtkSymbolicColor) -> Self {
12978        skip_assert_initialized!();
12979
12980        match value {
12981            ffi::GTK_SYMBOLIC_COLOR_FOREGROUND => Self::Foreground,
12982            ffi::GTK_SYMBOLIC_COLOR_ERROR => Self::Error,
12983            ffi::GTK_SYMBOLIC_COLOR_WARNING => Self::Warning,
12984            ffi::GTK_SYMBOLIC_COLOR_SUCCESS => Self::Success,
12985            #[cfg(feature = "v4_22")]
12986            ffi::GTK_SYMBOLIC_COLOR_ACCENT => Self::Accent,
12987            value => Self::__Unknown(value),
12988        }
12989    }
12990}
12991
12992#[cfg(feature = "v4_6")]
12993#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
12994impl StaticType for SymbolicColor {
12995    #[inline]
12996    #[doc(alias = "gtk_symbolic_color_get_type")]
12997    fn static_type() -> glib::Type {
12998        unsafe { from_glib(ffi::gtk_symbolic_color_get_type()) }
12999    }
13000}
13001
13002#[cfg(feature = "v4_6")]
13003#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13004impl glib::HasParamSpec for SymbolicColor {
13005    type ParamSpec = glib::ParamSpecEnum;
13006    type SetValue = Self;
13007    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13008
13009    fn param_spec_builder() -> Self::BuilderFn {
13010        Self::ParamSpec::builder_with_default
13011    }
13012}
13013
13014#[cfg(feature = "v4_6")]
13015#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13016impl glib::value::ValueType for SymbolicColor {
13017    type Type = Self;
13018}
13019
13020#[cfg(feature = "v4_6")]
13021#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13022unsafe impl<'a> glib::value::FromValue<'a> for SymbolicColor {
13023    type Checker = glib::value::GenericValueTypeChecker<Self>;
13024
13025    #[inline]
13026    unsafe fn from_value(value: &'a glib::Value) -> Self {
13027        skip_assert_initialized!();
13028        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13029    }
13030}
13031
13032#[cfg(feature = "v4_6")]
13033#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13034impl ToValue for SymbolicColor {
13035    #[inline]
13036    fn to_value(&self) -> glib::Value {
13037        let mut value = glib::Value::for_value_type::<Self>();
13038        unsafe {
13039            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13040        }
13041        value
13042    }
13043
13044    #[inline]
13045    fn value_type(&self) -> glib::Type {
13046        Self::static_type()
13047    }
13048}
13049
13050#[cfg(feature = "v4_6")]
13051#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13052impl From<SymbolicColor> for glib::Value {
13053    #[inline]
13054    fn from(v: SymbolicColor) -> Self {
13055        skip_assert_initialized!();
13056        ToValue::to_value(&v)
13057    }
13058}
13059
13060/// Values that can be passed to the [`WidgetImpl::system_setting_changed()`][crate::subclass::prelude::WidgetImpl::system_setting_changed()]
13061/// vfunc.
13062///
13063/// The values indicate which system setting has changed.
13064/// Widgets may need to drop caches, or react otherwise.
13065///
13066/// Most of the values correspond to [`Settings`][crate::Settings] properties.
13067///
13068/// More values may be added over time.
13069#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13070#[non_exhaustive]
13071#[doc(alias = "GtkSystemSetting")]
13072pub enum SystemSetting {
13073    /// the [`gtk-xft-dpi`][struct@crate::Settings#gtk-xft-dpi] setting has changed
13074    #[doc(alias = "GTK_SYSTEM_SETTING_DPI")]
13075    Dpi,
13076    /// The [`gtk-font-name`][struct@crate::Settings#gtk-font-name] setting has changed
13077    #[doc(alias = "GTK_SYSTEM_SETTING_FONT_NAME")]
13078    FontName,
13079    /// The font configuration has changed in a way that
13080    ///   requires text to be redrawn. This can be any of the
13081    ///   [`gtk-xft-antialias`][struct@crate::Settings#gtk-xft-antialias],
13082    ///   [`gtk-xft-hinting`][struct@crate::Settings#gtk-xft-hinting],
13083    ///   [`gtk-xft-hintstyle`][struct@crate::Settings#gtk-xft-hintstyle],
13084    ///   [`gtk-xft-rgba`][struct@crate::Settings#gtk-xft-rgba] or
13085    ///   [`gtk-fontconfig-timestamp`][struct@crate::Settings#gtk-fontconfig-timestamp] settings
13086    #[doc(alias = "GTK_SYSTEM_SETTING_FONT_CONFIG")]
13087    FontConfig,
13088    /// The display has changed
13089    #[doc(alias = "GTK_SYSTEM_SETTING_DISPLAY")]
13090    Display,
13091    /// The icon theme has changed in a way that requires
13092    ///   icons to be looked up again
13093    #[doc(alias = "GTK_SYSTEM_SETTING_ICON_THEME")]
13094    IconTheme,
13095    #[doc(hidden)]
13096    __Unknown(i32),
13097}
13098
13099#[doc(hidden)]
13100impl IntoGlib for SystemSetting {
13101    type GlibType = ffi::GtkSystemSetting;
13102
13103    #[inline]
13104    fn into_glib(self) -> ffi::GtkSystemSetting {
13105        match self {
13106            Self::Dpi => ffi::GTK_SYSTEM_SETTING_DPI,
13107            Self::FontName => ffi::GTK_SYSTEM_SETTING_FONT_NAME,
13108            Self::FontConfig => ffi::GTK_SYSTEM_SETTING_FONT_CONFIG,
13109            Self::Display => ffi::GTK_SYSTEM_SETTING_DISPLAY,
13110            Self::IconTheme => ffi::GTK_SYSTEM_SETTING_ICON_THEME,
13111            Self::__Unknown(value) => value,
13112        }
13113    }
13114}
13115
13116#[doc(hidden)]
13117impl FromGlib<ffi::GtkSystemSetting> for SystemSetting {
13118    #[inline]
13119    unsafe fn from_glib(value: ffi::GtkSystemSetting) -> Self {
13120        skip_assert_initialized!();
13121
13122        match value {
13123            ffi::GTK_SYSTEM_SETTING_DPI => Self::Dpi,
13124            ffi::GTK_SYSTEM_SETTING_FONT_NAME => Self::FontName,
13125            ffi::GTK_SYSTEM_SETTING_FONT_CONFIG => Self::FontConfig,
13126            ffi::GTK_SYSTEM_SETTING_DISPLAY => Self::Display,
13127            ffi::GTK_SYSTEM_SETTING_ICON_THEME => Self::IconTheme,
13128            value => Self::__Unknown(value),
13129        }
13130    }
13131}
13132
13133impl StaticType for SystemSetting {
13134    #[inline]
13135    #[doc(alias = "gtk_system_setting_get_type")]
13136    fn static_type() -> glib::Type {
13137        unsafe { from_glib(ffi::gtk_system_setting_get_type()) }
13138    }
13139}
13140
13141impl glib::HasParamSpec for SystemSetting {
13142    type ParamSpec = glib::ParamSpecEnum;
13143    type SetValue = Self;
13144    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13145
13146    fn param_spec_builder() -> Self::BuilderFn {
13147        Self::ParamSpec::builder_with_default
13148    }
13149}
13150
13151impl glib::value::ValueType for SystemSetting {
13152    type Type = Self;
13153}
13154
13155unsafe impl<'a> glib::value::FromValue<'a> for SystemSetting {
13156    type Checker = glib::value::GenericValueTypeChecker<Self>;
13157
13158    #[inline]
13159    unsafe fn from_value(value: &'a glib::Value) -> Self {
13160        skip_assert_initialized!();
13161        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13162    }
13163}
13164
13165impl ToValue for SystemSetting {
13166    #[inline]
13167    fn to_value(&self) -> glib::Value {
13168        let mut value = glib::Value::for_value_type::<Self>();
13169        unsafe {
13170            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13171        }
13172        value
13173    }
13174
13175    #[inline]
13176    fn value_type(&self) -> glib::Type {
13177        Self::static_type()
13178    }
13179}
13180
13181impl From<SystemSetting> for glib::Value {
13182    #[inline]
13183    fn from(v: SystemSetting) -> Self {
13184        skip_assert_initialized!();
13185        ToValue::to_value(&v)
13186    }
13187}
13188
13189/// Reading directions for text.
13190#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13191#[non_exhaustive]
13192#[doc(alias = "GtkTextDirection")]
13193pub enum TextDirection {
13194    /// No direction.
13195    #[doc(alias = "GTK_TEXT_DIR_NONE")]
13196    None,
13197    /// Left to right text direction.
13198    #[doc(alias = "GTK_TEXT_DIR_LTR")]
13199    Ltr,
13200    /// Right to left text direction.
13201    #[doc(alias = "GTK_TEXT_DIR_RTL")]
13202    Rtl,
13203    #[doc(hidden)]
13204    __Unknown(i32),
13205}
13206
13207#[doc(hidden)]
13208impl IntoGlib for TextDirection {
13209    type GlibType = ffi::GtkTextDirection;
13210
13211    #[inline]
13212    fn into_glib(self) -> ffi::GtkTextDirection {
13213        match self {
13214            Self::None => ffi::GTK_TEXT_DIR_NONE,
13215            Self::Ltr => ffi::GTK_TEXT_DIR_LTR,
13216            Self::Rtl => ffi::GTK_TEXT_DIR_RTL,
13217            Self::__Unknown(value) => value,
13218        }
13219    }
13220}
13221
13222#[doc(hidden)]
13223impl FromGlib<ffi::GtkTextDirection> for TextDirection {
13224    #[inline]
13225    unsafe fn from_glib(value: ffi::GtkTextDirection) -> Self {
13226        skip_assert_initialized!();
13227
13228        match value {
13229            ffi::GTK_TEXT_DIR_NONE => Self::None,
13230            ffi::GTK_TEXT_DIR_LTR => Self::Ltr,
13231            ffi::GTK_TEXT_DIR_RTL => Self::Rtl,
13232            value => Self::__Unknown(value),
13233        }
13234    }
13235}
13236
13237impl StaticType for TextDirection {
13238    #[inline]
13239    #[doc(alias = "gtk_text_direction_get_type")]
13240    fn static_type() -> glib::Type {
13241        unsafe { from_glib(ffi::gtk_text_direction_get_type()) }
13242    }
13243}
13244
13245impl glib::HasParamSpec for TextDirection {
13246    type ParamSpec = glib::ParamSpecEnum;
13247    type SetValue = Self;
13248    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13249
13250    fn param_spec_builder() -> Self::BuilderFn {
13251        Self::ParamSpec::builder_with_default
13252    }
13253}
13254
13255impl glib::value::ValueType for TextDirection {
13256    type Type = Self;
13257}
13258
13259unsafe impl<'a> glib::value::FromValue<'a> for TextDirection {
13260    type Checker = glib::value::GenericValueTypeChecker<Self>;
13261
13262    #[inline]
13263    unsafe fn from_value(value: &'a glib::Value) -> Self {
13264        skip_assert_initialized!();
13265        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13266    }
13267}
13268
13269impl ToValue for TextDirection {
13270    #[inline]
13271    fn to_value(&self) -> glib::Value {
13272        let mut value = glib::Value::for_value_type::<Self>();
13273        unsafe {
13274            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13275        }
13276        value
13277    }
13278
13279    #[inline]
13280    fn value_type(&self) -> glib::Type {
13281        Self::static_type()
13282    }
13283}
13284
13285impl From<TextDirection> for glib::Value {
13286    #[inline]
13287    fn from(v: TextDirection) -> Self {
13288        skip_assert_initialized!();
13289        ToValue::to_value(&v)
13290    }
13291}
13292
13293/// Granularity types that extend the text selection. Use the
13294/// `GtkTextView::extend-selection` signal to customize the selection.
13295#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13296#[non_exhaustive]
13297#[doc(alias = "GtkTextExtendSelection")]
13298pub enum TextExtendSelection {
13299    /// Selects the current word. It is triggered by
13300    ///   a double-click for example.
13301    #[doc(alias = "GTK_TEXT_EXTEND_SELECTION_WORD")]
13302    Word,
13303    /// Selects the current line. It is triggered by
13304    ///   a triple-click for example.
13305    #[doc(alias = "GTK_TEXT_EXTEND_SELECTION_LINE")]
13306    Line,
13307    #[doc(hidden)]
13308    __Unknown(i32),
13309}
13310
13311#[doc(hidden)]
13312impl IntoGlib for TextExtendSelection {
13313    type GlibType = ffi::GtkTextExtendSelection;
13314
13315    #[inline]
13316    fn into_glib(self) -> ffi::GtkTextExtendSelection {
13317        match self {
13318            Self::Word => ffi::GTK_TEXT_EXTEND_SELECTION_WORD,
13319            Self::Line => ffi::GTK_TEXT_EXTEND_SELECTION_LINE,
13320            Self::__Unknown(value) => value,
13321        }
13322    }
13323}
13324
13325#[doc(hidden)]
13326impl FromGlib<ffi::GtkTextExtendSelection> for TextExtendSelection {
13327    #[inline]
13328    unsafe fn from_glib(value: ffi::GtkTextExtendSelection) -> Self {
13329        skip_assert_initialized!();
13330
13331        match value {
13332            ffi::GTK_TEXT_EXTEND_SELECTION_WORD => Self::Word,
13333            ffi::GTK_TEXT_EXTEND_SELECTION_LINE => Self::Line,
13334            value => Self::__Unknown(value),
13335        }
13336    }
13337}
13338
13339impl StaticType for TextExtendSelection {
13340    #[inline]
13341    #[doc(alias = "gtk_text_extend_selection_get_type")]
13342    fn static_type() -> glib::Type {
13343        unsafe { from_glib(ffi::gtk_text_extend_selection_get_type()) }
13344    }
13345}
13346
13347impl glib::HasParamSpec for TextExtendSelection {
13348    type ParamSpec = glib::ParamSpecEnum;
13349    type SetValue = Self;
13350    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13351
13352    fn param_spec_builder() -> Self::BuilderFn {
13353        Self::ParamSpec::builder_with_default
13354    }
13355}
13356
13357impl glib::value::ValueType for TextExtendSelection {
13358    type Type = Self;
13359}
13360
13361unsafe impl<'a> glib::value::FromValue<'a> for TextExtendSelection {
13362    type Checker = glib::value::GenericValueTypeChecker<Self>;
13363
13364    #[inline]
13365    unsafe fn from_value(value: &'a glib::Value) -> Self {
13366        skip_assert_initialized!();
13367        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13368    }
13369}
13370
13371impl ToValue for TextExtendSelection {
13372    #[inline]
13373    fn to_value(&self) -> glib::Value {
13374        let mut value = glib::Value::for_value_type::<Self>();
13375        unsafe {
13376            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13377        }
13378        value
13379    }
13380
13381    #[inline]
13382    fn value_type(&self) -> glib::Type {
13383        Self::static_type()
13384    }
13385}
13386
13387impl From<TextExtendSelection> for glib::Value {
13388    #[inline]
13389    fn from(v: TextExtendSelection) -> Self {
13390        skip_assert_initialized!();
13391        ToValue::to_value(&v)
13392    }
13393}
13394
13395/// Used to reference the layers of [`TextView`][crate::TextView] for the purpose of customized
13396/// drawing with the ::snapshot_layer vfunc.
13397#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13398#[non_exhaustive]
13399#[doc(alias = "GtkTextViewLayer")]
13400pub enum TextViewLayer {
13401    /// The layer rendered below the text (but above the background).
13402    #[doc(alias = "GTK_TEXT_VIEW_LAYER_BELOW_TEXT")]
13403    BelowText,
13404    /// The layer rendered above the text.
13405    #[doc(alias = "GTK_TEXT_VIEW_LAYER_ABOVE_TEXT")]
13406    AboveText,
13407    #[doc(hidden)]
13408    __Unknown(i32),
13409}
13410
13411#[doc(hidden)]
13412impl IntoGlib for TextViewLayer {
13413    type GlibType = ffi::GtkTextViewLayer;
13414
13415    #[inline]
13416    fn into_glib(self) -> ffi::GtkTextViewLayer {
13417        match self {
13418            Self::BelowText => ffi::GTK_TEXT_VIEW_LAYER_BELOW_TEXT,
13419            Self::AboveText => ffi::GTK_TEXT_VIEW_LAYER_ABOVE_TEXT,
13420            Self::__Unknown(value) => value,
13421        }
13422    }
13423}
13424
13425#[doc(hidden)]
13426impl FromGlib<ffi::GtkTextViewLayer> for TextViewLayer {
13427    #[inline]
13428    unsafe fn from_glib(value: ffi::GtkTextViewLayer) -> Self {
13429        skip_assert_initialized!();
13430
13431        match value {
13432            ffi::GTK_TEXT_VIEW_LAYER_BELOW_TEXT => Self::BelowText,
13433            ffi::GTK_TEXT_VIEW_LAYER_ABOVE_TEXT => Self::AboveText,
13434            value => Self::__Unknown(value),
13435        }
13436    }
13437}
13438
13439impl StaticType for TextViewLayer {
13440    #[inline]
13441    #[doc(alias = "gtk_text_view_layer_get_type")]
13442    fn static_type() -> glib::Type {
13443        unsafe { from_glib(ffi::gtk_text_view_layer_get_type()) }
13444    }
13445}
13446
13447impl glib::HasParamSpec for TextViewLayer {
13448    type ParamSpec = glib::ParamSpecEnum;
13449    type SetValue = Self;
13450    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13451
13452    fn param_spec_builder() -> Self::BuilderFn {
13453        Self::ParamSpec::builder_with_default
13454    }
13455}
13456
13457impl glib::value::ValueType for TextViewLayer {
13458    type Type = Self;
13459}
13460
13461unsafe impl<'a> glib::value::FromValue<'a> for TextViewLayer {
13462    type Checker = glib::value::GenericValueTypeChecker<Self>;
13463
13464    #[inline]
13465    unsafe fn from_value(value: &'a glib::Value) -> Self {
13466        skip_assert_initialized!();
13467        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13468    }
13469}
13470
13471impl ToValue for TextViewLayer {
13472    #[inline]
13473    fn to_value(&self) -> glib::Value {
13474        let mut value = glib::Value::for_value_type::<Self>();
13475        unsafe {
13476            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13477        }
13478        value
13479    }
13480
13481    #[inline]
13482    fn value_type(&self) -> glib::Type {
13483        Self::static_type()
13484    }
13485}
13486
13487impl From<TextViewLayer> for glib::Value {
13488    #[inline]
13489    fn from(v: TextViewLayer) -> Self {
13490        skip_assert_initialized!();
13491        ToValue::to_value(&v)
13492    }
13493}
13494
13495/// Used to reference the parts of [`TextView`][crate::TextView].
13496#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13497#[non_exhaustive]
13498#[doc(alias = "GtkTextWindowType")]
13499pub enum TextWindowType {
13500    /// Window that floats over scrolling areas.
13501    #[doc(alias = "GTK_TEXT_WINDOW_WIDGET")]
13502    Widget,
13503    /// Scrollable text window.
13504    #[doc(alias = "GTK_TEXT_WINDOW_TEXT")]
13505    Text,
13506    /// Left side border window.
13507    #[doc(alias = "GTK_TEXT_WINDOW_LEFT")]
13508    Left,
13509    /// Right side border window.
13510    #[doc(alias = "GTK_TEXT_WINDOW_RIGHT")]
13511    Right,
13512    /// Top border window.
13513    #[doc(alias = "GTK_TEXT_WINDOW_TOP")]
13514    Top,
13515    /// Bottom border window.
13516    #[doc(alias = "GTK_TEXT_WINDOW_BOTTOM")]
13517    Bottom,
13518    #[doc(hidden)]
13519    __Unknown(i32),
13520}
13521
13522#[doc(hidden)]
13523impl IntoGlib for TextWindowType {
13524    type GlibType = ffi::GtkTextWindowType;
13525
13526    #[inline]
13527    fn into_glib(self) -> ffi::GtkTextWindowType {
13528        match self {
13529            Self::Widget => ffi::GTK_TEXT_WINDOW_WIDGET,
13530            Self::Text => ffi::GTK_TEXT_WINDOW_TEXT,
13531            Self::Left => ffi::GTK_TEXT_WINDOW_LEFT,
13532            Self::Right => ffi::GTK_TEXT_WINDOW_RIGHT,
13533            Self::Top => ffi::GTK_TEXT_WINDOW_TOP,
13534            Self::Bottom => ffi::GTK_TEXT_WINDOW_BOTTOM,
13535            Self::__Unknown(value) => value,
13536        }
13537    }
13538}
13539
13540#[doc(hidden)]
13541impl FromGlib<ffi::GtkTextWindowType> for TextWindowType {
13542    #[inline]
13543    unsafe fn from_glib(value: ffi::GtkTextWindowType) -> Self {
13544        skip_assert_initialized!();
13545
13546        match value {
13547            ffi::GTK_TEXT_WINDOW_WIDGET => Self::Widget,
13548            ffi::GTK_TEXT_WINDOW_TEXT => Self::Text,
13549            ffi::GTK_TEXT_WINDOW_LEFT => Self::Left,
13550            ffi::GTK_TEXT_WINDOW_RIGHT => Self::Right,
13551            ffi::GTK_TEXT_WINDOW_TOP => Self::Top,
13552            ffi::GTK_TEXT_WINDOW_BOTTOM => Self::Bottom,
13553            value => Self::__Unknown(value),
13554        }
13555    }
13556}
13557
13558impl StaticType for TextWindowType {
13559    #[inline]
13560    #[doc(alias = "gtk_text_window_type_get_type")]
13561    fn static_type() -> glib::Type {
13562        unsafe { from_glib(ffi::gtk_text_window_type_get_type()) }
13563    }
13564}
13565
13566impl glib::HasParamSpec for TextWindowType {
13567    type ParamSpec = glib::ParamSpecEnum;
13568    type SetValue = Self;
13569    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13570
13571    fn param_spec_builder() -> Self::BuilderFn {
13572        Self::ParamSpec::builder_with_default
13573    }
13574}
13575
13576impl glib::value::ValueType for TextWindowType {
13577    type Type = Self;
13578}
13579
13580unsafe impl<'a> glib::value::FromValue<'a> for TextWindowType {
13581    type Checker = glib::value::GenericValueTypeChecker<Self>;
13582
13583    #[inline]
13584    unsafe fn from_value(value: &'a glib::Value) -> Self {
13585        skip_assert_initialized!();
13586        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13587    }
13588}
13589
13590impl ToValue for TextWindowType {
13591    #[inline]
13592    fn to_value(&self) -> glib::Value {
13593        let mut value = glib::Value::for_value_type::<Self>();
13594        unsafe {
13595            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13596        }
13597        value
13598    }
13599
13600    #[inline]
13601    fn value_type(&self) -> glib::Type {
13602        Self::static_type()
13603    }
13604}
13605
13606impl From<TextWindowType> for glib::Value {
13607    #[inline]
13608    fn from(v: TextWindowType) -> Self {
13609        skip_assert_initialized!();
13610        ToValue::to_value(&v)
13611    }
13612}
13613
13614/// The sizing method the column uses to determine its width.  Please note
13615/// that [`Autosize`][Self::Autosize] are inefficient for large views, and
13616/// can make columns appear choppy.
13617///
13618/// # Deprecated since 4.20
13619///
13620/// There is no replacement.
13621#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13622#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13623#[non_exhaustive]
13624#[doc(alias = "GtkTreeViewColumnSizing")]
13625pub enum TreeViewColumnSizing {
13626    /// Columns only get bigger in reaction to changes in the model
13627    #[doc(alias = "GTK_TREE_VIEW_COLUMN_GROW_ONLY")]
13628    GrowOnly,
13629    /// Columns resize to be the optimal size every time the model changes.
13630    #[doc(alias = "GTK_TREE_VIEW_COLUMN_AUTOSIZE")]
13631    Autosize,
13632    /// Columns are a fixed numbers of pixels wide.
13633    #[doc(alias = "GTK_TREE_VIEW_COLUMN_FIXED")]
13634    Fixed,
13635    #[doc(hidden)]
13636    __Unknown(i32),
13637}
13638
13639#[allow(deprecated)]
13640#[doc(hidden)]
13641impl IntoGlib for TreeViewColumnSizing {
13642    type GlibType = ffi::GtkTreeViewColumnSizing;
13643
13644    #[inline]
13645    fn into_glib(self) -> ffi::GtkTreeViewColumnSizing {
13646        match self {
13647            Self::GrowOnly => ffi::GTK_TREE_VIEW_COLUMN_GROW_ONLY,
13648            Self::Autosize => ffi::GTK_TREE_VIEW_COLUMN_AUTOSIZE,
13649            Self::Fixed => ffi::GTK_TREE_VIEW_COLUMN_FIXED,
13650            Self::__Unknown(value) => value,
13651        }
13652    }
13653}
13654
13655#[allow(deprecated)]
13656#[doc(hidden)]
13657impl FromGlib<ffi::GtkTreeViewColumnSizing> for TreeViewColumnSizing {
13658    #[inline]
13659    unsafe fn from_glib(value: ffi::GtkTreeViewColumnSizing) -> Self {
13660        skip_assert_initialized!();
13661
13662        match value {
13663            ffi::GTK_TREE_VIEW_COLUMN_GROW_ONLY => Self::GrowOnly,
13664            ffi::GTK_TREE_VIEW_COLUMN_AUTOSIZE => Self::Autosize,
13665            ffi::GTK_TREE_VIEW_COLUMN_FIXED => Self::Fixed,
13666            value => Self::__Unknown(value),
13667        }
13668    }
13669}
13670
13671#[allow(deprecated)]
13672impl StaticType for TreeViewColumnSizing {
13673    #[inline]
13674    #[doc(alias = "gtk_tree_view_column_sizing_get_type")]
13675    fn static_type() -> glib::Type {
13676        unsafe { from_glib(ffi::gtk_tree_view_column_sizing_get_type()) }
13677    }
13678}
13679
13680#[allow(deprecated)]
13681impl glib::HasParamSpec for TreeViewColumnSizing {
13682    type ParamSpec = glib::ParamSpecEnum;
13683    type SetValue = Self;
13684    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13685
13686    fn param_spec_builder() -> Self::BuilderFn {
13687        Self::ParamSpec::builder_with_default
13688    }
13689}
13690
13691#[allow(deprecated)]
13692impl glib::value::ValueType for TreeViewColumnSizing {
13693    type Type = Self;
13694}
13695
13696#[allow(deprecated)]
13697unsafe impl<'a> glib::value::FromValue<'a> for TreeViewColumnSizing {
13698    type Checker = glib::value::GenericValueTypeChecker<Self>;
13699
13700    #[inline]
13701    unsafe fn from_value(value: &'a glib::Value) -> Self {
13702        skip_assert_initialized!();
13703        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13704    }
13705}
13706
13707#[allow(deprecated)]
13708impl ToValue for TreeViewColumnSizing {
13709    #[inline]
13710    fn to_value(&self) -> glib::Value {
13711        let mut value = glib::Value::for_value_type::<Self>();
13712        unsafe {
13713            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13714        }
13715        value
13716    }
13717
13718    #[inline]
13719    fn value_type(&self) -> glib::Type {
13720        Self::static_type()
13721    }
13722}
13723
13724#[allow(deprecated)]
13725impl From<TreeViewColumnSizing> for glib::Value {
13726    #[inline]
13727    fn from(v: TreeViewColumnSizing) -> Self {
13728        skip_assert_initialized!();
13729        ToValue::to_value(&v)
13730    }
13731}
13732
13733/// An enum for determining where a dropped row goes.
13734///
13735/// # Deprecated since 4.20
13736///
13737/// There is no replacement.
13738#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13739#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13740#[non_exhaustive]
13741#[doc(alias = "GtkTreeViewDropPosition")]
13742pub enum TreeViewDropPosition {
13743    /// dropped row is inserted before
13744    #[doc(alias = "GTK_TREE_VIEW_DROP_BEFORE")]
13745    Before,
13746    /// dropped row is inserted after
13747    #[doc(alias = "GTK_TREE_VIEW_DROP_AFTER")]
13748    After,
13749    /// dropped row becomes a child or is inserted before
13750    #[doc(alias = "GTK_TREE_VIEW_DROP_INTO_OR_BEFORE")]
13751    IntoOrBefore,
13752    /// dropped row becomes a child or is inserted after
13753    #[doc(alias = "GTK_TREE_VIEW_DROP_INTO_OR_AFTER")]
13754    IntoOrAfter,
13755    #[doc(hidden)]
13756    __Unknown(i32),
13757}
13758
13759#[allow(deprecated)]
13760#[doc(hidden)]
13761impl IntoGlib for TreeViewDropPosition {
13762    type GlibType = ffi::GtkTreeViewDropPosition;
13763
13764    #[inline]
13765    fn into_glib(self) -> ffi::GtkTreeViewDropPosition {
13766        match self {
13767            Self::Before => ffi::GTK_TREE_VIEW_DROP_BEFORE,
13768            Self::After => ffi::GTK_TREE_VIEW_DROP_AFTER,
13769            Self::IntoOrBefore => ffi::GTK_TREE_VIEW_DROP_INTO_OR_BEFORE,
13770            Self::IntoOrAfter => ffi::GTK_TREE_VIEW_DROP_INTO_OR_AFTER,
13771            Self::__Unknown(value) => value,
13772        }
13773    }
13774}
13775
13776#[allow(deprecated)]
13777#[doc(hidden)]
13778impl FromGlib<ffi::GtkTreeViewDropPosition> for TreeViewDropPosition {
13779    #[inline]
13780    unsafe fn from_glib(value: ffi::GtkTreeViewDropPosition) -> Self {
13781        skip_assert_initialized!();
13782
13783        match value {
13784            ffi::GTK_TREE_VIEW_DROP_BEFORE => Self::Before,
13785            ffi::GTK_TREE_VIEW_DROP_AFTER => Self::After,
13786            ffi::GTK_TREE_VIEW_DROP_INTO_OR_BEFORE => Self::IntoOrBefore,
13787            ffi::GTK_TREE_VIEW_DROP_INTO_OR_AFTER => Self::IntoOrAfter,
13788            value => Self::__Unknown(value),
13789        }
13790    }
13791}
13792
13793#[allow(deprecated)]
13794impl StaticType for TreeViewDropPosition {
13795    #[inline]
13796    #[doc(alias = "gtk_tree_view_drop_position_get_type")]
13797    fn static_type() -> glib::Type {
13798        unsafe { from_glib(ffi::gtk_tree_view_drop_position_get_type()) }
13799    }
13800}
13801
13802#[allow(deprecated)]
13803impl glib::HasParamSpec for TreeViewDropPosition {
13804    type ParamSpec = glib::ParamSpecEnum;
13805    type SetValue = Self;
13806    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13807
13808    fn param_spec_builder() -> Self::BuilderFn {
13809        Self::ParamSpec::builder_with_default
13810    }
13811}
13812
13813#[allow(deprecated)]
13814impl glib::value::ValueType for TreeViewDropPosition {
13815    type Type = Self;
13816}
13817
13818#[allow(deprecated)]
13819unsafe impl<'a> glib::value::FromValue<'a> for TreeViewDropPosition {
13820    type Checker = glib::value::GenericValueTypeChecker<Self>;
13821
13822    #[inline]
13823    unsafe fn from_value(value: &'a glib::Value) -> Self {
13824        skip_assert_initialized!();
13825        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13826    }
13827}
13828
13829#[allow(deprecated)]
13830impl ToValue for TreeViewDropPosition {
13831    #[inline]
13832    fn to_value(&self) -> glib::Value {
13833        let mut value = glib::Value::for_value_type::<Self>();
13834        unsafe {
13835            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13836        }
13837        value
13838    }
13839
13840    #[inline]
13841    fn value_type(&self) -> glib::Type {
13842        Self::static_type()
13843    }
13844}
13845
13846#[allow(deprecated)]
13847impl From<TreeViewDropPosition> for glib::Value {
13848    #[inline]
13849    fn from(v: TreeViewDropPosition) -> Self {
13850        skip_assert_initialized!();
13851        ToValue::to_value(&v)
13852    }
13853}
13854
13855/// Used to indicate which grid lines to draw in a tree view.
13856///
13857/// # Deprecated since 4.20
13858///
13859/// There is no replacement
13860#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13861#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13862#[non_exhaustive]
13863#[doc(alias = "GtkTreeViewGridLines")]
13864pub enum TreeViewGridLines {
13865    /// No grid lines.
13866    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_NONE")]
13867    None,
13868    /// Horizontal grid lines.
13869    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_HORIZONTAL")]
13870    Horizontal,
13871    /// Vertical grid lines.
13872    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_VERTICAL")]
13873    Vertical,
13874    /// Horizontal and vertical grid lines.
13875    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_BOTH")]
13876    Both,
13877    #[doc(hidden)]
13878    __Unknown(i32),
13879}
13880
13881#[allow(deprecated)]
13882#[doc(hidden)]
13883impl IntoGlib for TreeViewGridLines {
13884    type GlibType = ffi::GtkTreeViewGridLines;
13885
13886    #[inline]
13887    fn into_glib(self) -> ffi::GtkTreeViewGridLines {
13888        match self {
13889            Self::None => ffi::GTK_TREE_VIEW_GRID_LINES_NONE,
13890            Self::Horizontal => ffi::GTK_TREE_VIEW_GRID_LINES_HORIZONTAL,
13891            Self::Vertical => ffi::GTK_TREE_VIEW_GRID_LINES_VERTICAL,
13892            Self::Both => ffi::GTK_TREE_VIEW_GRID_LINES_BOTH,
13893            Self::__Unknown(value) => value,
13894        }
13895    }
13896}
13897
13898#[allow(deprecated)]
13899#[doc(hidden)]
13900impl FromGlib<ffi::GtkTreeViewGridLines> for TreeViewGridLines {
13901    #[inline]
13902    unsafe fn from_glib(value: ffi::GtkTreeViewGridLines) -> Self {
13903        skip_assert_initialized!();
13904
13905        match value {
13906            ffi::GTK_TREE_VIEW_GRID_LINES_NONE => Self::None,
13907            ffi::GTK_TREE_VIEW_GRID_LINES_HORIZONTAL => Self::Horizontal,
13908            ffi::GTK_TREE_VIEW_GRID_LINES_VERTICAL => Self::Vertical,
13909            ffi::GTK_TREE_VIEW_GRID_LINES_BOTH => Self::Both,
13910            value => Self::__Unknown(value),
13911        }
13912    }
13913}
13914
13915#[allow(deprecated)]
13916impl StaticType for TreeViewGridLines {
13917    #[inline]
13918    #[doc(alias = "gtk_tree_view_grid_lines_get_type")]
13919    fn static_type() -> glib::Type {
13920        unsafe { from_glib(ffi::gtk_tree_view_grid_lines_get_type()) }
13921    }
13922}
13923
13924#[allow(deprecated)]
13925impl glib::HasParamSpec for TreeViewGridLines {
13926    type ParamSpec = glib::ParamSpecEnum;
13927    type SetValue = Self;
13928    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13929
13930    fn param_spec_builder() -> Self::BuilderFn {
13931        Self::ParamSpec::builder_with_default
13932    }
13933}
13934
13935#[allow(deprecated)]
13936impl glib::value::ValueType for TreeViewGridLines {
13937    type Type = Self;
13938}
13939
13940#[allow(deprecated)]
13941unsafe impl<'a> glib::value::FromValue<'a> for TreeViewGridLines {
13942    type Checker = glib::value::GenericValueTypeChecker<Self>;
13943
13944    #[inline]
13945    unsafe fn from_value(value: &'a glib::Value) -> Self {
13946        skip_assert_initialized!();
13947        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13948    }
13949}
13950
13951#[allow(deprecated)]
13952impl ToValue for TreeViewGridLines {
13953    #[inline]
13954    fn to_value(&self) -> glib::Value {
13955        let mut value = glib::Value::for_value_type::<Self>();
13956        unsafe {
13957            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13958        }
13959        value
13960    }
13961
13962    #[inline]
13963    fn value_type(&self) -> glib::Type {
13964        Self::static_type()
13965    }
13966}
13967
13968#[allow(deprecated)]
13969impl From<TreeViewGridLines> for glib::Value {
13970    #[inline]
13971    fn from(v: TreeViewGridLines) -> Self {
13972        skip_assert_initialized!();
13973        ToValue::to_value(&v)
13974    }
13975}
13976
13977/// See also gtk_print_settings_set_paper_width().
13978#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13979#[non_exhaustive]
13980#[doc(alias = "GtkUnit")]
13981pub enum Unit {
13982    /// No units.
13983    #[doc(alias = "GTK_UNIT_NONE")]
13984    None,
13985    /// Dimensions in points.
13986    #[doc(alias = "GTK_UNIT_POINTS")]
13987    Points,
13988    /// Dimensions in inches.
13989    #[doc(alias = "GTK_UNIT_INCH")]
13990    Inch,
13991    /// Dimensions in millimeters
13992    #[doc(alias = "GTK_UNIT_MM")]
13993    Mm,
13994    #[doc(hidden)]
13995    __Unknown(i32),
13996}
13997
13998#[doc(hidden)]
13999impl IntoGlib for Unit {
14000    type GlibType = ffi::GtkUnit;
14001
14002    #[inline]
14003    fn into_glib(self) -> ffi::GtkUnit {
14004        match self {
14005            Self::None => ffi::GTK_UNIT_NONE,
14006            Self::Points => ffi::GTK_UNIT_POINTS,
14007            Self::Inch => ffi::GTK_UNIT_INCH,
14008            Self::Mm => ffi::GTK_UNIT_MM,
14009            Self::__Unknown(value) => value,
14010        }
14011    }
14012}
14013
14014#[doc(hidden)]
14015impl FromGlib<ffi::GtkUnit> for Unit {
14016    #[inline]
14017    unsafe fn from_glib(value: ffi::GtkUnit) -> Self {
14018        skip_assert_initialized!();
14019
14020        match value {
14021            ffi::GTK_UNIT_NONE => Self::None,
14022            ffi::GTK_UNIT_POINTS => Self::Points,
14023            ffi::GTK_UNIT_INCH => Self::Inch,
14024            ffi::GTK_UNIT_MM => Self::Mm,
14025            value => Self::__Unknown(value),
14026        }
14027    }
14028}
14029
14030impl StaticType for Unit {
14031    #[inline]
14032    #[doc(alias = "gtk_unit_get_type")]
14033    fn static_type() -> glib::Type {
14034        unsafe { from_glib(ffi::gtk_unit_get_type()) }
14035    }
14036}
14037
14038impl glib::HasParamSpec for Unit {
14039    type ParamSpec = glib::ParamSpecEnum;
14040    type SetValue = Self;
14041    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14042
14043    fn param_spec_builder() -> Self::BuilderFn {
14044        Self::ParamSpec::builder_with_default
14045    }
14046}
14047
14048impl glib::value::ValueType for Unit {
14049    type Type = Self;
14050}
14051
14052unsafe impl<'a> glib::value::FromValue<'a> for Unit {
14053    type Checker = glib::value::GenericValueTypeChecker<Self>;
14054
14055    #[inline]
14056    unsafe fn from_value(value: &'a glib::Value) -> Self {
14057        skip_assert_initialized!();
14058        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14059    }
14060}
14061
14062impl ToValue for Unit {
14063    #[inline]
14064    fn to_value(&self) -> glib::Value {
14065        let mut value = glib::Value::for_value_type::<Self>();
14066        unsafe {
14067            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14068        }
14069        value
14070    }
14071
14072    #[inline]
14073    fn value_type(&self) -> glib::Type {
14074        Self::static_type()
14075    }
14076}
14077
14078impl From<Unit> for glib::Value {
14079    #[inline]
14080    fn from(v: Unit) -> Self {
14081        skip_assert_initialized!();
14082        ToValue::to_value(&v)
14083    }
14084}
14085
14086/// Determines which point or edge of a window is meant to remain fixed
14087/// when a window changes size.
14088#[cfg(feature = "v4_20")]
14089#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14090#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
14091#[non_exhaustive]
14092#[doc(alias = "GtkWindowGravity")]
14093pub enum WindowGravity {
14094    /// The top left corner
14095    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_LEFT")]
14096    TopLeft,
14097    /// The top edge
14098    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP")]
14099    Top,
14100    /// The top right corner
14101    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_RIGHT")]
14102    TopRight,
14103    /// The left edge
14104    #[doc(alias = "GTK_WINDOW_GRAVITY_LEFT")]
14105    Left,
14106    /// The center pointer
14107    #[doc(alias = "GTK_WINDOW_GRAVITY_CENTER")]
14108    Center,
14109    /// The right edge
14110    #[doc(alias = "GTK_WINDOW_GRAVITY_RIGHT")]
14111    Right,
14112    /// The bottom left corner
14113    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_LEFT")]
14114    BottomLeft,
14115    /// the bottom edge
14116    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM")]
14117    Bottom,
14118    /// The bottom right corner
14119    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_RIGHT")]
14120    BottomRight,
14121    /// The top left or top right corner,
14122    ///   depending on the text direction
14123    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_START")]
14124    TopStart,
14125    /// The top right or top left corner,
14126    ///   depending on the text direction
14127    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_END")]
14128    TopEnd,
14129    /// The left or right edge,
14130    ///   depending on the text direction
14131    #[doc(alias = "GTK_WINDOW_GRAVITY_START")]
14132    Start,
14133    /// The right or left edge,
14134    ///   depending on the text direction
14135    #[doc(alias = "GTK_WINDOW_GRAVITY_END")]
14136    End,
14137    /// The bottom left or top right corner,
14138    ///   depending on the text direction
14139    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_START")]
14140    BottomStart,
14141    /// The bottom right or top left corner,
14142    ///   depending on the text direction
14143    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_END")]
14144    BottomEnd,
14145    #[doc(hidden)]
14146    __Unknown(i32),
14147}
14148
14149#[cfg(feature = "v4_20")]
14150#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14151#[doc(hidden)]
14152impl IntoGlib for WindowGravity {
14153    type GlibType = ffi::GtkWindowGravity;
14154
14155    fn into_glib(self) -> ffi::GtkWindowGravity {
14156        match self {
14157            Self::TopLeft => ffi::GTK_WINDOW_GRAVITY_TOP_LEFT,
14158            Self::Top => ffi::GTK_WINDOW_GRAVITY_TOP,
14159            Self::TopRight => ffi::GTK_WINDOW_GRAVITY_TOP_RIGHT,
14160            Self::Left => ffi::GTK_WINDOW_GRAVITY_LEFT,
14161            Self::Center => ffi::GTK_WINDOW_GRAVITY_CENTER,
14162            Self::Right => ffi::GTK_WINDOW_GRAVITY_RIGHT,
14163            Self::BottomLeft => ffi::GTK_WINDOW_GRAVITY_BOTTOM_LEFT,
14164            Self::Bottom => ffi::GTK_WINDOW_GRAVITY_BOTTOM,
14165            Self::BottomRight => ffi::GTK_WINDOW_GRAVITY_BOTTOM_RIGHT,
14166            Self::TopStart => ffi::GTK_WINDOW_GRAVITY_TOP_START,
14167            Self::TopEnd => ffi::GTK_WINDOW_GRAVITY_TOP_END,
14168            Self::Start => ffi::GTK_WINDOW_GRAVITY_START,
14169            Self::End => ffi::GTK_WINDOW_GRAVITY_END,
14170            Self::BottomStart => ffi::GTK_WINDOW_GRAVITY_BOTTOM_START,
14171            Self::BottomEnd => ffi::GTK_WINDOW_GRAVITY_BOTTOM_END,
14172            Self::__Unknown(value) => value,
14173        }
14174    }
14175}
14176
14177#[cfg(feature = "v4_20")]
14178#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14179#[doc(hidden)]
14180impl FromGlib<ffi::GtkWindowGravity> for WindowGravity {
14181    unsafe fn from_glib(value: ffi::GtkWindowGravity) -> Self {
14182        skip_assert_initialized!();
14183
14184        match value {
14185            ffi::GTK_WINDOW_GRAVITY_TOP_LEFT => Self::TopLeft,
14186            ffi::GTK_WINDOW_GRAVITY_TOP => Self::Top,
14187            ffi::GTK_WINDOW_GRAVITY_TOP_RIGHT => Self::TopRight,
14188            ffi::GTK_WINDOW_GRAVITY_LEFT => Self::Left,
14189            ffi::GTK_WINDOW_GRAVITY_CENTER => Self::Center,
14190            ffi::GTK_WINDOW_GRAVITY_RIGHT => Self::Right,
14191            ffi::GTK_WINDOW_GRAVITY_BOTTOM_LEFT => Self::BottomLeft,
14192            ffi::GTK_WINDOW_GRAVITY_BOTTOM => Self::Bottom,
14193            ffi::GTK_WINDOW_GRAVITY_BOTTOM_RIGHT => Self::BottomRight,
14194            ffi::GTK_WINDOW_GRAVITY_TOP_START => Self::TopStart,
14195            ffi::GTK_WINDOW_GRAVITY_TOP_END => Self::TopEnd,
14196            ffi::GTK_WINDOW_GRAVITY_START => Self::Start,
14197            ffi::GTK_WINDOW_GRAVITY_END => Self::End,
14198            ffi::GTK_WINDOW_GRAVITY_BOTTOM_START => Self::BottomStart,
14199            ffi::GTK_WINDOW_GRAVITY_BOTTOM_END => Self::BottomEnd,
14200            value => Self::__Unknown(value),
14201        }
14202    }
14203}
14204
14205#[cfg(feature = "v4_20")]
14206#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14207impl StaticType for WindowGravity {
14208    #[inline]
14209    #[doc(alias = "gtk_window_gravity_get_type")]
14210    fn static_type() -> glib::Type {
14211        unsafe { from_glib(ffi::gtk_window_gravity_get_type()) }
14212    }
14213}
14214
14215#[cfg(feature = "v4_20")]
14216#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14217impl glib::HasParamSpec for WindowGravity {
14218    type ParamSpec = glib::ParamSpecEnum;
14219    type SetValue = Self;
14220    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14221
14222    fn param_spec_builder() -> Self::BuilderFn {
14223        Self::ParamSpec::builder_with_default
14224    }
14225}
14226
14227#[cfg(feature = "v4_20")]
14228#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14229impl glib::value::ValueType for WindowGravity {
14230    type Type = Self;
14231}
14232
14233#[cfg(feature = "v4_20")]
14234#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14235unsafe impl<'a> glib::value::FromValue<'a> for WindowGravity {
14236    type Checker = glib::value::GenericValueTypeChecker<Self>;
14237
14238    #[inline]
14239    unsafe fn from_value(value: &'a glib::Value) -> Self {
14240        skip_assert_initialized!();
14241        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14242    }
14243}
14244
14245#[cfg(feature = "v4_20")]
14246#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14247impl ToValue for WindowGravity {
14248    #[inline]
14249    fn to_value(&self) -> glib::Value {
14250        let mut value = glib::Value::for_value_type::<Self>();
14251        unsafe {
14252            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14253        }
14254        value
14255    }
14256
14257    #[inline]
14258    fn value_type(&self) -> glib::Type {
14259        Self::static_type()
14260    }
14261}
14262
14263#[cfg(feature = "v4_20")]
14264#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14265impl From<WindowGravity> for glib::Value {
14266    #[inline]
14267    fn from(v: WindowGravity) -> Self {
14268        skip_assert_initialized!();
14269        ToValue::to_value(&v)
14270    }
14271}
14272
14273/// Describes a type of line wrapping.
14274#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
14275#[non_exhaustive]
14276#[doc(alias = "GtkWrapMode")]
14277pub enum WrapMode {
14278    /// do not wrap lines; just make the text area wider
14279    #[doc(alias = "GTK_WRAP_NONE")]
14280    None,
14281    /// wrap text, breaking lines anywhere the cursor can
14282    ///   appear (between characters, usually - if you want to be technical,
14283    ///   between graphemes, see pango_get_log_attrs())
14284    #[doc(alias = "GTK_WRAP_CHAR")]
14285    Char,
14286    /// wrap text, breaking lines in between words
14287    #[doc(alias = "GTK_WRAP_WORD")]
14288    Word,
14289    /// wrap text, breaking lines in between words, or if
14290    ///   that is not enough, also between graphemes
14291    #[doc(alias = "GTK_WRAP_WORD_CHAR")]
14292    WordChar,
14293    #[doc(hidden)]
14294    __Unknown(i32),
14295}
14296
14297#[doc(hidden)]
14298impl IntoGlib for WrapMode {
14299    type GlibType = ffi::GtkWrapMode;
14300
14301    #[inline]
14302    fn into_glib(self) -> ffi::GtkWrapMode {
14303        match self {
14304            Self::None => ffi::GTK_WRAP_NONE,
14305            Self::Char => ffi::GTK_WRAP_CHAR,
14306            Self::Word => ffi::GTK_WRAP_WORD,
14307            Self::WordChar => ffi::GTK_WRAP_WORD_CHAR,
14308            Self::__Unknown(value) => value,
14309        }
14310    }
14311}
14312
14313#[doc(hidden)]
14314impl FromGlib<ffi::GtkWrapMode> for WrapMode {
14315    #[inline]
14316    unsafe fn from_glib(value: ffi::GtkWrapMode) -> Self {
14317        skip_assert_initialized!();
14318
14319        match value {
14320            ffi::GTK_WRAP_NONE => Self::None,
14321            ffi::GTK_WRAP_CHAR => Self::Char,
14322            ffi::GTK_WRAP_WORD => Self::Word,
14323            ffi::GTK_WRAP_WORD_CHAR => Self::WordChar,
14324            value => Self::__Unknown(value),
14325        }
14326    }
14327}
14328
14329impl StaticType for WrapMode {
14330    #[inline]
14331    #[doc(alias = "gtk_wrap_mode_get_type")]
14332    fn static_type() -> glib::Type {
14333        unsafe { from_glib(ffi::gtk_wrap_mode_get_type()) }
14334    }
14335}
14336
14337impl glib::HasParamSpec for WrapMode {
14338    type ParamSpec = glib::ParamSpecEnum;
14339    type SetValue = Self;
14340    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14341
14342    fn param_spec_builder() -> Self::BuilderFn {
14343        Self::ParamSpec::builder_with_default
14344    }
14345}
14346
14347impl glib::value::ValueType for WrapMode {
14348    type Type = Self;
14349}
14350
14351unsafe impl<'a> glib::value::FromValue<'a> for WrapMode {
14352    type Checker = glib::value::GenericValueTypeChecker<Self>;
14353
14354    #[inline]
14355    unsafe fn from_value(value: &'a glib::Value) -> Self {
14356        skip_assert_initialized!();
14357        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14358    }
14359}
14360
14361impl ToValue for WrapMode {
14362    #[inline]
14363    fn to_value(&self) -> glib::Value {
14364        let mut value = glib::Value::for_value_type::<Self>();
14365        unsafe {
14366            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14367        }
14368        value
14369    }
14370
14371    #[inline]
14372    fn value_type(&self) -> glib::Type {
14373        Self::static_type()
14374    }
14375}
14376
14377impl From<WrapMode> for glib::Value {
14378    #[inline]
14379    fn from(v: WrapMode) -> Self {
14380        skip_assert_initialized!();
14381        ToValue::to_value(&v)
14382    }
14383}