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    /// , it doesn't indicate the type of the
509    ///    element, as such it cannot be used to indicate the availability of more
510    ///    complex elements such as dialog. Value type: boolean
511    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_HAS_POPUP")]
512    HasPopup,
513    /// Indicates keyboard shortcuts that an
514    ///    author has implemented to activate or give focus to an element. Value type:
515    ///    string. The format of the value is a space-separated list of shortcuts, with
516    ///    each shortcut consisting of one or more modifiers (`Control`, `Alt` or `Shift`),
517    ///    followed by a non-modifier key, all separated by `+`. The
518    ///    [WAI-ARIA](https://www.w3.org/TR/wai-aria/#aria-keyshortcuts) reference
519    ///    specifies how to build keyboard shortcuts strings, with specific values
520    ///    for each key which are the same regardless of the language, so these
521    ///    strings can't be built from localized key names. You can convert an
522    ///    accelerator into the matching key shortcuts label with
523    ///    [`accelerator_get_accessible_label()`][crate::accelerator_get_accessible_label()].
524    ///    Examples: `F2`, `Alt+F`, `Control+Shift+N`
525    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS")]
526    KeyShortcuts,
527    /// Defines a string value that labels the current
528    ///    element. Value type: string
529    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_LABEL")]
530    Label,
531    /// Defines the hierarchical level of an element
532    ///    within a structure. Value type: integer
533    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_LEVEL")]
534    Level,
535    /// Indicates whether an element is modal when
536    ///    displayed. Value type: boolean
537    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_MODAL")]
538    Modal,
539    /// Indicates whether a text box accepts
540    ///    multiple lines of input or only a single line. Value type: boolean
541    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_MULTI_LINE")]
542    MultiLine,
543    /// Indicates that the user may select
544    ///    more than one item from the current selectable descendants. Value type:
545    ///    boolean
546    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE")]
547    MultiSelectable,
548    /// Indicates whether the element's
549    ///    orientation is horizontal, vertical, or unknown/ambiguous. Value type:
550    ///    [`Orientation`][crate::Orientation]
551    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_ORIENTATION")]
552    Orientation,
553    /// Defines a short hint (a word or short
554    ///    phrase) intended to aid the user with data entry when the control has no
555    ///    value. A hint could be a sample value or a brief description of the expected
556    ///    format. Value type: string
557    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER")]
558    Placeholder,
559    /// Indicates that the element is not editable,
560    ///    but is otherwise operable. Value type: boolean
561    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_READ_ONLY")]
562    ReadOnly,
563    /// Indicates that user input is required on
564    ///    the element before a form may be submitted. Value type: boolean
565    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_REQUIRED")]
566    Required,
567    /// Defines a human-readable,
568    ///    author-localized description for the role of an element. Value type: string
569    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION")]
570    RoleDescription,
571    /// Indicates if items in a table or grid are
572    ///    sorted in ascending or descending order. Value type: [`AccessibleSort`][crate::AccessibleSort]
573    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_SORT")]
574    Sort,
575    /// Defines the maximum allowed value for a
576    ///    range widget. Value type: double
577    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_MAX")]
578    ValueMax,
579    /// Defines the minimum allowed value for a
580    ///    range widget. Value type: double
581    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_MIN")]
582    ValueMin,
583    /// Defines the current value for a range widget.
584    ///    Value type: double
585    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_NOW")]
586    ValueNow,
587    /// Defines the human readable text alternative
588    ///    of [enum@Gtk.AccessibleProperty.VALUE_NOW] for a range widget. Value type: string
589    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT")]
590    ValueText,
591    /// Defines a string value that provides a description of non-standard keyboard
592    /// interactions of the current element. Value type: string
593    #[cfg(feature = "v4_16")]
594    #[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
595    #[doc(alias = "GTK_ACCESSIBLE_PROPERTY_HELP_TEXT")]
596    HelpText,
597    #[doc(hidden)]
598    __Unknown(i32),
599}
600
601impl AccessibleProperty {
602    #[doc(alias = "gtk_accessible_property_init_value")]
603    pub fn init_value(self, value: &mut glib::Value) {
604        assert_initialized_main_thread!();
605        unsafe {
606            ffi::gtk_accessible_property_init_value(self.into_glib(), value.to_glib_none_mut().0);
607        }
608    }
609}
610
611#[doc(hidden)]
612impl IntoGlib for AccessibleProperty {
613    type GlibType = ffi::GtkAccessibleProperty;
614
615    fn into_glib(self) -> ffi::GtkAccessibleProperty {
616        match self {
617            Self::Autocomplete => ffi::GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE,
618            Self::Description => ffi::GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
619            Self::HasPopup => ffi::GTK_ACCESSIBLE_PROPERTY_HAS_POPUP,
620            Self::KeyShortcuts => ffi::GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS,
621            Self::Label => ffi::GTK_ACCESSIBLE_PROPERTY_LABEL,
622            Self::Level => ffi::GTK_ACCESSIBLE_PROPERTY_LEVEL,
623            Self::Modal => ffi::GTK_ACCESSIBLE_PROPERTY_MODAL,
624            Self::MultiLine => ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_LINE,
625            Self::MultiSelectable => ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE,
626            Self::Orientation => ffi::GTK_ACCESSIBLE_PROPERTY_ORIENTATION,
627            Self::Placeholder => ffi::GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER,
628            Self::ReadOnly => ffi::GTK_ACCESSIBLE_PROPERTY_READ_ONLY,
629            Self::Required => ffi::GTK_ACCESSIBLE_PROPERTY_REQUIRED,
630            Self::RoleDescription => ffi::GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION,
631            Self::Sort => ffi::GTK_ACCESSIBLE_PROPERTY_SORT,
632            Self::ValueMax => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MAX,
633            Self::ValueMin => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MIN,
634            Self::ValueNow => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_NOW,
635            Self::ValueText => ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT,
636            #[cfg(feature = "v4_16")]
637            Self::HelpText => ffi::GTK_ACCESSIBLE_PROPERTY_HELP_TEXT,
638            Self::__Unknown(value) => value,
639        }
640    }
641}
642
643#[doc(hidden)]
644impl FromGlib<ffi::GtkAccessibleProperty> for AccessibleProperty {
645    unsafe fn from_glib(value: ffi::GtkAccessibleProperty) -> Self {
646        skip_assert_initialized!();
647
648        match value {
649            ffi::GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE => Self::Autocomplete,
650            ffi::GTK_ACCESSIBLE_PROPERTY_DESCRIPTION => Self::Description,
651            ffi::GTK_ACCESSIBLE_PROPERTY_HAS_POPUP => Self::HasPopup,
652            ffi::GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS => Self::KeyShortcuts,
653            ffi::GTK_ACCESSIBLE_PROPERTY_LABEL => Self::Label,
654            ffi::GTK_ACCESSIBLE_PROPERTY_LEVEL => Self::Level,
655            ffi::GTK_ACCESSIBLE_PROPERTY_MODAL => Self::Modal,
656            ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_LINE => Self::MultiLine,
657            ffi::GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE => Self::MultiSelectable,
658            ffi::GTK_ACCESSIBLE_PROPERTY_ORIENTATION => Self::Orientation,
659            ffi::GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER => Self::Placeholder,
660            ffi::GTK_ACCESSIBLE_PROPERTY_READ_ONLY => Self::ReadOnly,
661            ffi::GTK_ACCESSIBLE_PROPERTY_REQUIRED => Self::Required,
662            ffi::GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION => Self::RoleDescription,
663            ffi::GTK_ACCESSIBLE_PROPERTY_SORT => Self::Sort,
664            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MAX => Self::ValueMax,
665            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_MIN => Self::ValueMin,
666            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_NOW => Self::ValueNow,
667            ffi::GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT => Self::ValueText,
668            #[cfg(feature = "v4_16")]
669            ffi::GTK_ACCESSIBLE_PROPERTY_HELP_TEXT => Self::HelpText,
670            value => Self::__Unknown(value),
671        }
672    }
673}
674
675impl StaticType for AccessibleProperty {
676    #[inline]
677    #[doc(alias = "gtk_accessible_property_get_type")]
678    fn static_type() -> glib::Type {
679        unsafe { from_glib(ffi::gtk_accessible_property_get_type()) }
680    }
681}
682
683impl glib::HasParamSpec for AccessibleProperty {
684    type ParamSpec = glib::ParamSpecEnum;
685    type SetValue = Self;
686    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
687
688    fn param_spec_builder() -> Self::BuilderFn {
689        Self::ParamSpec::builder_with_default
690    }
691}
692
693impl glib::value::ValueType for AccessibleProperty {
694    type Type = Self;
695}
696
697unsafe impl<'a> glib::value::FromValue<'a> for AccessibleProperty {
698    type Checker = glib::value::GenericValueTypeChecker<Self>;
699
700    #[inline]
701    unsafe fn from_value(value: &'a glib::Value) -> Self {
702        skip_assert_initialized!();
703        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
704    }
705}
706
707impl ToValue for AccessibleProperty {
708    #[inline]
709    fn to_value(&self) -> glib::Value {
710        let mut value = glib::Value::for_value_type::<Self>();
711        unsafe {
712            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
713        }
714        value
715    }
716
717    #[inline]
718    fn value_type(&self) -> glib::Type {
719        Self::static_type()
720    }
721}
722
723impl From<AccessibleProperty> for glib::Value {
724    #[inline]
725    fn from(v: AccessibleProperty) -> Self {
726        skip_assert_initialized!();
727        ToValue::to_value(&v)
728    }
729}
730
731/// The possible accessible relations of a [`Accessible`][crate::Accessible].
732///
733/// Accessible relations can be references to other widgets,
734/// integers or strings.
735#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
736#[non_exhaustive]
737#[doc(alias = "GtkAccessibleRelation")]
738pub enum AccessibleRelation {
739    /// Identifies the currently active
740    ///    element when focus is on a composite widget, combobox, textbox, group,
741    ///    or application. Value type: reference
742    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT")]
743    ActiveDescendant,
744    /// Defines the total number of columns
745    ///    in a table, grid, or treegrid. Value type: integer
746    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_COUNT")]
747    ColCount,
748    /// Defines an element's column index or
749    ///    position with respect to the total number of columns within a table,
750    ///    grid, or treegrid. Value type: integer
751    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_INDEX")]
752    ColIndex,
753    /// Defines a human readable text
754    ///   alternative of [`ColIndex`][Self::ColIndex]. Value type: string
755    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT")]
756    ColIndexText,
757    /// Defines the number of columns spanned
758    ///   by a cell or gridcell within a table, grid, or treegrid. Value type: integer
759    #[doc(alias = "GTK_ACCESSIBLE_RELATION_COL_SPAN")]
760    ColSpan,
761    /// Identifies the element (or elements) whose
762    ///    contents or presence are controlled by the current element. Value type: reference
763    #[doc(alias = "GTK_ACCESSIBLE_RELATION_CONTROLS")]
764    Controls,
765    /// Identifies the element (or elements)
766    ///    that describes the object. Value type: reference
767    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DESCRIBED_BY")]
768    DescribedBy,
769    /// Identifies the element (or elements) that
770    ///    provide additional information related to the object. Value type: reference
771    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DETAILS")]
772    Details,
773    /// Identifies the element (or elements) that
774    ///    provide an error message for an object. Value type: reference
775    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE")]
776    ErrorMessage,
777    /// Identifies the next element (or elements)
778    ///    in an alternate reading order of content which, at the user's discretion,
779    ///    allows assistive technology to override the general default of reading in
780    ///    document source order. Value type: reference
781    #[doc(alias = "GTK_ACCESSIBLE_RELATION_FLOW_TO")]
782    FlowTo,
783    /// Identifies the element (or elements)
784    ///    that labels the current element. Value type: reference
785    #[doc(alias = "GTK_ACCESSIBLE_RELATION_LABELLED_BY")]
786    LabelledBy,
787    /// Identifies an element (or elements) in order
788    ///    to define a visual, functional, or contextual parent/child relationship
789    ///    between elements where the widget hierarchy cannot be used to represent
790    ///    the relationship. Value type: reference
791    #[doc(alias = "GTK_ACCESSIBLE_RELATION_OWNS")]
792    Owns,
793    /// Defines an element's number or position
794    ///    in the current set of listitems or treeitems. Value type: integer
795    #[doc(alias = "GTK_ACCESSIBLE_RELATION_POS_IN_SET")]
796    PosInSet,
797    /// Defines the total number of rows in a table,
798    ///    grid, or treegrid. Value type: integer
799    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_COUNT")]
800    RowCount,
801    /// Defines an element's row index or position
802    ///    with respect to the total number of rows within a table, grid, or treegrid.
803    ///    Value type: integer
804    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_INDEX")]
805    RowIndex,
806    /// Defines a human readable text
807    ///    alternative of [enum@Gtk.AccessibleRelation.ROW_INDEX]. Value type: string
808    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT")]
809    RowIndexText,
810    /// Defines the number of rows spanned by a
811    ///    cell or gridcell within a table, grid, or treegrid. Value type: integer
812    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ROW_SPAN")]
813    RowSpan,
814    /// Defines the number of items in the current
815    ///    set of listitems or treeitems. Value type: integer
816    #[doc(alias = "GTK_ACCESSIBLE_RELATION_SET_SIZE")]
817    SetSize,
818    /// Identifies the element (or elements) that are labeled by the
819    /// current element. Value type: reference
820    ///
821    /// This relation is managed by GTK and should not be set from application code.
822    #[cfg(feature = "v4_18")]
823    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
824    #[doc(alias = "GTK_ACCESSIBLE_RELATION_LABEL_FOR")]
825    LabelFor,
826    /// Identifies the element (or elements) that are described by
827    /// the current element. Value type: reference
828    ///
829    /// This relation is managed by GTK and should not be set from application code.
830    #[cfg(feature = "v4_18")]
831    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
832    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DESCRIPTION_FOR")]
833    DescriptionFor,
834    /// Identifies the element (or elements) that the current
835    /// element is controlled by. Value type: reference
836    ///
837    /// This relation is managed by GTK and should not be set from application code.
838    #[cfg(feature = "v4_18")]
839    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
840    #[doc(alias = "GTK_ACCESSIBLE_RELATION_CONTROLLED_BY")]
841    ControlledBy,
842    /// Identifies the element (or elements) for which the current
843    /// element provides additional information. Value type: reference
844    ///
845    /// This relation is managed by GTK and should not be set from application code.
846    #[cfg(feature = "v4_18")]
847    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
848    #[doc(alias = "GTK_ACCESSIBLE_RELATION_DETAILS_FOR")]
849    DetailsFor,
850    /// Identifies the element (or elements) for which the current
851    /// element provides an error message. Value type: reference
852    ///
853    /// This relation is managed by GTK and should not be set from application code.
854    #[cfg(feature = "v4_18")]
855    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
856    #[doc(alias = "GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE_FOR")]
857    ErrorMessageFor,
858    /// Identifies the previous element (or elements) in an alternate
859    /// reading order of content which, at the user's discretion, allows
860    /// assistive technology to override the general default of reading in
861    /// document source order. Value type: reference
862    ///
863    /// This relation is managed by GTK and should not be set from application code.
864    #[cfg(feature = "v4_18")]
865    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
866    #[doc(alias = "GTK_ACCESSIBLE_RELATION_FLOW_FROM")]
867    FlowFrom,
868    #[doc(hidden)]
869    __Unknown(i32),
870}
871
872impl AccessibleRelation {
873    #[doc(alias = "gtk_accessible_relation_init_value")]
874    pub fn init_value(self, value: &mut glib::Value) {
875        assert_initialized_main_thread!();
876        unsafe {
877            ffi::gtk_accessible_relation_init_value(self.into_glib(), value.to_glib_none_mut().0);
878        }
879    }
880}
881
882#[doc(hidden)]
883impl IntoGlib for AccessibleRelation {
884    type GlibType = ffi::GtkAccessibleRelation;
885
886    fn into_glib(self) -> ffi::GtkAccessibleRelation {
887        match self {
888            Self::ActiveDescendant => ffi::GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT,
889            Self::ColCount => ffi::GTK_ACCESSIBLE_RELATION_COL_COUNT,
890            Self::ColIndex => ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX,
891            Self::ColIndexText => ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT,
892            Self::ColSpan => ffi::GTK_ACCESSIBLE_RELATION_COL_SPAN,
893            Self::Controls => ffi::GTK_ACCESSIBLE_RELATION_CONTROLS,
894            Self::DescribedBy => ffi::GTK_ACCESSIBLE_RELATION_DESCRIBED_BY,
895            Self::Details => ffi::GTK_ACCESSIBLE_RELATION_DETAILS,
896            Self::ErrorMessage => ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE,
897            Self::FlowTo => ffi::GTK_ACCESSIBLE_RELATION_FLOW_TO,
898            Self::LabelledBy => ffi::GTK_ACCESSIBLE_RELATION_LABELLED_BY,
899            Self::Owns => ffi::GTK_ACCESSIBLE_RELATION_OWNS,
900            Self::PosInSet => ffi::GTK_ACCESSIBLE_RELATION_POS_IN_SET,
901            Self::RowCount => ffi::GTK_ACCESSIBLE_RELATION_ROW_COUNT,
902            Self::RowIndex => ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX,
903            Self::RowIndexText => ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT,
904            Self::RowSpan => ffi::GTK_ACCESSIBLE_RELATION_ROW_SPAN,
905            Self::SetSize => ffi::GTK_ACCESSIBLE_RELATION_SET_SIZE,
906            #[cfg(feature = "v4_18")]
907            Self::LabelFor => ffi::GTK_ACCESSIBLE_RELATION_LABEL_FOR,
908            #[cfg(feature = "v4_18")]
909            Self::DescriptionFor => ffi::GTK_ACCESSIBLE_RELATION_DESCRIPTION_FOR,
910            #[cfg(feature = "v4_18")]
911            Self::ControlledBy => ffi::GTK_ACCESSIBLE_RELATION_CONTROLLED_BY,
912            #[cfg(feature = "v4_18")]
913            Self::DetailsFor => ffi::GTK_ACCESSIBLE_RELATION_DETAILS_FOR,
914            #[cfg(feature = "v4_18")]
915            Self::ErrorMessageFor => ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE_FOR,
916            #[cfg(feature = "v4_18")]
917            Self::FlowFrom => ffi::GTK_ACCESSIBLE_RELATION_FLOW_FROM,
918            Self::__Unknown(value) => value,
919        }
920    }
921}
922
923#[doc(hidden)]
924impl FromGlib<ffi::GtkAccessibleRelation> for AccessibleRelation {
925    unsafe fn from_glib(value: ffi::GtkAccessibleRelation) -> Self {
926        skip_assert_initialized!();
927
928        match value {
929            ffi::GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT => Self::ActiveDescendant,
930            ffi::GTK_ACCESSIBLE_RELATION_COL_COUNT => Self::ColCount,
931            ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX => Self::ColIndex,
932            ffi::GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT => Self::ColIndexText,
933            ffi::GTK_ACCESSIBLE_RELATION_COL_SPAN => Self::ColSpan,
934            ffi::GTK_ACCESSIBLE_RELATION_CONTROLS => Self::Controls,
935            ffi::GTK_ACCESSIBLE_RELATION_DESCRIBED_BY => Self::DescribedBy,
936            ffi::GTK_ACCESSIBLE_RELATION_DETAILS => Self::Details,
937            ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE => Self::ErrorMessage,
938            ffi::GTK_ACCESSIBLE_RELATION_FLOW_TO => Self::FlowTo,
939            ffi::GTK_ACCESSIBLE_RELATION_LABELLED_BY => Self::LabelledBy,
940            ffi::GTK_ACCESSIBLE_RELATION_OWNS => Self::Owns,
941            ffi::GTK_ACCESSIBLE_RELATION_POS_IN_SET => Self::PosInSet,
942            ffi::GTK_ACCESSIBLE_RELATION_ROW_COUNT => Self::RowCount,
943            ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX => Self::RowIndex,
944            ffi::GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT => Self::RowIndexText,
945            ffi::GTK_ACCESSIBLE_RELATION_ROW_SPAN => Self::RowSpan,
946            ffi::GTK_ACCESSIBLE_RELATION_SET_SIZE => Self::SetSize,
947            #[cfg(feature = "v4_18")]
948            ffi::GTK_ACCESSIBLE_RELATION_LABEL_FOR => Self::LabelFor,
949            #[cfg(feature = "v4_18")]
950            ffi::GTK_ACCESSIBLE_RELATION_DESCRIPTION_FOR => Self::DescriptionFor,
951            #[cfg(feature = "v4_18")]
952            ffi::GTK_ACCESSIBLE_RELATION_CONTROLLED_BY => Self::ControlledBy,
953            #[cfg(feature = "v4_18")]
954            ffi::GTK_ACCESSIBLE_RELATION_DETAILS_FOR => Self::DetailsFor,
955            #[cfg(feature = "v4_18")]
956            ffi::GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE_FOR => Self::ErrorMessageFor,
957            #[cfg(feature = "v4_18")]
958            ffi::GTK_ACCESSIBLE_RELATION_FLOW_FROM => Self::FlowFrom,
959            value => Self::__Unknown(value),
960        }
961    }
962}
963
964impl StaticType for AccessibleRelation {
965    #[inline]
966    #[doc(alias = "gtk_accessible_relation_get_type")]
967    fn static_type() -> glib::Type {
968        unsafe { from_glib(ffi::gtk_accessible_relation_get_type()) }
969    }
970}
971
972impl glib::HasParamSpec for AccessibleRelation {
973    type ParamSpec = glib::ParamSpecEnum;
974    type SetValue = Self;
975    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
976
977    fn param_spec_builder() -> Self::BuilderFn {
978        Self::ParamSpec::builder_with_default
979    }
980}
981
982impl glib::value::ValueType for AccessibleRelation {
983    type Type = Self;
984}
985
986unsafe impl<'a> glib::value::FromValue<'a> for AccessibleRelation {
987    type Checker = glib::value::GenericValueTypeChecker<Self>;
988
989    #[inline]
990    unsafe fn from_value(value: &'a glib::Value) -> Self {
991        skip_assert_initialized!();
992        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
993    }
994}
995
996impl ToValue for AccessibleRelation {
997    #[inline]
998    fn to_value(&self) -> glib::Value {
999        let mut value = glib::Value::for_value_type::<Self>();
1000        unsafe {
1001            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1002        }
1003        value
1004    }
1005
1006    #[inline]
1007    fn value_type(&self) -> glib::Type {
1008        Self::static_type()
1009    }
1010}
1011
1012impl From<AccessibleRelation> for glib::Value {
1013    #[inline]
1014    fn from(v: AccessibleRelation) -> Self {
1015        skip_assert_initialized!();
1016        ToValue::to_value(&v)
1017    }
1018}
1019
1020/// The accessible role for a [`Accessible`][crate::Accessible] implementation.
1021///
1022/// Abstract roles are only used as part of the ontology; application
1023/// developers must not use abstract roles in their code.
1024#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1025#[non_exhaustive]
1026#[doc(alias = "GtkAccessibleRole")]
1027pub enum AccessibleRole {
1028    /// An element with important, and usually
1029    ///   time-sensitive, information
1030    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ALERT")]
1031    Alert,
1032    /// A type of dialog that contains an
1033    ///   alert message
1034    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ALERT_DIALOG")]
1035    AlertDialog,
1036    /// Unused
1037    #[doc(alias = "GTK_ACCESSIBLE_ROLE_BANNER")]
1038    Banner,
1039    /// An input element that allows for
1040    ///   user-triggered actions when clicked or pressed
1041    #[doc(alias = "GTK_ACCESSIBLE_ROLE_BUTTON")]
1042    Button,
1043    /// Unused
1044    #[doc(alias = "GTK_ACCESSIBLE_ROLE_CAPTION")]
1045    Caption,
1046    /// Unused
1047    #[doc(alias = "GTK_ACCESSIBLE_ROLE_CELL")]
1048    Cell,
1049    /// A checkable input element that has
1050    ///   three possible values: `true`, `false`, or `mixed`
1051    #[doc(alias = "GTK_ACCESSIBLE_ROLE_CHECKBOX")]
1052    Checkbox,
1053    /// A header in a columned list.
1054    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COLUMN_HEADER")]
1055    ColumnHeader,
1056    /// An input that controls another element,
1057    ///   such as a list or a grid, that can dynamically pop up to help the user
1058    ///   set the value of the input
1059    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMBO_BOX")]
1060    ComboBox,
1061    /// Abstract role.
1062    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMMAND")]
1063    Command,
1064    /// Abstract role.
1065    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMPOSITE")]
1066    Composite,
1067    /// A dialog is a window that is designed to interrupt
1068    ///   the current processing of an application in order to prompt the user to enter
1069    ///   information or require a response.
1070    #[doc(alias = "GTK_ACCESSIBLE_ROLE_DIALOG")]
1071    Dialog,
1072    /// Content that assistive technology users may want to
1073    ///   browse in a reading mode.
1074    #[doc(alias = "GTK_ACCESSIBLE_ROLE_DOCUMENT")]
1075    Document,
1076    /// Unused
1077    #[doc(alias = "GTK_ACCESSIBLE_ROLE_FEED")]
1078    Feed,
1079    /// Unused
1080    #[doc(alias = "GTK_ACCESSIBLE_ROLE_FORM")]
1081    Form,
1082    /// A nameless container that has no semantic meaning
1083    ///   of its own. This is the role that GTK uses by default for widgets.
1084    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GENERIC")]
1085    Generic,
1086    /// A grid of items.
1087    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GRID")]
1088    Grid,
1089    /// An item in a grid or tree grid.
1090    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GRID_CELL")]
1091    GridCell,
1092    /// An element that groups multiple related widgets. GTK uses
1093    ///   this role for various containers, like [`HeaderBar`][crate::HeaderBar] or [`Notebook`][crate::Notebook].
1094    #[doc(alias = "GTK_ACCESSIBLE_ROLE_GROUP")]
1095    Group,
1096    /// Unused
1097    #[doc(alias = "GTK_ACCESSIBLE_ROLE_HEADING")]
1098    Heading,
1099    /// An image.
1100    #[doc(alias = "GTK_ACCESSIBLE_ROLE_IMG")]
1101    Img,
1102    /// Abstract role.
1103    #[doc(alias = "GTK_ACCESSIBLE_ROLE_INPUT")]
1104    Input,
1105    /// A visible name or caption for a user interface component.
1106    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LABEL")]
1107    Label,
1108    /// Abstract role.
1109    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LANDMARK")]
1110    Landmark,
1111    /// Unused
1112    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LEGEND")]
1113    Legend,
1114    /// A clickable link.
1115    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LINK")]
1116    Link,
1117    /// A list of items.
1118    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LIST")]
1119    List,
1120    /// Unused.
1121    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LIST_BOX")]
1122    ListBox,
1123    /// An item in a list.
1124    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LIST_ITEM")]
1125    ListItem,
1126    /// Unused
1127    #[doc(alias = "GTK_ACCESSIBLE_ROLE_LOG")]
1128    Log,
1129    /// Unused
1130    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MAIN")]
1131    Main,
1132    /// Unused
1133    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MARQUEE")]
1134    Marquee,
1135    /// Unused
1136    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MATH")]
1137    Math,
1138    /// An element that represents a value within a known range.
1139    #[doc(alias = "GTK_ACCESSIBLE_ROLE_METER")]
1140    Meter,
1141    /// A menu.
1142    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU")]
1143    Menu,
1144    /// A menubar.
1145    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_BAR")]
1146    MenuBar,
1147    /// An item in a menu.
1148    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_ITEM")]
1149    MenuItem,
1150    /// A check item in a menu.
1151    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX")]
1152    MenuItemCheckbox,
1153    /// A radio item in a menu.
1154    #[doc(alias = "GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO")]
1155    MenuItemRadio,
1156    /// Unused
1157    #[doc(alias = "GTK_ACCESSIBLE_ROLE_NAVIGATION")]
1158    Navigation,
1159    /// An element that is not represented to accessibility technologies.
1160    ///   This role is synonymous to @GTK_ACCESSIBLE_ROLE_PRESENTATION.
1161    #[doc(alias = "GTK_ACCESSIBLE_ROLE_NONE")]
1162    None,
1163    /// Unused
1164    #[doc(alias = "GTK_ACCESSIBLE_ROLE_NOTE")]
1165    Note,
1166    /// Unused
1167    #[doc(alias = "GTK_ACCESSIBLE_ROLE_OPTION")]
1168    Option,
1169    /// An element that is not represented to accessibility technologies.
1170    ///   This role is synonymous to @GTK_ACCESSIBLE_ROLE_NONE.
1171    #[doc(alias = "GTK_ACCESSIBLE_ROLE_PRESENTATION")]
1172    Presentation,
1173    /// An element that displays the progress
1174    ///   status for tasks that take a long time.
1175    #[doc(alias = "GTK_ACCESSIBLE_ROLE_PROGRESS_BAR")]
1176    ProgressBar,
1177    /// A checkable input in a group of radio roles,
1178    ///   only one of which can be checked at a time.
1179    #[doc(alias = "GTK_ACCESSIBLE_ROLE_RADIO")]
1180    Radio,
1181    /// Unused
1182    #[doc(alias = "GTK_ACCESSIBLE_ROLE_RADIO_GROUP")]
1183    RadioGroup,
1184    /// Abstract role.
1185    #[doc(alias = "GTK_ACCESSIBLE_ROLE_RANGE")]
1186    Range,
1187    /// Unused
1188    #[doc(alias = "GTK_ACCESSIBLE_ROLE_REGION")]
1189    Region,
1190    /// A row in a columned list.
1191    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ROW")]
1192    Row,
1193    /// Unused
1194    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ROW_GROUP")]
1195    RowGroup,
1196    /// Unused
1197    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ROW_HEADER")]
1198    RowHeader,
1199    /// A graphical object that controls the scrolling
1200    ///   of content within a viewing area, regardless of whether the content is fully
1201    ///   displayed within the viewing area.
1202    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SCROLLBAR")]
1203    Scrollbar,
1204    /// Unused
1205    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SEARCH")]
1206    Search,
1207    /// A type of textbox intended for specifying
1208    ///   search criteria.
1209    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SEARCH_BOX")]
1210    SearchBox,
1211    /// Abstract role.
1212    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SECTION")]
1213    Section,
1214    /// Abstract role.
1215    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SECTION_HEAD")]
1216    SectionHead,
1217    /// Abstract role.
1218    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SELECT")]
1219    Select,
1220    /// A divider that separates and distinguishes
1221    ///   sections of content or groups of menuitems.
1222    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SEPARATOR")]
1223    Separator,
1224    /// A user input where the user selects a value
1225    ///   from within a given range.
1226    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SLIDER")]
1227    Slider,
1228    /// A form of range that expects the user to
1229    ///   select from among discrete choices.
1230    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SPIN_BUTTON")]
1231    SpinButton,
1232    /// Unused
1233    #[doc(alias = "GTK_ACCESSIBLE_ROLE_STATUS")]
1234    Status,
1235    /// Abstract role.
1236    #[doc(alias = "GTK_ACCESSIBLE_ROLE_STRUCTURE")]
1237    Structure,
1238    /// A type of checkbox that represents on/off values,
1239    ///   as opposed to checked/unchecked values.
1240    #[doc(alias = "GTK_ACCESSIBLE_ROLE_SWITCH")]
1241    Switch,
1242    /// An item in a list of tab used for switching pages.
1243    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TAB")]
1244    Tab,
1245    /// Unused
1246    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TABLE")]
1247    Table,
1248    /// A list of tabs for switching pages.
1249    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TAB_LIST")]
1250    TabList,
1251    /// A page in a notebook or stack.
1252    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TAB_PANEL")]
1253    TabPanel,
1254    /// A type of input that allows free-form text
1255    ///   as its value.
1256    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TEXT_BOX")]
1257    TextBox,
1258    /// Unused
1259    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TIME")]
1260    Time,
1261    /// Unused
1262    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TIMER")]
1263    Timer,
1264    /// Unused
1265    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TOOLBAR")]
1266    Toolbar,
1267    /// Unused
1268    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TOOLTIP")]
1269    Tooltip,
1270    /// Unused
1271    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TREE")]
1272    Tree,
1273    /// A treeview-like, columned list.
1274    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TREE_GRID")]
1275    TreeGrid,
1276    /// Unused
1277    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TREE_ITEM")]
1278    TreeItem,
1279    /// Abstract role for interactive components of a
1280    ///   graphical user interface
1281    #[doc(alias = "GTK_ACCESSIBLE_ROLE_WIDGET")]
1282    Widget,
1283    /// Abstract role for windows.
1284    #[doc(alias = "GTK_ACCESSIBLE_ROLE_WINDOW")]
1285    Window,
1286    /// A type of push button which stays pressed until depressed by a second
1287    /// activation.
1288    #[cfg(feature = "v4_10")]
1289    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
1290    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON")]
1291    ToggleButton,
1292    /// A toplevel element of a graphical user interface.
1293    ///
1294    /// This is the role that GTK uses by default for windows.
1295    #[cfg(feature = "v4_12")]
1296    #[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
1297    #[doc(alias = "GTK_ACCESSIBLE_ROLE_APPLICATION")]
1298    Application,
1299    /// A paragraph of content.
1300    #[cfg(feature = "v4_14")]
1301    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1302    #[doc(alias = "GTK_ACCESSIBLE_ROLE_PARAGRAPH")]
1303    Paragraph,
1304    /// A section of content that is quoted from another source.
1305    #[cfg(feature = "v4_14")]
1306    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1307    #[doc(alias = "GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE")]
1308    BlockQuote,
1309    /// A section of a page that consists of a composition that forms an independent
1310    /// part of a document, page, or site.
1311    #[cfg(feature = "v4_14")]
1312    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1313    #[doc(alias = "GTK_ACCESSIBLE_ROLE_ARTICLE")]
1314    Article,
1315    /// A comment contains content expressing reaction to other content.
1316    #[cfg(feature = "v4_14")]
1317    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1318    #[doc(alias = "GTK_ACCESSIBLE_ROLE_COMMENT")]
1319    Comment,
1320    /// A virtual terminal.
1321    #[cfg(feature = "v4_14")]
1322    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1323    #[doc(alias = "GTK_ACCESSIBLE_ROLE_TERMINAL")]
1324    Terminal,
1325    #[doc(hidden)]
1326    __Unknown(i32),
1327}
1328
1329#[doc(hidden)]
1330impl IntoGlib for AccessibleRole {
1331    type GlibType = ffi::GtkAccessibleRole;
1332
1333    fn into_glib(self) -> ffi::GtkAccessibleRole {
1334        match self {
1335            Self::Alert => ffi::GTK_ACCESSIBLE_ROLE_ALERT,
1336            Self::AlertDialog => ffi::GTK_ACCESSIBLE_ROLE_ALERT_DIALOG,
1337            Self::Banner => ffi::GTK_ACCESSIBLE_ROLE_BANNER,
1338            Self::Button => ffi::GTK_ACCESSIBLE_ROLE_BUTTON,
1339            Self::Caption => ffi::GTK_ACCESSIBLE_ROLE_CAPTION,
1340            Self::Cell => ffi::GTK_ACCESSIBLE_ROLE_CELL,
1341            Self::Checkbox => ffi::GTK_ACCESSIBLE_ROLE_CHECKBOX,
1342            Self::ColumnHeader => ffi::GTK_ACCESSIBLE_ROLE_COLUMN_HEADER,
1343            Self::ComboBox => ffi::GTK_ACCESSIBLE_ROLE_COMBO_BOX,
1344            Self::Command => ffi::GTK_ACCESSIBLE_ROLE_COMMAND,
1345            Self::Composite => ffi::GTK_ACCESSIBLE_ROLE_COMPOSITE,
1346            Self::Dialog => ffi::GTK_ACCESSIBLE_ROLE_DIALOG,
1347            Self::Document => ffi::GTK_ACCESSIBLE_ROLE_DOCUMENT,
1348            Self::Feed => ffi::GTK_ACCESSIBLE_ROLE_FEED,
1349            Self::Form => ffi::GTK_ACCESSIBLE_ROLE_FORM,
1350            Self::Generic => ffi::GTK_ACCESSIBLE_ROLE_GENERIC,
1351            Self::Grid => ffi::GTK_ACCESSIBLE_ROLE_GRID,
1352            Self::GridCell => ffi::GTK_ACCESSIBLE_ROLE_GRID_CELL,
1353            Self::Group => ffi::GTK_ACCESSIBLE_ROLE_GROUP,
1354            Self::Heading => ffi::GTK_ACCESSIBLE_ROLE_HEADING,
1355            Self::Img => ffi::GTK_ACCESSIBLE_ROLE_IMG,
1356            Self::Input => ffi::GTK_ACCESSIBLE_ROLE_INPUT,
1357            Self::Label => ffi::GTK_ACCESSIBLE_ROLE_LABEL,
1358            Self::Landmark => ffi::GTK_ACCESSIBLE_ROLE_LANDMARK,
1359            Self::Legend => ffi::GTK_ACCESSIBLE_ROLE_LEGEND,
1360            Self::Link => ffi::GTK_ACCESSIBLE_ROLE_LINK,
1361            Self::List => ffi::GTK_ACCESSIBLE_ROLE_LIST,
1362            Self::ListBox => ffi::GTK_ACCESSIBLE_ROLE_LIST_BOX,
1363            Self::ListItem => ffi::GTK_ACCESSIBLE_ROLE_LIST_ITEM,
1364            Self::Log => ffi::GTK_ACCESSIBLE_ROLE_LOG,
1365            Self::Main => ffi::GTK_ACCESSIBLE_ROLE_MAIN,
1366            Self::Marquee => ffi::GTK_ACCESSIBLE_ROLE_MARQUEE,
1367            Self::Math => ffi::GTK_ACCESSIBLE_ROLE_MATH,
1368            Self::Meter => ffi::GTK_ACCESSIBLE_ROLE_METER,
1369            Self::Menu => ffi::GTK_ACCESSIBLE_ROLE_MENU,
1370            Self::MenuBar => ffi::GTK_ACCESSIBLE_ROLE_MENU_BAR,
1371            Self::MenuItem => ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM,
1372            Self::MenuItemCheckbox => ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX,
1373            Self::MenuItemRadio => ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO,
1374            Self::Navigation => ffi::GTK_ACCESSIBLE_ROLE_NAVIGATION,
1375            Self::None => ffi::GTK_ACCESSIBLE_ROLE_NONE,
1376            Self::Note => ffi::GTK_ACCESSIBLE_ROLE_NOTE,
1377            Self::Option => ffi::GTK_ACCESSIBLE_ROLE_OPTION,
1378            Self::Presentation => ffi::GTK_ACCESSIBLE_ROLE_PRESENTATION,
1379            Self::ProgressBar => ffi::GTK_ACCESSIBLE_ROLE_PROGRESS_BAR,
1380            Self::Radio => ffi::GTK_ACCESSIBLE_ROLE_RADIO,
1381            Self::RadioGroup => ffi::GTK_ACCESSIBLE_ROLE_RADIO_GROUP,
1382            Self::Range => ffi::GTK_ACCESSIBLE_ROLE_RANGE,
1383            Self::Region => ffi::GTK_ACCESSIBLE_ROLE_REGION,
1384            Self::Row => ffi::GTK_ACCESSIBLE_ROLE_ROW,
1385            Self::RowGroup => ffi::GTK_ACCESSIBLE_ROLE_ROW_GROUP,
1386            Self::RowHeader => ffi::GTK_ACCESSIBLE_ROLE_ROW_HEADER,
1387            Self::Scrollbar => ffi::GTK_ACCESSIBLE_ROLE_SCROLLBAR,
1388            Self::Search => ffi::GTK_ACCESSIBLE_ROLE_SEARCH,
1389            Self::SearchBox => ffi::GTK_ACCESSIBLE_ROLE_SEARCH_BOX,
1390            Self::Section => ffi::GTK_ACCESSIBLE_ROLE_SECTION,
1391            Self::SectionHead => ffi::GTK_ACCESSIBLE_ROLE_SECTION_HEAD,
1392            Self::Select => ffi::GTK_ACCESSIBLE_ROLE_SELECT,
1393            Self::Separator => ffi::GTK_ACCESSIBLE_ROLE_SEPARATOR,
1394            Self::Slider => ffi::GTK_ACCESSIBLE_ROLE_SLIDER,
1395            Self::SpinButton => ffi::GTK_ACCESSIBLE_ROLE_SPIN_BUTTON,
1396            Self::Status => ffi::GTK_ACCESSIBLE_ROLE_STATUS,
1397            Self::Structure => ffi::GTK_ACCESSIBLE_ROLE_STRUCTURE,
1398            Self::Switch => ffi::GTK_ACCESSIBLE_ROLE_SWITCH,
1399            Self::Tab => ffi::GTK_ACCESSIBLE_ROLE_TAB,
1400            Self::Table => ffi::GTK_ACCESSIBLE_ROLE_TABLE,
1401            Self::TabList => ffi::GTK_ACCESSIBLE_ROLE_TAB_LIST,
1402            Self::TabPanel => ffi::GTK_ACCESSIBLE_ROLE_TAB_PANEL,
1403            Self::TextBox => ffi::GTK_ACCESSIBLE_ROLE_TEXT_BOX,
1404            Self::Time => ffi::GTK_ACCESSIBLE_ROLE_TIME,
1405            Self::Timer => ffi::GTK_ACCESSIBLE_ROLE_TIMER,
1406            Self::Toolbar => ffi::GTK_ACCESSIBLE_ROLE_TOOLBAR,
1407            Self::Tooltip => ffi::GTK_ACCESSIBLE_ROLE_TOOLTIP,
1408            Self::Tree => ffi::GTK_ACCESSIBLE_ROLE_TREE,
1409            Self::TreeGrid => ffi::GTK_ACCESSIBLE_ROLE_TREE_GRID,
1410            Self::TreeItem => ffi::GTK_ACCESSIBLE_ROLE_TREE_ITEM,
1411            Self::Widget => ffi::GTK_ACCESSIBLE_ROLE_WIDGET,
1412            Self::Window => ffi::GTK_ACCESSIBLE_ROLE_WINDOW,
1413            #[cfg(feature = "v4_10")]
1414            Self::ToggleButton => ffi::GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON,
1415            #[cfg(feature = "v4_12")]
1416            Self::Application => ffi::GTK_ACCESSIBLE_ROLE_APPLICATION,
1417            #[cfg(feature = "v4_14")]
1418            Self::Paragraph => ffi::GTK_ACCESSIBLE_ROLE_PARAGRAPH,
1419            #[cfg(feature = "v4_14")]
1420            Self::BlockQuote => ffi::GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE,
1421            #[cfg(feature = "v4_14")]
1422            Self::Article => ffi::GTK_ACCESSIBLE_ROLE_ARTICLE,
1423            #[cfg(feature = "v4_14")]
1424            Self::Comment => ffi::GTK_ACCESSIBLE_ROLE_COMMENT,
1425            #[cfg(feature = "v4_14")]
1426            Self::Terminal => ffi::GTK_ACCESSIBLE_ROLE_TERMINAL,
1427            Self::__Unknown(value) => value,
1428        }
1429    }
1430}
1431
1432#[doc(hidden)]
1433impl FromGlib<ffi::GtkAccessibleRole> for AccessibleRole {
1434    unsafe fn from_glib(value: ffi::GtkAccessibleRole) -> Self {
1435        skip_assert_initialized!();
1436
1437        match value {
1438            ffi::GTK_ACCESSIBLE_ROLE_ALERT => Self::Alert,
1439            ffi::GTK_ACCESSIBLE_ROLE_ALERT_DIALOG => Self::AlertDialog,
1440            ffi::GTK_ACCESSIBLE_ROLE_BANNER => Self::Banner,
1441            ffi::GTK_ACCESSIBLE_ROLE_BUTTON => Self::Button,
1442            ffi::GTK_ACCESSIBLE_ROLE_CAPTION => Self::Caption,
1443            ffi::GTK_ACCESSIBLE_ROLE_CELL => Self::Cell,
1444            ffi::GTK_ACCESSIBLE_ROLE_CHECKBOX => Self::Checkbox,
1445            ffi::GTK_ACCESSIBLE_ROLE_COLUMN_HEADER => Self::ColumnHeader,
1446            ffi::GTK_ACCESSIBLE_ROLE_COMBO_BOX => Self::ComboBox,
1447            ffi::GTK_ACCESSIBLE_ROLE_COMMAND => Self::Command,
1448            ffi::GTK_ACCESSIBLE_ROLE_COMPOSITE => Self::Composite,
1449            ffi::GTK_ACCESSIBLE_ROLE_DIALOG => Self::Dialog,
1450            ffi::GTK_ACCESSIBLE_ROLE_DOCUMENT => Self::Document,
1451            ffi::GTK_ACCESSIBLE_ROLE_FEED => Self::Feed,
1452            ffi::GTK_ACCESSIBLE_ROLE_FORM => Self::Form,
1453            ffi::GTK_ACCESSIBLE_ROLE_GENERIC => Self::Generic,
1454            ffi::GTK_ACCESSIBLE_ROLE_GRID => Self::Grid,
1455            ffi::GTK_ACCESSIBLE_ROLE_GRID_CELL => Self::GridCell,
1456            ffi::GTK_ACCESSIBLE_ROLE_GROUP => Self::Group,
1457            ffi::GTK_ACCESSIBLE_ROLE_HEADING => Self::Heading,
1458            ffi::GTK_ACCESSIBLE_ROLE_IMG => Self::Img,
1459            ffi::GTK_ACCESSIBLE_ROLE_INPUT => Self::Input,
1460            ffi::GTK_ACCESSIBLE_ROLE_LABEL => Self::Label,
1461            ffi::GTK_ACCESSIBLE_ROLE_LANDMARK => Self::Landmark,
1462            ffi::GTK_ACCESSIBLE_ROLE_LEGEND => Self::Legend,
1463            ffi::GTK_ACCESSIBLE_ROLE_LINK => Self::Link,
1464            ffi::GTK_ACCESSIBLE_ROLE_LIST => Self::List,
1465            ffi::GTK_ACCESSIBLE_ROLE_LIST_BOX => Self::ListBox,
1466            ffi::GTK_ACCESSIBLE_ROLE_LIST_ITEM => Self::ListItem,
1467            ffi::GTK_ACCESSIBLE_ROLE_LOG => Self::Log,
1468            ffi::GTK_ACCESSIBLE_ROLE_MAIN => Self::Main,
1469            ffi::GTK_ACCESSIBLE_ROLE_MARQUEE => Self::Marquee,
1470            ffi::GTK_ACCESSIBLE_ROLE_MATH => Self::Math,
1471            ffi::GTK_ACCESSIBLE_ROLE_METER => Self::Meter,
1472            ffi::GTK_ACCESSIBLE_ROLE_MENU => Self::Menu,
1473            ffi::GTK_ACCESSIBLE_ROLE_MENU_BAR => Self::MenuBar,
1474            ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM => Self::MenuItem,
1475            ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX => Self::MenuItemCheckbox,
1476            ffi::GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO => Self::MenuItemRadio,
1477            ffi::GTK_ACCESSIBLE_ROLE_NAVIGATION => Self::Navigation,
1478            ffi::GTK_ACCESSIBLE_ROLE_NONE => Self::None,
1479            ffi::GTK_ACCESSIBLE_ROLE_NOTE => Self::Note,
1480            ffi::GTK_ACCESSIBLE_ROLE_OPTION => Self::Option,
1481            ffi::GTK_ACCESSIBLE_ROLE_PRESENTATION => Self::Presentation,
1482            ffi::GTK_ACCESSIBLE_ROLE_PROGRESS_BAR => Self::ProgressBar,
1483            ffi::GTK_ACCESSIBLE_ROLE_RADIO => Self::Radio,
1484            ffi::GTK_ACCESSIBLE_ROLE_RADIO_GROUP => Self::RadioGroup,
1485            ffi::GTK_ACCESSIBLE_ROLE_RANGE => Self::Range,
1486            ffi::GTK_ACCESSIBLE_ROLE_REGION => Self::Region,
1487            ffi::GTK_ACCESSIBLE_ROLE_ROW => Self::Row,
1488            ffi::GTK_ACCESSIBLE_ROLE_ROW_GROUP => Self::RowGroup,
1489            ffi::GTK_ACCESSIBLE_ROLE_ROW_HEADER => Self::RowHeader,
1490            ffi::GTK_ACCESSIBLE_ROLE_SCROLLBAR => Self::Scrollbar,
1491            ffi::GTK_ACCESSIBLE_ROLE_SEARCH => Self::Search,
1492            ffi::GTK_ACCESSIBLE_ROLE_SEARCH_BOX => Self::SearchBox,
1493            ffi::GTK_ACCESSIBLE_ROLE_SECTION => Self::Section,
1494            ffi::GTK_ACCESSIBLE_ROLE_SECTION_HEAD => Self::SectionHead,
1495            ffi::GTK_ACCESSIBLE_ROLE_SELECT => Self::Select,
1496            ffi::GTK_ACCESSIBLE_ROLE_SEPARATOR => Self::Separator,
1497            ffi::GTK_ACCESSIBLE_ROLE_SLIDER => Self::Slider,
1498            ffi::GTK_ACCESSIBLE_ROLE_SPIN_BUTTON => Self::SpinButton,
1499            ffi::GTK_ACCESSIBLE_ROLE_STATUS => Self::Status,
1500            ffi::GTK_ACCESSIBLE_ROLE_STRUCTURE => Self::Structure,
1501            ffi::GTK_ACCESSIBLE_ROLE_SWITCH => Self::Switch,
1502            ffi::GTK_ACCESSIBLE_ROLE_TAB => Self::Tab,
1503            ffi::GTK_ACCESSIBLE_ROLE_TABLE => Self::Table,
1504            ffi::GTK_ACCESSIBLE_ROLE_TAB_LIST => Self::TabList,
1505            ffi::GTK_ACCESSIBLE_ROLE_TAB_PANEL => Self::TabPanel,
1506            ffi::GTK_ACCESSIBLE_ROLE_TEXT_BOX => Self::TextBox,
1507            ffi::GTK_ACCESSIBLE_ROLE_TIME => Self::Time,
1508            ffi::GTK_ACCESSIBLE_ROLE_TIMER => Self::Timer,
1509            ffi::GTK_ACCESSIBLE_ROLE_TOOLBAR => Self::Toolbar,
1510            ffi::GTK_ACCESSIBLE_ROLE_TOOLTIP => Self::Tooltip,
1511            ffi::GTK_ACCESSIBLE_ROLE_TREE => Self::Tree,
1512            ffi::GTK_ACCESSIBLE_ROLE_TREE_GRID => Self::TreeGrid,
1513            ffi::GTK_ACCESSIBLE_ROLE_TREE_ITEM => Self::TreeItem,
1514            ffi::GTK_ACCESSIBLE_ROLE_WIDGET => Self::Widget,
1515            ffi::GTK_ACCESSIBLE_ROLE_WINDOW => Self::Window,
1516            #[cfg(feature = "v4_10")]
1517            ffi::GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON => Self::ToggleButton,
1518            #[cfg(feature = "v4_12")]
1519            ffi::GTK_ACCESSIBLE_ROLE_APPLICATION => Self::Application,
1520            #[cfg(feature = "v4_14")]
1521            ffi::GTK_ACCESSIBLE_ROLE_PARAGRAPH => Self::Paragraph,
1522            #[cfg(feature = "v4_14")]
1523            ffi::GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE => Self::BlockQuote,
1524            #[cfg(feature = "v4_14")]
1525            ffi::GTK_ACCESSIBLE_ROLE_ARTICLE => Self::Article,
1526            #[cfg(feature = "v4_14")]
1527            ffi::GTK_ACCESSIBLE_ROLE_COMMENT => Self::Comment,
1528            #[cfg(feature = "v4_14")]
1529            ffi::GTK_ACCESSIBLE_ROLE_TERMINAL => Self::Terminal,
1530            value => Self::__Unknown(value),
1531        }
1532    }
1533}
1534
1535impl StaticType for AccessibleRole {
1536    #[inline]
1537    #[doc(alias = "gtk_accessible_role_get_type")]
1538    fn static_type() -> glib::Type {
1539        unsafe { from_glib(ffi::gtk_accessible_role_get_type()) }
1540    }
1541}
1542
1543impl glib::HasParamSpec for AccessibleRole {
1544    type ParamSpec = glib::ParamSpecEnum;
1545    type SetValue = Self;
1546    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1547
1548    fn param_spec_builder() -> Self::BuilderFn {
1549        Self::ParamSpec::builder_with_default
1550    }
1551}
1552
1553impl glib::value::ValueType for AccessibleRole {
1554    type Type = Self;
1555}
1556
1557unsafe impl<'a> glib::value::FromValue<'a> for AccessibleRole {
1558    type Checker = glib::value::GenericValueTypeChecker<Self>;
1559
1560    #[inline]
1561    unsafe fn from_value(value: &'a glib::Value) -> Self {
1562        skip_assert_initialized!();
1563        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1564    }
1565}
1566
1567impl ToValue for AccessibleRole {
1568    #[inline]
1569    fn to_value(&self) -> glib::Value {
1570        let mut value = glib::Value::for_value_type::<Self>();
1571        unsafe {
1572            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1573        }
1574        value
1575    }
1576
1577    #[inline]
1578    fn value_type(&self) -> glib::Type {
1579        Self::static_type()
1580    }
1581}
1582
1583impl From<AccessibleRole> for glib::Value {
1584    #[inline]
1585    fn from(v: AccessibleRole) -> Self {
1586        skip_assert_initialized!();
1587        ToValue::to_value(&v)
1588    }
1589}
1590
1591/// The possible values for the [`AccessibleProperty::Sort`][crate::AccessibleProperty::Sort]
1592/// accessible property.
1593#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1594#[non_exhaustive]
1595#[doc(alias = "GtkAccessibleSort")]
1596pub enum AccessibleSort {
1597    /// There is no defined sort applied to the column.
1598    #[doc(alias = "GTK_ACCESSIBLE_SORT_NONE")]
1599    None,
1600    /// Items are sorted in ascending order by this column.
1601    #[doc(alias = "GTK_ACCESSIBLE_SORT_ASCENDING")]
1602    Ascending,
1603    /// Items are sorted in descending order by this column.
1604    #[doc(alias = "GTK_ACCESSIBLE_SORT_DESCENDING")]
1605    Descending,
1606    /// A sort algorithm other than ascending or
1607    ///    descending has been applied.
1608    #[doc(alias = "GTK_ACCESSIBLE_SORT_OTHER")]
1609    Other,
1610    #[doc(hidden)]
1611    __Unknown(i32),
1612}
1613
1614#[doc(hidden)]
1615impl IntoGlib for AccessibleSort {
1616    type GlibType = ffi::GtkAccessibleSort;
1617
1618    #[inline]
1619    fn into_glib(self) -> ffi::GtkAccessibleSort {
1620        match self {
1621            Self::None => ffi::GTK_ACCESSIBLE_SORT_NONE,
1622            Self::Ascending => ffi::GTK_ACCESSIBLE_SORT_ASCENDING,
1623            Self::Descending => ffi::GTK_ACCESSIBLE_SORT_DESCENDING,
1624            Self::Other => ffi::GTK_ACCESSIBLE_SORT_OTHER,
1625            Self::__Unknown(value) => value,
1626        }
1627    }
1628}
1629
1630#[doc(hidden)]
1631impl FromGlib<ffi::GtkAccessibleSort> for AccessibleSort {
1632    #[inline]
1633    unsafe fn from_glib(value: ffi::GtkAccessibleSort) -> Self {
1634        skip_assert_initialized!();
1635
1636        match value {
1637            ffi::GTK_ACCESSIBLE_SORT_NONE => Self::None,
1638            ffi::GTK_ACCESSIBLE_SORT_ASCENDING => Self::Ascending,
1639            ffi::GTK_ACCESSIBLE_SORT_DESCENDING => Self::Descending,
1640            ffi::GTK_ACCESSIBLE_SORT_OTHER => Self::Other,
1641            value => Self::__Unknown(value),
1642        }
1643    }
1644}
1645
1646impl StaticType for AccessibleSort {
1647    #[inline]
1648    #[doc(alias = "gtk_accessible_sort_get_type")]
1649    fn static_type() -> glib::Type {
1650        unsafe { from_glib(ffi::gtk_accessible_sort_get_type()) }
1651    }
1652}
1653
1654impl glib::HasParamSpec for AccessibleSort {
1655    type ParamSpec = glib::ParamSpecEnum;
1656    type SetValue = Self;
1657    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1658
1659    fn param_spec_builder() -> Self::BuilderFn {
1660        Self::ParamSpec::builder_with_default
1661    }
1662}
1663
1664impl glib::value::ValueType for AccessibleSort {
1665    type Type = Self;
1666}
1667
1668unsafe impl<'a> glib::value::FromValue<'a> for AccessibleSort {
1669    type Checker = glib::value::GenericValueTypeChecker<Self>;
1670
1671    #[inline]
1672    unsafe fn from_value(value: &'a glib::Value) -> Self {
1673        skip_assert_initialized!();
1674        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1675    }
1676}
1677
1678impl ToValue for AccessibleSort {
1679    #[inline]
1680    fn to_value(&self) -> glib::Value {
1681        let mut value = glib::Value::for_value_type::<Self>();
1682        unsafe {
1683            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1684        }
1685        value
1686    }
1687
1688    #[inline]
1689    fn value_type(&self) -> glib::Type {
1690        Self::static_type()
1691    }
1692}
1693
1694impl From<AccessibleSort> for glib::Value {
1695    #[inline]
1696    fn from(v: AccessibleSort) -> Self {
1697        skip_assert_initialized!();
1698        ToValue::to_value(&v)
1699    }
1700}
1701
1702/// The possible accessible states of a [`Accessible`][crate::Accessible].
1703#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1704#[non_exhaustive]
1705#[doc(alias = "GtkAccessibleState")]
1706pub enum AccessibleState {
1707    ///  state. This state has boolean values
1708    #[doc(alias = "GTK_ACCESSIBLE_STATE_BUSY")]
1709    Busy,
1710    ///  state; indicates the current
1711    ///   state of a [`CheckButton`][crate::CheckButton]. Value type: [`AccessibleTristate`][crate::AccessibleTristate]
1712    #[doc(alias = "GTK_ACCESSIBLE_STATE_CHECKED")]
1713    Checked,
1714    ///  state; corresponds to the
1715    ///   [`sensitive`][struct@crate::Widget#sensitive] property. It indicates a UI element
1716    ///   that is perceivable, but not editable or operable. Value type: boolean
1717    #[doc(alias = "GTK_ACCESSIBLE_STATE_DISABLED")]
1718    Disabled,
1719    ///  state; corresponds to the
1720    ///   [`expanded`][struct@crate::Expander#expanded] property. Value type: boolean
1721    ///   or undefined
1722    #[doc(alias = "GTK_ACCESSIBLE_STATE_EXPANDED")]
1723    Expanded,
1724    ///  state; corresponds to the
1725    ///   [`visible`][struct@crate::Widget#visible] property. You can use this state
1726    ///   explicitly on UI elements that should not be exposed to an assistive
1727    ///   technology. Value type: boolean
1728    ///   See also: [`Disabled`][Self::Disabled]
1729    #[doc(alias = "GTK_ACCESSIBLE_STATE_HIDDEN")]
1730    Hidden,
1731    ///  state; set when a widget
1732    ///   is showing an error. Value type: [`AccessibleInvalidState`][crate::AccessibleInvalidState]
1733    #[doc(alias = "GTK_ACCESSIBLE_STATE_INVALID")]
1734    Invalid,
1735    ///  state; indicates the current
1736    ///   state of a [`ToggleButton`][crate::ToggleButton]. Value type: [`AccessibleTristate`][crate::AccessibleTristate]
1737    ///   enumeration
1738    #[doc(alias = "GTK_ACCESSIBLE_STATE_PRESSED")]
1739    Pressed,
1740    ///  state; set when a widget
1741    ///   is selected. Value type: boolean or undefined
1742    #[doc(alias = "GTK_ACCESSIBLE_STATE_SELECTED")]
1743    Selected,
1744    /// Indicates that a widget with the GTK_ACCESSIBLE_ROLE_LINK has been visited.
1745    /// Value type: boolean.
1746    #[cfg(feature = "v4_12")]
1747    #[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
1748    #[doc(alias = "GTK_ACCESSIBLE_STATE_VISITED")]
1749    Visited,
1750    #[doc(hidden)]
1751    __Unknown(i32),
1752}
1753
1754impl AccessibleState {
1755    #[doc(alias = "gtk_accessible_state_init_value")]
1756    pub fn init_value(self, value: &mut glib::Value) {
1757        assert_initialized_main_thread!();
1758        unsafe {
1759            ffi::gtk_accessible_state_init_value(self.into_glib(), value.to_glib_none_mut().0);
1760        }
1761    }
1762}
1763
1764#[doc(hidden)]
1765impl IntoGlib for AccessibleState {
1766    type GlibType = ffi::GtkAccessibleState;
1767
1768    #[inline]
1769    fn into_glib(self) -> ffi::GtkAccessibleState {
1770        match self {
1771            Self::Busy => ffi::GTK_ACCESSIBLE_STATE_BUSY,
1772            Self::Checked => ffi::GTK_ACCESSIBLE_STATE_CHECKED,
1773            Self::Disabled => ffi::GTK_ACCESSIBLE_STATE_DISABLED,
1774            Self::Expanded => ffi::GTK_ACCESSIBLE_STATE_EXPANDED,
1775            Self::Hidden => ffi::GTK_ACCESSIBLE_STATE_HIDDEN,
1776            Self::Invalid => ffi::GTK_ACCESSIBLE_STATE_INVALID,
1777            Self::Pressed => ffi::GTK_ACCESSIBLE_STATE_PRESSED,
1778            Self::Selected => ffi::GTK_ACCESSIBLE_STATE_SELECTED,
1779            #[cfg(feature = "v4_12")]
1780            Self::Visited => ffi::GTK_ACCESSIBLE_STATE_VISITED,
1781            Self::__Unknown(value) => value,
1782        }
1783    }
1784}
1785
1786#[doc(hidden)]
1787impl FromGlib<ffi::GtkAccessibleState> for AccessibleState {
1788    #[inline]
1789    unsafe fn from_glib(value: ffi::GtkAccessibleState) -> Self {
1790        skip_assert_initialized!();
1791
1792        match value {
1793            ffi::GTK_ACCESSIBLE_STATE_BUSY => Self::Busy,
1794            ffi::GTK_ACCESSIBLE_STATE_CHECKED => Self::Checked,
1795            ffi::GTK_ACCESSIBLE_STATE_DISABLED => Self::Disabled,
1796            ffi::GTK_ACCESSIBLE_STATE_EXPANDED => Self::Expanded,
1797            ffi::GTK_ACCESSIBLE_STATE_HIDDEN => Self::Hidden,
1798            ffi::GTK_ACCESSIBLE_STATE_INVALID => Self::Invalid,
1799            ffi::GTK_ACCESSIBLE_STATE_PRESSED => Self::Pressed,
1800            ffi::GTK_ACCESSIBLE_STATE_SELECTED => Self::Selected,
1801            #[cfg(feature = "v4_12")]
1802            ffi::GTK_ACCESSIBLE_STATE_VISITED => Self::Visited,
1803            value => Self::__Unknown(value),
1804        }
1805    }
1806}
1807
1808impl StaticType for AccessibleState {
1809    #[inline]
1810    #[doc(alias = "gtk_accessible_state_get_type")]
1811    fn static_type() -> glib::Type {
1812        unsafe { from_glib(ffi::gtk_accessible_state_get_type()) }
1813    }
1814}
1815
1816impl glib::HasParamSpec for AccessibleState {
1817    type ParamSpec = glib::ParamSpecEnum;
1818    type SetValue = Self;
1819    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1820
1821    fn param_spec_builder() -> Self::BuilderFn {
1822        Self::ParamSpec::builder_with_default
1823    }
1824}
1825
1826impl glib::value::ValueType for AccessibleState {
1827    type Type = Self;
1828}
1829
1830unsafe impl<'a> glib::value::FromValue<'a> for AccessibleState {
1831    type Checker = glib::value::GenericValueTypeChecker<Self>;
1832
1833    #[inline]
1834    unsafe fn from_value(value: &'a glib::Value) -> Self {
1835        skip_assert_initialized!();
1836        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1837    }
1838}
1839
1840impl ToValue for AccessibleState {
1841    #[inline]
1842    fn to_value(&self) -> glib::Value {
1843        let mut value = glib::Value::for_value_type::<Self>();
1844        unsafe {
1845            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1846        }
1847        value
1848    }
1849
1850    #[inline]
1851    fn value_type(&self) -> glib::Type {
1852        Self::static_type()
1853    }
1854}
1855
1856impl From<AccessibleState> for glib::Value {
1857    #[inline]
1858    fn from(v: AccessibleState) -> Self {
1859        skip_assert_initialized!();
1860        ToValue::to_value(&v)
1861    }
1862}
1863
1864/// The type of contents change operation.
1865#[cfg(feature = "v4_14")]
1866#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1867#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1868#[non_exhaustive]
1869#[doc(alias = "GtkAccessibleTextContentChange")]
1870pub enum AccessibleTextContentChange {
1871    /// contents change as the result of
1872    ///   an insert operation
1873    #[doc(alias = "GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT")]
1874    Insert,
1875    /// contents change as the result of
1876    ///   a remove operation
1877    #[doc(alias = "GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_REMOVE")]
1878    Remove,
1879    #[doc(hidden)]
1880    __Unknown(i32),
1881}
1882
1883#[cfg(feature = "v4_14")]
1884#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1885#[doc(hidden)]
1886impl IntoGlib for AccessibleTextContentChange {
1887    type GlibType = ffi::GtkAccessibleTextContentChange;
1888
1889    #[inline]
1890    fn into_glib(self) -> ffi::GtkAccessibleTextContentChange {
1891        match self {
1892            Self::Insert => ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT,
1893            Self::Remove => ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_REMOVE,
1894            Self::__Unknown(value) => value,
1895        }
1896    }
1897}
1898
1899#[cfg(feature = "v4_14")]
1900#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1901#[doc(hidden)]
1902impl FromGlib<ffi::GtkAccessibleTextContentChange> for AccessibleTextContentChange {
1903    #[inline]
1904    unsafe fn from_glib(value: ffi::GtkAccessibleTextContentChange) -> Self {
1905        skip_assert_initialized!();
1906
1907        match value {
1908            ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT => Self::Insert,
1909            ffi::GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_REMOVE => Self::Remove,
1910            value => Self::__Unknown(value),
1911        }
1912    }
1913}
1914
1915#[cfg(feature = "v4_14")]
1916#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1917impl StaticType for AccessibleTextContentChange {
1918    #[inline]
1919    #[doc(alias = "gtk_accessible_text_content_change_get_type")]
1920    fn static_type() -> glib::Type {
1921        unsafe { from_glib(ffi::gtk_accessible_text_content_change_get_type()) }
1922    }
1923}
1924
1925#[cfg(feature = "v4_14")]
1926#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1927impl glib::HasParamSpec for AccessibleTextContentChange {
1928    type ParamSpec = glib::ParamSpecEnum;
1929    type SetValue = Self;
1930    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1931
1932    fn param_spec_builder() -> Self::BuilderFn {
1933        Self::ParamSpec::builder_with_default
1934    }
1935}
1936
1937#[cfg(feature = "v4_14")]
1938#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1939impl glib::value::ValueType for AccessibleTextContentChange {
1940    type Type = Self;
1941}
1942
1943#[cfg(feature = "v4_14")]
1944#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1945unsafe impl<'a> glib::value::FromValue<'a> for AccessibleTextContentChange {
1946    type Checker = glib::value::GenericValueTypeChecker<Self>;
1947
1948    #[inline]
1949    unsafe fn from_value(value: &'a glib::Value) -> Self {
1950        skip_assert_initialized!();
1951        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1952    }
1953}
1954
1955#[cfg(feature = "v4_14")]
1956#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1957impl ToValue for AccessibleTextContentChange {
1958    #[inline]
1959    fn to_value(&self) -> glib::Value {
1960        let mut value = glib::Value::for_value_type::<Self>();
1961        unsafe {
1962            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1963        }
1964        value
1965    }
1966
1967    #[inline]
1968    fn value_type(&self) -> glib::Type {
1969        Self::static_type()
1970    }
1971}
1972
1973#[cfg(feature = "v4_14")]
1974#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1975impl From<AccessibleTextContentChange> for glib::Value {
1976    #[inline]
1977    fn from(v: AccessibleTextContentChange) -> Self {
1978        skip_assert_initialized!();
1979        ToValue::to_value(&v)
1980    }
1981}
1982
1983/// The granularity for queries about the text contents of a [`AccessibleText`][crate::AccessibleText]
1984/// implementation.
1985#[cfg(feature = "v4_14")]
1986#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
1987#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1988#[non_exhaustive]
1989#[doc(alias = "GtkAccessibleTextGranularity")]
1990pub enum AccessibleTextGranularity {
1991    /// Use the boundary between
1992    ///   characters (including non-printing characters)
1993    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_CHARACTER")]
1994    Character,
1995    /// Use the boundary between words,
1996    ///   starting from the beginning of the current word and ending at the
1997    ///   beginning of the next word
1998    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_WORD")]
1999    Word,
2000    /// Use the boundary between
2001    ///   sentences, starting from the beginning of the current sentence and
2002    ///   ending at the beginning of the next sentence
2003    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_SENTENCE")]
2004    Sentence,
2005    /// Use the boundary between lines,
2006    ///   starting from the beginning of the current line and ending at the
2007    ///   beginning of the next line
2008    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_LINE")]
2009    Line,
2010    /// Use the boundary between
2011    ///   paragraphs, starting from the beginning of the current paragraph and
2012    ///   ending at the beginning of the next paragraph
2013    #[doc(alias = "GTK_ACCESSIBLE_TEXT_GRANULARITY_PARAGRAPH")]
2014    Paragraph,
2015    #[doc(hidden)]
2016    __Unknown(i32),
2017}
2018
2019#[cfg(feature = "v4_14")]
2020#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2021#[doc(hidden)]
2022impl IntoGlib for AccessibleTextGranularity {
2023    type GlibType = ffi::GtkAccessibleTextGranularity;
2024
2025    #[inline]
2026    fn into_glib(self) -> ffi::GtkAccessibleTextGranularity {
2027        match self {
2028            Self::Character => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_CHARACTER,
2029            Self::Word => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_WORD,
2030            Self::Sentence => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_SENTENCE,
2031            Self::Line => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_LINE,
2032            Self::Paragraph => ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_PARAGRAPH,
2033            Self::__Unknown(value) => value,
2034        }
2035    }
2036}
2037
2038#[cfg(feature = "v4_14")]
2039#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2040#[doc(hidden)]
2041impl FromGlib<ffi::GtkAccessibleTextGranularity> for AccessibleTextGranularity {
2042    #[inline]
2043    unsafe fn from_glib(value: ffi::GtkAccessibleTextGranularity) -> Self {
2044        skip_assert_initialized!();
2045
2046        match value {
2047            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_CHARACTER => Self::Character,
2048            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_WORD => Self::Word,
2049            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_SENTENCE => Self::Sentence,
2050            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_LINE => Self::Line,
2051            ffi::GTK_ACCESSIBLE_TEXT_GRANULARITY_PARAGRAPH => Self::Paragraph,
2052            value => Self::__Unknown(value),
2053        }
2054    }
2055}
2056
2057#[cfg(feature = "v4_14")]
2058#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2059impl StaticType for AccessibleTextGranularity {
2060    #[inline]
2061    #[doc(alias = "gtk_accessible_text_granularity_get_type")]
2062    fn static_type() -> glib::Type {
2063        unsafe { from_glib(ffi::gtk_accessible_text_granularity_get_type()) }
2064    }
2065}
2066
2067#[cfg(feature = "v4_14")]
2068#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2069impl glib::HasParamSpec for AccessibleTextGranularity {
2070    type ParamSpec = glib::ParamSpecEnum;
2071    type SetValue = Self;
2072    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2073
2074    fn param_spec_builder() -> Self::BuilderFn {
2075        Self::ParamSpec::builder_with_default
2076    }
2077}
2078
2079#[cfg(feature = "v4_14")]
2080#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2081impl glib::value::ValueType for AccessibleTextGranularity {
2082    type Type = Self;
2083}
2084
2085#[cfg(feature = "v4_14")]
2086#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2087unsafe impl<'a> glib::value::FromValue<'a> for AccessibleTextGranularity {
2088    type Checker = glib::value::GenericValueTypeChecker<Self>;
2089
2090    #[inline]
2091    unsafe fn from_value(value: &'a glib::Value) -> Self {
2092        skip_assert_initialized!();
2093        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2094    }
2095}
2096
2097#[cfg(feature = "v4_14")]
2098#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2099impl ToValue for AccessibleTextGranularity {
2100    #[inline]
2101    fn to_value(&self) -> glib::Value {
2102        let mut value = glib::Value::for_value_type::<Self>();
2103        unsafe {
2104            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2105        }
2106        value
2107    }
2108
2109    #[inline]
2110    fn value_type(&self) -> glib::Type {
2111        Self::static_type()
2112    }
2113}
2114
2115#[cfg(feature = "v4_14")]
2116#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
2117impl From<AccessibleTextGranularity> for glib::Value {
2118    #[inline]
2119    fn from(v: AccessibleTextGranularity) -> Self {
2120        skip_assert_initialized!();
2121        ToValue::to_value(&v)
2122    }
2123}
2124
2125/// The possible values for the [`AccessibleState::Pressed`][crate::AccessibleState::Pressed]
2126/// accessible state.
2127///
2128/// Note that the [`False`][Self::False] and
2129/// [`True`][Self::True] have the same values
2130/// as [`false`] and [`true`].
2131#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2132#[non_exhaustive]
2133#[doc(alias = "GtkAccessibleTristate")]
2134pub enum AccessibleTristate {
2135    /// The state is `false`
2136    #[doc(alias = "GTK_ACCESSIBLE_TRISTATE_FALSE")]
2137    False,
2138    /// The state is `true`
2139    #[doc(alias = "GTK_ACCESSIBLE_TRISTATE_TRUE")]
2140    True,
2141    /// The state is `mixed`
2142    #[doc(alias = "GTK_ACCESSIBLE_TRISTATE_MIXED")]
2143    Mixed,
2144    #[doc(hidden)]
2145    __Unknown(i32),
2146}
2147
2148#[doc(hidden)]
2149impl IntoGlib for AccessibleTristate {
2150    type GlibType = ffi::GtkAccessibleTristate;
2151
2152    #[inline]
2153    fn into_glib(self) -> ffi::GtkAccessibleTristate {
2154        match self {
2155            Self::False => ffi::GTK_ACCESSIBLE_TRISTATE_FALSE,
2156            Self::True => ffi::GTK_ACCESSIBLE_TRISTATE_TRUE,
2157            Self::Mixed => ffi::GTK_ACCESSIBLE_TRISTATE_MIXED,
2158            Self::__Unknown(value) => value,
2159        }
2160    }
2161}
2162
2163#[doc(hidden)]
2164impl FromGlib<ffi::GtkAccessibleTristate> for AccessibleTristate {
2165    #[inline]
2166    unsafe fn from_glib(value: ffi::GtkAccessibleTristate) -> Self {
2167        skip_assert_initialized!();
2168
2169        match value {
2170            ffi::GTK_ACCESSIBLE_TRISTATE_FALSE => Self::False,
2171            ffi::GTK_ACCESSIBLE_TRISTATE_TRUE => Self::True,
2172            ffi::GTK_ACCESSIBLE_TRISTATE_MIXED => Self::Mixed,
2173            value => Self::__Unknown(value),
2174        }
2175    }
2176}
2177
2178impl StaticType for AccessibleTristate {
2179    #[inline]
2180    #[doc(alias = "gtk_accessible_tristate_get_type")]
2181    fn static_type() -> glib::Type {
2182        unsafe { from_glib(ffi::gtk_accessible_tristate_get_type()) }
2183    }
2184}
2185
2186impl glib::HasParamSpec for AccessibleTristate {
2187    type ParamSpec = glib::ParamSpecEnum;
2188    type SetValue = Self;
2189    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2190
2191    fn param_spec_builder() -> Self::BuilderFn {
2192        Self::ParamSpec::builder_with_default
2193    }
2194}
2195
2196impl glib::value::ValueType for AccessibleTristate {
2197    type Type = Self;
2198}
2199
2200unsafe impl<'a> glib::value::FromValue<'a> for AccessibleTristate {
2201    type Checker = glib::value::GenericValueTypeChecker<Self>;
2202
2203    #[inline]
2204    unsafe fn from_value(value: &'a glib::Value) -> Self {
2205        skip_assert_initialized!();
2206        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2207    }
2208}
2209
2210impl ToValue for AccessibleTristate {
2211    #[inline]
2212    fn to_value(&self) -> glib::Value {
2213        let mut value = glib::Value::for_value_type::<Self>();
2214        unsafe {
2215            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2216        }
2217        value
2218    }
2219
2220    #[inline]
2221    fn value_type(&self) -> glib::Type {
2222        Self::static_type()
2223    }
2224}
2225
2226impl From<AccessibleTristate> for glib::Value {
2227    #[inline]
2228    fn from(v: AccessibleTristate) -> Self {
2229        skip_assert_initialized!();
2230        ToValue::to_value(&v)
2231    }
2232}
2233
2234/// Indicates the direction in which an arrow should point.
2235#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2236#[non_exhaustive]
2237#[doc(alias = "GtkArrowType")]
2238pub enum ArrowType {
2239    /// Represents an upward pointing arrow.
2240    #[doc(alias = "GTK_ARROW_UP")]
2241    Up,
2242    /// Represents a downward pointing arrow.
2243    #[doc(alias = "GTK_ARROW_DOWN")]
2244    Down,
2245    /// Represents a left pointing arrow.
2246    #[doc(alias = "GTK_ARROW_LEFT")]
2247    Left,
2248    /// Represents a right pointing arrow.
2249    #[doc(alias = "GTK_ARROW_RIGHT")]
2250    Right,
2251    /// No arrow.
2252    #[doc(alias = "GTK_ARROW_NONE")]
2253    None,
2254    #[doc(hidden)]
2255    __Unknown(i32),
2256}
2257
2258#[doc(hidden)]
2259impl IntoGlib for ArrowType {
2260    type GlibType = ffi::GtkArrowType;
2261
2262    #[inline]
2263    fn into_glib(self) -> ffi::GtkArrowType {
2264        match self {
2265            Self::Up => ffi::GTK_ARROW_UP,
2266            Self::Down => ffi::GTK_ARROW_DOWN,
2267            Self::Left => ffi::GTK_ARROW_LEFT,
2268            Self::Right => ffi::GTK_ARROW_RIGHT,
2269            Self::None => ffi::GTK_ARROW_NONE,
2270            Self::__Unknown(value) => value,
2271        }
2272    }
2273}
2274
2275#[doc(hidden)]
2276impl FromGlib<ffi::GtkArrowType> for ArrowType {
2277    #[inline]
2278    unsafe fn from_glib(value: ffi::GtkArrowType) -> Self {
2279        skip_assert_initialized!();
2280
2281        match value {
2282            ffi::GTK_ARROW_UP => Self::Up,
2283            ffi::GTK_ARROW_DOWN => Self::Down,
2284            ffi::GTK_ARROW_LEFT => Self::Left,
2285            ffi::GTK_ARROW_RIGHT => Self::Right,
2286            ffi::GTK_ARROW_NONE => Self::None,
2287            value => Self::__Unknown(value),
2288        }
2289    }
2290}
2291
2292impl StaticType for ArrowType {
2293    #[inline]
2294    #[doc(alias = "gtk_arrow_type_get_type")]
2295    fn static_type() -> glib::Type {
2296        unsafe { from_glib(ffi::gtk_arrow_type_get_type()) }
2297    }
2298}
2299
2300impl glib::HasParamSpec for ArrowType {
2301    type ParamSpec = glib::ParamSpecEnum;
2302    type SetValue = Self;
2303    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2304
2305    fn param_spec_builder() -> Self::BuilderFn {
2306        Self::ParamSpec::builder_with_default
2307    }
2308}
2309
2310impl glib::value::ValueType for ArrowType {
2311    type Type = Self;
2312}
2313
2314unsafe impl<'a> glib::value::FromValue<'a> for ArrowType {
2315    type Checker = glib::value::GenericValueTypeChecker<Self>;
2316
2317    #[inline]
2318    unsafe fn from_value(value: &'a glib::Value) -> Self {
2319        skip_assert_initialized!();
2320        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2321    }
2322}
2323
2324impl ToValue for ArrowType {
2325    #[inline]
2326    fn to_value(&self) -> glib::Value {
2327        let mut value = glib::Value::for_value_type::<Self>();
2328        unsafe {
2329            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2330        }
2331        value
2332    }
2333
2334    #[inline]
2335    fn value_type(&self) -> glib::Type {
2336        Self::static_type()
2337    }
2338}
2339
2340impl From<ArrowType> for glib::Value {
2341    #[inline]
2342    fn from(v: ArrowType) -> Self {
2343        skip_assert_initialized!();
2344        ToValue::to_value(&v)
2345    }
2346}
2347
2348/// .
2349/// See gtk_assistant_commit() for details.
2350///
2351/// # Deprecated since 4.10
2352///
2353/// [`Assistant`][crate::Assistant] will be removed in GTK 5
2354#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
2355#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2356#[non_exhaustive]
2357#[doc(alias = "GtkAssistantPageType")]
2358pub enum AssistantPageType {
2359    /// The page has regular contents. Both the
2360    ///  Back and forward buttons will be shown.
2361    #[doc(alias = "GTK_ASSISTANT_PAGE_CONTENT")]
2362    Content,
2363    /// The page contains an introduction to the
2364    ///  assistant task. Only the Forward button will be shown if there is a
2365    ///   next page.
2366    #[doc(alias = "GTK_ASSISTANT_PAGE_INTRO")]
2367    Intro,
2368    /// The page lets the user confirm or deny the
2369    ///  changes. The Back and Apply buttons will be shown.
2370    #[doc(alias = "GTK_ASSISTANT_PAGE_CONFIRM")]
2371    Confirm,
2372    /// The page informs the user of the changes
2373    ///  done. Only the Close button will be shown.
2374    #[doc(alias = "GTK_ASSISTANT_PAGE_SUMMARY")]
2375    Summary,
2376    /// Used for tasks that take a long time to
2377    ///  complete, blocks the assistant until the page is marked as complete.
2378    ///   Only the back button will be shown.
2379    #[doc(alias = "GTK_ASSISTANT_PAGE_PROGRESS")]
2380    Progress,
2381    /// Used for when other page types are not
2382    ///  appropriate. No buttons will be shown, and the application must
2383    ///  add its own buttons through gtk_assistant_add_action_widget().
2384    #[doc(alias = "GTK_ASSISTANT_PAGE_CUSTOM")]
2385    Custom,
2386    #[doc(hidden)]
2387    __Unknown(i32),
2388}
2389
2390#[allow(deprecated)]
2391#[doc(hidden)]
2392impl IntoGlib for AssistantPageType {
2393    type GlibType = ffi::GtkAssistantPageType;
2394
2395    #[inline]
2396    fn into_glib(self) -> ffi::GtkAssistantPageType {
2397        match self {
2398            Self::Content => ffi::GTK_ASSISTANT_PAGE_CONTENT,
2399            Self::Intro => ffi::GTK_ASSISTANT_PAGE_INTRO,
2400            Self::Confirm => ffi::GTK_ASSISTANT_PAGE_CONFIRM,
2401            Self::Summary => ffi::GTK_ASSISTANT_PAGE_SUMMARY,
2402            Self::Progress => ffi::GTK_ASSISTANT_PAGE_PROGRESS,
2403            Self::Custom => ffi::GTK_ASSISTANT_PAGE_CUSTOM,
2404            Self::__Unknown(value) => value,
2405        }
2406    }
2407}
2408
2409#[allow(deprecated)]
2410#[doc(hidden)]
2411impl FromGlib<ffi::GtkAssistantPageType> for AssistantPageType {
2412    #[inline]
2413    unsafe fn from_glib(value: ffi::GtkAssistantPageType) -> Self {
2414        skip_assert_initialized!();
2415
2416        match value {
2417            ffi::GTK_ASSISTANT_PAGE_CONTENT => Self::Content,
2418            ffi::GTK_ASSISTANT_PAGE_INTRO => Self::Intro,
2419            ffi::GTK_ASSISTANT_PAGE_CONFIRM => Self::Confirm,
2420            ffi::GTK_ASSISTANT_PAGE_SUMMARY => Self::Summary,
2421            ffi::GTK_ASSISTANT_PAGE_PROGRESS => Self::Progress,
2422            ffi::GTK_ASSISTANT_PAGE_CUSTOM => Self::Custom,
2423            value => Self::__Unknown(value),
2424        }
2425    }
2426}
2427
2428#[allow(deprecated)]
2429impl StaticType for AssistantPageType {
2430    #[inline]
2431    #[doc(alias = "gtk_assistant_page_type_get_type")]
2432    fn static_type() -> glib::Type {
2433        unsafe { from_glib(ffi::gtk_assistant_page_type_get_type()) }
2434    }
2435}
2436
2437#[allow(deprecated)]
2438impl glib::HasParamSpec for AssistantPageType {
2439    type ParamSpec = glib::ParamSpecEnum;
2440    type SetValue = Self;
2441    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2442
2443    fn param_spec_builder() -> Self::BuilderFn {
2444        Self::ParamSpec::builder_with_default
2445    }
2446}
2447
2448#[allow(deprecated)]
2449impl glib::value::ValueType for AssistantPageType {
2450    type Type = Self;
2451}
2452
2453#[allow(deprecated)]
2454unsafe impl<'a> glib::value::FromValue<'a> for AssistantPageType {
2455    type Checker = glib::value::GenericValueTypeChecker<Self>;
2456
2457    #[inline]
2458    unsafe fn from_value(value: &'a glib::Value) -> Self {
2459        skip_assert_initialized!();
2460        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2461    }
2462}
2463
2464#[allow(deprecated)]
2465impl ToValue for AssistantPageType {
2466    #[inline]
2467    fn to_value(&self) -> glib::Value {
2468        let mut value = glib::Value::for_value_type::<Self>();
2469        unsafe {
2470            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2471        }
2472        value
2473    }
2474
2475    #[inline]
2476    fn value_type(&self) -> glib::Type {
2477        Self::static_type()
2478    }
2479}
2480
2481#[allow(deprecated)]
2482impl From<AssistantPageType> for glib::Value {
2483    #[inline]
2484    fn from(v: AssistantPageType) -> Self {
2485        skip_assert_initialized!();
2486        ToValue::to_value(&v)
2487    }
2488}
2489
2490/// Baseline position in a row of widgets.
2491///
2492/// Whenever a container has some form of natural row it may align
2493/// children in that row along a common typographical baseline. If
2494/// the amount of vertical space in the row is taller than the total
2495/// requested height of the baseline-aligned children then it can use a
2496/// [`BaselinePosition`][crate::BaselinePosition] to select where to put the baseline inside the
2497/// extra available space.
2498#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2499#[non_exhaustive]
2500#[doc(alias = "GtkBaselinePosition")]
2501pub enum BaselinePosition {
2502    /// Align the baseline at the top
2503    #[doc(alias = "GTK_BASELINE_POSITION_TOP")]
2504    Top,
2505    /// Center the baseline
2506    #[doc(alias = "GTK_BASELINE_POSITION_CENTER")]
2507    Center,
2508    /// Align the baseline at the bottom
2509    #[doc(alias = "GTK_BASELINE_POSITION_BOTTOM")]
2510    Bottom,
2511    #[doc(hidden)]
2512    __Unknown(i32),
2513}
2514
2515#[doc(hidden)]
2516impl IntoGlib for BaselinePosition {
2517    type GlibType = ffi::GtkBaselinePosition;
2518
2519    #[inline]
2520    fn into_glib(self) -> ffi::GtkBaselinePosition {
2521        match self {
2522            Self::Top => ffi::GTK_BASELINE_POSITION_TOP,
2523            Self::Center => ffi::GTK_BASELINE_POSITION_CENTER,
2524            Self::Bottom => ffi::GTK_BASELINE_POSITION_BOTTOM,
2525            Self::__Unknown(value) => value,
2526        }
2527    }
2528}
2529
2530#[doc(hidden)]
2531impl FromGlib<ffi::GtkBaselinePosition> for BaselinePosition {
2532    #[inline]
2533    unsafe fn from_glib(value: ffi::GtkBaselinePosition) -> Self {
2534        skip_assert_initialized!();
2535
2536        match value {
2537            ffi::GTK_BASELINE_POSITION_TOP => Self::Top,
2538            ffi::GTK_BASELINE_POSITION_CENTER => Self::Center,
2539            ffi::GTK_BASELINE_POSITION_BOTTOM => Self::Bottom,
2540            value => Self::__Unknown(value),
2541        }
2542    }
2543}
2544
2545impl StaticType for BaselinePosition {
2546    #[inline]
2547    #[doc(alias = "gtk_baseline_position_get_type")]
2548    fn static_type() -> glib::Type {
2549        unsafe { from_glib(ffi::gtk_baseline_position_get_type()) }
2550    }
2551}
2552
2553impl glib::HasParamSpec for BaselinePosition {
2554    type ParamSpec = glib::ParamSpecEnum;
2555    type SetValue = Self;
2556    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2557
2558    fn param_spec_builder() -> Self::BuilderFn {
2559        Self::ParamSpec::builder_with_default
2560    }
2561}
2562
2563impl glib::value::ValueType for BaselinePosition {
2564    type Type = Self;
2565}
2566
2567unsafe impl<'a> glib::value::FromValue<'a> for BaselinePosition {
2568    type Checker = glib::value::GenericValueTypeChecker<Self>;
2569
2570    #[inline]
2571    unsafe fn from_value(value: &'a glib::Value) -> Self {
2572        skip_assert_initialized!();
2573        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2574    }
2575}
2576
2577impl ToValue for BaselinePosition {
2578    #[inline]
2579    fn to_value(&self) -> glib::Value {
2580        let mut value = glib::Value::for_value_type::<Self>();
2581        unsafe {
2582            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2583        }
2584        value
2585    }
2586
2587    #[inline]
2588    fn value_type(&self) -> glib::Type {
2589        Self::static_type()
2590    }
2591}
2592
2593impl From<BaselinePosition> for glib::Value {
2594    #[inline]
2595    fn from(v: BaselinePosition) -> Self {
2596        skip_assert_initialized!();
2597        ToValue::to_value(&v)
2598    }
2599}
2600
2601/// Describes how the border of a UI element should be rendered.
2602#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2603#[non_exhaustive]
2604#[doc(alias = "GtkBorderStyle")]
2605pub enum BorderStyle {
2606    /// No visible border
2607    #[doc(alias = "GTK_BORDER_STYLE_NONE")]
2608    None,
2609    /// Same as [`None`][Self::None]
2610    #[doc(alias = "GTK_BORDER_STYLE_HIDDEN")]
2611    Hidden,
2612    /// A single line segment
2613    #[doc(alias = "GTK_BORDER_STYLE_SOLID")]
2614    Solid,
2615    /// Looks as if the content is sunken into the canvas
2616    #[doc(alias = "GTK_BORDER_STYLE_INSET")]
2617    Inset,
2618    /// Looks as if the content is coming out of the canvas
2619    #[doc(alias = "GTK_BORDER_STYLE_OUTSET")]
2620    Outset,
2621    /// A series of round dots
2622    #[doc(alias = "GTK_BORDER_STYLE_DOTTED")]
2623    Dotted,
2624    /// A series of square-ended dashes
2625    #[doc(alias = "GTK_BORDER_STYLE_DASHED")]
2626    Dashed,
2627    /// Two parallel lines with some space between them
2628    #[doc(alias = "GTK_BORDER_STYLE_DOUBLE")]
2629    Double,
2630    /// Looks as if it were carved in the canvas
2631    #[doc(alias = "GTK_BORDER_STYLE_GROOVE")]
2632    Groove,
2633    /// Looks as if it were coming out of the canvas
2634    #[doc(alias = "GTK_BORDER_STYLE_RIDGE")]
2635    Ridge,
2636    #[doc(hidden)]
2637    __Unknown(i32),
2638}
2639
2640#[doc(hidden)]
2641impl IntoGlib for BorderStyle {
2642    type GlibType = ffi::GtkBorderStyle;
2643
2644    #[inline]
2645    fn into_glib(self) -> ffi::GtkBorderStyle {
2646        match self {
2647            Self::None => ffi::GTK_BORDER_STYLE_NONE,
2648            Self::Hidden => ffi::GTK_BORDER_STYLE_HIDDEN,
2649            Self::Solid => ffi::GTK_BORDER_STYLE_SOLID,
2650            Self::Inset => ffi::GTK_BORDER_STYLE_INSET,
2651            Self::Outset => ffi::GTK_BORDER_STYLE_OUTSET,
2652            Self::Dotted => ffi::GTK_BORDER_STYLE_DOTTED,
2653            Self::Dashed => ffi::GTK_BORDER_STYLE_DASHED,
2654            Self::Double => ffi::GTK_BORDER_STYLE_DOUBLE,
2655            Self::Groove => ffi::GTK_BORDER_STYLE_GROOVE,
2656            Self::Ridge => ffi::GTK_BORDER_STYLE_RIDGE,
2657            Self::__Unknown(value) => value,
2658        }
2659    }
2660}
2661
2662#[doc(hidden)]
2663impl FromGlib<ffi::GtkBorderStyle> for BorderStyle {
2664    #[inline]
2665    unsafe fn from_glib(value: ffi::GtkBorderStyle) -> Self {
2666        skip_assert_initialized!();
2667
2668        match value {
2669            ffi::GTK_BORDER_STYLE_NONE => Self::None,
2670            ffi::GTK_BORDER_STYLE_HIDDEN => Self::Hidden,
2671            ffi::GTK_BORDER_STYLE_SOLID => Self::Solid,
2672            ffi::GTK_BORDER_STYLE_INSET => Self::Inset,
2673            ffi::GTK_BORDER_STYLE_OUTSET => Self::Outset,
2674            ffi::GTK_BORDER_STYLE_DOTTED => Self::Dotted,
2675            ffi::GTK_BORDER_STYLE_DASHED => Self::Dashed,
2676            ffi::GTK_BORDER_STYLE_DOUBLE => Self::Double,
2677            ffi::GTK_BORDER_STYLE_GROOVE => Self::Groove,
2678            ffi::GTK_BORDER_STYLE_RIDGE => Self::Ridge,
2679            value => Self::__Unknown(value),
2680        }
2681    }
2682}
2683
2684impl StaticType for BorderStyle {
2685    #[inline]
2686    #[doc(alias = "gtk_border_style_get_type")]
2687    fn static_type() -> glib::Type {
2688        unsafe { from_glib(ffi::gtk_border_style_get_type()) }
2689    }
2690}
2691
2692impl glib::HasParamSpec for BorderStyle {
2693    type ParamSpec = glib::ParamSpecEnum;
2694    type SetValue = Self;
2695    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2696
2697    fn param_spec_builder() -> Self::BuilderFn {
2698        Self::ParamSpec::builder_with_default
2699    }
2700}
2701
2702impl glib::value::ValueType for BorderStyle {
2703    type Type = Self;
2704}
2705
2706unsafe impl<'a> glib::value::FromValue<'a> for BorderStyle {
2707    type Checker = glib::value::GenericValueTypeChecker<Self>;
2708
2709    #[inline]
2710    unsafe fn from_value(value: &'a glib::Value) -> Self {
2711        skip_assert_initialized!();
2712        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2713    }
2714}
2715
2716impl ToValue for BorderStyle {
2717    #[inline]
2718    fn to_value(&self) -> glib::Value {
2719        let mut value = glib::Value::for_value_type::<Self>();
2720        unsafe {
2721            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2722        }
2723        value
2724    }
2725
2726    #[inline]
2727    fn value_type(&self) -> glib::Type {
2728        Self::static_type()
2729    }
2730}
2731
2732impl From<BorderStyle> for glib::Value {
2733    #[inline]
2734    fn from(v: BorderStyle) -> Self {
2735        skip_assert_initialized!();
2736        ToValue::to_value(&v)
2737    }
2738}
2739
2740/// Error codes that identify various errors that can occur while using
2741/// [`Builder`][crate::Builder].
2742#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2743#[non_exhaustive]
2744#[doc(alias = "GtkBuilderError")]
2745pub enum BuilderError {
2746    /// t name
2747    ///  a function that returns a `GType`.
2748    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION")]
2749    InvalidTypeFunction,
2750    /// t handle.
2751    #[doc(alias = "GTK_BUILDER_ERROR_UNHANDLED_TAG")]
2752    UnhandledTag,
2753    /// An attribute that is required by
2754    ///  [`Builder`][crate::Builder] was missing.
2755    #[doc(alias = "GTK_BUILDER_ERROR_MISSING_ATTRIBUTE")]
2756    MissingAttribute,
2757    /// t understand.
2758    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_ATTRIBUTE")]
2759    InvalidAttribute,
2760    /// t understand.
2761    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_TAG")]
2762    InvalidTag,
2763    /// A required property value was
2764    ///  missing.
2765    #[doc(alias = "GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE")]
2766    MissingPropertyValue,
2767    /// t parse
2768    ///  some attribute value.
2769    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_VALUE")]
2770    InvalidValue,
2771    /// The input file requires a newer version
2772    ///  of GTK.
2773    #[doc(alias = "GTK_BUILDER_ERROR_VERSION_MISMATCH")]
2774    VersionMismatch,
2775    /// An object id occurred twice.
2776    #[doc(alias = "GTK_BUILDER_ERROR_DUPLICATE_ID")]
2777    DuplicateId,
2778    /// A specified object type is of the same type or
2779    ///  derived from the type of the composite class being extended with builder XML.
2780    #[doc(alias = "GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED")]
2781    ObjectTypeRefused,
2782    /// s template XML
2783    #[doc(alias = "GTK_BUILDER_ERROR_TEMPLATE_MISMATCH")]
2784    TemplateMismatch,
2785    /// The specified property is unknown for the object class.
2786    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_PROPERTY")]
2787    InvalidProperty,
2788    /// The specified signal is unknown for the object class.
2789    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_SIGNAL")]
2790    InvalidSignal,
2791    /// An object id is unknown.
2792    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_ID")]
2793    InvalidId,
2794    /// A function could not be found. This often happens
2795    ///   when symbols are set to be kept private. Compiling code with -rdynamic or using the
2796    ///   `gmodule-export-2.0` pkgconfig module can fix this problem.
2797    #[doc(alias = "GTK_BUILDER_ERROR_INVALID_FUNCTION")]
2798    InvalidFunction,
2799    #[doc(hidden)]
2800    __Unknown(i32),
2801}
2802
2803#[doc(hidden)]
2804impl IntoGlib for BuilderError {
2805    type GlibType = ffi::GtkBuilderError;
2806
2807    fn into_glib(self) -> ffi::GtkBuilderError {
2808        match self {
2809            Self::InvalidTypeFunction => ffi::GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION,
2810            Self::UnhandledTag => ffi::GTK_BUILDER_ERROR_UNHANDLED_TAG,
2811            Self::MissingAttribute => ffi::GTK_BUILDER_ERROR_MISSING_ATTRIBUTE,
2812            Self::InvalidAttribute => ffi::GTK_BUILDER_ERROR_INVALID_ATTRIBUTE,
2813            Self::InvalidTag => ffi::GTK_BUILDER_ERROR_INVALID_TAG,
2814            Self::MissingPropertyValue => ffi::GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE,
2815            Self::InvalidValue => ffi::GTK_BUILDER_ERROR_INVALID_VALUE,
2816            Self::VersionMismatch => ffi::GTK_BUILDER_ERROR_VERSION_MISMATCH,
2817            Self::DuplicateId => ffi::GTK_BUILDER_ERROR_DUPLICATE_ID,
2818            Self::ObjectTypeRefused => ffi::GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED,
2819            Self::TemplateMismatch => ffi::GTK_BUILDER_ERROR_TEMPLATE_MISMATCH,
2820            Self::InvalidProperty => ffi::GTK_BUILDER_ERROR_INVALID_PROPERTY,
2821            Self::InvalidSignal => ffi::GTK_BUILDER_ERROR_INVALID_SIGNAL,
2822            Self::InvalidId => ffi::GTK_BUILDER_ERROR_INVALID_ID,
2823            Self::InvalidFunction => ffi::GTK_BUILDER_ERROR_INVALID_FUNCTION,
2824            Self::__Unknown(value) => value,
2825        }
2826    }
2827}
2828
2829#[doc(hidden)]
2830impl FromGlib<ffi::GtkBuilderError> for BuilderError {
2831    unsafe fn from_glib(value: ffi::GtkBuilderError) -> Self {
2832        skip_assert_initialized!();
2833
2834        match value {
2835            ffi::GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION => Self::InvalidTypeFunction,
2836            ffi::GTK_BUILDER_ERROR_UNHANDLED_TAG => Self::UnhandledTag,
2837            ffi::GTK_BUILDER_ERROR_MISSING_ATTRIBUTE => Self::MissingAttribute,
2838            ffi::GTK_BUILDER_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
2839            ffi::GTK_BUILDER_ERROR_INVALID_TAG => Self::InvalidTag,
2840            ffi::GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE => Self::MissingPropertyValue,
2841            ffi::GTK_BUILDER_ERROR_INVALID_VALUE => Self::InvalidValue,
2842            ffi::GTK_BUILDER_ERROR_VERSION_MISMATCH => Self::VersionMismatch,
2843            ffi::GTK_BUILDER_ERROR_DUPLICATE_ID => Self::DuplicateId,
2844            ffi::GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED => Self::ObjectTypeRefused,
2845            ffi::GTK_BUILDER_ERROR_TEMPLATE_MISMATCH => Self::TemplateMismatch,
2846            ffi::GTK_BUILDER_ERROR_INVALID_PROPERTY => Self::InvalidProperty,
2847            ffi::GTK_BUILDER_ERROR_INVALID_SIGNAL => Self::InvalidSignal,
2848            ffi::GTK_BUILDER_ERROR_INVALID_ID => Self::InvalidId,
2849            ffi::GTK_BUILDER_ERROR_INVALID_FUNCTION => Self::InvalidFunction,
2850            value => Self::__Unknown(value),
2851        }
2852    }
2853}
2854
2855impl glib::error::ErrorDomain for BuilderError {
2856    #[inline]
2857    fn domain() -> glib::Quark {
2858        skip_assert_initialized!();
2859
2860        unsafe { from_glib(ffi::gtk_builder_error_quark()) }
2861    }
2862
2863    #[inline]
2864    fn code(self) -> i32 {
2865        self.into_glib()
2866    }
2867
2868    #[inline]
2869    #[allow(clippy::match_single_binding)]
2870    fn from(code: i32) -> Option<Self> {
2871        skip_assert_initialized!();
2872        match unsafe { from_glib(code) } {
2873            value => Some(value),
2874        }
2875    }
2876}
2877
2878impl StaticType for BuilderError {
2879    #[inline]
2880    #[doc(alias = "gtk_builder_error_get_type")]
2881    fn static_type() -> glib::Type {
2882        unsafe { from_glib(ffi::gtk_builder_error_get_type()) }
2883    }
2884}
2885
2886impl glib::HasParamSpec for BuilderError {
2887    type ParamSpec = glib::ParamSpecEnum;
2888    type SetValue = Self;
2889    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2890
2891    fn param_spec_builder() -> Self::BuilderFn {
2892        Self::ParamSpec::builder_with_default
2893    }
2894}
2895
2896impl glib::value::ValueType for BuilderError {
2897    type Type = Self;
2898}
2899
2900unsafe impl<'a> glib::value::FromValue<'a> for BuilderError {
2901    type Checker = glib::value::GenericValueTypeChecker<Self>;
2902
2903    #[inline]
2904    unsafe fn from_value(value: &'a glib::Value) -> Self {
2905        skip_assert_initialized!();
2906        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2907    }
2908}
2909
2910impl ToValue for BuilderError {
2911    #[inline]
2912    fn to_value(&self) -> glib::Value {
2913        let mut value = glib::Value::for_value_type::<Self>();
2914        unsafe {
2915            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2916        }
2917        value
2918    }
2919
2920    #[inline]
2921    fn value_type(&self) -> glib::Type {
2922        Self::static_type()
2923    }
2924}
2925
2926impl From<BuilderError> for glib::Value {
2927    #[inline]
2928    fn from(v: BuilderError) -> Self {
2929        skip_assert_initialized!();
2930        ToValue::to_value(&v)
2931    }
2932}
2933
2934///  [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/).
2935#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2936#[non_exhaustive]
2937#[doc(alias = "GtkButtonsType")]
2938pub enum ButtonsType {
2939    /// no buttons at all
2940    #[doc(alias = "GTK_BUTTONS_NONE")]
2941    None,
2942    /// an OK button
2943    #[doc(alias = "GTK_BUTTONS_OK")]
2944    Ok,
2945    /// a Close button
2946    #[doc(alias = "GTK_BUTTONS_CLOSE")]
2947    Close,
2948    /// a Cancel button
2949    #[doc(alias = "GTK_BUTTONS_CANCEL")]
2950    Cancel,
2951    /// Yes and No buttons
2952    #[doc(alias = "GTK_BUTTONS_YES_NO")]
2953    YesNo,
2954    /// OK and Cancel buttons
2955    #[doc(alias = "GTK_BUTTONS_OK_CANCEL")]
2956    OkCancel,
2957    #[doc(hidden)]
2958    __Unknown(i32),
2959}
2960
2961#[doc(hidden)]
2962impl IntoGlib for ButtonsType {
2963    type GlibType = ffi::GtkButtonsType;
2964
2965    #[inline]
2966    fn into_glib(self) -> ffi::GtkButtonsType {
2967        match self {
2968            Self::None => ffi::GTK_BUTTONS_NONE,
2969            Self::Ok => ffi::GTK_BUTTONS_OK,
2970            Self::Close => ffi::GTK_BUTTONS_CLOSE,
2971            Self::Cancel => ffi::GTK_BUTTONS_CANCEL,
2972            Self::YesNo => ffi::GTK_BUTTONS_YES_NO,
2973            Self::OkCancel => ffi::GTK_BUTTONS_OK_CANCEL,
2974            Self::__Unknown(value) => value,
2975        }
2976    }
2977}
2978
2979#[doc(hidden)]
2980impl FromGlib<ffi::GtkButtonsType> for ButtonsType {
2981    #[inline]
2982    unsafe fn from_glib(value: ffi::GtkButtonsType) -> Self {
2983        skip_assert_initialized!();
2984
2985        match value {
2986            ffi::GTK_BUTTONS_NONE => Self::None,
2987            ffi::GTK_BUTTONS_OK => Self::Ok,
2988            ffi::GTK_BUTTONS_CLOSE => Self::Close,
2989            ffi::GTK_BUTTONS_CANCEL => Self::Cancel,
2990            ffi::GTK_BUTTONS_YES_NO => Self::YesNo,
2991            ffi::GTK_BUTTONS_OK_CANCEL => Self::OkCancel,
2992            value => Self::__Unknown(value),
2993        }
2994    }
2995}
2996
2997impl StaticType for ButtonsType {
2998    #[inline]
2999    #[doc(alias = "gtk_buttons_type_get_type")]
3000    fn static_type() -> glib::Type {
3001        unsafe { from_glib(ffi::gtk_buttons_type_get_type()) }
3002    }
3003}
3004
3005impl glib::HasParamSpec for ButtonsType {
3006    type ParamSpec = glib::ParamSpecEnum;
3007    type SetValue = Self;
3008    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3009
3010    fn param_spec_builder() -> Self::BuilderFn {
3011        Self::ParamSpec::builder_with_default
3012    }
3013}
3014
3015impl glib::value::ValueType for ButtonsType {
3016    type Type = Self;
3017}
3018
3019unsafe impl<'a> glib::value::FromValue<'a> for ButtonsType {
3020    type Checker = glib::value::GenericValueTypeChecker<Self>;
3021
3022    #[inline]
3023    unsafe fn from_value(value: &'a glib::Value) -> Self {
3024        skip_assert_initialized!();
3025        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3026    }
3027}
3028
3029impl ToValue for ButtonsType {
3030    #[inline]
3031    fn to_value(&self) -> glib::Value {
3032        let mut value = glib::Value::for_value_type::<Self>();
3033        unsafe {
3034            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3035        }
3036        value
3037    }
3038
3039    #[inline]
3040    fn value_type(&self) -> glib::Type {
3041        Self::static_type()
3042    }
3043}
3044
3045impl From<ButtonsType> for glib::Value {
3046    #[inline]
3047    fn from(v: ButtonsType) -> Self {
3048        skip_assert_initialized!();
3049        ToValue::to_value(&v)
3050    }
3051}
3052
3053/// The available modes for [`accel-mode`][struct@crate::CellRendererAccel#accel-mode].
3054///
3055/// # Deprecated since 4.20
3056///
3057/// There is no replacement
3058#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
3059#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3060#[non_exhaustive]
3061#[doc(alias = "GtkCellRendererAccelMode")]
3062pub enum CellRendererAccelMode {
3063    /// GTK accelerators mode
3064    #[doc(alias = "GTK_CELL_RENDERER_ACCEL_MODE_GTK")]
3065    Gtk,
3066    /// Other accelerator mode
3067    #[doc(alias = "GTK_CELL_RENDERER_ACCEL_MODE_OTHER")]
3068    Other,
3069    #[doc(hidden)]
3070    __Unknown(i32),
3071}
3072
3073#[allow(deprecated)]
3074#[doc(hidden)]
3075impl IntoGlib for CellRendererAccelMode {
3076    type GlibType = ffi::GtkCellRendererAccelMode;
3077
3078    #[inline]
3079    fn into_glib(self) -> ffi::GtkCellRendererAccelMode {
3080        match self {
3081            Self::Gtk => ffi::GTK_CELL_RENDERER_ACCEL_MODE_GTK,
3082            Self::Other => ffi::GTK_CELL_RENDERER_ACCEL_MODE_OTHER,
3083            Self::__Unknown(value) => value,
3084        }
3085    }
3086}
3087
3088#[allow(deprecated)]
3089#[doc(hidden)]
3090impl FromGlib<ffi::GtkCellRendererAccelMode> for CellRendererAccelMode {
3091    #[inline]
3092    unsafe fn from_glib(value: ffi::GtkCellRendererAccelMode) -> Self {
3093        skip_assert_initialized!();
3094
3095        match value {
3096            ffi::GTK_CELL_RENDERER_ACCEL_MODE_GTK => Self::Gtk,
3097            ffi::GTK_CELL_RENDERER_ACCEL_MODE_OTHER => Self::Other,
3098            value => Self::__Unknown(value),
3099        }
3100    }
3101}
3102
3103#[allow(deprecated)]
3104impl StaticType for CellRendererAccelMode {
3105    #[inline]
3106    #[doc(alias = "gtk_cell_renderer_accel_mode_get_type")]
3107    fn static_type() -> glib::Type {
3108        unsafe { from_glib(ffi::gtk_cell_renderer_accel_mode_get_type()) }
3109    }
3110}
3111
3112#[allow(deprecated)]
3113impl glib::HasParamSpec for CellRendererAccelMode {
3114    type ParamSpec = glib::ParamSpecEnum;
3115    type SetValue = Self;
3116    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3117
3118    fn param_spec_builder() -> Self::BuilderFn {
3119        Self::ParamSpec::builder_with_default
3120    }
3121}
3122
3123#[allow(deprecated)]
3124impl glib::value::ValueType for CellRendererAccelMode {
3125    type Type = Self;
3126}
3127
3128#[allow(deprecated)]
3129unsafe impl<'a> glib::value::FromValue<'a> for CellRendererAccelMode {
3130    type Checker = glib::value::GenericValueTypeChecker<Self>;
3131
3132    #[inline]
3133    unsafe fn from_value(value: &'a glib::Value) -> Self {
3134        skip_assert_initialized!();
3135        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3136    }
3137}
3138
3139#[allow(deprecated)]
3140impl ToValue for CellRendererAccelMode {
3141    #[inline]
3142    fn to_value(&self) -> glib::Value {
3143        let mut value = glib::Value::for_value_type::<Self>();
3144        unsafe {
3145            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3146        }
3147        value
3148    }
3149
3150    #[inline]
3151    fn value_type(&self) -> glib::Type {
3152        Self::static_type()
3153    }
3154}
3155
3156#[allow(deprecated)]
3157impl From<CellRendererAccelMode> for glib::Value {
3158    #[inline]
3159    fn from(v: CellRendererAccelMode) -> Self {
3160        skip_assert_initialized!();
3161        ToValue::to_value(&v)
3162    }
3163}
3164
3165/// Identifies how the user can interact with a particular cell.
3166///
3167/// # Deprecated since 4.20
3168///
3169/// There is no replacement.
3170#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
3171#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3172#[non_exhaustive]
3173#[doc(alias = "GtkCellRendererMode")]
3174pub enum CellRendererMode {
3175    /// t be selected -- just that a particular element of
3176    ///  it cannot be individually modified.
3177    #[doc(alias = "GTK_CELL_RENDERER_MODE_INERT")]
3178    Inert,
3179    /// The cell can be clicked.
3180    #[doc(alias = "GTK_CELL_RENDERER_MODE_ACTIVATABLE")]
3181    Activatable,
3182    /// The cell can be edited or otherwise modified.
3183    #[doc(alias = "GTK_CELL_RENDERER_MODE_EDITABLE")]
3184    Editable,
3185    #[doc(hidden)]
3186    __Unknown(i32),
3187}
3188
3189#[allow(deprecated)]
3190#[doc(hidden)]
3191impl IntoGlib for CellRendererMode {
3192    type GlibType = ffi::GtkCellRendererMode;
3193
3194    #[inline]
3195    fn into_glib(self) -> ffi::GtkCellRendererMode {
3196        match self {
3197            Self::Inert => ffi::GTK_CELL_RENDERER_MODE_INERT,
3198            Self::Activatable => ffi::GTK_CELL_RENDERER_MODE_ACTIVATABLE,
3199            Self::Editable => ffi::GTK_CELL_RENDERER_MODE_EDITABLE,
3200            Self::__Unknown(value) => value,
3201        }
3202    }
3203}
3204
3205#[allow(deprecated)]
3206#[doc(hidden)]
3207impl FromGlib<ffi::GtkCellRendererMode> for CellRendererMode {
3208    #[inline]
3209    unsafe fn from_glib(value: ffi::GtkCellRendererMode) -> Self {
3210        skip_assert_initialized!();
3211
3212        match value {
3213            ffi::GTK_CELL_RENDERER_MODE_INERT => Self::Inert,
3214            ffi::GTK_CELL_RENDERER_MODE_ACTIVATABLE => Self::Activatable,
3215            ffi::GTK_CELL_RENDERER_MODE_EDITABLE => Self::Editable,
3216            value => Self::__Unknown(value),
3217        }
3218    }
3219}
3220
3221#[allow(deprecated)]
3222impl StaticType for CellRendererMode {
3223    #[inline]
3224    #[doc(alias = "gtk_cell_renderer_mode_get_type")]
3225    fn static_type() -> glib::Type {
3226        unsafe { from_glib(ffi::gtk_cell_renderer_mode_get_type()) }
3227    }
3228}
3229
3230#[allow(deprecated)]
3231impl glib::HasParamSpec for CellRendererMode {
3232    type ParamSpec = glib::ParamSpecEnum;
3233    type SetValue = Self;
3234    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3235
3236    fn param_spec_builder() -> Self::BuilderFn {
3237        Self::ParamSpec::builder_with_default
3238    }
3239}
3240
3241#[allow(deprecated)]
3242impl glib::value::ValueType for CellRendererMode {
3243    type Type = Self;
3244}
3245
3246#[allow(deprecated)]
3247unsafe impl<'a> glib::value::FromValue<'a> for CellRendererMode {
3248    type Checker = glib::value::GenericValueTypeChecker<Self>;
3249
3250    #[inline]
3251    unsafe fn from_value(value: &'a glib::Value) -> Self {
3252        skip_assert_initialized!();
3253        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3254    }
3255}
3256
3257#[allow(deprecated)]
3258impl ToValue for CellRendererMode {
3259    #[inline]
3260    fn to_value(&self) -> glib::Value {
3261        let mut value = glib::Value::for_value_type::<Self>();
3262        unsafe {
3263            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3264        }
3265        value
3266    }
3267
3268    #[inline]
3269    fn value_type(&self) -> glib::Type {
3270        Self::static_type()
3271    }
3272}
3273
3274#[allow(deprecated)]
3275impl From<CellRendererMode> for glib::Value {
3276    #[inline]
3277    fn from(v: CellRendererMode) -> Self {
3278        skip_assert_initialized!();
3279        ToValue::to_value(&v)
3280    }
3281}
3282
3283/// Describes how a [`StringSorter`][crate::StringSorter] turns strings into sort keys to
3284/// compare them.
3285///
3286/// Note that the result of sorting will in general depend on the current locale
3287/// unless the mode is @GTK_COLLATION_NONE.
3288#[cfg(feature = "v4_10")]
3289#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3290#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3291#[non_exhaustive]
3292#[doc(alias = "GtkCollation")]
3293pub enum Collation {
3294    /// Don't do any collation
3295    #[doc(alias = "GTK_COLLATION_NONE")]
3296    None,
3297    /// Use `utf8_collate_key()`
3298    #[doc(alias = "GTK_COLLATION_UNICODE")]
3299    Unicode,
3300    /// Use `utf8_collate_key_for_filename()`
3301    #[doc(alias = "GTK_COLLATION_FILENAME")]
3302    Filename,
3303    #[doc(hidden)]
3304    __Unknown(i32),
3305}
3306
3307#[cfg(feature = "v4_10")]
3308#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3309#[doc(hidden)]
3310impl IntoGlib for Collation {
3311    type GlibType = ffi::GtkCollation;
3312
3313    #[inline]
3314    fn into_glib(self) -> ffi::GtkCollation {
3315        match self {
3316            Self::None => ffi::GTK_COLLATION_NONE,
3317            Self::Unicode => ffi::GTK_COLLATION_UNICODE,
3318            Self::Filename => ffi::GTK_COLLATION_FILENAME,
3319            Self::__Unknown(value) => value,
3320        }
3321    }
3322}
3323
3324#[cfg(feature = "v4_10")]
3325#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3326#[doc(hidden)]
3327impl FromGlib<ffi::GtkCollation> for Collation {
3328    #[inline]
3329    unsafe fn from_glib(value: ffi::GtkCollation) -> Self {
3330        skip_assert_initialized!();
3331
3332        match value {
3333            ffi::GTK_COLLATION_NONE => Self::None,
3334            ffi::GTK_COLLATION_UNICODE => Self::Unicode,
3335            ffi::GTK_COLLATION_FILENAME => Self::Filename,
3336            value => Self::__Unknown(value),
3337        }
3338    }
3339}
3340
3341#[cfg(feature = "v4_10")]
3342#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3343impl StaticType for Collation {
3344    #[inline]
3345    #[doc(alias = "gtk_collation_get_type")]
3346    fn static_type() -> glib::Type {
3347        unsafe { from_glib(ffi::gtk_collation_get_type()) }
3348    }
3349}
3350
3351#[cfg(feature = "v4_10")]
3352#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3353impl glib::HasParamSpec for Collation {
3354    type ParamSpec = glib::ParamSpecEnum;
3355    type SetValue = Self;
3356    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3357
3358    fn param_spec_builder() -> Self::BuilderFn {
3359        Self::ParamSpec::builder_with_default
3360    }
3361}
3362
3363#[cfg(feature = "v4_10")]
3364#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3365impl glib::value::ValueType for Collation {
3366    type Type = Self;
3367}
3368
3369#[cfg(feature = "v4_10")]
3370#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3371unsafe impl<'a> glib::value::FromValue<'a> for Collation {
3372    type Checker = glib::value::GenericValueTypeChecker<Self>;
3373
3374    #[inline]
3375    unsafe fn from_value(value: &'a glib::Value) -> Self {
3376        skip_assert_initialized!();
3377        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3378    }
3379}
3380
3381#[cfg(feature = "v4_10")]
3382#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3383impl ToValue for Collation {
3384    #[inline]
3385    fn to_value(&self) -> glib::Value {
3386        let mut value = glib::Value::for_value_type::<Self>();
3387        unsafe {
3388            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3389        }
3390        value
3391    }
3392
3393    #[inline]
3394    fn value_type(&self) -> glib::Type {
3395        Self::static_type()
3396    }
3397}
3398
3399#[cfg(feature = "v4_10")]
3400#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
3401impl From<Collation> for glib::Value {
3402    #[inline]
3403    fn from(v: Collation) -> Self {
3404        skip_assert_initialized!();
3405        ToValue::to_value(&v)
3406    }
3407}
3408
3409/// The widget attributes that can be used when creating a [`Constraint`][crate::Constraint].
3410#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3411#[non_exhaustive]
3412#[doc(alias = "GtkConstraintAttribute")]
3413pub enum ConstraintAttribute {
3414    /// No attribute, used for constant
3415    ///   relations
3416    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_NONE")]
3417    None,
3418    /// The left edge of a widget, regardless of
3419    ///   text direction
3420    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_LEFT")]
3421    Left,
3422    /// The right edge of a widget, regardless
3423    ///   of text direction
3424    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_RIGHT")]
3425    Right,
3426    /// The top edge of a widget
3427    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_TOP")]
3428    Top,
3429    /// The bottom edge of a widget
3430    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_BOTTOM")]
3431    Bottom,
3432    /// The leading edge of a widget, depending
3433    ///   on text direction; equivalent to [`Left`][Self::Left] for LTR
3434    ///   languages, and [`Right`][Self::Right] for RTL ones
3435    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_START")]
3436    Start,
3437    /// The trailing edge of a widget, depending
3438    ///   on text direction; equivalent to [`Right`][Self::Right] for LTR
3439    ///   languages, and [`Left`][Self::Left] for RTL ones
3440    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_END")]
3441    End,
3442    /// The width of a widget
3443    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_WIDTH")]
3444    Width,
3445    /// The height of a widget
3446    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_HEIGHT")]
3447    Height,
3448    /// The center of a widget, on the
3449    ///   horizontal axis
3450    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_CENTER_X")]
3451    CenterX,
3452    /// The center of a widget, on the
3453    ///   vertical axis
3454    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y")]
3455    CenterY,
3456    /// The baseline of a widget
3457    #[doc(alias = "GTK_CONSTRAINT_ATTRIBUTE_BASELINE")]
3458    Baseline,
3459    #[doc(hidden)]
3460    __Unknown(i32),
3461}
3462
3463#[doc(hidden)]
3464impl IntoGlib for ConstraintAttribute {
3465    type GlibType = ffi::GtkConstraintAttribute;
3466
3467    #[inline]
3468    fn into_glib(self) -> ffi::GtkConstraintAttribute {
3469        match self {
3470            Self::None => ffi::GTK_CONSTRAINT_ATTRIBUTE_NONE,
3471            Self::Left => ffi::GTK_CONSTRAINT_ATTRIBUTE_LEFT,
3472            Self::Right => ffi::GTK_CONSTRAINT_ATTRIBUTE_RIGHT,
3473            Self::Top => ffi::GTK_CONSTRAINT_ATTRIBUTE_TOP,
3474            Self::Bottom => ffi::GTK_CONSTRAINT_ATTRIBUTE_BOTTOM,
3475            Self::Start => ffi::GTK_CONSTRAINT_ATTRIBUTE_START,
3476            Self::End => ffi::GTK_CONSTRAINT_ATTRIBUTE_END,
3477            Self::Width => ffi::GTK_CONSTRAINT_ATTRIBUTE_WIDTH,
3478            Self::Height => ffi::GTK_CONSTRAINT_ATTRIBUTE_HEIGHT,
3479            Self::CenterX => ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_X,
3480            Self::CenterY => ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y,
3481            Self::Baseline => ffi::GTK_CONSTRAINT_ATTRIBUTE_BASELINE,
3482            Self::__Unknown(value) => value,
3483        }
3484    }
3485}
3486
3487#[doc(hidden)]
3488impl FromGlib<ffi::GtkConstraintAttribute> for ConstraintAttribute {
3489    #[inline]
3490    unsafe fn from_glib(value: ffi::GtkConstraintAttribute) -> Self {
3491        skip_assert_initialized!();
3492
3493        match value {
3494            ffi::GTK_CONSTRAINT_ATTRIBUTE_NONE => Self::None,
3495            ffi::GTK_CONSTRAINT_ATTRIBUTE_LEFT => Self::Left,
3496            ffi::GTK_CONSTRAINT_ATTRIBUTE_RIGHT => Self::Right,
3497            ffi::GTK_CONSTRAINT_ATTRIBUTE_TOP => Self::Top,
3498            ffi::GTK_CONSTRAINT_ATTRIBUTE_BOTTOM => Self::Bottom,
3499            ffi::GTK_CONSTRAINT_ATTRIBUTE_START => Self::Start,
3500            ffi::GTK_CONSTRAINT_ATTRIBUTE_END => Self::End,
3501            ffi::GTK_CONSTRAINT_ATTRIBUTE_WIDTH => Self::Width,
3502            ffi::GTK_CONSTRAINT_ATTRIBUTE_HEIGHT => Self::Height,
3503            ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_X => Self::CenterX,
3504            ffi::GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y => Self::CenterY,
3505            ffi::GTK_CONSTRAINT_ATTRIBUTE_BASELINE => Self::Baseline,
3506            value => Self::__Unknown(value),
3507        }
3508    }
3509}
3510
3511impl StaticType for ConstraintAttribute {
3512    #[inline]
3513    #[doc(alias = "gtk_constraint_attribute_get_type")]
3514    fn static_type() -> glib::Type {
3515        unsafe { from_glib(ffi::gtk_constraint_attribute_get_type()) }
3516    }
3517}
3518
3519impl glib::HasParamSpec for ConstraintAttribute {
3520    type ParamSpec = glib::ParamSpecEnum;
3521    type SetValue = Self;
3522    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3523
3524    fn param_spec_builder() -> Self::BuilderFn {
3525        Self::ParamSpec::builder_with_default
3526    }
3527}
3528
3529impl glib::value::ValueType for ConstraintAttribute {
3530    type Type = Self;
3531}
3532
3533unsafe impl<'a> glib::value::FromValue<'a> for ConstraintAttribute {
3534    type Checker = glib::value::GenericValueTypeChecker<Self>;
3535
3536    #[inline]
3537    unsafe fn from_value(value: &'a glib::Value) -> Self {
3538        skip_assert_initialized!();
3539        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3540    }
3541}
3542
3543impl ToValue for ConstraintAttribute {
3544    #[inline]
3545    fn to_value(&self) -> glib::Value {
3546        let mut value = glib::Value::for_value_type::<Self>();
3547        unsafe {
3548            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3549        }
3550        value
3551    }
3552
3553    #[inline]
3554    fn value_type(&self) -> glib::Type {
3555        Self::static_type()
3556    }
3557}
3558
3559impl From<ConstraintAttribute> for glib::Value {
3560    #[inline]
3561    fn from(v: ConstraintAttribute) -> Self {
3562        skip_assert_initialized!();
3563        ToValue::to_value(&v)
3564    }
3565}
3566
3567/// The relation between two terms of a constraint.
3568#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3569#[non_exhaustive]
3570#[doc(alias = "GtkConstraintRelation")]
3571pub enum ConstraintRelation {
3572    /// Less than, or equal
3573    #[doc(alias = "GTK_CONSTRAINT_RELATION_LE")]
3574    Le,
3575    /// Equal
3576    #[doc(alias = "GTK_CONSTRAINT_RELATION_EQ")]
3577    Eq,
3578    /// Greater than, or equal
3579    #[doc(alias = "GTK_CONSTRAINT_RELATION_GE")]
3580    Ge,
3581    #[doc(hidden)]
3582    __Unknown(i32),
3583}
3584
3585#[doc(hidden)]
3586impl IntoGlib for ConstraintRelation {
3587    type GlibType = ffi::GtkConstraintRelation;
3588
3589    #[inline]
3590    fn into_glib(self) -> ffi::GtkConstraintRelation {
3591        match self {
3592            Self::Le => ffi::GTK_CONSTRAINT_RELATION_LE,
3593            Self::Eq => ffi::GTK_CONSTRAINT_RELATION_EQ,
3594            Self::Ge => ffi::GTK_CONSTRAINT_RELATION_GE,
3595            Self::__Unknown(value) => value,
3596        }
3597    }
3598}
3599
3600#[doc(hidden)]
3601impl FromGlib<ffi::GtkConstraintRelation> for ConstraintRelation {
3602    #[inline]
3603    unsafe fn from_glib(value: ffi::GtkConstraintRelation) -> Self {
3604        skip_assert_initialized!();
3605
3606        match value {
3607            ffi::GTK_CONSTRAINT_RELATION_LE => Self::Le,
3608            ffi::GTK_CONSTRAINT_RELATION_EQ => Self::Eq,
3609            ffi::GTK_CONSTRAINT_RELATION_GE => Self::Ge,
3610            value => Self::__Unknown(value),
3611        }
3612    }
3613}
3614
3615impl StaticType for ConstraintRelation {
3616    #[inline]
3617    #[doc(alias = "gtk_constraint_relation_get_type")]
3618    fn static_type() -> glib::Type {
3619        unsafe { from_glib(ffi::gtk_constraint_relation_get_type()) }
3620    }
3621}
3622
3623impl glib::HasParamSpec for ConstraintRelation {
3624    type ParamSpec = glib::ParamSpecEnum;
3625    type SetValue = Self;
3626    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3627
3628    fn param_spec_builder() -> Self::BuilderFn {
3629        Self::ParamSpec::builder_with_default
3630    }
3631}
3632
3633impl glib::value::ValueType for ConstraintRelation {
3634    type Type = Self;
3635}
3636
3637unsafe impl<'a> glib::value::FromValue<'a> for ConstraintRelation {
3638    type Checker = glib::value::GenericValueTypeChecker<Self>;
3639
3640    #[inline]
3641    unsafe fn from_value(value: &'a glib::Value) -> Self {
3642        skip_assert_initialized!();
3643        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3644    }
3645}
3646
3647impl ToValue for ConstraintRelation {
3648    #[inline]
3649    fn to_value(&self) -> glib::Value {
3650        let mut value = glib::Value::for_value_type::<Self>();
3651        unsafe {
3652            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3653        }
3654        value
3655    }
3656
3657    #[inline]
3658    fn value_type(&self) -> glib::Type {
3659        Self::static_type()
3660    }
3661}
3662
3663impl From<ConstraintRelation> for glib::Value {
3664    #[inline]
3665    fn from(v: ConstraintRelation) -> Self {
3666        skip_assert_initialized!();
3667        ToValue::to_value(&v)
3668    }
3669}
3670
3671/// The strength of a constraint, expressed as a symbolic constant.
3672///
3673/// The strength of a [`Constraint`][crate::Constraint] can be expressed with any positive
3674/// integer; the values of this enumeration can be used for readability.
3675#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3676#[non_exhaustive]
3677#[doc(alias = "GtkConstraintStrength")]
3678pub enum ConstraintStrength {
3679    /// The constraint is required towards solving the layout
3680    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_REQUIRED")]
3681    Required,
3682    /// A strong constraint
3683    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_STRONG")]
3684    Strong,
3685    /// A medium constraint
3686    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_MEDIUM")]
3687    Medium,
3688    /// A weak constraint
3689    #[doc(alias = "GTK_CONSTRAINT_STRENGTH_WEAK")]
3690    Weak,
3691    #[doc(hidden)]
3692    __Unknown(i32),
3693}
3694
3695#[doc(hidden)]
3696impl IntoGlib for ConstraintStrength {
3697    type GlibType = ffi::GtkConstraintStrength;
3698
3699    #[inline]
3700    fn into_glib(self) -> ffi::GtkConstraintStrength {
3701        match self {
3702            Self::Required => ffi::GTK_CONSTRAINT_STRENGTH_REQUIRED,
3703            Self::Strong => ffi::GTK_CONSTRAINT_STRENGTH_STRONG,
3704            Self::Medium => ffi::GTK_CONSTRAINT_STRENGTH_MEDIUM,
3705            Self::Weak => ffi::GTK_CONSTRAINT_STRENGTH_WEAK,
3706            Self::__Unknown(value) => value,
3707        }
3708    }
3709}
3710
3711#[doc(hidden)]
3712impl FromGlib<ffi::GtkConstraintStrength> for ConstraintStrength {
3713    #[inline]
3714    unsafe fn from_glib(value: ffi::GtkConstraintStrength) -> Self {
3715        skip_assert_initialized!();
3716
3717        match value {
3718            ffi::GTK_CONSTRAINT_STRENGTH_REQUIRED => Self::Required,
3719            ffi::GTK_CONSTRAINT_STRENGTH_STRONG => Self::Strong,
3720            ffi::GTK_CONSTRAINT_STRENGTH_MEDIUM => Self::Medium,
3721            ffi::GTK_CONSTRAINT_STRENGTH_WEAK => Self::Weak,
3722            value => Self::__Unknown(value),
3723        }
3724    }
3725}
3726
3727impl StaticType for ConstraintStrength {
3728    #[inline]
3729    #[doc(alias = "gtk_constraint_strength_get_type")]
3730    fn static_type() -> glib::Type {
3731        unsafe { from_glib(ffi::gtk_constraint_strength_get_type()) }
3732    }
3733}
3734
3735impl glib::HasParamSpec for ConstraintStrength {
3736    type ParamSpec = glib::ParamSpecEnum;
3737    type SetValue = Self;
3738    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3739
3740    fn param_spec_builder() -> Self::BuilderFn {
3741        Self::ParamSpec::builder_with_default
3742    }
3743}
3744
3745impl glib::value::ValueType for ConstraintStrength {
3746    type Type = Self;
3747}
3748
3749unsafe impl<'a> glib::value::FromValue<'a> for ConstraintStrength {
3750    type Checker = glib::value::GenericValueTypeChecker<Self>;
3751
3752    #[inline]
3753    unsafe fn from_value(value: &'a glib::Value) -> Self {
3754        skip_assert_initialized!();
3755        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3756    }
3757}
3758
3759impl ToValue for ConstraintStrength {
3760    #[inline]
3761    fn to_value(&self) -> glib::Value {
3762        let mut value = glib::Value::for_value_type::<Self>();
3763        unsafe {
3764            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3765        }
3766        value
3767    }
3768
3769    #[inline]
3770    fn value_type(&self) -> glib::Type {
3771        Self::static_type()
3772    }
3773}
3774
3775impl From<ConstraintStrength> for glib::Value {
3776    #[inline]
3777    fn from(v: ConstraintStrength) -> Self {
3778        skip_assert_initialized!();
3779        ToValue::to_value(&v)
3780    }
3781}
3782
3783/// Domain for VFL parsing errors.
3784#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3785#[non_exhaustive]
3786#[doc(alias = "GtkConstraintVflParserError")]
3787pub enum ConstraintVflParserError {
3788    /// Invalid or unknown symbol
3789    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL")]
3790    InvalidSymbol,
3791    /// Invalid or unknown attribute
3792    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE")]
3793    InvalidAttribute,
3794    /// Invalid or unknown view
3795    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW")]
3796    InvalidView,
3797    /// Invalid or unknown metric
3798    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC")]
3799    InvalidMetric,
3800    /// Invalid or unknown priority
3801    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY")]
3802    InvalidPriority,
3803    /// Invalid or unknown relation
3804    #[doc(alias = "GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION")]
3805    InvalidRelation,
3806    #[doc(hidden)]
3807    __Unknown(i32),
3808}
3809
3810#[doc(hidden)]
3811impl IntoGlib for ConstraintVflParserError {
3812    type GlibType = ffi::GtkConstraintVflParserError;
3813
3814    #[inline]
3815    fn into_glib(self) -> ffi::GtkConstraintVflParserError {
3816        match self {
3817            Self::InvalidSymbol => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL,
3818            Self::InvalidAttribute => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE,
3819            Self::InvalidView => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW,
3820            Self::InvalidMetric => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC,
3821            Self::InvalidPriority => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY,
3822            Self::InvalidRelation => ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION,
3823            Self::__Unknown(value) => value,
3824        }
3825    }
3826}
3827
3828#[doc(hidden)]
3829impl FromGlib<ffi::GtkConstraintVflParserError> for ConstraintVflParserError {
3830    #[inline]
3831    unsafe fn from_glib(value: ffi::GtkConstraintVflParserError) -> Self {
3832        skip_assert_initialized!();
3833
3834        match value {
3835            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL => Self::InvalidSymbol,
3836            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
3837            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW => Self::InvalidView,
3838            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC => Self::InvalidMetric,
3839            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY => Self::InvalidPriority,
3840            ffi::GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION => Self::InvalidRelation,
3841            value => Self::__Unknown(value),
3842        }
3843    }
3844}
3845
3846impl glib::error::ErrorDomain for ConstraintVflParserError {
3847    #[inline]
3848    fn domain() -> glib::Quark {
3849        skip_assert_initialized!();
3850
3851        unsafe { from_glib(ffi::gtk_constraint_vfl_parser_error_quark()) }
3852    }
3853
3854    #[inline]
3855    fn code(self) -> i32 {
3856        self.into_glib()
3857    }
3858
3859    #[inline]
3860    #[allow(clippy::match_single_binding)]
3861    fn from(code: i32) -> Option<Self> {
3862        skip_assert_initialized!();
3863        match unsafe { from_glib(code) } {
3864            value => Some(value),
3865        }
3866    }
3867}
3868
3869impl StaticType for ConstraintVflParserError {
3870    #[inline]
3871    #[doc(alias = "gtk_constraint_vfl_parser_error_get_type")]
3872    fn static_type() -> glib::Type {
3873        unsafe { from_glib(ffi::gtk_constraint_vfl_parser_error_get_type()) }
3874    }
3875}
3876
3877impl glib::HasParamSpec for ConstraintVflParserError {
3878    type ParamSpec = glib::ParamSpecEnum;
3879    type SetValue = Self;
3880    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3881
3882    fn param_spec_builder() -> Self::BuilderFn {
3883        Self::ParamSpec::builder_with_default
3884    }
3885}
3886
3887impl glib::value::ValueType for ConstraintVflParserError {
3888    type Type = Self;
3889}
3890
3891unsafe impl<'a> glib::value::FromValue<'a> for ConstraintVflParserError {
3892    type Checker = glib::value::GenericValueTypeChecker<Self>;
3893
3894    #[inline]
3895    unsafe fn from_value(value: &'a glib::Value) -> Self {
3896        skip_assert_initialized!();
3897        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3898    }
3899}
3900
3901impl ToValue for ConstraintVflParserError {
3902    #[inline]
3903    fn to_value(&self) -> glib::Value {
3904        let mut value = glib::Value::for_value_type::<Self>();
3905        unsafe {
3906            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3907        }
3908        value
3909    }
3910
3911    #[inline]
3912    fn value_type(&self) -> glib::Type {
3913        Self::static_type()
3914    }
3915}
3916
3917impl From<ConstraintVflParserError> for glib::Value {
3918    #[inline]
3919    fn from(v: ConstraintVflParserError) -> Self {
3920        skip_assert_initialized!();
3921        ToValue::to_value(&v)
3922    }
3923}
3924
3925/// Controls how a content should be made to fit inside an allocation.
3926#[cfg(feature = "v4_8")]
3927#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3928#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3929#[non_exhaustive]
3930#[doc(alias = "GtkContentFit")]
3931pub enum ContentFit {
3932    /// Make the content fill the entire allocation,
3933    ///   without taking its aspect ratio in consideration. The resulting
3934    ///   content will appear as stretched if its aspect ratio is different
3935    ///   from the allocation aspect ratio.
3936    #[doc(alias = "GTK_CONTENT_FIT_FILL")]
3937    Fill,
3938    /// Scale the content to fit the allocation,
3939    ///   while taking its aspect ratio in consideration. The resulting
3940    ///   content will appear as letterboxed if its aspect ratio is different
3941    ///   from the allocation aspect ratio.
3942    #[doc(alias = "GTK_CONTENT_FIT_CONTAIN")]
3943    Contain,
3944    /// Cover the entire allocation, while taking
3945    ///   the content aspect ratio in consideration. The resulting content
3946    ///   will appear as clipped if its aspect ratio is different from the
3947    ///   allocation aspect ratio.
3948    #[doc(alias = "GTK_CONTENT_FIT_COVER")]
3949    Cover,
3950    /// The content is scaled down to fit the
3951    ///   allocation, if needed, otherwise its original size is used.
3952    #[doc(alias = "GTK_CONTENT_FIT_SCALE_DOWN")]
3953    ScaleDown,
3954    #[doc(hidden)]
3955    __Unknown(i32),
3956}
3957
3958#[cfg(feature = "v4_8")]
3959#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3960#[doc(hidden)]
3961impl IntoGlib for ContentFit {
3962    type GlibType = ffi::GtkContentFit;
3963
3964    #[inline]
3965    fn into_glib(self) -> ffi::GtkContentFit {
3966        match self {
3967            Self::Fill => ffi::GTK_CONTENT_FIT_FILL,
3968            Self::Contain => ffi::GTK_CONTENT_FIT_CONTAIN,
3969            Self::Cover => ffi::GTK_CONTENT_FIT_COVER,
3970            Self::ScaleDown => ffi::GTK_CONTENT_FIT_SCALE_DOWN,
3971            Self::__Unknown(value) => value,
3972        }
3973    }
3974}
3975
3976#[cfg(feature = "v4_8")]
3977#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3978#[doc(hidden)]
3979impl FromGlib<ffi::GtkContentFit> for ContentFit {
3980    #[inline]
3981    unsafe fn from_glib(value: ffi::GtkContentFit) -> Self {
3982        skip_assert_initialized!();
3983
3984        match value {
3985            ffi::GTK_CONTENT_FIT_FILL => Self::Fill,
3986            ffi::GTK_CONTENT_FIT_CONTAIN => Self::Contain,
3987            ffi::GTK_CONTENT_FIT_COVER => Self::Cover,
3988            ffi::GTK_CONTENT_FIT_SCALE_DOWN => Self::ScaleDown,
3989            value => Self::__Unknown(value),
3990        }
3991    }
3992}
3993
3994#[cfg(feature = "v4_8")]
3995#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
3996impl StaticType for ContentFit {
3997    #[inline]
3998    #[doc(alias = "gtk_content_fit_get_type")]
3999    fn static_type() -> glib::Type {
4000        unsafe { from_glib(ffi::gtk_content_fit_get_type()) }
4001    }
4002}
4003
4004#[cfg(feature = "v4_8")]
4005#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4006impl glib::HasParamSpec for ContentFit {
4007    type ParamSpec = glib::ParamSpecEnum;
4008    type SetValue = Self;
4009    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4010
4011    fn param_spec_builder() -> Self::BuilderFn {
4012        Self::ParamSpec::builder_with_default
4013    }
4014}
4015
4016#[cfg(feature = "v4_8")]
4017#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4018impl glib::value::ValueType for ContentFit {
4019    type Type = Self;
4020}
4021
4022#[cfg(feature = "v4_8")]
4023#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4024unsafe impl<'a> glib::value::FromValue<'a> for ContentFit {
4025    type Checker = glib::value::GenericValueTypeChecker<Self>;
4026
4027    #[inline]
4028    unsafe fn from_value(value: &'a glib::Value) -> Self {
4029        skip_assert_initialized!();
4030        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4031    }
4032}
4033
4034#[cfg(feature = "v4_8")]
4035#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4036impl ToValue for ContentFit {
4037    #[inline]
4038    fn to_value(&self) -> glib::Value {
4039        let mut value = glib::Value::for_value_type::<Self>();
4040        unsafe {
4041            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4042        }
4043        value
4044    }
4045
4046    #[inline]
4047    fn value_type(&self) -> glib::Type {
4048        Self::static_type()
4049    }
4050}
4051
4052#[cfg(feature = "v4_8")]
4053#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
4054impl From<ContentFit> for glib::Value {
4055    #[inline]
4056    fn from(v: ContentFit) -> Self {
4057        skip_assert_initialized!();
4058        ToValue::to_value(&v)
4059    }
4060}
4061
4062/// Specifies which corner a child widget should be placed in when packed into
4063/// a [`ScrolledWindow`][crate::ScrolledWindow]
4064///
4065/// This is effectively the opposite of where the scroll bars are placed.
4066#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4067#[non_exhaustive]
4068#[doc(alias = "GtkCornerType")]
4069pub enum CornerType {
4070    /// Place the scrollbars on the right and bottom of the
4071    ///   widget (default behaviour).
4072    #[doc(alias = "GTK_CORNER_TOP_LEFT")]
4073    TopLeft,
4074    /// Place the scrollbars on the top and right of the
4075    ///   widget.
4076    #[doc(alias = "GTK_CORNER_BOTTOM_LEFT")]
4077    BottomLeft,
4078    /// Place the scrollbars on the left and bottom of the
4079    ///   widget.
4080    #[doc(alias = "GTK_CORNER_TOP_RIGHT")]
4081    TopRight,
4082    /// Place the scrollbars on the top and left of the
4083    ///   widget.
4084    #[doc(alias = "GTK_CORNER_BOTTOM_RIGHT")]
4085    BottomRight,
4086    #[doc(hidden)]
4087    __Unknown(i32),
4088}
4089
4090#[doc(hidden)]
4091impl IntoGlib for CornerType {
4092    type GlibType = ffi::GtkCornerType;
4093
4094    #[inline]
4095    fn into_glib(self) -> ffi::GtkCornerType {
4096        match self {
4097            Self::TopLeft => ffi::GTK_CORNER_TOP_LEFT,
4098            Self::BottomLeft => ffi::GTK_CORNER_BOTTOM_LEFT,
4099            Self::TopRight => ffi::GTK_CORNER_TOP_RIGHT,
4100            Self::BottomRight => ffi::GTK_CORNER_BOTTOM_RIGHT,
4101            Self::__Unknown(value) => value,
4102        }
4103    }
4104}
4105
4106#[doc(hidden)]
4107impl FromGlib<ffi::GtkCornerType> for CornerType {
4108    #[inline]
4109    unsafe fn from_glib(value: ffi::GtkCornerType) -> Self {
4110        skip_assert_initialized!();
4111
4112        match value {
4113            ffi::GTK_CORNER_TOP_LEFT => Self::TopLeft,
4114            ffi::GTK_CORNER_BOTTOM_LEFT => Self::BottomLeft,
4115            ffi::GTK_CORNER_TOP_RIGHT => Self::TopRight,
4116            ffi::GTK_CORNER_BOTTOM_RIGHT => Self::BottomRight,
4117            value => Self::__Unknown(value),
4118        }
4119    }
4120}
4121
4122impl StaticType for CornerType {
4123    #[inline]
4124    #[doc(alias = "gtk_corner_type_get_type")]
4125    fn static_type() -> glib::Type {
4126        unsafe { from_glib(ffi::gtk_corner_type_get_type()) }
4127    }
4128}
4129
4130impl glib::HasParamSpec for CornerType {
4131    type ParamSpec = glib::ParamSpecEnum;
4132    type SetValue = Self;
4133    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4134
4135    fn param_spec_builder() -> Self::BuilderFn {
4136        Self::ParamSpec::builder_with_default
4137    }
4138}
4139
4140impl glib::value::ValueType for CornerType {
4141    type Type = Self;
4142}
4143
4144unsafe impl<'a> glib::value::FromValue<'a> for CornerType {
4145    type Checker = glib::value::GenericValueTypeChecker<Self>;
4146
4147    #[inline]
4148    unsafe fn from_value(value: &'a glib::Value) -> Self {
4149        skip_assert_initialized!();
4150        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4151    }
4152}
4153
4154impl ToValue for CornerType {
4155    #[inline]
4156    fn to_value(&self) -> glib::Value {
4157        let mut value = glib::Value::for_value_type::<Self>();
4158        unsafe {
4159            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4160        }
4161        value
4162    }
4163
4164    #[inline]
4165    fn value_type(&self) -> glib::Type {
4166        Self::static_type()
4167    }
4168}
4169
4170impl From<CornerType> for glib::Value {
4171    #[inline]
4172    fn from(v: CornerType) -> Self {
4173        skip_assert_initialized!();
4174        ToValue::to_value(&v)
4175    }
4176}
4177
4178/// Errors that can occur while parsing CSS.
4179///
4180/// These errors are unexpected and will cause parts of the given CSS
4181/// to be ignored.
4182#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4183#[non_exhaustive]
4184#[doc(alias = "GtkCssParserError")]
4185pub enum CssParserError {
4186    /// Unknown failure.
4187    #[doc(alias = "GTK_CSS_PARSER_ERROR_FAILED")]
4188    Failed,
4189    /// The given text does not form valid syntax
4190    #[doc(alias = "GTK_CSS_PARSER_ERROR_SYNTAX")]
4191    Syntax,
4192    /// Failed to import a resource
4193    #[doc(alias = "GTK_CSS_PARSER_ERROR_IMPORT")]
4194    Import,
4195    /// The given name has not been defined
4196    #[doc(alias = "GTK_CSS_PARSER_ERROR_NAME")]
4197    Name,
4198    /// The given value is not correct
4199    #[doc(alias = "GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE")]
4200    UnknownValue,
4201    #[doc(hidden)]
4202    __Unknown(i32),
4203}
4204
4205#[doc(hidden)]
4206impl IntoGlib for CssParserError {
4207    type GlibType = ffi::GtkCssParserError;
4208
4209    #[inline]
4210    fn into_glib(self) -> ffi::GtkCssParserError {
4211        match self {
4212            Self::Failed => ffi::GTK_CSS_PARSER_ERROR_FAILED,
4213            Self::Syntax => ffi::GTK_CSS_PARSER_ERROR_SYNTAX,
4214            Self::Import => ffi::GTK_CSS_PARSER_ERROR_IMPORT,
4215            Self::Name => ffi::GTK_CSS_PARSER_ERROR_NAME,
4216            Self::UnknownValue => ffi::GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE,
4217            Self::__Unknown(value) => value,
4218        }
4219    }
4220}
4221
4222#[doc(hidden)]
4223impl FromGlib<ffi::GtkCssParserError> for CssParserError {
4224    #[inline]
4225    unsafe fn from_glib(value: ffi::GtkCssParserError) -> Self {
4226        skip_assert_initialized!();
4227
4228        match value {
4229            ffi::GTK_CSS_PARSER_ERROR_FAILED => Self::Failed,
4230            ffi::GTK_CSS_PARSER_ERROR_SYNTAX => Self::Syntax,
4231            ffi::GTK_CSS_PARSER_ERROR_IMPORT => Self::Import,
4232            ffi::GTK_CSS_PARSER_ERROR_NAME => Self::Name,
4233            ffi::GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE => Self::UnknownValue,
4234            value => Self::__Unknown(value),
4235        }
4236    }
4237}
4238
4239impl glib::error::ErrorDomain for CssParserError {
4240    #[inline]
4241    fn domain() -> glib::Quark {
4242        skip_assert_initialized!();
4243
4244        unsafe { from_glib(ffi::gtk_css_parser_error_quark()) }
4245    }
4246
4247    #[inline]
4248    fn code(self) -> i32 {
4249        self.into_glib()
4250    }
4251
4252    #[inline]
4253    #[allow(clippy::match_single_binding)]
4254    fn from(code: i32) -> Option<Self> {
4255        skip_assert_initialized!();
4256        match unsafe { from_glib(code) } {
4257            Self::__Unknown(_) => Some(Self::Failed),
4258            value => Some(value),
4259        }
4260    }
4261}
4262
4263/// Warnings that can occur while parsing CSS.
4264///
4265/// Unlike [`CssParserError`][crate::CssParserError]s, warnings do not cause the parser to
4266/// skip any input, but they indicate issues that should be fixed.
4267#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4268#[non_exhaustive]
4269#[doc(alias = "GtkCssParserWarning")]
4270pub enum CssParserWarning {
4271    /// The given construct is
4272    ///   deprecated and will be removed in a future version
4273    #[doc(alias = "GTK_CSS_PARSER_WARNING_DEPRECATED")]
4274    Deprecated,
4275    /// A syntax construct was used
4276    ///   that should be avoided
4277    #[doc(alias = "GTK_CSS_PARSER_WARNING_SYNTAX")]
4278    Syntax,
4279    /// A feature is not implemented
4280    #[doc(alias = "GTK_CSS_PARSER_WARNING_UNIMPLEMENTED")]
4281    Unimplemented,
4282    #[doc(hidden)]
4283    __Unknown(i32),
4284}
4285
4286#[doc(hidden)]
4287impl IntoGlib for CssParserWarning {
4288    type GlibType = ffi::GtkCssParserWarning;
4289
4290    #[inline]
4291    fn into_glib(self) -> ffi::GtkCssParserWarning {
4292        match self {
4293            Self::Deprecated => ffi::GTK_CSS_PARSER_WARNING_DEPRECATED,
4294            Self::Syntax => ffi::GTK_CSS_PARSER_WARNING_SYNTAX,
4295            Self::Unimplemented => ffi::GTK_CSS_PARSER_WARNING_UNIMPLEMENTED,
4296            Self::__Unknown(value) => value,
4297        }
4298    }
4299}
4300
4301#[doc(hidden)]
4302impl FromGlib<ffi::GtkCssParserWarning> for CssParserWarning {
4303    #[inline]
4304    unsafe fn from_glib(value: ffi::GtkCssParserWarning) -> Self {
4305        skip_assert_initialized!();
4306
4307        match value {
4308            ffi::GTK_CSS_PARSER_WARNING_DEPRECATED => Self::Deprecated,
4309            ffi::GTK_CSS_PARSER_WARNING_SYNTAX => Self::Syntax,
4310            ffi::GTK_CSS_PARSER_WARNING_UNIMPLEMENTED => Self::Unimplemented,
4311            value => Self::__Unknown(value),
4312        }
4313    }
4314}
4315
4316/// Passed to various keybinding signals for deleting text.
4317#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4318#[non_exhaustive]
4319#[doc(alias = "GtkDeleteType")]
4320pub enum DeleteType {
4321    /// Delete characters.
4322    #[doc(alias = "GTK_DELETE_CHARS")]
4323    Chars,
4324    /// re in the middle of a word.
4325    #[doc(alias = "GTK_DELETE_WORD_ENDS")]
4326    WordEnds,
4327    /// Delete words.
4328    #[doc(alias = "GTK_DELETE_WORDS")]
4329    Words,
4330    /// Delete display-lines. Display-lines
4331    ///   refers to the visible lines, with respect to the current line
4332    ///   breaks. As opposed to paragraphs, which are defined by line
4333    ///   breaks in the input.
4334    #[doc(alias = "GTK_DELETE_DISPLAY_LINES")]
4335    DisplayLines,
4336    /// Delete only the portion of the
4337    ///   display-line to the left/right of cursor.
4338    #[doc(alias = "GTK_DELETE_DISPLAY_LINE_ENDS")]
4339    DisplayLineEnds,
4340    /// Delete to the end of the
4341    ///   paragraph. Like C-k in Emacs (or its reverse).
4342    #[doc(alias = "GTK_DELETE_PARAGRAPH_ENDS")]
4343    ParagraphEnds,
4344    /// Delete entire line. Like C-k in pico.
4345    #[doc(alias = "GTK_DELETE_PARAGRAPHS")]
4346    Paragraphs,
4347    /// Delete only whitespace. Like M-\ in Emacs.
4348    #[doc(alias = "GTK_DELETE_WHITESPACE")]
4349    Whitespace,
4350    #[doc(hidden)]
4351    __Unknown(i32),
4352}
4353
4354#[doc(hidden)]
4355impl IntoGlib for DeleteType {
4356    type GlibType = ffi::GtkDeleteType;
4357
4358    #[inline]
4359    fn into_glib(self) -> ffi::GtkDeleteType {
4360        match self {
4361            Self::Chars => ffi::GTK_DELETE_CHARS,
4362            Self::WordEnds => ffi::GTK_DELETE_WORD_ENDS,
4363            Self::Words => ffi::GTK_DELETE_WORDS,
4364            Self::DisplayLines => ffi::GTK_DELETE_DISPLAY_LINES,
4365            Self::DisplayLineEnds => ffi::GTK_DELETE_DISPLAY_LINE_ENDS,
4366            Self::ParagraphEnds => ffi::GTK_DELETE_PARAGRAPH_ENDS,
4367            Self::Paragraphs => ffi::GTK_DELETE_PARAGRAPHS,
4368            Self::Whitespace => ffi::GTK_DELETE_WHITESPACE,
4369            Self::__Unknown(value) => value,
4370        }
4371    }
4372}
4373
4374#[doc(hidden)]
4375impl FromGlib<ffi::GtkDeleteType> for DeleteType {
4376    #[inline]
4377    unsafe fn from_glib(value: ffi::GtkDeleteType) -> Self {
4378        skip_assert_initialized!();
4379
4380        match value {
4381            ffi::GTK_DELETE_CHARS => Self::Chars,
4382            ffi::GTK_DELETE_WORD_ENDS => Self::WordEnds,
4383            ffi::GTK_DELETE_WORDS => Self::Words,
4384            ffi::GTK_DELETE_DISPLAY_LINES => Self::DisplayLines,
4385            ffi::GTK_DELETE_DISPLAY_LINE_ENDS => Self::DisplayLineEnds,
4386            ffi::GTK_DELETE_PARAGRAPH_ENDS => Self::ParagraphEnds,
4387            ffi::GTK_DELETE_PARAGRAPHS => Self::Paragraphs,
4388            ffi::GTK_DELETE_WHITESPACE => Self::Whitespace,
4389            value => Self::__Unknown(value),
4390        }
4391    }
4392}
4393
4394impl StaticType for DeleteType {
4395    #[inline]
4396    #[doc(alias = "gtk_delete_type_get_type")]
4397    fn static_type() -> glib::Type {
4398        unsafe { from_glib(ffi::gtk_delete_type_get_type()) }
4399    }
4400}
4401
4402impl glib::HasParamSpec for DeleteType {
4403    type ParamSpec = glib::ParamSpecEnum;
4404    type SetValue = Self;
4405    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4406
4407    fn param_spec_builder() -> Self::BuilderFn {
4408        Self::ParamSpec::builder_with_default
4409    }
4410}
4411
4412impl glib::value::ValueType for DeleteType {
4413    type Type = Self;
4414}
4415
4416unsafe impl<'a> glib::value::FromValue<'a> for DeleteType {
4417    type Checker = glib::value::GenericValueTypeChecker<Self>;
4418
4419    #[inline]
4420    unsafe fn from_value(value: &'a glib::Value) -> Self {
4421        skip_assert_initialized!();
4422        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4423    }
4424}
4425
4426impl ToValue for DeleteType {
4427    #[inline]
4428    fn to_value(&self) -> glib::Value {
4429        let mut value = glib::Value::for_value_type::<Self>();
4430        unsafe {
4431            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4432        }
4433        value
4434    }
4435
4436    #[inline]
4437    fn value_type(&self) -> glib::Type {
4438        Self::static_type()
4439    }
4440}
4441
4442impl From<DeleteType> for glib::Value {
4443    #[inline]
4444    fn from(v: DeleteType) -> Self {
4445        skip_assert_initialized!();
4446        ToValue::to_value(&v)
4447    }
4448}
4449
4450/// Error codes in the `GTK_DIALOG_ERROR` domain that can be returned
4451/// by async dialog functions.
4452#[cfg(feature = "v4_10")]
4453#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4454#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4455#[non_exhaustive]
4456#[doc(alias = "GtkDialogError")]
4457pub enum DialogError {
4458    /// Generic error condition for when
4459    ///   an operation fails and no more specific code is applicable
4460    #[doc(alias = "GTK_DIALOG_ERROR_FAILED")]
4461    Failed,
4462    /// The async function call was cancelled
4463    ///   via its `GCancellable`
4464    #[doc(alias = "GTK_DIALOG_ERROR_CANCELLED")]
4465    Cancelled,
4466    /// The operation was cancelled
4467    ///   by the user (via a Cancel or Close button)
4468    #[doc(alias = "GTK_DIALOG_ERROR_DISMISSED")]
4469    Dismissed,
4470    #[doc(hidden)]
4471    __Unknown(i32),
4472}
4473
4474#[cfg(feature = "v4_10")]
4475#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4476#[doc(hidden)]
4477impl IntoGlib for DialogError {
4478    type GlibType = ffi::GtkDialogError;
4479
4480    #[inline]
4481    fn into_glib(self) -> ffi::GtkDialogError {
4482        match self {
4483            Self::Failed => ffi::GTK_DIALOG_ERROR_FAILED,
4484            Self::Cancelled => ffi::GTK_DIALOG_ERROR_CANCELLED,
4485            Self::Dismissed => ffi::GTK_DIALOG_ERROR_DISMISSED,
4486            Self::__Unknown(value) => value,
4487        }
4488    }
4489}
4490
4491#[cfg(feature = "v4_10")]
4492#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4493#[doc(hidden)]
4494impl FromGlib<ffi::GtkDialogError> for DialogError {
4495    #[inline]
4496    unsafe fn from_glib(value: ffi::GtkDialogError) -> Self {
4497        skip_assert_initialized!();
4498
4499        match value {
4500            ffi::GTK_DIALOG_ERROR_FAILED => Self::Failed,
4501            ffi::GTK_DIALOG_ERROR_CANCELLED => Self::Cancelled,
4502            ffi::GTK_DIALOG_ERROR_DISMISSED => Self::Dismissed,
4503            value => Self::__Unknown(value),
4504        }
4505    }
4506}
4507
4508#[cfg(feature = "v4_10")]
4509#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4510impl glib::error::ErrorDomain for DialogError {
4511    #[inline]
4512    fn domain() -> glib::Quark {
4513        skip_assert_initialized!();
4514
4515        unsafe { from_glib(ffi::gtk_dialog_error_quark()) }
4516    }
4517
4518    #[inline]
4519    fn code(self) -> i32 {
4520        self.into_glib()
4521    }
4522
4523    #[inline]
4524    #[allow(clippy::match_single_binding)]
4525    fn from(code: i32) -> Option<Self> {
4526        skip_assert_initialized!();
4527        match unsafe { from_glib(code) } {
4528            Self::__Unknown(_) => Some(Self::Failed),
4529            value => Some(value),
4530        }
4531    }
4532}
4533
4534#[cfg(feature = "v4_10")]
4535#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4536impl StaticType for DialogError {
4537    #[inline]
4538    #[doc(alias = "gtk_dialog_error_get_type")]
4539    fn static_type() -> glib::Type {
4540        unsafe { from_glib(ffi::gtk_dialog_error_get_type()) }
4541    }
4542}
4543
4544#[cfg(feature = "v4_10")]
4545#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4546impl glib::HasParamSpec for DialogError {
4547    type ParamSpec = glib::ParamSpecEnum;
4548    type SetValue = Self;
4549    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4550
4551    fn param_spec_builder() -> Self::BuilderFn {
4552        Self::ParamSpec::builder_with_default
4553    }
4554}
4555
4556#[cfg(feature = "v4_10")]
4557#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4558impl glib::value::ValueType for DialogError {
4559    type Type = Self;
4560}
4561
4562#[cfg(feature = "v4_10")]
4563#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4564unsafe impl<'a> glib::value::FromValue<'a> for DialogError {
4565    type Checker = glib::value::GenericValueTypeChecker<Self>;
4566
4567    #[inline]
4568    unsafe fn from_value(value: &'a glib::Value) -> Self {
4569        skip_assert_initialized!();
4570        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4571    }
4572}
4573
4574#[cfg(feature = "v4_10")]
4575#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4576impl ToValue for DialogError {
4577    #[inline]
4578    fn to_value(&self) -> glib::Value {
4579        let mut value = glib::Value::for_value_type::<Self>();
4580        unsafe {
4581            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4582        }
4583        value
4584    }
4585
4586    #[inline]
4587    fn value_type(&self) -> glib::Type {
4588        Self::static_type()
4589    }
4590}
4591
4592#[cfg(feature = "v4_10")]
4593#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
4594impl From<DialogError> for glib::Value {
4595    #[inline]
4596    fn from(v: DialogError) -> Self {
4597        skip_assert_initialized!();
4598        ToValue::to_value(&v)
4599    }
4600}
4601
4602/// Focus movement types.
4603#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4604#[non_exhaustive]
4605#[doc(alias = "GtkDirectionType")]
4606pub enum DirectionType {
4607    /// Move forward.
4608    #[doc(alias = "GTK_DIR_TAB_FORWARD")]
4609    TabForward,
4610    /// Move backward.
4611    #[doc(alias = "GTK_DIR_TAB_BACKWARD")]
4612    TabBackward,
4613    /// Move up.
4614    #[doc(alias = "GTK_DIR_UP")]
4615    Up,
4616    /// Move down.
4617    #[doc(alias = "GTK_DIR_DOWN")]
4618    Down,
4619    /// Move left.
4620    #[doc(alias = "GTK_DIR_LEFT")]
4621    Left,
4622    /// Move right.
4623    #[doc(alias = "GTK_DIR_RIGHT")]
4624    Right,
4625    #[doc(hidden)]
4626    __Unknown(i32),
4627}
4628
4629#[doc(hidden)]
4630impl IntoGlib for DirectionType {
4631    type GlibType = ffi::GtkDirectionType;
4632
4633    #[inline]
4634    fn into_glib(self) -> ffi::GtkDirectionType {
4635        match self {
4636            Self::TabForward => ffi::GTK_DIR_TAB_FORWARD,
4637            Self::TabBackward => ffi::GTK_DIR_TAB_BACKWARD,
4638            Self::Up => ffi::GTK_DIR_UP,
4639            Self::Down => ffi::GTK_DIR_DOWN,
4640            Self::Left => ffi::GTK_DIR_LEFT,
4641            Self::Right => ffi::GTK_DIR_RIGHT,
4642            Self::__Unknown(value) => value,
4643        }
4644    }
4645}
4646
4647#[doc(hidden)]
4648impl FromGlib<ffi::GtkDirectionType> for DirectionType {
4649    #[inline]
4650    unsafe fn from_glib(value: ffi::GtkDirectionType) -> Self {
4651        skip_assert_initialized!();
4652
4653        match value {
4654            ffi::GTK_DIR_TAB_FORWARD => Self::TabForward,
4655            ffi::GTK_DIR_TAB_BACKWARD => Self::TabBackward,
4656            ffi::GTK_DIR_UP => Self::Up,
4657            ffi::GTK_DIR_DOWN => Self::Down,
4658            ffi::GTK_DIR_LEFT => Self::Left,
4659            ffi::GTK_DIR_RIGHT => Self::Right,
4660            value => Self::__Unknown(value),
4661        }
4662    }
4663}
4664
4665impl StaticType for DirectionType {
4666    #[inline]
4667    #[doc(alias = "gtk_direction_type_get_type")]
4668    fn static_type() -> glib::Type {
4669        unsafe { from_glib(ffi::gtk_direction_type_get_type()) }
4670    }
4671}
4672
4673impl glib::HasParamSpec for DirectionType {
4674    type ParamSpec = glib::ParamSpecEnum;
4675    type SetValue = Self;
4676    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4677
4678    fn param_spec_builder() -> Self::BuilderFn {
4679        Self::ParamSpec::builder_with_default
4680    }
4681}
4682
4683impl glib::value::ValueType for DirectionType {
4684    type Type = Self;
4685}
4686
4687unsafe impl<'a> glib::value::FromValue<'a> for DirectionType {
4688    type Checker = glib::value::GenericValueTypeChecker<Self>;
4689
4690    #[inline]
4691    unsafe fn from_value(value: &'a glib::Value) -> Self {
4692        skip_assert_initialized!();
4693        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4694    }
4695}
4696
4697impl ToValue for DirectionType {
4698    #[inline]
4699    fn to_value(&self) -> glib::Value {
4700        let mut value = glib::Value::for_value_type::<Self>();
4701        unsafe {
4702            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4703        }
4704        value
4705    }
4706
4707    #[inline]
4708    fn value_type(&self) -> glib::Type {
4709        Self::static_type()
4710    }
4711}
4712
4713impl From<DirectionType> for glib::Value {
4714    #[inline]
4715    fn from(v: DirectionType) -> Self {
4716        skip_assert_initialized!();
4717        ToValue::to_value(&v)
4718    }
4719}
4720
4721/// The identifiers for [`Editable`][crate::Editable] properties.
4722///
4723/// See [`Editable::install_properties()`][crate::Editable::install_properties()] for details on how to
4724/// implement the [`Editable`][crate::Editable] interface.
4725#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4726#[non_exhaustive]
4727#[doc(alias = "GtkEditableProperties")]
4728pub enum EditableProperties {
4729    /// the property id for [`text`][struct@crate::Editable#text]
4730    #[doc(alias = "GTK_EDITABLE_PROP_TEXT")]
4731    PropText,
4732    /// the property id for [`cursor-position`][struct@crate::Editable#cursor-position]
4733    #[doc(alias = "GTK_EDITABLE_PROP_CURSOR_POSITION")]
4734    PropCursorPosition,
4735    /// the property id for [`selection-bound`][struct@crate::Editable#selection-bound]
4736    #[doc(alias = "GTK_EDITABLE_PROP_SELECTION_BOUND")]
4737    PropSelectionBound,
4738    /// the property id for [`editable`][struct@crate::Editable#editable]
4739    #[doc(alias = "GTK_EDITABLE_PROP_EDITABLE")]
4740    PropEditable,
4741    /// the property id for [`width-chars`][struct@crate::Editable#width-chars]
4742    #[doc(alias = "GTK_EDITABLE_PROP_WIDTH_CHARS")]
4743    PropWidthChars,
4744    /// the property id for [`max-width-chars`][struct@crate::Editable#max-width-chars]
4745    #[doc(alias = "GTK_EDITABLE_PROP_MAX_WIDTH_CHARS")]
4746    PropMaxWidthChars,
4747    /// the property id for [`xalign`][struct@crate::Editable#xalign]
4748    #[doc(alias = "GTK_EDITABLE_PROP_XALIGN")]
4749    PropXalign,
4750    /// the property id for [`enable-undo`][struct@crate::Editable#enable-undo]
4751    #[doc(alias = "GTK_EDITABLE_PROP_ENABLE_UNDO")]
4752    PropEnableUndo,
4753    /// the property id for [`complete-text`][struct@crate::Editable#complete-text]
4754    #[doc(alias = "GTK_EDITABLE_PROP_COMPLETE_TEXT")]
4755    PropCompleteText,
4756    /// the number of properties
4757    #[doc(alias = "GTK_EDITABLE_NUM_PROPERTIES")]
4758    NumProperties,
4759    #[doc(hidden)]
4760    __Unknown(i32),
4761}
4762
4763#[doc(hidden)]
4764impl IntoGlib for EditableProperties {
4765    type GlibType = ffi::GtkEditableProperties;
4766
4767    #[inline]
4768    fn into_glib(self) -> ffi::GtkEditableProperties {
4769        match self {
4770            Self::PropText => ffi::GTK_EDITABLE_PROP_TEXT,
4771            Self::PropCursorPosition => ffi::GTK_EDITABLE_PROP_CURSOR_POSITION,
4772            Self::PropSelectionBound => ffi::GTK_EDITABLE_PROP_SELECTION_BOUND,
4773            Self::PropEditable => ffi::GTK_EDITABLE_PROP_EDITABLE,
4774            Self::PropWidthChars => ffi::GTK_EDITABLE_PROP_WIDTH_CHARS,
4775            Self::PropMaxWidthChars => ffi::GTK_EDITABLE_PROP_MAX_WIDTH_CHARS,
4776            Self::PropXalign => ffi::GTK_EDITABLE_PROP_XALIGN,
4777            Self::PropEnableUndo => ffi::GTK_EDITABLE_PROP_ENABLE_UNDO,
4778            Self::PropCompleteText => ffi::GTK_EDITABLE_PROP_COMPLETE_TEXT,
4779            Self::NumProperties => ffi::GTK_EDITABLE_NUM_PROPERTIES,
4780            Self::__Unknown(value) => value,
4781        }
4782    }
4783}
4784
4785#[doc(hidden)]
4786impl FromGlib<ffi::GtkEditableProperties> for EditableProperties {
4787    #[inline]
4788    unsafe fn from_glib(value: ffi::GtkEditableProperties) -> Self {
4789        skip_assert_initialized!();
4790
4791        match value {
4792            ffi::GTK_EDITABLE_PROP_TEXT => Self::PropText,
4793            ffi::GTK_EDITABLE_PROP_CURSOR_POSITION => Self::PropCursorPosition,
4794            ffi::GTK_EDITABLE_PROP_SELECTION_BOUND => Self::PropSelectionBound,
4795            ffi::GTK_EDITABLE_PROP_EDITABLE => Self::PropEditable,
4796            ffi::GTK_EDITABLE_PROP_WIDTH_CHARS => Self::PropWidthChars,
4797            ffi::GTK_EDITABLE_PROP_MAX_WIDTH_CHARS => Self::PropMaxWidthChars,
4798            ffi::GTK_EDITABLE_PROP_XALIGN => Self::PropXalign,
4799            ffi::GTK_EDITABLE_PROP_ENABLE_UNDO => Self::PropEnableUndo,
4800            ffi::GTK_EDITABLE_PROP_COMPLETE_TEXT => Self::PropCompleteText,
4801            ffi::GTK_EDITABLE_NUM_PROPERTIES => Self::NumProperties,
4802            value => Self::__Unknown(value),
4803        }
4804    }
4805}
4806
4807impl StaticType for EditableProperties {
4808    #[inline]
4809    #[doc(alias = "gtk_editable_properties_get_type")]
4810    fn static_type() -> glib::Type {
4811        unsafe { from_glib(ffi::gtk_editable_properties_get_type()) }
4812    }
4813}
4814
4815impl glib::HasParamSpec for EditableProperties {
4816    type ParamSpec = glib::ParamSpecEnum;
4817    type SetValue = Self;
4818    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4819
4820    fn param_spec_builder() -> Self::BuilderFn {
4821        Self::ParamSpec::builder_with_default
4822    }
4823}
4824
4825impl glib::value::ValueType for EditableProperties {
4826    type Type = Self;
4827}
4828
4829unsafe impl<'a> glib::value::FromValue<'a> for EditableProperties {
4830    type Checker = glib::value::GenericValueTypeChecker<Self>;
4831
4832    #[inline]
4833    unsafe fn from_value(value: &'a glib::Value) -> Self {
4834        skip_assert_initialized!();
4835        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4836    }
4837}
4838
4839impl ToValue for EditableProperties {
4840    #[inline]
4841    fn to_value(&self) -> glib::Value {
4842        let mut value = glib::Value::for_value_type::<Self>();
4843        unsafe {
4844            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4845        }
4846        value
4847    }
4848
4849    #[inline]
4850    fn value_type(&self) -> glib::Type {
4851        Self::static_type()
4852    }
4853}
4854
4855impl From<EditableProperties> for glib::Value {
4856    #[inline]
4857    fn from(v: EditableProperties) -> Self {
4858        skip_assert_initialized!();
4859        ToValue::to_value(&v)
4860    }
4861}
4862
4863/// Specifies the side of the entry at which an icon is placed.
4864#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4865#[non_exhaustive]
4866#[doc(alias = "GtkEntryIconPosition")]
4867pub enum EntryIconPosition {
4868    /// At the beginning of the entry (depending on the text direction).
4869    #[doc(alias = "GTK_ENTRY_ICON_PRIMARY")]
4870    Primary,
4871    /// At the end of the entry (depending on the text direction).
4872    #[doc(alias = "GTK_ENTRY_ICON_SECONDARY")]
4873    Secondary,
4874    #[doc(hidden)]
4875    __Unknown(i32),
4876}
4877
4878#[doc(hidden)]
4879impl IntoGlib for EntryIconPosition {
4880    type GlibType = ffi::GtkEntryIconPosition;
4881
4882    #[inline]
4883    fn into_glib(self) -> ffi::GtkEntryIconPosition {
4884        match self {
4885            Self::Primary => ffi::GTK_ENTRY_ICON_PRIMARY,
4886            Self::Secondary => ffi::GTK_ENTRY_ICON_SECONDARY,
4887            Self::__Unknown(value) => value,
4888        }
4889    }
4890}
4891
4892#[doc(hidden)]
4893impl FromGlib<ffi::GtkEntryIconPosition> for EntryIconPosition {
4894    #[inline]
4895    unsafe fn from_glib(value: ffi::GtkEntryIconPosition) -> Self {
4896        skip_assert_initialized!();
4897
4898        match value {
4899            ffi::GTK_ENTRY_ICON_PRIMARY => Self::Primary,
4900            ffi::GTK_ENTRY_ICON_SECONDARY => Self::Secondary,
4901            value => Self::__Unknown(value),
4902        }
4903    }
4904}
4905
4906impl StaticType for EntryIconPosition {
4907    #[inline]
4908    #[doc(alias = "gtk_entry_icon_position_get_type")]
4909    fn static_type() -> glib::Type {
4910        unsafe { from_glib(ffi::gtk_entry_icon_position_get_type()) }
4911    }
4912}
4913
4914impl glib::HasParamSpec for EntryIconPosition {
4915    type ParamSpec = glib::ParamSpecEnum;
4916    type SetValue = Self;
4917    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4918
4919    fn param_spec_builder() -> Self::BuilderFn {
4920        Self::ParamSpec::builder_with_default
4921    }
4922}
4923
4924impl glib::value::ValueType for EntryIconPosition {
4925    type Type = Self;
4926}
4927
4928unsafe impl<'a> glib::value::FromValue<'a> for EntryIconPosition {
4929    type Checker = glib::value::GenericValueTypeChecker<Self>;
4930
4931    #[inline]
4932    unsafe fn from_value(value: &'a glib::Value) -> Self {
4933        skip_assert_initialized!();
4934        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4935    }
4936}
4937
4938impl ToValue for EntryIconPosition {
4939    #[inline]
4940    fn to_value(&self) -> glib::Value {
4941        let mut value = glib::Value::for_value_type::<Self>();
4942        unsafe {
4943            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4944        }
4945        value
4946    }
4947
4948    #[inline]
4949    fn value_type(&self) -> glib::Type {
4950        Self::static_type()
4951    }
4952}
4953
4954impl From<EntryIconPosition> for glib::Value {
4955    #[inline]
4956    fn from(v: EntryIconPosition) -> Self {
4957        skip_assert_initialized!();
4958        ToValue::to_value(&v)
4959    }
4960}
4961
4962/// Describes the state of a [`gdk::EventSequence`][crate::gdk::EventSequence] in a [`Gesture`][crate::Gesture].
4963#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4964#[non_exhaustive]
4965#[doc(alias = "GtkEventSequenceState")]
4966pub enum EventSequenceState {
4967    /// The sequence is handled, but not grabbed.
4968    #[doc(alias = "GTK_EVENT_SEQUENCE_NONE")]
4969    None,
4970    /// The sequence is handled and grabbed.
4971    #[doc(alias = "GTK_EVENT_SEQUENCE_CLAIMED")]
4972    Claimed,
4973    /// The sequence is denied.
4974    #[doc(alias = "GTK_EVENT_SEQUENCE_DENIED")]
4975    Denied,
4976    #[doc(hidden)]
4977    __Unknown(i32),
4978}
4979
4980#[doc(hidden)]
4981impl IntoGlib for EventSequenceState {
4982    type GlibType = ffi::GtkEventSequenceState;
4983
4984    #[inline]
4985    fn into_glib(self) -> ffi::GtkEventSequenceState {
4986        match self {
4987            Self::None => ffi::GTK_EVENT_SEQUENCE_NONE,
4988            Self::Claimed => ffi::GTK_EVENT_SEQUENCE_CLAIMED,
4989            Self::Denied => ffi::GTK_EVENT_SEQUENCE_DENIED,
4990            Self::__Unknown(value) => value,
4991        }
4992    }
4993}
4994
4995#[doc(hidden)]
4996impl FromGlib<ffi::GtkEventSequenceState> for EventSequenceState {
4997    #[inline]
4998    unsafe fn from_glib(value: ffi::GtkEventSequenceState) -> Self {
4999        skip_assert_initialized!();
5000
5001        match value {
5002            ffi::GTK_EVENT_SEQUENCE_NONE => Self::None,
5003            ffi::GTK_EVENT_SEQUENCE_CLAIMED => Self::Claimed,
5004            ffi::GTK_EVENT_SEQUENCE_DENIED => Self::Denied,
5005            value => Self::__Unknown(value),
5006        }
5007    }
5008}
5009
5010impl StaticType for EventSequenceState {
5011    #[inline]
5012    #[doc(alias = "gtk_event_sequence_state_get_type")]
5013    fn static_type() -> glib::Type {
5014        unsafe { from_glib(ffi::gtk_event_sequence_state_get_type()) }
5015    }
5016}
5017
5018impl glib::HasParamSpec for EventSequenceState {
5019    type ParamSpec = glib::ParamSpecEnum;
5020    type SetValue = Self;
5021    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5022
5023    fn param_spec_builder() -> Self::BuilderFn {
5024        Self::ParamSpec::builder_with_default
5025    }
5026}
5027
5028impl glib::value::ValueType for EventSequenceState {
5029    type Type = Self;
5030}
5031
5032unsafe impl<'a> glib::value::FromValue<'a> for EventSequenceState {
5033    type Checker = glib::value::GenericValueTypeChecker<Self>;
5034
5035    #[inline]
5036    unsafe fn from_value(value: &'a glib::Value) -> Self {
5037        skip_assert_initialized!();
5038        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5039    }
5040}
5041
5042impl ToValue for EventSequenceState {
5043    #[inline]
5044    fn to_value(&self) -> glib::Value {
5045        let mut value = glib::Value::for_value_type::<Self>();
5046        unsafe {
5047            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5048        }
5049        value
5050    }
5051
5052    #[inline]
5053    fn value_type(&self) -> glib::Type {
5054        Self::static_type()
5055    }
5056}
5057
5058impl From<EventSequenceState> for glib::Value {
5059    #[inline]
5060    fn from(v: EventSequenceState) -> Self {
5061        skip_assert_initialized!();
5062        ToValue::to_value(&v)
5063    }
5064}
5065
5066/// Describes whether a [`FileChooser`][crate::FileChooser] is being used to open existing files
5067/// or to save to a possibly new file.
5068#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5069#[non_exhaustive]
5070#[doc(alias = "GtkFileChooserAction")]
5071pub enum FileChooserAction {
5072    /// Indicates open mode.  The file chooser
5073    ///  will only let the user pick an existing file.
5074    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_OPEN")]
5075    Open,
5076    /// Indicates save mode.  The file chooser
5077    ///  will let the user pick an existing file, or type in a new
5078    ///  filename.
5079    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_SAVE")]
5080    Save,
5081    /// Indicates an Open mode for
5082    ///  selecting folders.  The file chooser will let the user pick an
5083    ///  existing folder.
5084    #[doc(alias = "GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER")]
5085    SelectFolder,
5086    #[doc(hidden)]
5087    __Unknown(i32),
5088}
5089
5090#[doc(hidden)]
5091impl IntoGlib for FileChooserAction {
5092    type GlibType = ffi::GtkFileChooserAction;
5093
5094    #[inline]
5095    fn into_glib(self) -> ffi::GtkFileChooserAction {
5096        match self {
5097            Self::Open => ffi::GTK_FILE_CHOOSER_ACTION_OPEN,
5098            Self::Save => ffi::GTK_FILE_CHOOSER_ACTION_SAVE,
5099            Self::SelectFolder => ffi::GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
5100            Self::__Unknown(value) => value,
5101        }
5102    }
5103}
5104
5105#[doc(hidden)]
5106impl FromGlib<ffi::GtkFileChooserAction> for FileChooserAction {
5107    #[inline]
5108    unsafe fn from_glib(value: ffi::GtkFileChooserAction) -> Self {
5109        skip_assert_initialized!();
5110
5111        match value {
5112            ffi::GTK_FILE_CHOOSER_ACTION_OPEN => Self::Open,
5113            ffi::GTK_FILE_CHOOSER_ACTION_SAVE => Self::Save,
5114            ffi::GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER => Self::SelectFolder,
5115            value => Self::__Unknown(value),
5116        }
5117    }
5118}
5119
5120impl StaticType for FileChooserAction {
5121    #[inline]
5122    #[doc(alias = "gtk_file_chooser_action_get_type")]
5123    fn static_type() -> glib::Type {
5124        unsafe { from_glib(ffi::gtk_file_chooser_action_get_type()) }
5125    }
5126}
5127
5128impl glib::HasParamSpec for FileChooserAction {
5129    type ParamSpec = glib::ParamSpecEnum;
5130    type SetValue = Self;
5131    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5132
5133    fn param_spec_builder() -> Self::BuilderFn {
5134        Self::ParamSpec::builder_with_default
5135    }
5136}
5137
5138impl glib::value::ValueType for FileChooserAction {
5139    type Type = Self;
5140}
5141
5142unsafe impl<'a> glib::value::FromValue<'a> for FileChooserAction {
5143    type Checker = glib::value::GenericValueTypeChecker<Self>;
5144
5145    #[inline]
5146    unsafe fn from_value(value: &'a glib::Value) -> Self {
5147        skip_assert_initialized!();
5148        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5149    }
5150}
5151
5152impl ToValue for FileChooserAction {
5153    #[inline]
5154    fn to_value(&self) -> glib::Value {
5155        let mut value = glib::Value::for_value_type::<Self>();
5156        unsafe {
5157            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5158        }
5159        value
5160    }
5161
5162    #[inline]
5163    fn value_type(&self) -> glib::Type {
5164        Self::static_type()
5165    }
5166}
5167
5168impl From<FileChooserAction> for glib::Value {
5169    #[inline]
5170    fn from(v: FileChooserAction) -> Self {
5171        skip_assert_initialized!();
5172        ToValue::to_value(&v)
5173    }
5174}
5175
5176/// These identify the various errors that can occur while calling
5177/// [`FileChooser`][crate::FileChooser] functions.
5178///
5179/// # Deprecated since 4.20
5180///
5181/// There is no replacement
5182#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
5183#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5184#[non_exhaustive]
5185#[doc(alias = "GtkFileChooserError")]
5186pub enum FileChooserError {
5187    /// Indicates that a file does not exist.
5188    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_NONEXISTENT")]
5189    Nonexistent,
5190    /// Indicates a malformed filename.
5191    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_BAD_FILENAME")]
5192    BadFilename,
5193    /// Indicates a duplicate path (e.g. when
5194    ///  adding a bookmark).
5195    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS")]
5196    AlreadyExists,
5197    /// Indicates an incomplete hostname
5198    ///  (e.g. "http://foo" without a slash after that).
5199    #[doc(alias = "GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME")]
5200    IncompleteHostname,
5201    #[doc(hidden)]
5202    __Unknown(i32),
5203}
5204
5205#[allow(deprecated)]
5206#[doc(hidden)]
5207impl IntoGlib for FileChooserError {
5208    type GlibType = ffi::GtkFileChooserError;
5209
5210    #[inline]
5211    fn into_glib(self) -> ffi::GtkFileChooserError {
5212        match self {
5213            Self::Nonexistent => ffi::GTK_FILE_CHOOSER_ERROR_NONEXISTENT,
5214            Self::BadFilename => ffi::GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
5215            Self::AlreadyExists => ffi::GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS,
5216            Self::IncompleteHostname => ffi::GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME,
5217            Self::__Unknown(value) => value,
5218        }
5219    }
5220}
5221
5222#[allow(deprecated)]
5223#[doc(hidden)]
5224impl FromGlib<ffi::GtkFileChooserError> for FileChooserError {
5225    #[inline]
5226    unsafe fn from_glib(value: ffi::GtkFileChooserError) -> Self {
5227        skip_assert_initialized!();
5228
5229        match value {
5230            ffi::GTK_FILE_CHOOSER_ERROR_NONEXISTENT => Self::Nonexistent,
5231            ffi::GTK_FILE_CHOOSER_ERROR_BAD_FILENAME => Self::BadFilename,
5232            ffi::GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS => Self::AlreadyExists,
5233            ffi::GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME => Self::IncompleteHostname,
5234            value => Self::__Unknown(value),
5235        }
5236    }
5237}
5238
5239#[allow(deprecated)]
5240impl glib::error::ErrorDomain for FileChooserError {
5241    #[inline]
5242    fn domain() -> glib::Quark {
5243        skip_assert_initialized!();
5244
5245        unsafe { from_glib(ffi::gtk_file_chooser_error_quark()) }
5246    }
5247
5248    #[inline]
5249    fn code(self) -> i32 {
5250        self.into_glib()
5251    }
5252
5253    #[inline]
5254    #[allow(clippy::match_single_binding)]
5255    fn from(code: i32) -> Option<Self> {
5256        skip_assert_initialized!();
5257        match unsafe { from_glib(code) } {
5258            value => Some(value),
5259        }
5260    }
5261}
5262
5263#[allow(deprecated)]
5264impl StaticType for FileChooserError {
5265    #[inline]
5266    #[doc(alias = "gtk_file_chooser_error_get_type")]
5267    fn static_type() -> glib::Type {
5268        unsafe { from_glib(ffi::gtk_file_chooser_error_get_type()) }
5269    }
5270}
5271
5272#[allow(deprecated)]
5273impl glib::HasParamSpec for FileChooserError {
5274    type ParamSpec = glib::ParamSpecEnum;
5275    type SetValue = Self;
5276    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5277
5278    fn param_spec_builder() -> Self::BuilderFn {
5279        Self::ParamSpec::builder_with_default
5280    }
5281}
5282
5283#[allow(deprecated)]
5284impl glib::value::ValueType for FileChooserError {
5285    type Type = Self;
5286}
5287
5288#[allow(deprecated)]
5289unsafe impl<'a> glib::value::FromValue<'a> for FileChooserError {
5290    type Checker = glib::value::GenericValueTypeChecker<Self>;
5291
5292    #[inline]
5293    unsafe fn from_value(value: &'a glib::Value) -> Self {
5294        skip_assert_initialized!();
5295        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5296    }
5297}
5298
5299#[allow(deprecated)]
5300impl ToValue for FileChooserError {
5301    #[inline]
5302    fn to_value(&self) -> glib::Value {
5303        let mut value = glib::Value::for_value_type::<Self>();
5304        unsafe {
5305            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5306        }
5307        value
5308    }
5309
5310    #[inline]
5311    fn value_type(&self) -> glib::Type {
5312        Self::static_type()
5313    }
5314}
5315
5316#[allow(deprecated)]
5317impl From<FileChooserError> for glib::Value {
5318    #[inline]
5319    fn from(v: FileChooserError) -> Self {
5320        skip_assert_initialized!();
5321        ToValue::to_value(&v)
5322    }
5323}
5324
5325/// Describes changes in a filter in more detail and allows objects
5326/// using the filter to optimize refiltering items.
5327///
5328/// If you are writing an implementation and are not sure which
5329/// value to pass, `GTK_FILTER_CHANGE_DIFFERENT` is always a correct
5330/// choice.
5331///
5332/// New values may be added in the future.
5333#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5334#[non_exhaustive]
5335#[doc(alias = "GtkFilterChange")]
5336pub enum FilterChange {
5337    /// The filter change cannot be
5338    ///   described with any of the other enumeration values
5339    #[doc(alias = "GTK_FILTER_CHANGE_DIFFERENT")]
5340    Different,
5341    /// The filter is less strict than
5342    ///   it was before: All items that it used to return true
5343    ///   still return true, others now may, too.
5344    #[doc(alias = "GTK_FILTER_CHANGE_LESS_STRICT")]
5345    LessStrict,
5346    /// The filter is more strict than
5347    ///   it was before: All items that it used to return false
5348    ///   still return false, others now may, too.
5349    #[doc(alias = "GTK_FILTER_CHANGE_MORE_STRICT")]
5350    MoreStrict,
5351    /// Similar to [enum@Gtk.FilterChange.DIFFERENT],
5352    /// but signs that item watches should be recreated. This is used by
5353    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5354    /// change.
5355    #[cfg(feature = "v4_20")]
5356    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5357    #[doc(alias = "GTK_FILTER_CHANGE_DIFFERENT_REWATCH")]
5358    DifferentRewatch,
5359    /// Similar to [enum@Gtk.FilterChange.LESS_STRICT],
5360    /// but signs that item watches should be recreated. This is used by
5361    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5362    /// change.
5363    #[cfg(feature = "v4_20")]
5364    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5365    #[doc(alias = "GTK_FILTER_CHANGE_LESS_STRICT_REWATCH")]
5366    LessStrictRewatch,
5367    /// Similar to [enum@Gtk.FilterChange.MORE_STRICT],
5368    /// but signs that item watches should be recreated. This is used by
5369    /// [`FilterListModel`][crate::FilterListModel] to keep the list up-to-date when items
5370    /// change.
5371    #[cfg(feature = "v4_20")]
5372    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
5373    #[doc(alias = "GTK_FILTER_CHANGE_MORE_STRICT_REWATCH")]
5374    MoreStrictRewatch,
5375    #[doc(hidden)]
5376    __Unknown(i32),
5377}
5378
5379#[doc(hidden)]
5380impl IntoGlib for FilterChange {
5381    type GlibType = ffi::GtkFilterChange;
5382
5383    #[inline]
5384    fn into_glib(self) -> ffi::GtkFilterChange {
5385        match self {
5386            Self::Different => ffi::GTK_FILTER_CHANGE_DIFFERENT,
5387            Self::LessStrict => ffi::GTK_FILTER_CHANGE_LESS_STRICT,
5388            Self::MoreStrict => ffi::GTK_FILTER_CHANGE_MORE_STRICT,
5389            #[cfg(feature = "v4_20")]
5390            Self::DifferentRewatch => ffi::GTK_FILTER_CHANGE_DIFFERENT_REWATCH,
5391            #[cfg(feature = "v4_20")]
5392            Self::LessStrictRewatch => ffi::GTK_FILTER_CHANGE_LESS_STRICT_REWATCH,
5393            #[cfg(feature = "v4_20")]
5394            Self::MoreStrictRewatch => ffi::GTK_FILTER_CHANGE_MORE_STRICT_REWATCH,
5395            Self::__Unknown(value) => value,
5396        }
5397    }
5398}
5399
5400#[doc(hidden)]
5401impl FromGlib<ffi::GtkFilterChange> for FilterChange {
5402    #[inline]
5403    unsafe fn from_glib(value: ffi::GtkFilterChange) -> Self {
5404        skip_assert_initialized!();
5405
5406        match value {
5407            ffi::GTK_FILTER_CHANGE_DIFFERENT => Self::Different,
5408            ffi::GTK_FILTER_CHANGE_LESS_STRICT => Self::LessStrict,
5409            ffi::GTK_FILTER_CHANGE_MORE_STRICT => Self::MoreStrict,
5410            #[cfg(feature = "v4_20")]
5411            ffi::GTK_FILTER_CHANGE_DIFFERENT_REWATCH => Self::DifferentRewatch,
5412            #[cfg(feature = "v4_20")]
5413            ffi::GTK_FILTER_CHANGE_LESS_STRICT_REWATCH => Self::LessStrictRewatch,
5414            #[cfg(feature = "v4_20")]
5415            ffi::GTK_FILTER_CHANGE_MORE_STRICT_REWATCH => Self::MoreStrictRewatch,
5416            value => Self::__Unknown(value),
5417        }
5418    }
5419}
5420
5421impl StaticType for FilterChange {
5422    #[inline]
5423    #[doc(alias = "gtk_filter_change_get_type")]
5424    fn static_type() -> glib::Type {
5425        unsafe { from_glib(ffi::gtk_filter_change_get_type()) }
5426    }
5427}
5428
5429impl glib::HasParamSpec for FilterChange {
5430    type ParamSpec = glib::ParamSpecEnum;
5431    type SetValue = Self;
5432    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5433
5434    fn param_spec_builder() -> Self::BuilderFn {
5435        Self::ParamSpec::builder_with_default
5436    }
5437}
5438
5439impl glib::value::ValueType for FilterChange {
5440    type Type = Self;
5441}
5442
5443unsafe impl<'a> glib::value::FromValue<'a> for FilterChange {
5444    type Checker = glib::value::GenericValueTypeChecker<Self>;
5445
5446    #[inline]
5447    unsafe fn from_value(value: &'a glib::Value) -> Self {
5448        skip_assert_initialized!();
5449        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5450    }
5451}
5452
5453impl ToValue for FilterChange {
5454    #[inline]
5455    fn to_value(&self) -> glib::Value {
5456        let mut value = glib::Value::for_value_type::<Self>();
5457        unsafe {
5458            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5459        }
5460        value
5461    }
5462
5463    #[inline]
5464    fn value_type(&self) -> glib::Type {
5465        Self::static_type()
5466    }
5467}
5468
5469impl From<FilterChange> for glib::Value {
5470    #[inline]
5471    fn from(v: FilterChange) -> Self {
5472        skip_assert_initialized!();
5473        ToValue::to_value(&v)
5474    }
5475}
5476
5477/// Describes the known strictness of a filter.
5478///
5479/// Note that for filters where the strictness is not known,
5480/// `GTK_FILTER_MATCH_SOME` is always an acceptable value,
5481/// even if a filter does match all or no items.
5482#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5483#[non_exhaustive]
5484#[doc(alias = "GtkFilterMatch")]
5485pub enum FilterMatch {
5486    /// The filter matches some items,
5487    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] may return true or false
5488    #[doc(alias = "GTK_FILTER_MATCH_SOME")]
5489    Some,
5490    /// The filter does not match any item,
5491    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] will always return false
5492    #[doc(alias = "GTK_FILTER_MATCH_NONE")]
5493    None,
5494    /// The filter matches all items,
5495    ///   [`FilterExt::match_()`][crate::prelude::FilterExt::match_()] will alays return true
5496    #[doc(alias = "GTK_FILTER_MATCH_ALL")]
5497    All,
5498    #[doc(hidden)]
5499    __Unknown(i32),
5500}
5501
5502#[doc(hidden)]
5503impl IntoGlib for FilterMatch {
5504    type GlibType = ffi::GtkFilterMatch;
5505
5506    #[inline]
5507    fn into_glib(self) -> ffi::GtkFilterMatch {
5508        match self {
5509            Self::Some => ffi::GTK_FILTER_MATCH_SOME,
5510            Self::None => ffi::GTK_FILTER_MATCH_NONE,
5511            Self::All => ffi::GTK_FILTER_MATCH_ALL,
5512            Self::__Unknown(value) => value,
5513        }
5514    }
5515}
5516
5517#[doc(hidden)]
5518impl FromGlib<ffi::GtkFilterMatch> for FilterMatch {
5519    #[inline]
5520    unsafe fn from_glib(value: ffi::GtkFilterMatch) -> Self {
5521        skip_assert_initialized!();
5522
5523        match value {
5524            ffi::GTK_FILTER_MATCH_SOME => Self::Some,
5525            ffi::GTK_FILTER_MATCH_NONE => Self::None,
5526            ffi::GTK_FILTER_MATCH_ALL => Self::All,
5527            value => Self::__Unknown(value),
5528        }
5529    }
5530}
5531
5532impl StaticType for FilterMatch {
5533    #[inline]
5534    #[doc(alias = "gtk_filter_match_get_type")]
5535    fn static_type() -> glib::Type {
5536        unsafe { from_glib(ffi::gtk_filter_match_get_type()) }
5537    }
5538}
5539
5540impl glib::HasParamSpec for FilterMatch {
5541    type ParamSpec = glib::ParamSpecEnum;
5542    type SetValue = Self;
5543    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5544
5545    fn param_spec_builder() -> Self::BuilderFn {
5546        Self::ParamSpec::builder_with_default
5547    }
5548}
5549
5550impl glib::value::ValueType for FilterMatch {
5551    type Type = Self;
5552}
5553
5554unsafe impl<'a> glib::value::FromValue<'a> for FilterMatch {
5555    type Checker = glib::value::GenericValueTypeChecker<Self>;
5556
5557    #[inline]
5558    unsafe fn from_value(value: &'a glib::Value) -> Self {
5559        skip_assert_initialized!();
5560        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5561    }
5562}
5563
5564impl ToValue for FilterMatch {
5565    #[inline]
5566    fn to_value(&self) -> glib::Value {
5567        let mut value = glib::Value::for_value_type::<Self>();
5568        unsafe {
5569            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5570        }
5571        value
5572    }
5573
5574    #[inline]
5575    fn value_type(&self) -> glib::Type {
5576        Self::static_type()
5577    }
5578}
5579
5580impl From<FilterMatch> for glib::Value {
5581    #[inline]
5582    fn from(v: FilterMatch) -> Self {
5583        skip_assert_initialized!();
5584        ToValue::to_value(&v)
5585    }
5586}
5587
5588/// The level of granularity for the font selection.
5589///
5590/// Depending on this value, the [`pango::FontDescription`][crate::pango::FontDescription] that
5591/// is returned by [`FontDialogButton::font_desc()`][crate::FontDialogButton::font_desc()]
5592/// will have more or less fields set.
5593#[cfg(feature = "v4_10")]
5594#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5595#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5596#[non_exhaustive]
5597#[doc(alias = "GtkFontLevel")]
5598pub enum FontLevel {
5599    /// Select a font family
5600    #[doc(alias = "GTK_FONT_LEVEL_FAMILY")]
5601    Family,
5602    /// Select a font face (i.e. a family and a style)
5603    #[doc(alias = "GTK_FONT_LEVEL_FACE")]
5604    Face,
5605    /// Select a font (i.e. a face with a size, and possibly font variations)
5606    #[doc(alias = "GTK_FONT_LEVEL_FONT")]
5607    Font,
5608    /// Select a font and font features
5609    #[doc(alias = "GTK_FONT_LEVEL_FEATURES")]
5610    Features,
5611    #[doc(hidden)]
5612    __Unknown(i32),
5613}
5614
5615#[cfg(feature = "v4_10")]
5616#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5617#[doc(hidden)]
5618impl IntoGlib for FontLevel {
5619    type GlibType = ffi::GtkFontLevel;
5620
5621    #[inline]
5622    fn into_glib(self) -> ffi::GtkFontLevel {
5623        match self {
5624            Self::Family => ffi::GTK_FONT_LEVEL_FAMILY,
5625            Self::Face => ffi::GTK_FONT_LEVEL_FACE,
5626            Self::Font => ffi::GTK_FONT_LEVEL_FONT,
5627            Self::Features => ffi::GTK_FONT_LEVEL_FEATURES,
5628            Self::__Unknown(value) => value,
5629        }
5630    }
5631}
5632
5633#[cfg(feature = "v4_10")]
5634#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5635#[doc(hidden)]
5636impl FromGlib<ffi::GtkFontLevel> for FontLevel {
5637    #[inline]
5638    unsafe fn from_glib(value: ffi::GtkFontLevel) -> Self {
5639        skip_assert_initialized!();
5640
5641        match value {
5642            ffi::GTK_FONT_LEVEL_FAMILY => Self::Family,
5643            ffi::GTK_FONT_LEVEL_FACE => Self::Face,
5644            ffi::GTK_FONT_LEVEL_FONT => Self::Font,
5645            ffi::GTK_FONT_LEVEL_FEATURES => Self::Features,
5646            value => Self::__Unknown(value),
5647        }
5648    }
5649}
5650
5651#[cfg(feature = "v4_10")]
5652#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5653impl StaticType for FontLevel {
5654    #[inline]
5655    #[doc(alias = "gtk_font_level_get_type")]
5656    fn static_type() -> glib::Type {
5657        unsafe { from_glib(ffi::gtk_font_level_get_type()) }
5658    }
5659}
5660
5661#[cfg(feature = "v4_10")]
5662#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5663impl glib::HasParamSpec for FontLevel {
5664    type ParamSpec = glib::ParamSpecEnum;
5665    type SetValue = Self;
5666    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5667
5668    fn param_spec_builder() -> Self::BuilderFn {
5669        Self::ParamSpec::builder_with_default
5670    }
5671}
5672
5673#[cfg(feature = "v4_10")]
5674#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5675impl glib::value::ValueType for FontLevel {
5676    type Type = Self;
5677}
5678
5679#[cfg(feature = "v4_10")]
5680#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5681unsafe impl<'a> glib::value::FromValue<'a> for FontLevel {
5682    type Checker = glib::value::GenericValueTypeChecker<Self>;
5683
5684    #[inline]
5685    unsafe fn from_value(value: &'a glib::Value) -> Self {
5686        skip_assert_initialized!();
5687        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5688    }
5689}
5690
5691#[cfg(feature = "v4_10")]
5692#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5693impl ToValue for FontLevel {
5694    #[inline]
5695    fn to_value(&self) -> glib::Value {
5696        let mut value = glib::Value::for_value_type::<Self>();
5697        unsafe {
5698            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5699        }
5700        value
5701    }
5702
5703    #[inline]
5704    fn value_type(&self) -> glib::Type {
5705        Self::static_type()
5706    }
5707}
5708
5709#[cfg(feature = "v4_10")]
5710#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
5711impl From<FontLevel> for glib::Value {
5712    #[inline]
5713    fn from(v: FontLevel) -> Self {
5714        skip_assert_initialized!();
5715        ToValue::to_value(&v)
5716    }
5717}
5718
5719/// Values for the [`gtk-font-rendering`][struct@crate::Settings#gtk-font-rendering] setting
5720/// that influence how GTK renders fonts.
5721#[cfg(feature = "v4_16")]
5722#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5723#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5724#[non_exhaustive]
5725#[doc(alias = "GtkFontRendering")]
5726pub enum FontRendering {
5727    /// Set up font rendering automatically,
5728    ///   taking factors like screen resolution and scale into account
5729    #[doc(alias = "GTK_FONT_RENDERING_AUTOMATIC")]
5730    Automatic,
5731    /// Follow low-level font-related settings
5732    ///   when configuring font rendering
5733    #[doc(alias = "GTK_FONT_RENDERING_MANUAL")]
5734    Manual,
5735    #[doc(hidden)]
5736    __Unknown(i32),
5737}
5738
5739#[cfg(feature = "v4_16")]
5740#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5741#[doc(hidden)]
5742impl IntoGlib for FontRendering {
5743    type GlibType = ffi::GtkFontRendering;
5744
5745    #[inline]
5746    fn into_glib(self) -> ffi::GtkFontRendering {
5747        match self {
5748            Self::Automatic => ffi::GTK_FONT_RENDERING_AUTOMATIC,
5749            Self::Manual => ffi::GTK_FONT_RENDERING_MANUAL,
5750            Self::__Unknown(value) => value,
5751        }
5752    }
5753}
5754
5755#[cfg(feature = "v4_16")]
5756#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5757#[doc(hidden)]
5758impl FromGlib<ffi::GtkFontRendering> for FontRendering {
5759    #[inline]
5760    unsafe fn from_glib(value: ffi::GtkFontRendering) -> Self {
5761        skip_assert_initialized!();
5762
5763        match value {
5764            ffi::GTK_FONT_RENDERING_AUTOMATIC => Self::Automatic,
5765            ffi::GTK_FONT_RENDERING_MANUAL => Self::Manual,
5766            value => Self::__Unknown(value),
5767        }
5768    }
5769}
5770
5771#[cfg(feature = "v4_16")]
5772#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5773impl StaticType for FontRendering {
5774    #[inline]
5775    #[doc(alias = "gtk_font_rendering_get_type")]
5776    fn static_type() -> glib::Type {
5777        unsafe { from_glib(ffi::gtk_font_rendering_get_type()) }
5778    }
5779}
5780
5781#[cfg(feature = "v4_16")]
5782#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5783impl glib::HasParamSpec for FontRendering {
5784    type ParamSpec = glib::ParamSpecEnum;
5785    type SetValue = Self;
5786    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5787
5788    fn param_spec_builder() -> Self::BuilderFn {
5789        Self::ParamSpec::builder_with_default
5790    }
5791}
5792
5793#[cfg(feature = "v4_16")]
5794#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5795impl glib::value::ValueType for FontRendering {
5796    type Type = Self;
5797}
5798
5799#[cfg(feature = "v4_16")]
5800#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5801unsafe impl<'a> glib::value::FromValue<'a> for FontRendering {
5802    type Checker = glib::value::GenericValueTypeChecker<Self>;
5803
5804    #[inline]
5805    unsafe fn from_value(value: &'a glib::Value) -> Self {
5806        skip_assert_initialized!();
5807        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5808    }
5809}
5810
5811#[cfg(feature = "v4_16")]
5812#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5813impl ToValue for FontRendering {
5814    #[inline]
5815    fn to_value(&self) -> glib::Value {
5816        let mut value = glib::Value::for_value_type::<Self>();
5817        unsafe {
5818            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5819        }
5820        value
5821    }
5822
5823    #[inline]
5824    fn value_type(&self) -> glib::Type {
5825        Self::static_type()
5826    }
5827}
5828
5829#[cfg(feature = "v4_16")]
5830#[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
5831impl From<FontRendering> for glib::Value {
5832    #[inline]
5833    fn from(v: FontRendering) -> Self {
5834        skip_assert_initialized!();
5835        ToValue::to_value(&v)
5836    }
5837}
5838
5839/// Represents the state of graphics offloading.
5840#[cfg(feature = "v4_14")]
5841#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5842#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5843#[non_exhaustive]
5844#[doc(alias = "GtkGraphicsOffloadEnabled")]
5845pub enum GraphicsOffloadEnabled {
5846    /// Graphics offloading is enabled.
5847    #[doc(alias = "GTK_GRAPHICS_OFFLOAD_ENABLED")]
5848    Enabled,
5849    /// Graphics offloading is disabled.
5850    #[doc(alias = "GTK_GRAPHICS_OFFLOAD_DISABLED")]
5851    Disabled,
5852    #[doc(hidden)]
5853    __Unknown(i32),
5854}
5855
5856#[cfg(feature = "v4_14")]
5857#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5858#[doc(hidden)]
5859impl IntoGlib for GraphicsOffloadEnabled {
5860    type GlibType = ffi::GtkGraphicsOffloadEnabled;
5861
5862    #[inline]
5863    fn into_glib(self) -> ffi::GtkGraphicsOffloadEnabled {
5864        match self {
5865            Self::Enabled => ffi::GTK_GRAPHICS_OFFLOAD_ENABLED,
5866            Self::Disabled => ffi::GTK_GRAPHICS_OFFLOAD_DISABLED,
5867            Self::__Unknown(value) => value,
5868        }
5869    }
5870}
5871
5872#[cfg(feature = "v4_14")]
5873#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5874#[doc(hidden)]
5875impl FromGlib<ffi::GtkGraphicsOffloadEnabled> for GraphicsOffloadEnabled {
5876    #[inline]
5877    unsafe fn from_glib(value: ffi::GtkGraphicsOffloadEnabled) -> Self {
5878        skip_assert_initialized!();
5879
5880        match value {
5881            ffi::GTK_GRAPHICS_OFFLOAD_ENABLED => Self::Enabled,
5882            ffi::GTK_GRAPHICS_OFFLOAD_DISABLED => Self::Disabled,
5883            value => Self::__Unknown(value),
5884        }
5885    }
5886}
5887
5888#[cfg(feature = "v4_14")]
5889#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5890impl StaticType for GraphicsOffloadEnabled {
5891    #[inline]
5892    #[doc(alias = "gtk_graphics_offload_enabled_get_type")]
5893    fn static_type() -> glib::Type {
5894        unsafe { from_glib(ffi::gtk_graphics_offload_enabled_get_type()) }
5895    }
5896}
5897
5898#[cfg(feature = "v4_14")]
5899#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5900impl glib::HasParamSpec for GraphicsOffloadEnabled {
5901    type ParamSpec = glib::ParamSpecEnum;
5902    type SetValue = Self;
5903    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5904
5905    fn param_spec_builder() -> Self::BuilderFn {
5906        Self::ParamSpec::builder_with_default
5907    }
5908}
5909
5910#[cfg(feature = "v4_14")]
5911#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5912impl glib::value::ValueType for GraphicsOffloadEnabled {
5913    type Type = Self;
5914}
5915
5916#[cfg(feature = "v4_14")]
5917#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5918unsafe impl<'a> glib::value::FromValue<'a> for GraphicsOffloadEnabled {
5919    type Checker = glib::value::GenericValueTypeChecker<Self>;
5920
5921    #[inline]
5922    unsafe fn from_value(value: &'a glib::Value) -> Self {
5923        skip_assert_initialized!();
5924        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5925    }
5926}
5927
5928#[cfg(feature = "v4_14")]
5929#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5930impl ToValue for GraphicsOffloadEnabled {
5931    #[inline]
5932    fn to_value(&self) -> glib::Value {
5933        let mut value = glib::Value::for_value_type::<Self>();
5934        unsafe {
5935            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5936        }
5937        value
5938    }
5939
5940    #[inline]
5941    fn value_type(&self) -> glib::Type {
5942        Self::static_type()
5943    }
5944}
5945
5946#[cfg(feature = "v4_14")]
5947#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
5948impl From<GraphicsOffloadEnabled> for glib::Value {
5949    #[inline]
5950    fn from(v: GraphicsOffloadEnabled) -> Self {
5951        skip_assert_initialized!();
5952        ToValue::to_value(&v)
5953    }
5954}
5955
5956/// Built-in icon sizes.
5957///
5958/// Icon sizes default to being inherited. Where they cannot be
5959/// inherited, text size is the default.
5960///
5961/// All widgets which use [`IconSize`][crate::IconSize] set the normal-icons or
5962/// large-icons style classes correspondingly, and let themes
5963/// determine the actual size to be used with the
5964/// `-gtk-icon-size` CSS property.
5965#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5966#[non_exhaustive]
5967#[doc(alias = "GtkIconSize")]
5968pub enum IconSize {
5969    /// Keep the size of the parent element
5970    #[doc(alias = "GTK_ICON_SIZE_INHERIT")]
5971    Inherit,
5972    /// Size similar to text size
5973    #[doc(alias = "GTK_ICON_SIZE_NORMAL")]
5974    Normal,
5975    /// Large size, for example in an icon view
5976    #[doc(alias = "GTK_ICON_SIZE_LARGE")]
5977    Large,
5978    #[doc(hidden)]
5979    __Unknown(i32),
5980}
5981
5982#[doc(hidden)]
5983impl IntoGlib for IconSize {
5984    type GlibType = ffi::GtkIconSize;
5985
5986    #[inline]
5987    fn into_glib(self) -> ffi::GtkIconSize {
5988        match self {
5989            Self::Inherit => ffi::GTK_ICON_SIZE_INHERIT,
5990            Self::Normal => ffi::GTK_ICON_SIZE_NORMAL,
5991            Self::Large => ffi::GTK_ICON_SIZE_LARGE,
5992            Self::__Unknown(value) => value,
5993        }
5994    }
5995}
5996
5997#[doc(hidden)]
5998impl FromGlib<ffi::GtkIconSize> for IconSize {
5999    #[inline]
6000    unsafe fn from_glib(value: ffi::GtkIconSize) -> Self {
6001        skip_assert_initialized!();
6002
6003        match value {
6004            ffi::GTK_ICON_SIZE_INHERIT => Self::Inherit,
6005            ffi::GTK_ICON_SIZE_NORMAL => Self::Normal,
6006            ffi::GTK_ICON_SIZE_LARGE => Self::Large,
6007            value => Self::__Unknown(value),
6008        }
6009    }
6010}
6011
6012impl StaticType for IconSize {
6013    #[inline]
6014    #[doc(alias = "gtk_icon_size_get_type")]
6015    fn static_type() -> glib::Type {
6016        unsafe { from_glib(ffi::gtk_icon_size_get_type()) }
6017    }
6018}
6019
6020impl glib::HasParamSpec for IconSize {
6021    type ParamSpec = glib::ParamSpecEnum;
6022    type SetValue = Self;
6023    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6024
6025    fn param_spec_builder() -> Self::BuilderFn {
6026        Self::ParamSpec::builder_with_default
6027    }
6028}
6029
6030impl glib::value::ValueType for IconSize {
6031    type Type = Self;
6032}
6033
6034unsafe impl<'a> glib::value::FromValue<'a> for IconSize {
6035    type Checker = glib::value::GenericValueTypeChecker<Self>;
6036
6037    #[inline]
6038    unsafe fn from_value(value: &'a glib::Value) -> Self {
6039        skip_assert_initialized!();
6040        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6041    }
6042}
6043
6044impl ToValue for IconSize {
6045    #[inline]
6046    fn to_value(&self) -> glib::Value {
6047        let mut value = glib::Value::for_value_type::<Self>();
6048        unsafe {
6049            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6050        }
6051        value
6052    }
6053
6054    #[inline]
6055    fn value_type(&self) -> glib::Type {
6056        Self::static_type()
6057    }
6058}
6059
6060impl From<IconSize> for glib::Value {
6061    #[inline]
6062    fn from(v: IconSize) -> Self {
6063        skip_assert_initialized!();
6064        ToValue::to_value(&v)
6065    }
6066}
6067
6068/// Error codes for [`IconTheme`][crate::IconTheme] operations.
6069#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6070#[non_exhaustive]
6071#[doc(alias = "GtkIconThemeError")]
6072pub enum IconThemeError {
6073    /// The icon specified does not exist in the theme
6074    #[doc(alias = "GTK_ICON_THEME_NOT_FOUND")]
6075    NotFound,
6076    /// An unspecified error occurred.
6077    #[doc(alias = "GTK_ICON_THEME_FAILED")]
6078    Failed,
6079    #[doc(hidden)]
6080    __Unknown(i32),
6081}
6082
6083#[doc(hidden)]
6084impl IntoGlib for IconThemeError {
6085    type GlibType = ffi::GtkIconThemeError;
6086
6087    #[inline]
6088    fn into_glib(self) -> ffi::GtkIconThemeError {
6089        match self {
6090            Self::NotFound => ffi::GTK_ICON_THEME_NOT_FOUND,
6091            Self::Failed => ffi::GTK_ICON_THEME_FAILED,
6092            Self::__Unknown(value) => value,
6093        }
6094    }
6095}
6096
6097#[doc(hidden)]
6098impl FromGlib<ffi::GtkIconThemeError> for IconThemeError {
6099    #[inline]
6100    unsafe fn from_glib(value: ffi::GtkIconThemeError) -> Self {
6101        skip_assert_initialized!();
6102
6103        match value {
6104            ffi::GTK_ICON_THEME_NOT_FOUND => Self::NotFound,
6105            ffi::GTK_ICON_THEME_FAILED => Self::Failed,
6106            value => Self::__Unknown(value),
6107        }
6108    }
6109}
6110
6111impl glib::error::ErrorDomain for IconThemeError {
6112    #[inline]
6113    fn domain() -> glib::Quark {
6114        skip_assert_initialized!();
6115
6116        unsafe { from_glib(ffi::gtk_icon_theme_error_quark()) }
6117    }
6118
6119    #[inline]
6120    fn code(self) -> i32 {
6121        self.into_glib()
6122    }
6123
6124    #[inline]
6125    #[allow(clippy::match_single_binding)]
6126    fn from(code: i32) -> Option<Self> {
6127        skip_assert_initialized!();
6128        match unsafe { from_glib(code) } {
6129            Self::__Unknown(_) => Some(Self::Failed),
6130            value => Some(value),
6131        }
6132    }
6133}
6134
6135impl StaticType for IconThemeError {
6136    #[inline]
6137    #[doc(alias = "gtk_icon_theme_error_get_type")]
6138    fn static_type() -> glib::Type {
6139        unsafe { from_glib(ffi::gtk_icon_theme_error_get_type()) }
6140    }
6141}
6142
6143impl glib::HasParamSpec for IconThemeError {
6144    type ParamSpec = glib::ParamSpecEnum;
6145    type SetValue = Self;
6146    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6147
6148    fn param_spec_builder() -> Self::BuilderFn {
6149        Self::ParamSpec::builder_with_default
6150    }
6151}
6152
6153impl glib::value::ValueType for IconThemeError {
6154    type Type = Self;
6155}
6156
6157unsafe impl<'a> glib::value::FromValue<'a> for IconThemeError {
6158    type Checker = glib::value::GenericValueTypeChecker<Self>;
6159
6160    #[inline]
6161    unsafe fn from_value(value: &'a glib::Value) -> Self {
6162        skip_assert_initialized!();
6163        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6164    }
6165}
6166
6167impl ToValue for IconThemeError {
6168    #[inline]
6169    fn to_value(&self) -> glib::Value {
6170        let mut value = glib::Value::for_value_type::<Self>();
6171        unsafe {
6172            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6173        }
6174        value
6175    }
6176
6177    #[inline]
6178    fn value_type(&self) -> glib::Type {
6179        Self::static_type()
6180    }
6181}
6182
6183impl From<IconThemeError> for glib::Value {
6184    #[inline]
6185    fn from(v: IconThemeError) -> Self {
6186        skip_assert_initialized!();
6187        ToValue::to_value(&v)
6188    }
6189}
6190
6191/// An enum for determining where a dropped item goes.
6192///
6193/// # Deprecated since 4.20
6194///
6195/// There is no replacement.
6196#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
6197#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6198#[non_exhaustive]
6199#[doc(alias = "GtkIconViewDropPosition")]
6200pub enum IconViewDropPosition {
6201    /// no drop possible
6202    #[doc(alias = "GTK_ICON_VIEW_NO_DROP")]
6203    NoDrop,
6204    /// dropped item replaces the item
6205    #[doc(alias = "GTK_ICON_VIEW_DROP_INTO")]
6206    DropInto,
6207    /// dropped item is inserted to the left
6208    #[doc(alias = "GTK_ICON_VIEW_DROP_LEFT")]
6209    DropLeft,
6210    /// dropped item is inserted to the right
6211    #[doc(alias = "GTK_ICON_VIEW_DROP_RIGHT")]
6212    DropRight,
6213    /// dropped item is inserted above
6214    #[doc(alias = "GTK_ICON_VIEW_DROP_ABOVE")]
6215    DropAbove,
6216    /// dropped item is inserted below
6217    #[doc(alias = "GTK_ICON_VIEW_DROP_BELOW")]
6218    DropBelow,
6219    #[doc(hidden)]
6220    __Unknown(i32),
6221}
6222
6223#[allow(deprecated)]
6224#[doc(hidden)]
6225impl IntoGlib for IconViewDropPosition {
6226    type GlibType = ffi::GtkIconViewDropPosition;
6227
6228    #[inline]
6229    fn into_glib(self) -> ffi::GtkIconViewDropPosition {
6230        match self {
6231            Self::NoDrop => ffi::GTK_ICON_VIEW_NO_DROP,
6232            Self::DropInto => ffi::GTK_ICON_VIEW_DROP_INTO,
6233            Self::DropLeft => ffi::GTK_ICON_VIEW_DROP_LEFT,
6234            Self::DropRight => ffi::GTK_ICON_VIEW_DROP_RIGHT,
6235            Self::DropAbove => ffi::GTK_ICON_VIEW_DROP_ABOVE,
6236            Self::DropBelow => ffi::GTK_ICON_VIEW_DROP_BELOW,
6237            Self::__Unknown(value) => value,
6238        }
6239    }
6240}
6241
6242#[allow(deprecated)]
6243#[doc(hidden)]
6244impl FromGlib<ffi::GtkIconViewDropPosition> for IconViewDropPosition {
6245    #[inline]
6246    unsafe fn from_glib(value: ffi::GtkIconViewDropPosition) -> Self {
6247        skip_assert_initialized!();
6248
6249        match value {
6250            ffi::GTK_ICON_VIEW_NO_DROP => Self::NoDrop,
6251            ffi::GTK_ICON_VIEW_DROP_INTO => Self::DropInto,
6252            ffi::GTK_ICON_VIEW_DROP_LEFT => Self::DropLeft,
6253            ffi::GTK_ICON_VIEW_DROP_RIGHT => Self::DropRight,
6254            ffi::GTK_ICON_VIEW_DROP_ABOVE => Self::DropAbove,
6255            ffi::GTK_ICON_VIEW_DROP_BELOW => Self::DropBelow,
6256            value => Self::__Unknown(value),
6257        }
6258    }
6259}
6260
6261#[allow(deprecated)]
6262impl StaticType for IconViewDropPosition {
6263    #[inline]
6264    #[doc(alias = "gtk_icon_view_drop_position_get_type")]
6265    fn static_type() -> glib::Type {
6266        unsafe { from_glib(ffi::gtk_icon_view_drop_position_get_type()) }
6267    }
6268}
6269
6270#[allow(deprecated)]
6271impl glib::HasParamSpec for IconViewDropPosition {
6272    type ParamSpec = glib::ParamSpecEnum;
6273    type SetValue = Self;
6274    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6275
6276    fn param_spec_builder() -> Self::BuilderFn {
6277        Self::ParamSpec::builder_with_default
6278    }
6279}
6280
6281#[allow(deprecated)]
6282impl glib::value::ValueType for IconViewDropPosition {
6283    type Type = Self;
6284}
6285
6286#[allow(deprecated)]
6287unsafe impl<'a> glib::value::FromValue<'a> for IconViewDropPosition {
6288    type Checker = glib::value::GenericValueTypeChecker<Self>;
6289
6290    #[inline]
6291    unsafe fn from_value(value: &'a glib::Value) -> Self {
6292        skip_assert_initialized!();
6293        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6294    }
6295}
6296
6297#[allow(deprecated)]
6298impl ToValue for IconViewDropPosition {
6299    #[inline]
6300    fn to_value(&self) -> glib::Value {
6301        let mut value = glib::Value::for_value_type::<Self>();
6302        unsafe {
6303            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6304        }
6305        value
6306    }
6307
6308    #[inline]
6309    fn value_type(&self) -> glib::Type {
6310        Self::static_type()
6311    }
6312}
6313
6314#[allow(deprecated)]
6315impl From<IconViewDropPosition> for glib::Value {
6316    #[inline]
6317    fn from(v: IconViewDropPosition) -> Self {
6318        skip_assert_initialized!();
6319        ToValue::to_value(&v)
6320    }
6321}
6322
6323/// Describes the image data representation used by a [`Image`][crate::Image].
6324///
6325/// If you want to get the image from the widget, you can only get the
6326/// currently-stored representation; for instance, if the gtk_image_get_storage_type()
6327/// returns [`Paintable`][Self::Paintable], then you can call gtk_image_get_paintable().
6328///
6329/// For empty images, you can request any storage type (call any of the "get"
6330/// functions), but they will all return [`None`] values.
6331#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6332#[non_exhaustive]
6333#[doc(alias = "GtkImageType")]
6334pub enum ImageType {
6335    /// there is no image displayed by the widget
6336    #[doc(alias = "GTK_IMAGE_EMPTY")]
6337    Empty,
6338    /// the widget contains a named icon
6339    #[doc(alias = "GTK_IMAGE_ICON_NAME")]
6340    IconName,
6341    /// the widget contains a `GIcon`
6342    #[doc(alias = "GTK_IMAGE_GICON")]
6343    Gicon,
6344    /// the widget contains a [`gdk::Paintable`][crate::gdk::Paintable]
6345    #[doc(alias = "GTK_IMAGE_PAINTABLE")]
6346    Paintable,
6347    #[doc(hidden)]
6348    __Unknown(i32),
6349}
6350
6351#[doc(hidden)]
6352impl IntoGlib for ImageType {
6353    type GlibType = ffi::GtkImageType;
6354
6355    #[inline]
6356    fn into_glib(self) -> ffi::GtkImageType {
6357        match self {
6358            Self::Empty => ffi::GTK_IMAGE_EMPTY,
6359            Self::IconName => ffi::GTK_IMAGE_ICON_NAME,
6360            Self::Gicon => ffi::GTK_IMAGE_GICON,
6361            Self::Paintable => ffi::GTK_IMAGE_PAINTABLE,
6362            Self::__Unknown(value) => value,
6363        }
6364    }
6365}
6366
6367#[doc(hidden)]
6368impl FromGlib<ffi::GtkImageType> for ImageType {
6369    #[inline]
6370    unsafe fn from_glib(value: ffi::GtkImageType) -> Self {
6371        skip_assert_initialized!();
6372
6373        match value {
6374            ffi::GTK_IMAGE_EMPTY => Self::Empty,
6375            ffi::GTK_IMAGE_ICON_NAME => Self::IconName,
6376            ffi::GTK_IMAGE_GICON => Self::Gicon,
6377            ffi::GTK_IMAGE_PAINTABLE => Self::Paintable,
6378            value => Self::__Unknown(value),
6379        }
6380    }
6381}
6382
6383impl StaticType for ImageType {
6384    #[inline]
6385    #[doc(alias = "gtk_image_type_get_type")]
6386    fn static_type() -> glib::Type {
6387        unsafe { from_glib(ffi::gtk_image_type_get_type()) }
6388    }
6389}
6390
6391impl glib::HasParamSpec for ImageType {
6392    type ParamSpec = glib::ParamSpecEnum;
6393    type SetValue = Self;
6394    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6395
6396    fn param_spec_builder() -> Self::BuilderFn {
6397        Self::ParamSpec::builder_with_default
6398    }
6399}
6400
6401impl glib::value::ValueType for ImageType {
6402    type Type = Self;
6403}
6404
6405unsafe impl<'a> glib::value::FromValue<'a> for ImageType {
6406    type Checker = glib::value::GenericValueTypeChecker<Self>;
6407
6408    #[inline]
6409    unsafe fn from_value(value: &'a glib::Value) -> Self {
6410        skip_assert_initialized!();
6411        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6412    }
6413}
6414
6415impl ToValue for ImageType {
6416    #[inline]
6417    fn to_value(&self) -> glib::Value {
6418        let mut value = glib::Value::for_value_type::<Self>();
6419        unsafe {
6420            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6421        }
6422        value
6423    }
6424
6425    #[inline]
6426    fn value_type(&self) -> glib::Type {
6427        Self::static_type()
6428    }
6429}
6430
6431impl From<ImageType> for glib::Value {
6432    #[inline]
6433    fn from(v: ImageType) -> Self {
6434        skip_assert_initialized!();
6435        ToValue::to_value(&v)
6436    }
6437}
6438
6439/// .
6440#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6441#[non_exhaustive]
6442#[doc(alias = "GtkInputPurpose")]
6443pub enum InputPurpose {
6444    /// Allow any character
6445    #[doc(alias = "GTK_INPUT_PURPOSE_FREE_FORM")]
6446    FreeForm,
6447    /// Allow only alphabetic characters
6448    #[doc(alias = "GTK_INPUT_PURPOSE_ALPHA")]
6449    Alpha,
6450    /// Allow only digits
6451    #[doc(alias = "GTK_INPUT_PURPOSE_DIGITS")]
6452    Digits,
6453    /// Edited field expects numbers
6454    #[doc(alias = "GTK_INPUT_PURPOSE_NUMBER")]
6455    Number,
6456    /// Edited field expects phone number
6457    #[doc(alias = "GTK_INPUT_PURPOSE_PHONE")]
6458    Phone,
6459    /// Edited field expects URL
6460    #[doc(alias = "GTK_INPUT_PURPOSE_URL")]
6461    Url,
6462    /// Edited field expects email address
6463    #[doc(alias = "GTK_INPUT_PURPOSE_EMAIL")]
6464    Email,
6465    /// Edited field expects the name of a person
6466    #[doc(alias = "GTK_INPUT_PURPOSE_NAME")]
6467    Name,
6468    /// Like [`FreeForm`][Self::FreeForm], but characters are hidden
6469    #[doc(alias = "GTK_INPUT_PURPOSE_PASSWORD")]
6470    Password,
6471    /// Like [`Digits`][Self::Digits], but characters are hidden
6472    #[doc(alias = "GTK_INPUT_PURPOSE_PIN")]
6473    Pin,
6474    /// Allow any character, in addition to control codes
6475    #[doc(alias = "GTK_INPUT_PURPOSE_TERMINAL")]
6476    Terminal,
6477    #[doc(hidden)]
6478    __Unknown(i32),
6479}
6480
6481#[doc(hidden)]
6482impl IntoGlib for InputPurpose {
6483    type GlibType = ffi::GtkInputPurpose;
6484
6485    #[inline]
6486    fn into_glib(self) -> ffi::GtkInputPurpose {
6487        match self {
6488            Self::FreeForm => ffi::GTK_INPUT_PURPOSE_FREE_FORM,
6489            Self::Alpha => ffi::GTK_INPUT_PURPOSE_ALPHA,
6490            Self::Digits => ffi::GTK_INPUT_PURPOSE_DIGITS,
6491            Self::Number => ffi::GTK_INPUT_PURPOSE_NUMBER,
6492            Self::Phone => ffi::GTK_INPUT_PURPOSE_PHONE,
6493            Self::Url => ffi::GTK_INPUT_PURPOSE_URL,
6494            Self::Email => ffi::GTK_INPUT_PURPOSE_EMAIL,
6495            Self::Name => ffi::GTK_INPUT_PURPOSE_NAME,
6496            Self::Password => ffi::GTK_INPUT_PURPOSE_PASSWORD,
6497            Self::Pin => ffi::GTK_INPUT_PURPOSE_PIN,
6498            Self::Terminal => ffi::GTK_INPUT_PURPOSE_TERMINAL,
6499            Self::__Unknown(value) => value,
6500        }
6501    }
6502}
6503
6504#[doc(hidden)]
6505impl FromGlib<ffi::GtkInputPurpose> for InputPurpose {
6506    #[inline]
6507    unsafe fn from_glib(value: ffi::GtkInputPurpose) -> Self {
6508        skip_assert_initialized!();
6509
6510        match value {
6511            ffi::GTK_INPUT_PURPOSE_FREE_FORM => Self::FreeForm,
6512            ffi::GTK_INPUT_PURPOSE_ALPHA => Self::Alpha,
6513            ffi::GTK_INPUT_PURPOSE_DIGITS => Self::Digits,
6514            ffi::GTK_INPUT_PURPOSE_NUMBER => Self::Number,
6515            ffi::GTK_INPUT_PURPOSE_PHONE => Self::Phone,
6516            ffi::GTK_INPUT_PURPOSE_URL => Self::Url,
6517            ffi::GTK_INPUT_PURPOSE_EMAIL => Self::Email,
6518            ffi::GTK_INPUT_PURPOSE_NAME => Self::Name,
6519            ffi::GTK_INPUT_PURPOSE_PASSWORD => Self::Password,
6520            ffi::GTK_INPUT_PURPOSE_PIN => Self::Pin,
6521            ffi::GTK_INPUT_PURPOSE_TERMINAL => Self::Terminal,
6522            value => Self::__Unknown(value),
6523        }
6524    }
6525}
6526
6527impl StaticType for InputPurpose {
6528    #[inline]
6529    #[doc(alias = "gtk_input_purpose_get_type")]
6530    fn static_type() -> glib::Type {
6531        unsafe { from_glib(ffi::gtk_input_purpose_get_type()) }
6532    }
6533}
6534
6535impl glib::HasParamSpec for InputPurpose {
6536    type ParamSpec = glib::ParamSpecEnum;
6537    type SetValue = Self;
6538    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6539
6540    fn param_spec_builder() -> Self::BuilderFn {
6541        Self::ParamSpec::builder_with_default
6542    }
6543}
6544
6545impl glib::value::ValueType for InputPurpose {
6546    type Type = Self;
6547}
6548
6549unsafe impl<'a> glib::value::FromValue<'a> for InputPurpose {
6550    type Checker = glib::value::GenericValueTypeChecker<Self>;
6551
6552    #[inline]
6553    unsafe fn from_value(value: &'a glib::Value) -> Self {
6554        skip_assert_initialized!();
6555        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6556    }
6557}
6558
6559impl ToValue for InputPurpose {
6560    #[inline]
6561    fn to_value(&self) -> glib::Value {
6562        let mut value = glib::Value::for_value_type::<Self>();
6563        unsafe {
6564            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6565        }
6566        value
6567    }
6568
6569    #[inline]
6570    fn value_type(&self) -> glib::Type {
6571        Self::static_type()
6572    }
6573}
6574
6575impl From<InputPurpose> for glib::Value {
6576    #[inline]
6577    fn from(v: InputPurpose) -> Self {
6578        skip_assert_initialized!();
6579        ToValue::to_value(&v)
6580    }
6581}
6582
6583/// The different methods to handle text in #GtkInscription when it doesn't
6584/// fit the available space.
6585#[cfg(feature = "v4_8")]
6586#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6587#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6588#[non_exhaustive]
6589#[doc(alias = "GtkInscriptionOverflow")]
6590pub enum InscriptionOverflow {
6591    /// Clip the remaining text
6592    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_CLIP")]
6593    Clip,
6594    /// Omit characters at the start of the text
6595    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START")]
6596    EllipsizeStart,
6597    /// Omit characters at the middle of the text
6598    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE")]
6599    EllipsizeMiddle,
6600    /// Omit characters at the end of the text
6601    #[doc(alias = "GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END")]
6602    EllipsizeEnd,
6603    #[doc(hidden)]
6604    __Unknown(i32),
6605}
6606
6607#[cfg(feature = "v4_8")]
6608#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6609#[doc(hidden)]
6610impl IntoGlib for InscriptionOverflow {
6611    type GlibType = ffi::GtkInscriptionOverflow;
6612
6613    #[inline]
6614    fn into_glib(self) -> ffi::GtkInscriptionOverflow {
6615        match self {
6616            Self::Clip => ffi::GTK_INSCRIPTION_OVERFLOW_CLIP,
6617            Self::EllipsizeStart => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START,
6618            Self::EllipsizeMiddle => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE,
6619            Self::EllipsizeEnd => ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END,
6620            Self::__Unknown(value) => value,
6621        }
6622    }
6623}
6624
6625#[cfg(feature = "v4_8")]
6626#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6627#[doc(hidden)]
6628impl FromGlib<ffi::GtkInscriptionOverflow> for InscriptionOverflow {
6629    #[inline]
6630    unsafe fn from_glib(value: ffi::GtkInscriptionOverflow) -> Self {
6631        skip_assert_initialized!();
6632
6633        match value {
6634            ffi::GTK_INSCRIPTION_OVERFLOW_CLIP => Self::Clip,
6635            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_START => Self::EllipsizeStart,
6636            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_MIDDLE => Self::EllipsizeMiddle,
6637            ffi::GTK_INSCRIPTION_OVERFLOW_ELLIPSIZE_END => Self::EllipsizeEnd,
6638            value => Self::__Unknown(value),
6639        }
6640    }
6641}
6642
6643#[cfg(feature = "v4_8")]
6644#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6645impl StaticType for InscriptionOverflow {
6646    #[inline]
6647    #[doc(alias = "gtk_inscription_overflow_get_type")]
6648    fn static_type() -> glib::Type {
6649        unsafe { from_glib(ffi::gtk_inscription_overflow_get_type()) }
6650    }
6651}
6652
6653#[cfg(feature = "v4_8")]
6654#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6655impl glib::HasParamSpec for InscriptionOverflow {
6656    type ParamSpec = glib::ParamSpecEnum;
6657    type SetValue = Self;
6658    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6659
6660    fn param_spec_builder() -> Self::BuilderFn {
6661        Self::ParamSpec::builder_with_default
6662    }
6663}
6664
6665#[cfg(feature = "v4_8")]
6666#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6667impl glib::value::ValueType for InscriptionOverflow {
6668    type Type = Self;
6669}
6670
6671#[cfg(feature = "v4_8")]
6672#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6673unsafe impl<'a> glib::value::FromValue<'a> for InscriptionOverflow {
6674    type Checker = glib::value::GenericValueTypeChecker<Self>;
6675
6676    #[inline]
6677    unsafe fn from_value(value: &'a glib::Value) -> Self {
6678        skip_assert_initialized!();
6679        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6680    }
6681}
6682
6683#[cfg(feature = "v4_8")]
6684#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6685impl ToValue for InscriptionOverflow {
6686    #[inline]
6687    fn to_value(&self) -> glib::Value {
6688        let mut value = glib::Value::for_value_type::<Self>();
6689        unsafe {
6690            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6691        }
6692        value
6693    }
6694
6695    #[inline]
6696    fn value_type(&self) -> glib::Type {
6697        Self::static_type()
6698    }
6699}
6700
6701#[cfg(feature = "v4_8")]
6702#[cfg_attr(docsrs, doc(cfg(feature = "v4_8")))]
6703impl From<InscriptionOverflow> for glib::Value {
6704    #[inline]
6705    fn from(v: InscriptionOverflow) -> Self {
6706        skip_assert_initialized!();
6707        ToValue::to_value(&v)
6708    }
6709}
6710
6711/// Values for the [`gtk-interface-color-scheme`][struct@crate::Settings#gtk-interface-color-scheme]
6712/// and [`prefers-color-scheme`][struct@crate::CssProvider#prefers-color-scheme] properties
6713/// that indicates what color scheme is used.
6714///
6715/// This information can be used inside CSS via media queries.
6716///
6717/// More values may be added to this enumeration. Unknown values
6718/// should be treated the same as `GTK_INTERFACE_COLOR_SCHEME_DEFAULT`.
6719#[cfg(feature = "v4_20")]
6720#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6721#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6722#[non_exhaustive]
6723#[doc(alias = "GtkInterfaceColorScheme")]
6724pub enum InterfaceColorScheme {
6725    /// The system doesn't support color schemes
6726    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED")]
6727    Unsupported,
6728    /// The default color scheme is used
6729    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_DEFAULT")]
6730    Default,
6731    /// A dark color scheme is used
6732    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_DARK")]
6733    Dark,
6734    /// A light color scheme is used
6735    #[doc(alias = "GTK_INTERFACE_COLOR_SCHEME_LIGHT")]
6736    Light,
6737    #[doc(hidden)]
6738    __Unknown(i32),
6739}
6740
6741#[cfg(feature = "v4_20")]
6742#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6743#[doc(hidden)]
6744impl IntoGlib for InterfaceColorScheme {
6745    type GlibType = ffi::GtkInterfaceColorScheme;
6746
6747    #[inline]
6748    fn into_glib(self) -> ffi::GtkInterfaceColorScheme {
6749        match self {
6750            Self::Unsupported => ffi::GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED,
6751            Self::Default => ffi::GTK_INTERFACE_COLOR_SCHEME_DEFAULT,
6752            Self::Dark => ffi::GTK_INTERFACE_COLOR_SCHEME_DARK,
6753            Self::Light => ffi::GTK_INTERFACE_COLOR_SCHEME_LIGHT,
6754            Self::__Unknown(value) => value,
6755        }
6756    }
6757}
6758
6759#[cfg(feature = "v4_20")]
6760#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6761#[doc(hidden)]
6762impl FromGlib<ffi::GtkInterfaceColorScheme> for InterfaceColorScheme {
6763    #[inline]
6764    unsafe fn from_glib(value: ffi::GtkInterfaceColorScheme) -> Self {
6765        skip_assert_initialized!();
6766
6767        match value {
6768            ffi::GTK_INTERFACE_COLOR_SCHEME_UNSUPPORTED => Self::Unsupported,
6769            ffi::GTK_INTERFACE_COLOR_SCHEME_DEFAULT => Self::Default,
6770            ffi::GTK_INTERFACE_COLOR_SCHEME_DARK => Self::Dark,
6771            ffi::GTK_INTERFACE_COLOR_SCHEME_LIGHT => Self::Light,
6772            value => Self::__Unknown(value),
6773        }
6774    }
6775}
6776
6777#[cfg(feature = "v4_20")]
6778#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6779impl StaticType for InterfaceColorScheme {
6780    #[inline]
6781    #[doc(alias = "gtk_interface_color_scheme_get_type")]
6782    fn static_type() -> glib::Type {
6783        unsafe { from_glib(ffi::gtk_interface_color_scheme_get_type()) }
6784    }
6785}
6786
6787#[cfg(feature = "v4_20")]
6788#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6789impl glib::HasParamSpec for InterfaceColorScheme {
6790    type ParamSpec = glib::ParamSpecEnum;
6791    type SetValue = Self;
6792    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6793
6794    fn param_spec_builder() -> Self::BuilderFn {
6795        Self::ParamSpec::builder_with_default
6796    }
6797}
6798
6799#[cfg(feature = "v4_20")]
6800#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6801impl glib::value::ValueType for InterfaceColorScheme {
6802    type Type = Self;
6803}
6804
6805#[cfg(feature = "v4_20")]
6806#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6807unsafe impl<'a> glib::value::FromValue<'a> for InterfaceColorScheme {
6808    type Checker = glib::value::GenericValueTypeChecker<Self>;
6809
6810    #[inline]
6811    unsafe fn from_value(value: &'a glib::Value) -> Self {
6812        skip_assert_initialized!();
6813        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6814    }
6815}
6816
6817#[cfg(feature = "v4_20")]
6818#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6819impl ToValue for InterfaceColorScheme {
6820    #[inline]
6821    fn to_value(&self) -> glib::Value {
6822        let mut value = glib::Value::for_value_type::<Self>();
6823        unsafe {
6824            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6825        }
6826        value
6827    }
6828
6829    #[inline]
6830    fn value_type(&self) -> glib::Type {
6831        Self::static_type()
6832    }
6833}
6834
6835#[cfg(feature = "v4_20")]
6836#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6837impl From<InterfaceColorScheme> for glib::Value {
6838    #[inline]
6839    fn from(v: InterfaceColorScheme) -> Self {
6840        skip_assert_initialized!();
6841        ToValue::to_value(&v)
6842    }
6843}
6844
6845/// Values for the [`gtk-interface-contrast`][struct@crate::Settings#gtk-interface-contrast]
6846/// and [`prefers-contrast`][struct@crate::CssProvider#prefers-contrast] properties
6847/// that indicates the preferred level of contrast.
6848///
6849/// This information can be used inside CSS via media queries.
6850///
6851/// More values may be added to this enumeration. Unknown values
6852/// should be treated the same as `GTK_INTERFACE_CONTRAST_NO_PREFERENCE`.
6853#[cfg(feature = "v4_20")]
6854#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6855#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6856#[non_exhaustive]
6857#[doc(alias = "GtkInterfaceContrast")]
6858pub enum InterfaceContrast {
6859    /// The system doesn't support contrast levels
6860    #[doc(alias = "GTK_INTERFACE_CONTRAST_UNSUPPORTED")]
6861    Unsupported,
6862    /// No particular preference for contrast
6863    #[doc(alias = "GTK_INTERFACE_CONTRAST_NO_PREFERENCE")]
6864    NoPreference,
6865    /// More contrast is preferred
6866    #[doc(alias = "GTK_INTERFACE_CONTRAST_MORE")]
6867    More,
6868    /// Less contrast is preferred
6869    #[doc(alias = "GTK_INTERFACE_CONTRAST_LESS")]
6870    Less,
6871    #[doc(hidden)]
6872    __Unknown(i32),
6873}
6874
6875#[cfg(feature = "v4_20")]
6876#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6877#[doc(hidden)]
6878impl IntoGlib for InterfaceContrast {
6879    type GlibType = ffi::GtkInterfaceContrast;
6880
6881    #[inline]
6882    fn into_glib(self) -> ffi::GtkInterfaceContrast {
6883        match self {
6884            Self::Unsupported => ffi::GTK_INTERFACE_CONTRAST_UNSUPPORTED,
6885            Self::NoPreference => ffi::GTK_INTERFACE_CONTRAST_NO_PREFERENCE,
6886            Self::More => ffi::GTK_INTERFACE_CONTRAST_MORE,
6887            Self::Less => ffi::GTK_INTERFACE_CONTRAST_LESS,
6888            Self::__Unknown(value) => value,
6889        }
6890    }
6891}
6892
6893#[cfg(feature = "v4_20")]
6894#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6895#[doc(hidden)]
6896impl FromGlib<ffi::GtkInterfaceContrast> for InterfaceContrast {
6897    #[inline]
6898    unsafe fn from_glib(value: ffi::GtkInterfaceContrast) -> Self {
6899        skip_assert_initialized!();
6900
6901        match value {
6902            ffi::GTK_INTERFACE_CONTRAST_UNSUPPORTED => Self::Unsupported,
6903            ffi::GTK_INTERFACE_CONTRAST_NO_PREFERENCE => Self::NoPreference,
6904            ffi::GTK_INTERFACE_CONTRAST_MORE => Self::More,
6905            ffi::GTK_INTERFACE_CONTRAST_LESS => Self::Less,
6906            value => Self::__Unknown(value),
6907        }
6908    }
6909}
6910
6911#[cfg(feature = "v4_20")]
6912#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6913impl StaticType for InterfaceContrast {
6914    #[inline]
6915    #[doc(alias = "gtk_interface_contrast_get_type")]
6916    fn static_type() -> glib::Type {
6917        unsafe { from_glib(ffi::gtk_interface_contrast_get_type()) }
6918    }
6919}
6920
6921#[cfg(feature = "v4_20")]
6922#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6923impl glib::HasParamSpec for InterfaceContrast {
6924    type ParamSpec = glib::ParamSpecEnum;
6925    type SetValue = Self;
6926    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6927
6928    fn param_spec_builder() -> Self::BuilderFn {
6929        Self::ParamSpec::builder_with_default
6930    }
6931}
6932
6933#[cfg(feature = "v4_20")]
6934#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6935impl glib::value::ValueType for InterfaceContrast {
6936    type Type = Self;
6937}
6938
6939#[cfg(feature = "v4_20")]
6940#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6941unsafe impl<'a> glib::value::FromValue<'a> for InterfaceContrast {
6942    type Checker = glib::value::GenericValueTypeChecker<Self>;
6943
6944    #[inline]
6945    unsafe fn from_value(value: &'a glib::Value) -> Self {
6946        skip_assert_initialized!();
6947        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
6948    }
6949}
6950
6951#[cfg(feature = "v4_20")]
6952#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6953impl ToValue for InterfaceContrast {
6954    #[inline]
6955    fn to_value(&self) -> glib::Value {
6956        let mut value = glib::Value::for_value_type::<Self>();
6957        unsafe {
6958            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6959        }
6960        value
6961    }
6962
6963    #[inline]
6964    fn value_type(&self) -> glib::Type {
6965        Self::static_type()
6966    }
6967}
6968
6969#[cfg(feature = "v4_20")]
6970#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
6971impl From<InterfaceContrast> for glib::Value {
6972    #[inline]
6973    fn from(v: InterfaceContrast) -> Self {
6974        skip_assert_initialized!();
6975        ToValue::to_value(&v)
6976    }
6977}
6978
6979/// Used for justifying the text inside a [`Label`][crate::Label] widget.
6980#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6981#[non_exhaustive]
6982#[doc(alias = "GtkJustification")]
6983pub enum Justification {
6984    /// The text is placed at the left edge of the label.
6985    #[doc(alias = "GTK_JUSTIFY_LEFT")]
6986    Left,
6987    /// The text is placed at the right edge of the label.
6988    #[doc(alias = "GTK_JUSTIFY_RIGHT")]
6989    Right,
6990    /// The text is placed in the center of the label.
6991    #[doc(alias = "GTK_JUSTIFY_CENTER")]
6992    Center,
6993    /// The text is placed is distributed across the label.
6994    #[doc(alias = "GTK_JUSTIFY_FILL")]
6995    Fill,
6996    #[doc(hidden)]
6997    __Unknown(i32),
6998}
6999
7000#[doc(hidden)]
7001impl IntoGlib for Justification {
7002    type GlibType = ffi::GtkJustification;
7003
7004    #[inline]
7005    fn into_glib(self) -> ffi::GtkJustification {
7006        match self {
7007            Self::Left => ffi::GTK_JUSTIFY_LEFT,
7008            Self::Right => ffi::GTK_JUSTIFY_RIGHT,
7009            Self::Center => ffi::GTK_JUSTIFY_CENTER,
7010            Self::Fill => ffi::GTK_JUSTIFY_FILL,
7011            Self::__Unknown(value) => value,
7012        }
7013    }
7014}
7015
7016#[doc(hidden)]
7017impl FromGlib<ffi::GtkJustification> for Justification {
7018    #[inline]
7019    unsafe fn from_glib(value: ffi::GtkJustification) -> Self {
7020        skip_assert_initialized!();
7021
7022        match value {
7023            ffi::GTK_JUSTIFY_LEFT => Self::Left,
7024            ffi::GTK_JUSTIFY_RIGHT => Self::Right,
7025            ffi::GTK_JUSTIFY_CENTER => Self::Center,
7026            ffi::GTK_JUSTIFY_FILL => Self::Fill,
7027            value => Self::__Unknown(value),
7028        }
7029    }
7030}
7031
7032impl StaticType for Justification {
7033    #[inline]
7034    #[doc(alias = "gtk_justification_get_type")]
7035    fn static_type() -> glib::Type {
7036        unsafe { from_glib(ffi::gtk_justification_get_type()) }
7037    }
7038}
7039
7040impl glib::HasParamSpec for Justification {
7041    type ParamSpec = glib::ParamSpecEnum;
7042    type SetValue = Self;
7043    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7044
7045    fn param_spec_builder() -> Self::BuilderFn {
7046        Self::ParamSpec::builder_with_default
7047    }
7048}
7049
7050impl glib::value::ValueType for Justification {
7051    type Type = Self;
7052}
7053
7054unsafe impl<'a> glib::value::FromValue<'a> for Justification {
7055    type Checker = glib::value::GenericValueTypeChecker<Self>;
7056
7057    #[inline]
7058    unsafe fn from_value(value: &'a glib::Value) -> Self {
7059        skip_assert_initialized!();
7060        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7061    }
7062}
7063
7064impl ToValue for Justification {
7065    #[inline]
7066    fn to_value(&self) -> glib::Value {
7067        let mut value = glib::Value::for_value_type::<Self>();
7068        unsafe {
7069            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7070        }
7071        value
7072    }
7073
7074    #[inline]
7075    fn value_type(&self) -> glib::Type {
7076        Self::static_type()
7077    }
7078}
7079
7080impl From<Justification> for glib::Value {
7081    #[inline]
7082    fn from(v: Justification) -> Self {
7083        skip_assert_initialized!();
7084        ToValue::to_value(&v)
7085    }
7086}
7087
7088/// Describes how [`LevelBar`][crate::LevelBar] contents should be rendered.
7089///
7090/// Note that this enumeration could be extended with additional modes
7091/// in the future.
7092#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7093#[non_exhaustive]
7094#[doc(alias = "GtkLevelBarMode")]
7095pub enum LevelBarMode {
7096    /// the bar has a continuous mode
7097    #[doc(alias = "GTK_LEVEL_BAR_MODE_CONTINUOUS")]
7098    Continuous,
7099    /// the bar has a discrete mode
7100    #[doc(alias = "GTK_LEVEL_BAR_MODE_DISCRETE")]
7101    Discrete,
7102    #[doc(hidden)]
7103    __Unknown(i32),
7104}
7105
7106#[doc(hidden)]
7107impl IntoGlib for LevelBarMode {
7108    type GlibType = ffi::GtkLevelBarMode;
7109
7110    #[inline]
7111    fn into_glib(self) -> ffi::GtkLevelBarMode {
7112        match self {
7113            Self::Continuous => ffi::GTK_LEVEL_BAR_MODE_CONTINUOUS,
7114            Self::Discrete => ffi::GTK_LEVEL_BAR_MODE_DISCRETE,
7115            Self::__Unknown(value) => value,
7116        }
7117    }
7118}
7119
7120#[doc(hidden)]
7121impl FromGlib<ffi::GtkLevelBarMode> for LevelBarMode {
7122    #[inline]
7123    unsafe fn from_glib(value: ffi::GtkLevelBarMode) -> Self {
7124        skip_assert_initialized!();
7125
7126        match value {
7127            ffi::GTK_LEVEL_BAR_MODE_CONTINUOUS => Self::Continuous,
7128            ffi::GTK_LEVEL_BAR_MODE_DISCRETE => Self::Discrete,
7129            value => Self::__Unknown(value),
7130        }
7131    }
7132}
7133
7134impl StaticType for LevelBarMode {
7135    #[inline]
7136    #[doc(alias = "gtk_level_bar_mode_get_type")]
7137    fn static_type() -> glib::Type {
7138        unsafe { from_glib(ffi::gtk_level_bar_mode_get_type()) }
7139    }
7140}
7141
7142impl glib::HasParamSpec for LevelBarMode {
7143    type ParamSpec = glib::ParamSpecEnum;
7144    type SetValue = Self;
7145    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7146
7147    fn param_spec_builder() -> Self::BuilderFn {
7148        Self::ParamSpec::builder_with_default
7149    }
7150}
7151
7152impl glib::value::ValueType for LevelBarMode {
7153    type Type = Self;
7154}
7155
7156unsafe impl<'a> glib::value::FromValue<'a> for LevelBarMode {
7157    type Checker = glib::value::GenericValueTypeChecker<Self>;
7158
7159    #[inline]
7160    unsafe fn from_value(value: &'a glib::Value) -> Self {
7161        skip_assert_initialized!();
7162        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7163    }
7164}
7165
7166impl ToValue for LevelBarMode {
7167    #[inline]
7168    fn to_value(&self) -> glib::Value {
7169        let mut value = glib::Value::for_value_type::<Self>();
7170        unsafe {
7171            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7172        }
7173        value
7174    }
7175
7176    #[inline]
7177    fn value_type(&self) -> glib::Type {
7178        Self::static_type()
7179    }
7180}
7181
7182impl From<LevelBarMode> for glib::Value {
7183    #[inline]
7184    fn from(v: LevelBarMode) -> Self {
7185        skip_assert_initialized!();
7186        ToValue::to_value(&v)
7187    }
7188}
7189
7190/// The type of license for an application.
7191///
7192/// This enumeration can be expanded at later date.
7193#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7194#[non_exhaustive]
7195#[doc(alias = "GtkLicense")]
7196pub enum License {
7197    /// No license specified
7198    #[doc(alias = "GTK_LICENSE_UNKNOWN")]
7199    Unknown,
7200    /// A license text is going to be specified by the
7201    ///   developer
7202    #[doc(alias = "GTK_LICENSE_CUSTOM")]
7203    Custom,
7204    /// The GNU General Public License, version 2.0 or later
7205    #[doc(alias = "GTK_LICENSE_GPL_2_0")]
7206    Gpl20,
7207    /// The GNU General Public License, version 3.0 or later
7208    #[doc(alias = "GTK_LICENSE_GPL_3_0")]
7209    Gpl30,
7210    /// The GNU Lesser General Public License, version 2.1 or later
7211    #[doc(alias = "GTK_LICENSE_LGPL_2_1")]
7212    Lgpl21,
7213    /// The GNU Lesser General Public License, version 3.0 or later
7214    #[doc(alias = "GTK_LICENSE_LGPL_3_0")]
7215    Lgpl30,
7216    /// The BSD standard license
7217    #[doc(alias = "GTK_LICENSE_BSD")]
7218    Bsd,
7219    /// The MIT/X11 standard license
7220    #[doc(alias = "GTK_LICENSE_MIT_X11")]
7221    MitX11,
7222    /// The Artistic License, version 2.0
7223    #[doc(alias = "GTK_LICENSE_ARTISTIC")]
7224    Artistic,
7225    /// The GNU General Public License, version 2.0 only
7226    #[doc(alias = "GTK_LICENSE_GPL_2_0_ONLY")]
7227    Gpl20Only,
7228    /// The GNU General Public License, version 3.0 only
7229    #[doc(alias = "GTK_LICENSE_GPL_3_0_ONLY")]
7230    Gpl30Only,
7231    /// The GNU Lesser General Public License, version 2.1 only
7232    #[doc(alias = "GTK_LICENSE_LGPL_2_1_ONLY")]
7233    Lgpl21Only,
7234    /// The GNU Lesser General Public License, version 3.0 only
7235    #[doc(alias = "GTK_LICENSE_LGPL_3_0_ONLY")]
7236    Lgpl30Only,
7237    /// The GNU Affero General Public License, version 3.0 or later
7238    #[doc(alias = "GTK_LICENSE_AGPL_3_0")]
7239    Agpl30,
7240    /// The GNU Affero General Public License, version 3.0 only
7241    #[doc(alias = "GTK_LICENSE_AGPL_3_0_ONLY")]
7242    Agpl30Only,
7243    /// The 3-clause BSD licence
7244    #[doc(alias = "GTK_LICENSE_BSD_3")]
7245    Bsd3,
7246    /// The Apache License, version 2.0
7247    #[doc(alias = "GTK_LICENSE_APACHE_2_0")]
7248    Apache20,
7249    /// The Mozilla Public License, version 2.0
7250    #[doc(alias = "GTK_LICENSE_MPL_2_0")]
7251    Mpl20,
7252    /// Zero-Clause BSD license
7253    #[cfg(feature = "v4_14")]
7254    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
7255    #[doc(alias = "GTK_LICENSE_0BSD")]
7256    _0bsd,
7257    #[doc(hidden)]
7258    __Unknown(i32),
7259}
7260
7261#[doc(hidden)]
7262impl IntoGlib for License {
7263    type GlibType = ffi::GtkLicense;
7264
7265    fn into_glib(self) -> ffi::GtkLicense {
7266        match self {
7267            Self::Unknown => ffi::GTK_LICENSE_UNKNOWN,
7268            Self::Custom => ffi::GTK_LICENSE_CUSTOM,
7269            Self::Gpl20 => ffi::GTK_LICENSE_GPL_2_0,
7270            Self::Gpl30 => ffi::GTK_LICENSE_GPL_3_0,
7271            Self::Lgpl21 => ffi::GTK_LICENSE_LGPL_2_1,
7272            Self::Lgpl30 => ffi::GTK_LICENSE_LGPL_3_0,
7273            Self::Bsd => ffi::GTK_LICENSE_BSD,
7274            Self::MitX11 => ffi::GTK_LICENSE_MIT_X11,
7275            Self::Artistic => ffi::GTK_LICENSE_ARTISTIC,
7276            Self::Gpl20Only => ffi::GTK_LICENSE_GPL_2_0_ONLY,
7277            Self::Gpl30Only => ffi::GTK_LICENSE_GPL_3_0_ONLY,
7278            Self::Lgpl21Only => ffi::GTK_LICENSE_LGPL_2_1_ONLY,
7279            Self::Lgpl30Only => ffi::GTK_LICENSE_LGPL_3_0_ONLY,
7280            Self::Agpl30 => ffi::GTK_LICENSE_AGPL_3_0,
7281            Self::Agpl30Only => ffi::GTK_LICENSE_AGPL_3_0_ONLY,
7282            Self::Bsd3 => ffi::GTK_LICENSE_BSD_3,
7283            Self::Apache20 => ffi::GTK_LICENSE_APACHE_2_0,
7284            Self::Mpl20 => ffi::GTK_LICENSE_MPL_2_0,
7285            #[cfg(feature = "v4_14")]
7286            Self::_0bsd => ffi::GTK_LICENSE_0BSD,
7287            Self::__Unknown(value) => value,
7288        }
7289    }
7290}
7291
7292#[doc(hidden)]
7293impl FromGlib<ffi::GtkLicense> for License {
7294    unsafe fn from_glib(value: ffi::GtkLicense) -> Self {
7295        skip_assert_initialized!();
7296
7297        match value {
7298            ffi::GTK_LICENSE_UNKNOWN => Self::Unknown,
7299            ffi::GTK_LICENSE_CUSTOM => Self::Custom,
7300            ffi::GTK_LICENSE_GPL_2_0 => Self::Gpl20,
7301            ffi::GTK_LICENSE_GPL_3_0 => Self::Gpl30,
7302            ffi::GTK_LICENSE_LGPL_2_1 => Self::Lgpl21,
7303            ffi::GTK_LICENSE_LGPL_3_0 => Self::Lgpl30,
7304            ffi::GTK_LICENSE_BSD => Self::Bsd,
7305            ffi::GTK_LICENSE_MIT_X11 => Self::MitX11,
7306            ffi::GTK_LICENSE_ARTISTIC => Self::Artistic,
7307            ffi::GTK_LICENSE_GPL_2_0_ONLY => Self::Gpl20Only,
7308            ffi::GTK_LICENSE_GPL_3_0_ONLY => Self::Gpl30Only,
7309            ffi::GTK_LICENSE_LGPL_2_1_ONLY => Self::Lgpl21Only,
7310            ffi::GTK_LICENSE_LGPL_3_0_ONLY => Self::Lgpl30Only,
7311            ffi::GTK_LICENSE_AGPL_3_0 => Self::Agpl30,
7312            ffi::GTK_LICENSE_AGPL_3_0_ONLY => Self::Agpl30Only,
7313            ffi::GTK_LICENSE_BSD_3 => Self::Bsd3,
7314            ffi::GTK_LICENSE_APACHE_2_0 => Self::Apache20,
7315            ffi::GTK_LICENSE_MPL_2_0 => Self::Mpl20,
7316            #[cfg(feature = "v4_14")]
7317            ffi::GTK_LICENSE_0BSD => Self::_0bsd,
7318            value => Self::__Unknown(value),
7319        }
7320    }
7321}
7322
7323impl StaticType for License {
7324    #[inline]
7325    #[doc(alias = "gtk_license_get_type")]
7326    fn static_type() -> glib::Type {
7327        unsafe { from_glib(ffi::gtk_license_get_type()) }
7328    }
7329}
7330
7331impl glib::HasParamSpec for License {
7332    type ParamSpec = glib::ParamSpecEnum;
7333    type SetValue = Self;
7334    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7335
7336    fn param_spec_builder() -> Self::BuilderFn {
7337        Self::ParamSpec::builder_with_default
7338    }
7339}
7340
7341impl glib::value::ValueType for License {
7342    type Type = Self;
7343}
7344
7345unsafe impl<'a> glib::value::FromValue<'a> for License {
7346    type Checker = glib::value::GenericValueTypeChecker<Self>;
7347
7348    #[inline]
7349    unsafe fn from_value(value: &'a glib::Value) -> Self {
7350        skip_assert_initialized!();
7351        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7352    }
7353}
7354
7355impl ToValue for License {
7356    #[inline]
7357    fn to_value(&self) -> glib::Value {
7358        let mut value = glib::Value::for_value_type::<Self>();
7359        unsafe {
7360            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7361        }
7362        value
7363    }
7364
7365    #[inline]
7366    fn value_type(&self) -> glib::Type {
7367        Self::static_type()
7368    }
7369}
7370
7371impl From<License> for glib::Value {
7372    #[inline]
7373    fn from(v: License) -> Self {
7374        skip_assert_initialized!();
7375        ToValue::to_value(&v)
7376    }
7377}
7378
7379///  key
7380/// in a [`ListView`][crate::ListView].
7381#[cfg(feature = "v4_12")]
7382#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7383#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7384#[non_exhaustive]
7385#[doc(alias = "GtkListTabBehavior")]
7386pub enum ListTabBehavior {
7387    /// Cycle through all focusable items of the list
7388    #[doc(alias = "GTK_LIST_TAB_ALL")]
7389    All,
7390    /// Cycle through a single list element, then move
7391    ///   focus out of the list. Moving focus between items needs to be
7392    ///   done with the arrow keys.
7393    #[doc(alias = "GTK_LIST_TAB_ITEM")]
7394    Item,
7395    /// Cycle only through a single cell, then
7396    ///   move focus out of the list. Moving focus between cells needs to
7397    ///   be done with the arrow keys. This is only relevant for
7398    ///   cell-based widgets like #GtkColumnView, otherwise it behaves
7399    ///   like `GTK_LIST_TAB_ITEM`.
7400    #[doc(alias = "GTK_LIST_TAB_CELL")]
7401    Cell,
7402    #[doc(hidden)]
7403    __Unknown(i32),
7404}
7405
7406#[cfg(feature = "v4_12")]
7407#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7408#[doc(hidden)]
7409impl IntoGlib for ListTabBehavior {
7410    type GlibType = ffi::GtkListTabBehavior;
7411
7412    #[inline]
7413    fn into_glib(self) -> ffi::GtkListTabBehavior {
7414        match self {
7415            Self::All => ffi::GTK_LIST_TAB_ALL,
7416            Self::Item => ffi::GTK_LIST_TAB_ITEM,
7417            Self::Cell => ffi::GTK_LIST_TAB_CELL,
7418            Self::__Unknown(value) => value,
7419        }
7420    }
7421}
7422
7423#[cfg(feature = "v4_12")]
7424#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7425#[doc(hidden)]
7426impl FromGlib<ffi::GtkListTabBehavior> for ListTabBehavior {
7427    #[inline]
7428    unsafe fn from_glib(value: ffi::GtkListTabBehavior) -> Self {
7429        skip_assert_initialized!();
7430
7431        match value {
7432            ffi::GTK_LIST_TAB_ALL => Self::All,
7433            ffi::GTK_LIST_TAB_ITEM => Self::Item,
7434            ffi::GTK_LIST_TAB_CELL => Self::Cell,
7435            value => Self::__Unknown(value),
7436        }
7437    }
7438}
7439
7440#[cfg(feature = "v4_12")]
7441#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7442impl StaticType for ListTabBehavior {
7443    #[inline]
7444    #[doc(alias = "gtk_list_tab_behavior_get_type")]
7445    fn static_type() -> glib::Type {
7446        unsafe { from_glib(ffi::gtk_list_tab_behavior_get_type()) }
7447    }
7448}
7449
7450#[cfg(feature = "v4_12")]
7451#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7452impl glib::HasParamSpec for ListTabBehavior {
7453    type ParamSpec = glib::ParamSpecEnum;
7454    type SetValue = Self;
7455    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7456
7457    fn param_spec_builder() -> Self::BuilderFn {
7458        Self::ParamSpec::builder_with_default
7459    }
7460}
7461
7462#[cfg(feature = "v4_12")]
7463#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7464impl glib::value::ValueType for ListTabBehavior {
7465    type Type = Self;
7466}
7467
7468#[cfg(feature = "v4_12")]
7469#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7470unsafe impl<'a> glib::value::FromValue<'a> for ListTabBehavior {
7471    type Checker = glib::value::GenericValueTypeChecker<Self>;
7472
7473    #[inline]
7474    unsafe fn from_value(value: &'a glib::Value) -> Self {
7475        skip_assert_initialized!();
7476        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7477    }
7478}
7479
7480#[cfg(feature = "v4_12")]
7481#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7482impl ToValue for ListTabBehavior {
7483    #[inline]
7484    fn to_value(&self) -> glib::Value {
7485        let mut value = glib::Value::for_value_type::<Self>();
7486        unsafe {
7487            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7488        }
7489        value
7490    }
7491
7492    #[inline]
7493    fn value_type(&self) -> glib::Type {
7494        Self::static_type()
7495    }
7496}
7497
7498#[cfg(feature = "v4_12")]
7499#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
7500impl From<ListTabBehavior> for glib::Value {
7501    #[inline]
7502    fn from(v: ListTabBehavior) -> Self {
7503        skip_assert_initialized!();
7504        ToValue::to_value(&v)
7505    }
7506}
7507
7508/// The type of message being displayed in a [`MessageDialog`][crate::MessageDialog].
7509#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7510#[non_exhaustive]
7511#[doc(alias = "GtkMessageType")]
7512pub enum MessageType {
7513    /// Informational message
7514    #[doc(alias = "GTK_MESSAGE_INFO")]
7515    Info,
7516    /// Non-fatal warning message
7517    #[doc(alias = "GTK_MESSAGE_WARNING")]
7518    Warning,
7519    /// Question requiring a choice
7520    #[doc(alias = "GTK_MESSAGE_QUESTION")]
7521    Question,
7522    /// Fatal error message
7523    #[doc(alias = "GTK_MESSAGE_ERROR")]
7524    Error,
7525    /// None of the above
7526    #[doc(alias = "GTK_MESSAGE_OTHER")]
7527    Other,
7528    #[doc(hidden)]
7529    __Unknown(i32),
7530}
7531
7532#[doc(hidden)]
7533impl IntoGlib for MessageType {
7534    type GlibType = ffi::GtkMessageType;
7535
7536    #[inline]
7537    fn into_glib(self) -> ffi::GtkMessageType {
7538        match self {
7539            Self::Info => ffi::GTK_MESSAGE_INFO,
7540            Self::Warning => ffi::GTK_MESSAGE_WARNING,
7541            Self::Question => ffi::GTK_MESSAGE_QUESTION,
7542            Self::Error => ffi::GTK_MESSAGE_ERROR,
7543            Self::Other => ffi::GTK_MESSAGE_OTHER,
7544            Self::__Unknown(value) => value,
7545        }
7546    }
7547}
7548
7549#[doc(hidden)]
7550impl FromGlib<ffi::GtkMessageType> for MessageType {
7551    #[inline]
7552    unsafe fn from_glib(value: ffi::GtkMessageType) -> Self {
7553        skip_assert_initialized!();
7554
7555        match value {
7556            ffi::GTK_MESSAGE_INFO => Self::Info,
7557            ffi::GTK_MESSAGE_WARNING => Self::Warning,
7558            ffi::GTK_MESSAGE_QUESTION => Self::Question,
7559            ffi::GTK_MESSAGE_ERROR => Self::Error,
7560            ffi::GTK_MESSAGE_OTHER => Self::Other,
7561            value => Self::__Unknown(value),
7562        }
7563    }
7564}
7565
7566impl StaticType for MessageType {
7567    #[inline]
7568    #[doc(alias = "gtk_message_type_get_type")]
7569    fn static_type() -> glib::Type {
7570        unsafe { from_glib(ffi::gtk_message_type_get_type()) }
7571    }
7572}
7573
7574impl glib::HasParamSpec for MessageType {
7575    type ParamSpec = glib::ParamSpecEnum;
7576    type SetValue = Self;
7577    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7578
7579    fn param_spec_builder() -> Self::BuilderFn {
7580        Self::ParamSpec::builder_with_default
7581    }
7582}
7583
7584impl glib::value::ValueType for MessageType {
7585    type Type = Self;
7586}
7587
7588unsafe impl<'a> glib::value::FromValue<'a> for MessageType {
7589    type Checker = glib::value::GenericValueTypeChecker<Self>;
7590
7591    #[inline]
7592    unsafe fn from_value(value: &'a glib::Value) -> Self {
7593        skip_assert_initialized!();
7594        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7595    }
7596}
7597
7598impl ToValue for MessageType {
7599    #[inline]
7600    fn to_value(&self) -> glib::Value {
7601        let mut value = glib::Value::for_value_type::<Self>();
7602        unsafe {
7603            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7604        }
7605        value
7606    }
7607
7608    #[inline]
7609    fn value_type(&self) -> glib::Type {
7610        Self::static_type()
7611    }
7612}
7613
7614impl From<MessageType> for glib::Value {
7615    #[inline]
7616    fn from(v: MessageType) -> Self {
7617        skip_assert_initialized!();
7618        ToValue::to_value(&v)
7619    }
7620}
7621
7622/// Passed as argument to various keybinding signals for moving the
7623/// cursor position.
7624#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7625#[non_exhaustive]
7626#[doc(alias = "GtkMovementStep")]
7627pub enum MovementStep {
7628    /// Move forward or back by graphemes
7629    #[doc(alias = "GTK_MOVEMENT_LOGICAL_POSITIONS")]
7630    LogicalPositions,
7631    /// Move left or right by graphemes
7632    #[doc(alias = "GTK_MOVEMENT_VISUAL_POSITIONS")]
7633    VisualPositions,
7634    /// Move forward or back by words
7635    #[doc(alias = "GTK_MOVEMENT_WORDS")]
7636    Words,
7637    /// Move up or down lines (wrapped lines)
7638    #[doc(alias = "GTK_MOVEMENT_DISPLAY_LINES")]
7639    DisplayLines,
7640    /// Move to either end of a line
7641    #[doc(alias = "GTK_MOVEMENT_DISPLAY_LINE_ENDS")]
7642    DisplayLineEnds,
7643    /// Move up or down paragraphs (newline-ended lines)
7644    #[doc(alias = "GTK_MOVEMENT_PARAGRAPHS")]
7645    Paragraphs,
7646    /// Move to either end of a paragraph
7647    #[doc(alias = "GTK_MOVEMENT_PARAGRAPH_ENDS")]
7648    ParagraphEnds,
7649    /// Move by pages
7650    #[doc(alias = "GTK_MOVEMENT_PAGES")]
7651    Pages,
7652    /// Move to ends of the buffer
7653    #[doc(alias = "GTK_MOVEMENT_BUFFER_ENDS")]
7654    BufferEnds,
7655    /// Move horizontally by pages
7656    #[doc(alias = "GTK_MOVEMENT_HORIZONTAL_PAGES")]
7657    HorizontalPages,
7658    #[doc(hidden)]
7659    __Unknown(i32),
7660}
7661
7662#[doc(hidden)]
7663impl IntoGlib for MovementStep {
7664    type GlibType = ffi::GtkMovementStep;
7665
7666    #[inline]
7667    fn into_glib(self) -> ffi::GtkMovementStep {
7668        match self {
7669            Self::LogicalPositions => ffi::GTK_MOVEMENT_LOGICAL_POSITIONS,
7670            Self::VisualPositions => ffi::GTK_MOVEMENT_VISUAL_POSITIONS,
7671            Self::Words => ffi::GTK_MOVEMENT_WORDS,
7672            Self::DisplayLines => ffi::GTK_MOVEMENT_DISPLAY_LINES,
7673            Self::DisplayLineEnds => ffi::GTK_MOVEMENT_DISPLAY_LINE_ENDS,
7674            Self::Paragraphs => ffi::GTK_MOVEMENT_PARAGRAPHS,
7675            Self::ParagraphEnds => ffi::GTK_MOVEMENT_PARAGRAPH_ENDS,
7676            Self::Pages => ffi::GTK_MOVEMENT_PAGES,
7677            Self::BufferEnds => ffi::GTK_MOVEMENT_BUFFER_ENDS,
7678            Self::HorizontalPages => ffi::GTK_MOVEMENT_HORIZONTAL_PAGES,
7679            Self::__Unknown(value) => value,
7680        }
7681    }
7682}
7683
7684#[doc(hidden)]
7685impl FromGlib<ffi::GtkMovementStep> for MovementStep {
7686    #[inline]
7687    unsafe fn from_glib(value: ffi::GtkMovementStep) -> Self {
7688        skip_assert_initialized!();
7689
7690        match value {
7691            ffi::GTK_MOVEMENT_LOGICAL_POSITIONS => Self::LogicalPositions,
7692            ffi::GTK_MOVEMENT_VISUAL_POSITIONS => Self::VisualPositions,
7693            ffi::GTK_MOVEMENT_WORDS => Self::Words,
7694            ffi::GTK_MOVEMENT_DISPLAY_LINES => Self::DisplayLines,
7695            ffi::GTK_MOVEMENT_DISPLAY_LINE_ENDS => Self::DisplayLineEnds,
7696            ffi::GTK_MOVEMENT_PARAGRAPHS => Self::Paragraphs,
7697            ffi::GTK_MOVEMENT_PARAGRAPH_ENDS => Self::ParagraphEnds,
7698            ffi::GTK_MOVEMENT_PAGES => Self::Pages,
7699            ffi::GTK_MOVEMENT_BUFFER_ENDS => Self::BufferEnds,
7700            ffi::GTK_MOVEMENT_HORIZONTAL_PAGES => Self::HorizontalPages,
7701            value => Self::__Unknown(value),
7702        }
7703    }
7704}
7705
7706impl StaticType for MovementStep {
7707    #[inline]
7708    #[doc(alias = "gtk_movement_step_get_type")]
7709    fn static_type() -> glib::Type {
7710        unsafe { from_glib(ffi::gtk_movement_step_get_type()) }
7711    }
7712}
7713
7714impl glib::HasParamSpec for MovementStep {
7715    type ParamSpec = glib::ParamSpecEnum;
7716    type SetValue = Self;
7717    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7718
7719    fn param_spec_builder() -> Self::BuilderFn {
7720        Self::ParamSpec::builder_with_default
7721    }
7722}
7723
7724impl glib::value::ValueType for MovementStep {
7725    type Type = Self;
7726}
7727
7728unsafe impl<'a> glib::value::FromValue<'a> for MovementStep {
7729    type Checker = glib::value::GenericValueTypeChecker<Self>;
7730
7731    #[inline]
7732    unsafe fn from_value(value: &'a glib::Value) -> Self {
7733        skip_assert_initialized!();
7734        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7735    }
7736}
7737
7738impl ToValue for MovementStep {
7739    #[inline]
7740    fn to_value(&self) -> glib::Value {
7741        let mut value = glib::Value::for_value_type::<Self>();
7742        unsafe {
7743            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7744        }
7745        value
7746    }
7747
7748    #[inline]
7749    fn value_type(&self) -> glib::Type {
7750        Self::static_type()
7751    }
7752}
7753
7754impl From<MovementStep> for glib::Value {
7755    #[inline]
7756    fn from(v: MovementStep) -> Self {
7757        skip_assert_initialized!();
7758        ToValue::to_value(&v)
7759    }
7760}
7761
7762/// Options for selecting a different wrap mode for natural size
7763/// requests.
7764///
7765/// See for example the [`natural-wrap-mode`][struct@crate::Label#natural-wrap-mode] property.
7766#[cfg(feature = "v4_6")]
7767#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7768#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7769#[non_exhaustive]
7770#[doc(alias = "GtkNaturalWrapMode")]
7771pub enum NaturalWrapMode {
7772    /// Inherit the minimum size request.
7773    ///   In particular, this should be used with [`pango::WrapMode::Char`][crate::pango::WrapMode::Char].
7774    #[doc(alias = "GTK_NATURAL_WRAP_INHERIT")]
7775    Inherit,
7776    /// Try not to wrap the text. This mode is the
7777    ///   closest to GTK3's behavior but can lead to a wide label leaving
7778    ///   lots of empty space below the text.
7779    #[doc(alias = "GTK_NATURAL_WRAP_NONE")]
7780    None,
7781    /// Attempt to wrap at word boundaries. This
7782    ///   is useful in particular when using [`pango::WrapMode::WordChar`][crate::pango::WrapMode::WordChar] as the
7783    ///   wrap mode.
7784    #[doc(alias = "GTK_NATURAL_WRAP_WORD")]
7785    Word,
7786    #[doc(hidden)]
7787    __Unknown(i32),
7788}
7789
7790#[cfg(feature = "v4_6")]
7791#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7792#[doc(hidden)]
7793impl IntoGlib for NaturalWrapMode {
7794    type GlibType = ffi::GtkNaturalWrapMode;
7795
7796    #[inline]
7797    fn into_glib(self) -> ffi::GtkNaturalWrapMode {
7798        match self {
7799            Self::Inherit => ffi::GTK_NATURAL_WRAP_INHERIT,
7800            Self::None => ffi::GTK_NATURAL_WRAP_NONE,
7801            Self::Word => ffi::GTK_NATURAL_WRAP_WORD,
7802            Self::__Unknown(value) => value,
7803        }
7804    }
7805}
7806
7807#[cfg(feature = "v4_6")]
7808#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7809#[doc(hidden)]
7810impl FromGlib<ffi::GtkNaturalWrapMode> for NaturalWrapMode {
7811    #[inline]
7812    unsafe fn from_glib(value: ffi::GtkNaturalWrapMode) -> Self {
7813        skip_assert_initialized!();
7814
7815        match value {
7816            ffi::GTK_NATURAL_WRAP_INHERIT => Self::Inherit,
7817            ffi::GTK_NATURAL_WRAP_NONE => Self::None,
7818            ffi::GTK_NATURAL_WRAP_WORD => Self::Word,
7819            value => Self::__Unknown(value),
7820        }
7821    }
7822}
7823
7824#[cfg(feature = "v4_6")]
7825#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7826impl StaticType for NaturalWrapMode {
7827    #[inline]
7828    #[doc(alias = "gtk_natural_wrap_mode_get_type")]
7829    fn static_type() -> glib::Type {
7830        unsafe { from_glib(ffi::gtk_natural_wrap_mode_get_type()) }
7831    }
7832}
7833
7834#[cfg(feature = "v4_6")]
7835#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7836impl glib::HasParamSpec for NaturalWrapMode {
7837    type ParamSpec = glib::ParamSpecEnum;
7838    type SetValue = Self;
7839    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7840
7841    fn param_spec_builder() -> Self::BuilderFn {
7842        Self::ParamSpec::builder_with_default
7843    }
7844}
7845
7846#[cfg(feature = "v4_6")]
7847#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7848impl glib::value::ValueType for NaturalWrapMode {
7849    type Type = Self;
7850}
7851
7852#[cfg(feature = "v4_6")]
7853#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7854unsafe impl<'a> glib::value::FromValue<'a> for NaturalWrapMode {
7855    type Checker = glib::value::GenericValueTypeChecker<Self>;
7856
7857    #[inline]
7858    unsafe fn from_value(value: &'a glib::Value) -> Self {
7859        skip_assert_initialized!();
7860        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7861    }
7862}
7863
7864#[cfg(feature = "v4_6")]
7865#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7866impl ToValue for NaturalWrapMode {
7867    #[inline]
7868    fn to_value(&self) -> glib::Value {
7869        let mut value = glib::Value::for_value_type::<Self>();
7870        unsafe {
7871            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7872        }
7873        value
7874    }
7875
7876    #[inline]
7877    fn value_type(&self) -> glib::Type {
7878        Self::static_type()
7879    }
7880}
7881
7882#[cfg(feature = "v4_6")]
7883#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
7884impl From<NaturalWrapMode> for glib::Value {
7885    #[inline]
7886    fn from(v: NaturalWrapMode) -> Self {
7887        skip_assert_initialized!();
7888        ToValue::to_value(&v)
7889    }
7890}
7891
7892/// The parameter used in the action signals of [`Notebook`][crate::Notebook].
7893#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7894#[non_exhaustive]
7895#[doc(alias = "GtkNotebookTab")]
7896pub enum NotebookTab {
7897    /// the first tab in the notebook
7898    #[doc(alias = "GTK_NOTEBOOK_TAB_FIRST")]
7899    First,
7900    /// the last tab in the notebook
7901    #[doc(alias = "GTK_NOTEBOOK_TAB_LAST")]
7902    Last,
7903    #[doc(hidden)]
7904    __Unknown(i32),
7905}
7906
7907#[doc(hidden)]
7908impl IntoGlib for NotebookTab {
7909    type GlibType = ffi::GtkNotebookTab;
7910
7911    #[inline]
7912    fn into_glib(self) -> ffi::GtkNotebookTab {
7913        match self {
7914            Self::First => ffi::GTK_NOTEBOOK_TAB_FIRST,
7915            Self::Last => ffi::GTK_NOTEBOOK_TAB_LAST,
7916            Self::__Unknown(value) => value,
7917        }
7918    }
7919}
7920
7921#[doc(hidden)]
7922impl FromGlib<ffi::GtkNotebookTab> for NotebookTab {
7923    #[inline]
7924    unsafe fn from_glib(value: ffi::GtkNotebookTab) -> Self {
7925        skip_assert_initialized!();
7926
7927        match value {
7928            ffi::GTK_NOTEBOOK_TAB_FIRST => Self::First,
7929            ffi::GTK_NOTEBOOK_TAB_LAST => Self::Last,
7930            value => Self::__Unknown(value),
7931        }
7932    }
7933}
7934
7935impl StaticType for NotebookTab {
7936    #[inline]
7937    #[doc(alias = "gtk_notebook_tab_get_type")]
7938    fn static_type() -> glib::Type {
7939        unsafe { from_glib(ffi::gtk_notebook_tab_get_type()) }
7940    }
7941}
7942
7943impl glib::HasParamSpec for NotebookTab {
7944    type ParamSpec = glib::ParamSpecEnum;
7945    type SetValue = Self;
7946    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7947
7948    fn param_spec_builder() -> Self::BuilderFn {
7949        Self::ParamSpec::builder_with_default
7950    }
7951}
7952
7953impl glib::value::ValueType for NotebookTab {
7954    type Type = Self;
7955}
7956
7957unsafe impl<'a> glib::value::FromValue<'a> for NotebookTab {
7958    type Checker = glib::value::GenericValueTypeChecker<Self>;
7959
7960    #[inline]
7961    unsafe fn from_value(value: &'a glib::Value) -> Self {
7962        skip_assert_initialized!();
7963        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
7964    }
7965}
7966
7967impl ToValue for NotebookTab {
7968    #[inline]
7969    fn to_value(&self) -> glib::Value {
7970        let mut value = glib::Value::for_value_type::<Self>();
7971        unsafe {
7972            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7973        }
7974        value
7975    }
7976
7977    #[inline]
7978    fn value_type(&self) -> glib::Type {
7979        Self::static_type()
7980    }
7981}
7982
7983impl From<NotebookTab> for glib::Value {
7984    #[inline]
7985    fn from(v: NotebookTab) -> Self {
7986        skip_assert_initialized!();
7987        ToValue::to_value(&v)
7988    }
7989}
7990
7991/// Used to determine the layout of pages on a sheet when printing
7992/// multiple pages per sheet.
7993#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7994#[non_exhaustive]
7995#[doc(alias = "GtkNumberUpLayout")]
7996pub enum NumberUpLayout {
7997    /// ![](layout-lrtb.png)
7998    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM")]
7999    Lrtb,
8000    /// ![](layout-lrbt.png)
8001    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP")]
8002    Lrbt,
8003    /// ![](layout-rltb.png)
8004    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM")]
8005    Rltb,
8006    /// ![](layout-rlbt.png)
8007    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP")]
8008    Rlbt,
8009    /// ![](layout-tblr.png)
8010    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT")]
8011    Tblr,
8012    /// ![](layout-tbrl.png)
8013    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT")]
8014    Tbrl,
8015    /// ![](layout-btlr.png)
8016    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT")]
8017    Btlr,
8018    /// ![](layout-btrl.png)
8019    #[doc(alias = "GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT")]
8020    Btrl,
8021    #[doc(hidden)]
8022    __Unknown(i32),
8023}
8024
8025#[doc(hidden)]
8026impl IntoGlib for NumberUpLayout {
8027    type GlibType = ffi::GtkNumberUpLayout;
8028
8029    #[inline]
8030    fn into_glib(self) -> ffi::GtkNumberUpLayout {
8031        match self {
8032            Self::Lrtb => ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM,
8033            Self::Lrbt => ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP,
8034            Self::Rltb => ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM,
8035            Self::Rlbt => ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP,
8036            Self::Tblr => ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT,
8037            Self::Tbrl => ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT,
8038            Self::Btlr => ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT,
8039            Self::Btrl => ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT,
8040            Self::__Unknown(value) => value,
8041        }
8042    }
8043}
8044
8045#[doc(hidden)]
8046impl FromGlib<ffi::GtkNumberUpLayout> for NumberUpLayout {
8047    #[inline]
8048    unsafe fn from_glib(value: ffi::GtkNumberUpLayout) -> Self {
8049        skip_assert_initialized!();
8050
8051        match value {
8052            ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM => Self::Lrtb,
8053            ffi::GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP => Self::Lrbt,
8054            ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM => Self::Rltb,
8055            ffi::GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP => Self::Rlbt,
8056            ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT => Self::Tblr,
8057            ffi::GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT => Self::Tbrl,
8058            ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT => Self::Btlr,
8059            ffi::GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT => Self::Btrl,
8060            value => Self::__Unknown(value),
8061        }
8062    }
8063}
8064
8065impl StaticType for NumberUpLayout {
8066    #[inline]
8067    #[doc(alias = "gtk_number_up_layout_get_type")]
8068    fn static_type() -> glib::Type {
8069        unsafe { from_glib(ffi::gtk_number_up_layout_get_type()) }
8070    }
8071}
8072
8073impl glib::HasParamSpec for NumberUpLayout {
8074    type ParamSpec = glib::ParamSpecEnum;
8075    type SetValue = Self;
8076    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8077
8078    fn param_spec_builder() -> Self::BuilderFn {
8079        Self::ParamSpec::builder_with_default
8080    }
8081}
8082
8083impl glib::value::ValueType for NumberUpLayout {
8084    type Type = Self;
8085}
8086
8087unsafe impl<'a> glib::value::FromValue<'a> for NumberUpLayout {
8088    type Checker = glib::value::GenericValueTypeChecker<Self>;
8089
8090    #[inline]
8091    unsafe fn from_value(value: &'a glib::Value) -> Self {
8092        skip_assert_initialized!();
8093        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8094    }
8095}
8096
8097impl ToValue for NumberUpLayout {
8098    #[inline]
8099    fn to_value(&self) -> glib::Value {
8100        let mut value = glib::Value::for_value_type::<Self>();
8101        unsafe {
8102            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8103        }
8104        value
8105    }
8106
8107    #[inline]
8108    fn value_type(&self) -> glib::Type {
8109        Self::static_type()
8110    }
8111}
8112
8113impl From<NumberUpLayout> for glib::Value {
8114    #[inline]
8115    fn from(v: NumberUpLayout) -> Self {
8116        skip_assert_initialized!();
8117        ToValue::to_value(&v)
8118    }
8119}
8120
8121/// Describes the way two values can be compared.
8122///
8123/// These values can be used with a `callback::GLib::CompareFunc. However,
8124/// a `GCompareFunc` is allowed to return any integer values.
8125/// For converting such a value to a [`Ordering`][crate::Ordering] value, use
8126/// `Gtk::Ordering::from_cmpfunc()`.
8127#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8128#[non_exhaustive]
8129#[doc(alias = "GtkOrdering")]
8130pub enum Ordering {
8131    /// the first value is smaller than the second
8132    #[doc(alias = "GTK_ORDERING_SMALLER")]
8133    Smaller,
8134    /// the two values are equal
8135    #[doc(alias = "GTK_ORDERING_EQUAL")]
8136    Equal,
8137    /// the first value is larger than the second
8138    #[doc(alias = "GTK_ORDERING_LARGER")]
8139    Larger,
8140    #[doc(hidden)]
8141    __Unknown(i32),
8142}
8143
8144#[doc(hidden)]
8145impl IntoGlib for Ordering {
8146    type GlibType = ffi::GtkOrdering;
8147
8148    #[inline]
8149    fn into_glib(self) -> ffi::GtkOrdering {
8150        match self {
8151            Self::Smaller => ffi::GTK_ORDERING_SMALLER,
8152            Self::Equal => ffi::GTK_ORDERING_EQUAL,
8153            Self::Larger => ffi::GTK_ORDERING_LARGER,
8154            Self::__Unknown(value) => value,
8155        }
8156    }
8157}
8158
8159#[doc(hidden)]
8160impl FromGlib<ffi::GtkOrdering> for Ordering {
8161    #[inline]
8162    unsafe fn from_glib(value: ffi::GtkOrdering) -> Self {
8163        skip_assert_initialized!();
8164
8165        match value {
8166            ffi::GTK_ORDERING_SMALLER => Self::Smaller,
8167            ffi::GTK_ORDERING_EQUAL => Self::Equal,
8168            ffi::GTK_ORDERING_LARGER => Self::Larger,
8169            value => Self::__Unknown(value),
8170        }
8171    }
8172}
8173
8174impl StaticType for Ordering {
8175    #[inline]
8176    #[doc(alias = "gtk_ordering_get_type")]
8177    fn static_type() -> glib::Type {
8178        unsafe { from_glib(ffi::gtk_ordering_get_type()) }
8179    }
8180}
8181
8182impl glib::HasParamSpec for Ordering {
8183    type ParamSpec = glib::ParamSpecEnum;
8184    type SetValue = Self;
8185    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8186
8187    fn param_spec_builder() -> Self::BuilderFn {
8188        Self::ParamSpec::builder_with_default
8189    }
8190}
8191
8192impl glib::value::ValueType for Ordering {
8193    type Type = Self;
8194}
8195
8196unsafe impl<'a> glib::value::FromValue<'a> for Ordering {
8197    type Checker = glib::value::GenericValueTypeChecker<Self>;
8198
8199    #[inline]
8200    unsafe fn from_value(value: &'a glib::Value) -> Self {
8201        skip_assert_initialized!();
8202        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8203    }
8204}
8205
8206impl ToValue for Ordering {
8207    #[inline]
8208    fn to_value(&self) -> glib::Value {
8209        let mut value = glib::Value::for_value_type::<Self>();
8210        unsafe {
8211            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8212        }
8213        value
8214    }
8215
8216    #[inline]
8217    fn value_type(&self) -> glib::Type {
8218        Self::static_type()
8219    }
8220}
8221
8222impl From<Ordering> for glib::Value {
8223    #[inline]
8224    fn from(v: Ordering) -> Self {
8225        skip_assert_initialized!();
8226        ToValue::to_value(&v)
8227    }
8228}
8229
8230/// Represents the orientation of widgets and other objects.
8231///
8232/// Typical examples are [`Box`][crate::Box] or [`GesturePan`][crate::GesturePan].
8233#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8234#[non_exhaustive]
8235#[doc(alias = "GtkOrientation")]
8236pub enum Orientation {
8237    /// The element is in horizontal orientation.
8238    #[doc(alias = "GTK_ORIENTATION_HORIZONTAL")]
8239    Horizontal,
8240    /// The element is in vertical orientation.
8241    #[doc(alias = "GTK_ORIENTATION_VERTICAL")]
8242    Vertical,
8243    #[doc(hidden)]
8244    __Unknown(i32),
8245}
8246
8247#[doc(hidden)]
8248impl IntoGlib for Orientation {
8249    type GlibType = ffi::GtkOrientation;
8250
8251    #[inline]
8252    fn into_glib(self) -> ffi::GtkOrientation {
8253        match self {
8254            Self::Horizontal => ffi::GTK_ORIENTATION_HORIZONTAL,
8255            Self::Vertical => ffi::GTK_ORIENTATION_VERTICAL,
8256            Self::__Unknown(value) => value,
8257        }
8258    }
8259}
8260
8261#[doc(hidden)]
8262impl FromGlib<ffi::GtkOrientation> for Orientation {
8263    #[inline]
8264    unsafe fn from_glib(value: ffi::GtkOrientation) -> Self {
8265        skip_assert_initialized!();
8266
8267        match value {
8268            ffi::GTK_ORIENTATION_HORIZONTAL => Self::Horizontal,
8269            ffi::GTK_ORIENTATION_VERTICAL => Self::Vertical,
8270            value => Self::__Unknown(value),
8271        }
8272    }
8273}
8274
8275impl StaticType for Orientation {
8276    #[inline]
8277    #[doc(alias = "gtk_orientation_get_type")]
8278    fn static_type() -> glib::Type {
8279        unsafe { from_glib(ffi::gtk_orientation_get_type()) }
8280    }
8281}
8282
8283impl glib::HasParamSpec for Orientation {
8284    type ParamSpec = glib::ParamSpecEnum;
8285    type SetValue = Self;
8286    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8287
8288    fn param_spec_builder() -> Self::BuilderFn {
8289        Self::ParamSpec::builder_with_default
8290    }
8291}
8292
8293impl glib::value::ValueType for Orientation {
8294    type Type = Self;
8295}
8296
8297unsafe impl<'a> glib::value::FromValue<'a> for Orientation {
8298    type Checker = glib::value::GenericValueTypeChecker<Self>;
8299
8300    #[inline]
8301    unsafe fn from_value(value: &'a glib::Value) -> Self {
8302        skip_assert_initialized!();
8303        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8304    }
8305}
8306
8307impl ToValue for Orientation {
8308    #[inline]
8309    fn to_value(&self) -> glib::Value {
8310        let mut value = glib::Value::for_value_type::<Self>();
8311        unsafe {
8312            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8313        }
8314        value
8315    }
8316
8317    #[inline]
8318    fn value_type(&self) -> glib::Type {
8319        Self::static_type()
8320    }
8321}
8322
8323impl From<Orientation> for glib::Value {
8324    #[inline]
8325    fn from(v: Orientation) -> Self {
8326        skip_assert_initialized!();
8327        ToValue::to_value(&v)
8328    }
8329}
8330
8331/// Defines how content overflowing a given area should be handled.
8332///
8333/// This is used in [`WidgetExt::set_overflow()`][crate::prelude::WidgetExt::set_overflow()]. The
8334/// [`overflow`][struct@crate::Widget#overflow] property is modeled after the
8335/// CSS overflow property, but implements it only partially.
8336#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8337#[non_exhaustive]
8338#[doc(alias = "GtkOverflow")]
8339pub enum Overflow {
8340    /// No change is applied. Content is drawn at the specified
8341    ///   position.
8342    #[doc(alias = "GTK_OVERFLOW_VISIBLE")]
8343    Visible,
8344    /// Content is clipped to the bounds of the area. Content
8345    ///   outside the area is not drawn and cannot be interacted with.
8346    #[doc(alias = "GTK_OVERFLOW_HIDDEN")]
8347    Hidden,
8348    #[doc(hidden)]
8349    __Unknown(i32),
8350}
8351
8352#[doc(hidden)]
8353impl IntoGlib for Overflow {
8354    type GlibType = ffi::GtkOverflow;
8355
8356    #[inline]
8357    fn into_glib(self) -> ffi::GtkOverflow {
8358        match self {
8359            Self::Visible => ffi::GTK_OVERFLOW_VISIBLE,
8360            Self::Hidden => ffi::GTK_OVERFLOW_HIDDEN,
8361            Self::__Unknown(value) => value,
8362        }
8363    }
8364}
8365
8366#[doc(hidden)]
8367impl FromGlib<ffi::GtkOverflow> for Overflow {
8368    #[inline]
8369    unsafe fn from_glib(value: ffi::GtkOverflow) -> Self {
8370        skip_assert_initialized!();
8371
8372        match value {
8373            ffi::GTK_OVERFLOW_VISIBLE => Self::Visible,
8374            ffi::GTK_OVERFLOW_HIDDEN => Self::Hidden,
8375            value => Self::__Unknown(value),
8376        }
8377    }
8378}
8379
8380impl StaticType for Overflow {
8381    #[inline]
8382    #[doc(alias = "gtk_overflow_get_type")]
8383    fn static_type() -> glib::Type {
8384        unsafe { from_glib(ffi::gtk_overflow_get_type()) }
8385    }
8386}
8387
8388impl glib::HasParamSpec for Overflow {
8389    type ParamSpec = glib::ParamSpecEnum;
8390    type SetValue = Self;
8391    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8392
8393    fn param_spec_builder() -> Self::BuilderFn {
8394        Self::ParamSpec::builder_with_default
8395    }
8396}
8397
8398impl glib::value::ValueType for Overflow {
8399    type Type = Self;
8400}
8401
8402unsafe impl<'a> glib::value::FromValue<'a> for Overflow {
8403    type Checker = glib::value::GenericValueTypeChecker<Self>;
8404
8405    #[inline]
8406    unsafe fn from_value(value: &'a glib::Value) -> Self {
8407        skip_assert_initialized!();
8408        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8409    }
8410}
8411
8412impl ToValue for Overflow {
8413    #[inline]
8414    fn to_value(&self) -> glib::Value {
8415        let mut value = glib::Value::for_value_type::<Self>();
8416        unsafe {
8417            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8418        }
8419        value
8420    }
8421
8422    #[inline]
8423    fn value_type(&self) -> glib::Type {
8424        Self::static_type()
8425    }
8426}
8427
8428impl From<Overflow> for glib::Value {
8429    #[inline]
8430    fn from(v: Overflow) -> Self {
8431        skip_assert_initialized!();
8432        ToValue::to_value(&v)
8433    }
8434}
8435
8436/// Represents the packing location of a children in its parent.
8437///
8438/// See [`WindowControls`][crate::WindowControls] for example.
8439#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8440#[non_exhaustive]
8441#[doc(alias = "GtkPackType")]
8442pub enum PackType {
8443    /// The child is packed into the start of the widget
8444    #[doc(alias = "GTK_PACK_START")]
8445    Start,
8446    /// The child is packed into the end of the widget
8447    #[doc(alias = "GTK_PACK_END")]
8448    End,
8449    #[doc(hidden)]
8450    __Unknown(i32),
8451}
8452
8453#[doc(hidden)]
8454impl IntoGlib for PackType {
8455    type GlibType = ffi::GtkPackType;
8456
8457    #[inline]
8458    fn into_glib(self) -> ffi::GtkPackType {
8459        match self {
8460            Self::Start => ffi::GTK_PACK_START,
8461            Self::End => ffi::GTK_PACK_END,
8462            Self::__Unknown(value) => value,
8463        }
8464    }
8465}
8466
8467#[doc(hidden)]
8468impl FromGlib<ffi::GtkPackType> for PackType {
8469    #[inline]
8470    unsafe fn from_glib(value: ffi::GtkPackType) -> Self {
8471        skip_assert_initialized!();
8472
8473        match value {
8474            ffi::GTK_PACK_START => Self::Start,
8475            ffi::GTK_PACK_END => Self::End,
8476            value => Self::__Unknown(value),
8477        }
8478    }
8479}
8480
8481impl StaticType for PackType {
8482    #[inline]
8483    #[doc(alias = "gtk_pack_type_get_type")]
8484    fn static_type() -> glib::Type {
8485        unsafe { from_glib(ffi::gtk_pack_type_get_type()) }
8486    }
8487}
8488
8489impl glib::HasParamSpec for PackType {
8490    type ParamSpec = glib::ParamSpecEnum;
8491    type SetValue = Self;
8492    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8493
8494    fn param_spec_builder() -> Self::BuilderFn {
8495        Self::ParamSpec::builder_with_default
8496    }
8497}
8498
8499impl glib::value::ValueType for PackType {
8500    type Type = Self;
8501}
8502
8503unsafe impl<'a> glib::value::FromValue<'a> for PackType {
8504    type Checker = glib::value::GenericValueTypeChecker<Self>;
8505
8506    #[inline]
8507    unsafe fn from_value(value: &'a glib::Value) -> Self {
8508        skip_assert_initialized!();
8509        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8510    }
8511}
8512
8513impl ToValue for PackType {
8514    #[inline]
8515    fn to_value(&self) -> glib::Value {
8516        let mut value = glib::Value::for_value_type::<Self>();
8517        unsafe {
8518            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8519        }
8520        value
8521    }
8522
8523    #[inline]
8524    fn value_type(&self) -> glib::Type {
8525        Self::static_type()
8526    }
8527}
8528
8529impl From<PackType> for glib::Value {
8530    #[inline]
8531    fn from(v: PackType) -> Self {
8532        skip_assert_initialized!();
8533        ToValue::to_value(&v)
8534    }
8535}
8536
8537/// The type of a pad action.
8538#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8539#[non_exhaustive]
8540#[doc(alias = "GtkPadActionType")]
8541pub enum PadActionType {
8542    /// Action is triggered by a pad button
8543    #[doc(alias = "GTK_PAD_ACTION_BUTTON")]
8544    Button,
8545    /// Action is triggered by a pad ring
8546    #[doc(alias = "GTK_PAD_ACTION_RING")]
8547    Ring,
8548    /// Action is triggered by a pad strip
8549    #[doc(alias = "GTK_PAD_ACTION_STRIP")]
8550    Strip,
8551    /// Action is triggered by a pad dial
8552    #[doc(alias = "GTK_PAD_ACTION_DIAL")]
8553    Dial,
8554    #[doc(hidden)]
8555    __Unknown(i32),
8556}
8557
8558#[doc(hidden)]
8559impl IntoGlib for PadActionType {
8560    type GlibType = ffi::GtkPadActionType;
8561
8562    #[inline]
8563    fn into_glib(self) -> ffi::GtkPadActionType {
8564        match self {
8565            Self::Button => ffi::GTK_PAD_ACTION_BUTTON,
8566            Self::Ring => ffi::GTK_PAD_ACTION_RING,
8567            Self::Strip => ffi::GTK_PAD_ACTION_STRIP,
8568            Self::Dial => ffi::GTK_PAD_ACTION_DIAL,
8569            Self::__Unknown(value) => value,
8570        }
8571    }
8572}
8573
8574#[doc(hidden)]
8575impl FromGlib<ffi::GtkPadActionType> for PadActionType {
8576    #[inline]
8577    unsafe fn from_glib(value: ffi::GtkPadActionType) -> Self {
8578        skip_assert_initialized!();
8579
8580        match value {
8581            ffi::GTK_PAD_ACTION_BUTTON => Self::Button,
8582            ffi::GTK_PAD_ACTION_RING => Self::Ring,
8583            ffi::GTK_PAD_ACTION_STRIP => Self::Strip,
8584            ffi::GTK_PAD_ACTION_DIAL => Self::Dial,
8585            value => Self::__Unknown(value),
8586        }
8587    }
8588}
8589
8590impl StaticType for PadActionType {
8591    #[inline]
8592    #[doc(alias = "gtk_pad_action_type_get_type")]
8593    fn static_type() -> glib::Type {
8594        unsafe { from_glib(ffi::gtk_pad_action_type_get_type()) }
8595    }
8596}
8597
8598impl glib::HasParamSpec for PadActionType {
8599    type ParamSpec = glib::ParamSpecEnum;
8600    type SetValue = Self;
8601    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8602
8603    fn param_spec_builder() -> Self::BuilderFn {
8604        Self::ParamSpec::builder_with_default
8605    }
8606}
8607
8608impl glib::value::ValueType for PadActionType {
8609    type Type = Self;
8610}
8611
8612unsafe impl<'a> glib::value::FromValue<'a> for PadActionType {
8613    type Checker = glib::value::GenericValueTypeChecker<Self>;
8614
8615    #[inline]
8616    unsafe fn from_value(value: &'a glib::Value) -> Self {
8617        skip_assert_initialized!();
8618        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8619    }
8620}
8621
8622impl ToValue for PadActionType {
8623    #[inline]
8624    fn to_value(&self) -> glib::Value {
8625        let mut value = glib::Value::for_value_type::<Self>();
8626        unsafe {
8627            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8628        }
8629        value
8630    }
8631
8632    #[inline]
8633    fn value_type(&self) -> glib::Type {
8634        Self::static_type()
8635    }
8636}
8637
8638impl From<PadActionType> for glib::Value {
8639    #[inline]
8640    fn from(v: PadActionType) -> Self {
8641        skip_assert_initialized!();
8642        ToValue::to_value(&v)
8643    }
8644}
8645
8646/// See also gtk_print_settings_set_orientation().
8647#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8648#[non_exhaustive]
8649#[doc(alias = "GtkPageOrientation")]
8650pub enum PageOrientation {
8651    /// Portrait mode.
8652    #[doc(alias = "GTK_PAGE_ORIENTATION_PORTRAIT")]
8653    Portrait,
8654    /// Landscape mode.
8655    #[doc(alias = "GTK_PAGE_ORIENTATION_LANDSCAPE")]
8656    Landscape,
8657    /// Reverse portrait mode.
8658    #[doc(alias = "GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT")]
8659    ReversePortrait,
8660    /// Reverse landscape mode.
8661    #[doc(alias = "GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE")]
8662    ReverseLandscape,
8663    #[doc(hidden)]
8664    __Unknown(i32),
8665}
8666
8667#[doc(hidden)]
8668impl IntoGlib for PageOrientation {
8669    type GlibType = ffi::GtkPageOrientation;
8670
8671    #[inline]
8672    fn into_glib(self) -> ffi::GtkPageOrientation {
8673        match self {
8674            Self::Portrait => ffi::GTK_PAGE_ORIENTATION_PORTRAIT,
8675            Self::Landscape => ffi::GTK_PAGE_ORIENTATION_LANDSCAPE,
8676            Self::ReversePortrait => ffi::GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT,
8677            Self::ReverseLandscape => ffi::GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE,
8678            Self::__Unknown(value) => value,
8679        }
8680    }
8681}
8682
8683#[doc(hidden)]
8684impl FromGlib<ffi::GtkPageOrientation> for PageOrientation {
8685    #[inline]
8686    unsafe fn from_glib(value: ffi::GtkPageOrientation) -> Self {
8687        skip_assert_initialized!();
8688
8689        match value {
8690            ffi::GTK_PAGE_ORIENTATION_PORTRAIT => Self::Portrait,
8691            ffi::GTK_PAGE_ORIENTATION_LANDSCAPE => Self::Landscape,
8692            ffi::GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT => Self::ReversePortrait,
8693            ffi::GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE => Self::ReverseLandscape,
8694            value => Self::__Unknown(value),
8695        }
8696    }
8697}
8698
8699impl StaticType for PageOrientation {
8700    #[inline]
8701    #[doc(alias = "gtk_page_orientation_get_type")]
8702    fn static_type() -> glib::Type {
8703        unsafe { from_glib(ffi::gtk_page_orientation_get_type()) }
8704    }
8705}
8706
8707impl glib::HasParamSpec for PageOrientation {
8708    type ParamSpec = glib::ParamSpecEnum;
8709    type SetValue = Self;
8710    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8711
8712    fn param_spec_builder() -> Self::BuilderFn {
8713        Self::ParamSpec::builder_with_default
8714    }
8715}
8716
8717impl glib::value::ValueType for PageOrientation {
8718    type Type = Self;
8719}
8720
8721unsafe impl<'a> glib::value::FromValue<'a> for PageOrientation {
8722    type Checker = glib::value::GenericValueTypeChecker<Self>;
8723
8724    #[inline]
8725    unsafe fn from_value(value: &'a glib::Value) -> Self {
8726        skip_assert_initialized!();
8727        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8728    }
8729}
8730
8731impl ToValue for PageOrientation {
8732    #[inline]
8733    fn to_value(&self) -> glib::Value {
8734        let mut value = glib::Value::for_value_type::<Self>();
8735        unsafe {
8736            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8737        }
8738        value
8739    }
8740
8741    #[inline]
8742    fn value_type(&self) -> glib::Type {
8743        Self::static_type()
8744    }
8745}
8746
8747impl From<PageOrientation> for glib::Value {
8748    #[inline]
8749    fn from(v: PageOrientation) -> Self {
8750        skip_assert_initialized!();
8751        ToValue::to_value(&v)
8752    }
8753}
8754
8755/// See also gtk_print_job_set_page_set().
8756#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8757#[non_exhaustive]
8758#[doc(alias = "GtkPageSet")]
8759pub enum PageSet {
8760    /// All pages.
8761    #[doc(alias = "GTK_PAGE_SET_ALL")]
8762    All,
8763    /// Even pages.
8764    #[doc(alias = "GTK_PAGE_SET_EVEN")]
8765    Even,
8766    /// Odd pages.
8767    #[doc(alias = "GTK_PAGE_SET_ODD")]
8768    Odd,
8769    #[doc(hidden)]
8770    __Unknown(i32),
8771}
8772
8773#[doc(hidden)]
8774impl IntoGlib for PageSet {
8775    type GlibType = ffi::GtkPageSet;
8776
8777    #[inline]
8778    fn into_glib(self) -> ffi::GtkPageSet {
8779        match self {
8780            Self::All => ffi::GTK_PAGE_SET_ALL,
8781            Self::Even => ffi::GTK_PAGE_SET_EVEN,
8782            Self::Odd => ffi::GTK_PAGE_SET_ODD,
8783            Self::__Unknown(value) => value,
8784        }
8785    }
8786}
8787
8788#[doc(hidden)]
8789impl FromGlib<ffi::GtkPageSet> for PageSet {
8790    #[inline]
8791    unsafe fn from_glib(value: ffi::GtkPageSet) -> Self {
8792        skip_assert_initialized!();
8793
8794        match value {
8795            ffi::GTK_PAGE_SET_ALL => Self::All,
8796            ffi::GTK_PAGE_SET_EVEN => Self::Even,
8797            ffi::GTK_PAGE_SET_ODD => Self::Odd,
8798            value => Self::__Unknown(value),
8799        }
8800    }
8801}
8802
8803impl StaticType for PageSet {
8804    #[inline]
8805    #[doc(alias = "gtk_page_set_get_type")]
8806    fn static_type() -> glib::Type {
8807        unsafe { from_glib(ffi::gtk_page_set_get_type()) }
8808    }
8809}
8810
8811impl glib::HasParamSpec for PageSet {
8812    type ParamSpec = glib::ParamSpecEnum;
8813    type SetValue = Self;
8814    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8815
8816    fn param_spec_builder() -> Self::BuilderFn {
8817        Self::ParamSpec::builder_with_default
8818    }
8819}
8820
8821impl glib::value::ValueType for PageSet {
8822    type Type = Self;
8823}
8824
8825unsafe impl<'a> glib::value::FromValue<'a> for PageSet {
8826    type Checker = glib::value::GenericValueTypeChecker<Self>;
8827
8828    #[inline]
8829    unsafe fn from_value(value: &'a glib::Value) -> Self {
8830        skip_assert_initialized!();
8831        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8832    }
8833}
8834
8835impl ToValue for PageSet {
8836    #[inline]
8837    fn to_value(&self) -> glib::Value {
8838        let mut value = glib::Value::for_value_type::<Self>();
8839        unsafe {
8840            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8841        }
8842        value
8843    }
8844
8845    #[inline]
8846    fn value_type(&self) -> glib::Type {
8847        Self::static_type()
8848    }
8849}
8850
8851impl From<PageSet> for glib::Value {
8852    #[inline]
8853    fn from(v: PageSet) -> Self {
8854        skip_assert_initialized!();
8855        ToValue::to_value(&v)
8856    }
8857}
8858
8859/// Describes the panning direction of a [`GesturePan`][crate::GesturePan].
8860#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8861#[non_exhaustive]
8862#[doc(alias = "GtkPanDirection")]
8863pub enum PanDirection {
8864    /// panned towards the left
8865    #[doc(alias = "GTK_PAN_DIRECTION_LEFT")]
8866    Left,
8867    /// panned towards the right
8868    #[doc(alias = "GTK_PAN_DIRECTION_RIGHT")]
8869    Right,
8870    /// panned upwards
8871    #[doc(alias = "GTK_PAN_DIRECTION_UP")]
8872    Up,
8873    /// panned downwards
8874    #[doc(alias = "GTK_PAN_DIRECTION_DOWN")]
8875    Down,
8876    #[doc(hidden)]
8877    __Unknown(i32),
8878}
8879
8880#[doc(hidden)]
8881impl IntoGlib for PanDirection {
8882    type GlibType = ffi::GtkPanDirection;
8883
8884    #[inline]
8885    fn into_glib(self) -> ffi::GtkPanDirection {
8886        match self {
8887            Self::Left => ffi::GTK_PAN_DIRECTION_LEFT,
8888            Self::Right => ffi::GTK_PAN_DIRECTION_RIGHT,
8889            Self::Up => ffi::GTK_PAN_DIRECTION_UP,
8890            Self::Down => ffi::GTK_PAN_DIRECTION_DOWN,
8891            Self::__Unknown(value) => value,
8892        }
8893    }
8894}
8895
8896#[doc(hidden)]
8897impl FromGlib<ffi::GtkPanDirection> for PanDirection {
8898    #[inline]
8899    unsafe fn from_glib(value: ffi::GtkPanDirection) -> Self {
8900        skip_assert_initialized!();
8901
8902        match value {
8903            ffi::GTK_PAN_DIRECTION_LEFT => Self::Left,
8904            ffi::GTK_PAN_DIRECTION_RIGHT => Self::Right,
8905            ffi::GTK_PAN_DIRECTION_UP => Self::Up,
8906            ffi::GTK_PAN_DIRECTION_DOWN => Self::Down,
8907            value => Self::__Unknown(value),
8908        }
8909    }
8910}
8911
8912impl StaticType for PanDirection {
8913    #[inline]
8914    #[doc(alias = "gtk_pan_direction_get_type")]
8915    fn static_type() -> glib::Type {
8916        unsafe { from_glib(ffi::gtk_pan_direction_get_type()) }
8917    }
8918}
8919
8920impl glib::HasParamSpec for PanDirection {
8921    type ParamSpec = glib::ParamSpecEnum;
8922    type SetValue = Self;
8923    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8924
8925    fn param_spec_builder() -> Self::BuilderFn {
8926        Self::ParamSpec::builder_with_default
8927    }
8928}
8929
8930impl glib::value::ValueType for PanDirection {
8931    type Type = Self;
8932}
8933
8934unsafe impl<'a> glib::value::FromValue<'a> for PanDirection {
8935    type Checker = glib::value::GenericValueTypeChecker<Self>;
8936
8937    #[inline]
8938    unsafe fn from_value(value: &'a glib::Value) -> Self {
8939        skip_assert_initialized!();
8940        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
8941    }
8942}
8943
8944impl ToValue for PanDirection {
8945    #[inline]
8946    fn to_value(&self) -> glib::Value {
8947        let mut value = glib::Value::for_value_type::<Self>();
8948        unsafe {
8949            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8950        }
8951        value
8952    }
8953
8954    #[inline]
8955    fn value_type(&self) -> glib::Type {
8956        Self::static_type()
8957    }
8958}
8959
8960impl From<PanDirection> for glib::Value {
8961    #[inline]
8962    fn from(v: PanDirection) -> Self {
8963        skip_assert_initialized!();
8964        ToValue::to_value(&v)
8965    }
8966}
8967
8968/// Determines how the size should be computed to achieve the one of the
8969/// visibility mode for the scrollbars.
8970#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8971#[non_exhaustive]
8972#[doc(alias = "GtkPolicyType")]
8973pub enum PolicyType {
8974    /// The scrollbar is always visible. The view size is
8975    ///   independent of the content.
8976    #[doc(alias = "GTK_POLICY_ALWAYS")]
8977    Always,
8978    /// The scrollbar will appear and disappear as necessary.
8979    ///   For example, when all of a [`TreeView`][crate::TreeView] can not be seen.
8980    #[doc(alias = "GTK_POLICY_AUTOMATIC")]
8981    Automatic,
8982    /// The scrollbar should never appear. In this mode the
8983    ///   content determines the size.
8984    #[doc(alias = "GTK_POLICY_NEVER")]
8985    Never,
8986    /// Don't show a scrollbar, but don't force the
8987    ///   size to follow the content. This can be used e.g. to make multiple
8988    ///   scrolled windows share a scrollbar.
8989    #[doc(alias = "GTK_POLICY_EXTERNAL")]
8990    External,
8991    #[doc(hidden)]
8992    __Unknown(i32),
8993}
8994
8995#[doc(hidden)]
8996impl IntoGlib for PolicyType {
8997    type GlibType = ffi::GtkPolicyType;
8998
8999    #[inline]
9000    fn into_glib(self) -> ffi::GtkPolicyType {
9001        match self {
9002            Self::Always => ffi::GTK_POLICY_ALWAYS,
9003            Self::Automatic => ffi::GTK_POLICY_AUTOMATIC,
9004            Self::Never => ffi::GTK_POLICY_NEVER,
9005            Self::External => ffi::GTK_POLICY_EXTERNAL,
9006            Self::__Unknown(value) => value,
9007        }
9008    }
9009}
9010
9011#[doc(hidden)]
9012impl FromGlib<ffi::GtkPolicyType> for PolicyType {
9013    #[inline]
9014    unsafe fn from_glib(value: ffi::GtkPolicyType) -> Self {
9015        skip_assert_initialized!();
9016
9017        match value {
9018            ffi::GTK_POLICY_ALWAYS => Self::Always,
9019            ffi::GTK_POLICY_AUTOMATIC => Self::Automatic,
9020            ffi::GTK_POLICY_NEVER => Self::Never,
9021            ffi::GTK_POLICY_EXTERNAL => Self::External,
9022            value => Self::__Unknown(value),
9023        }
9024    }
9025}
9026
9027impl StaticType for PolicyType {
9028    #[inline]
9029    #[doc(alias = "gtk_policy_type_get_type")]
9030    fn static_type() -> glib::Type {
9031        unsafe { from_glib(ffi::gtk_policy_type_get_type()) }
9032    }
9033}
9034
9035impl glib::HasParamSpec for PolicyType {
9036    type ParamSpec = glib::ParamSpecEnum;
9037    type SetValue = Self;
9038    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9039
9040    fn param_spec_builder() -> Self::BuilderFn {
9041        Self::ParamSpec::builder_with_default
9042    }
9043}
9044
9045impl glib::value::ValueType for PolicyType {
9046    type Type = Self;
9047}
9048
9049unsafe impl<'a> glib::value::FromValue<'a> for PolicyType {
9050    type Checker = glib::value::GenericValueTypeChecker<Self>;
9051
9052    #[inline]
9053    unsafe fn from_value(value: &'a glib::Value) -> Self {
9054        skip_assert_initialized!();
9055        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9056    }
9057}
9058
9059impl ToValue for PolicyType {
9060    #[inline]
9061    fn to_value(&self) -> glib::Value {
9062        let mut value = glib::Value::for_value_type::<Self>();
9063        unsafe {
9064            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9065        }
9066        value
9067    }
9068
9069    #[inline]
9070    fn value_type(&self) -> glib::Type {
9071        Self::static_type()
9072    }
9073}
9074
9075impl From<PolicyType> for glib::Value {
9076    #[inline]
9077    fn from(v: PolicyType) -> Self {
9078        skip_assert_initialized!();
9079        ToValue::to_value(&v)
9080    }
9081}
9082
9083/// Describes which edge of a widget a certain feature is positioned at.
9084///
9085/// For examples, see the tabs of a [`Notebook`][crate::Notebook], or the label
9086/// of a [`Scale`][crate::Scale].
9087#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9088#[non_exhaustive]
9089#[doc(alias = "GtkPositionType")]
9090pub enum PositionType {
9091    /// The feature is at the left edge.
9092    #[doc(alias = "GTK_POS_LEFT")]
9093    Left,
9094    /// The feature is at the right edge.
9095    #[doc(alias = "GTK_POS_RIGHT")]
9096    Right,
9097    /// The feature is at the top edge.
9098    #[doc(alias = "GTK_POS_TOP")]
9099    Top,
9100    /// The feature is at the bottom edge.
9101    #[doc(alias = "GTK_POS_BOTTOM")]
9102    Bottom,
9103    #[doc(hidden)]
9104    __Unknown(i32),
9105}
9106
9107#[doc(hidden)]
9108impl IntoGlib for PositionType {
9109    type GlibType = ffi::GtkPositionType;
9110
9111    #[inline]
9112    fn into_glib(self) -> ffi::GtkPositionType {
9113        match self {
9114            Self::Left => ffi::GTK_POS_LEFT,
9115            Self::Right => ffi::GTK_POS_RIGHT,
9116            Self::Top => ffi::GTK_POS_TOP,
9117            Self::Bottom => ffi::GTK_POS_BOTTOM,
9118            Self::__Unknown(value) => value,
9119        }
9120    }
9121}
9122
9123#[doc(hidden)]
9124impl FromGlib<ffi::GtkPositionType> for PositionType {
9125    #[inline]
9126    unsafe fn from_glib(value: ffi::GtkPositionType) -> Self {
9127        skip_assert_initialized!();
9128
9129        match value {
9130            ffi::GTK_POS_LEFT => Self::Left,
9131            ffi::GTK_POS_RIGHT => Self::Right,
9132            ffi::GTK_POS_TOP => Self::Top,
9133            ffi::GTK_POS_BOTTOM => Self::Bottom,
9134            value => Self::__Unknown(value),
9135        }
9136    }
9137}
9138
9139impl StaticType for PositionType {
9140    #[inline]
9141    #[doc(alias = "gtk_position_type_get_type")]
9142    fn static_type() -> glib::Type {
9143        unsafe { from_glib(ffi::gtk_position_type_get_type()) }
9144    }
9145}
9146
9147impl glib::HasParamSpec for PositionType {
9148    type ParamSpec = glib::ParamSpecEnum;
9149    type SetValue = Self;
9150    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9151
9152    fn param_spec_builder() -> Self::BuilderFn {
9153        Self::ParamSpec::builder_with_default
9154    }
9155}
9156
9157impl glib::value::ValueType for PositionType {
9158    type Type = Self;
9159}
9160
9161unsafe impl<'a> glib::value::FromValue<'a> for PositionType {
9162    type Checker = glib::value::GenericValueTypeChecker<Self>;
9163
9164    #[inline]
9165    unsafe fn from_value(value: &'a glib::Value) -> Self {
9166        skip_assert_initialized!();
9167        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9168    }
9169}
9170
9171impl ToValue for PositionType {
9172    #[inline]
9173    fn to_value(&self) -> glib::Value {
9174        let mut value = glib::Value::for_value_type::<Self>();
9175        unsafe {
9176            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9177        }
9178        value
9179    }
9180
9181    #[inline]
9182    fn value_type(&self) -> glib::Type {
9183        Self::static_type()
9184    }
9185}
9186
9187impl From<PositionType> for glib::Value {
9188    #[inline]
9189    fn from(v: PositionType) -> Self {
9190        skip_assert_initialized!();
9191        ToValue::to_value(&v)
9192    }
9193}
9194
9195/// See also gtk_print_settings_set_duplex().
9196#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9197#[non_exhaustive]
9198#[doc(alias = "GtkPrintDuplex")]
9199pub enum PrintDuplex {
9200    /// No duplex.
9201    #[doc(alias = "GTK_PRINT_DUPLEX_SIMPLEX")]
9202    Simplex,
9203    /// Horizontal duplex.
9204    #[doc(alias = "GTK_PRINT_DUPLEX_HORIZONTAL")]
9205    Horizontal,
9206    /// Vertical duplex.
9207    #[doc(alias = "GTK_PRINT_DUPLEX_VERTICAL")]
9208    Vertical,
9209    #[doc(hidden)]
9210    __Unknown(i32),
9211}
9212
9213#[doc(hidden)]
9214impl IntoGlib for PrintDuplex {
9215    type GlibType = ffi::GtkPrintDuplex;
9216
9217    #[inline]
9218    fn into_glib(self) -> ffi::GtkPrintDuplex {
9219        match self {
9220            Self::Simplex => ffi::GTK_PRINT_DUPLEX_SIMPLEX,
9221            Self::Horizontal => ffi::GTK_PRINT_DUPLEX_HORIZONTAL,
9222            Self::Vertical => ffi::GTK_PRINT_DUPLEX_VERTICAL,
9223            Self::__Unknown(value) => value,
9224        }
9225    }
9226}
9227
9228#[doc(hidden)]
9229impl FromGlib<ffi::GtkPrintDuplex> for PrintDuplex {
9230    #[inline]
9231    unsafe fn from_glib(value: ffi::GtkPrintDuplex) -> Self {
9232        skip_assert_initialized!();
9233
9234        match value {
9235            ffi::GTK_PRINT_DUPLEX_SIMPLEX => Self::Simplex,
9236            ffi::GTK_PRINT_DUPLEX_HORIZONTAL => Self::Horizontal,
9237            ffi::GTK_PRINT_DUPLEX_VERTICAL => Self::Vertical,
9238            value => Self::__Unknown(value),
9239        }
9240    }
9241}
9242
9243impl StaticType for PrintDuplex {
9244    #[inline]
9245    #[doc(alias = "gtk_print_duplex_get_type")]
9246    fn static_type() -> glib::Type {
9247        unsafe { from_glib(ffi::gtk_print_duplex_get_type()) }
9248    }
9249}
9250
9251impl glib::HasParamSpec for PrintDuplex {
9252    type ParamSpec = glib::ParamSpecEnum;
9253    type SetValue = Self;
9254    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9255
9256    fn param_spec_builder() -> Self::BuilderFn {
9257        Self::ParamSpec::builder_with_default
9258    }
9259}
9260
9261impl glib::value::ValueType for PrintDuplex {
9262    type Type = Self;
9263}
9264
9265unsafe impl<'a> glib::value::FromValue<'a> for PrintDuplex {
9266    type Checker = glib::value::GenericValueTypeChecker<Self>;
9267
9268    #[inline]
9269    unsafe fn from_value(value: &'a glib::Value) -> Self {
9270        skip_assert_initialized!();
9271        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9272    }
9273}
9274
9275impl ToValue for PrintDuplex {
9276    #[inline]
9277    fn to_value(&self) -> glib::Value {
9278        let mut value = glib::Value::for_value_type::<Self>();
9279        unsafe {
9280            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9281        }
9282        value
9283    }
9284
9285    #[inline]
9286    fn value_type(&self) -> glib::Type {
9287        Self::static_type()
9288    }
9289}
9290
9291impl From<PrintDuplex> for glib::Value {
9292    #[inline]
9293    fn from(v: PrintDuplex) -> Self {
9294        skip_assert_initialized!();
9295        ToValue::to_value(&v)
9296    }
9297}
9298
9299/// Error codes that identify various errors that can occur while
9300/// using the GTK printing support.
9301#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9302#[non_exhaustive]
9303#[doc(alias = "GtkPrintError")]
9304pub enum PrintError {
9305    /// An unspecified error occurred.
9306    #[doc(alias = "GTK_PRINT_ERROR_GENERAL")]
9307    General,
9308    /// An internal error occurred.
9309    #[doc(alias = "GTK_PRINT_ERROR_INTERNAL_ERROR")]
9310    InternalError,
9311    /// A memory allocation failed.
9312    #[doc(alias = "GTK_PRINT_ERROR_NOMEM")]
9313    Nomem,
9314    /// An error occurred while loading a page setup
9315    ///   or paper size from a key file.
9316    #[doc(alias = "GTK_PRINT_ERROR_INVALID_FILE")]
9317    InvalidFile,
9318    #[doc(hidden)]
9319    __Unknown(i32),
9320}
9321
9322#[doc(hidden)]
9323impl IntoGlib for PrintError {
9324    type GlibType = ffi::GtkPrintError;
9325
9326    #[inline]
9327    fn into_glib(self) -> ffi::GtkPrintError {
9328        match self {
9329            Self::General => ffi::GTK_PRINT_ERROR_GENERAL,
9330            Self::InternalError => ffi::GTK_PRINT_ERROR_INTERNAL_ERROR,
9331            Self::Nomem => ffi::GTK_PRINT_ERROR_NOMEM,
9332            Self::InvalidFile => ffi::GTK_PRINT_ERROR_INVALID_FILE,
9333            Self::__Unknown(value) => value,
9334        }
9335    }
9336}
9337
9338#[doc(hidden)]
9339impl FromGlib<ffi::GtkPrintError> for PrintError {
9340    #[inline]
9341    unsafe fn from_glib(value: ffi::GtkPrintError) -> Self {
9342        skip_assert_initialized!();
9343
9344        match value {
9345            ffi::GTK_PRINT_ERROR_GENERAL => Self::General,
9346            ffi::GTK_PRINT_ERROR_INTERNAL_ERROR => Self::InternalError,
9347            ffi::GTK_PRINT_ERROR_NOMEM => Self::Nomem,
9348            ffi::GTK_PRINT_ERROR_INVALID_FILE => Self::InvalidFile,
9349            value => Self::__Unknown(value),
9350        }
9351    }
9352}
9353
9354impl glib::error::ErrorDomain for PrintError {
9355    #[inline]
9356    fn domain() -> glib::Quark {
9357        skip_assert_initialized!();
9358
9359        unsafe { from_glib(ffi::gtk_print_error_quark()) }
9360    }
9361
9362    #[inline]
9363    fn code(self) -> i32 {
9364        self.into_glib()
9365    }
9366
9367    #[inline]
9368    #[allow(clippy::match_single_binding)]
9369    fn from(code: i32) -> Option<Self> {
9370        skip_assert_initialized!();
9371        match unsafe { from_glib(code) } {
9372            value => Some(value),
9373        }
9374    }
9375}
9376
9377impl StaticType for PrintError {
9378    #[inline]
9379    #[doc(alias = "gtk_print_error_get_type")]
9380    fn static_type() -> glib::Type {
9381        unsafe { from_glib(ffi::gtk_print_error_get_type()) }
9382    }
9383}
9384
9385impl glib::HasParamSpec for PrintError {
9386    type ParamSpec = glib::ParamSpecEnum;
9387    type SetValue = Self;
9388    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9389
9390    fn param_spec_builder() -> Self::BuilderFn {
9391        Self::ParamSpec::builder_with_default
9392    }
9393}
9394
9395impl glib::value::ValueType for PrintError {
9396    type Type = Self;
9397}
9398
9399unsafe impl<'a> glib::value::FromValue<'a> for PrintError {
9400    type Checker = glib::value::GenericValueTypeChecker<Self>;
9401
9402    #[inline]
9403    unsafe fn from_value(value: &'a glib::Value) -> Self {
9404        skip_assert_initialized!();
9405        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9406    }
9407}
9408
9409impl ToValue for PrintError {
9410    #[inline]
9411    fn to_value(&self) -> glib::Value {
9412        let mut value = glib::Value::for_value_type::<Self>();
9413        unsafe {
9414            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9415        }
9416        value
9417    }
9418
9419    #[inline]
9420    fn value_type(&self) -> glib::Type {
9421        Self::static_type()
9422    }
9423}
9424
9425impl From<PrintError> for glib::Value {
9426    #[inline]
9427    fn from(v: PrintError) -> Self {
9428        skip_assert_initialized!();
9429        ToValue::to_value(&v)
9430    }
9431}
9432
9433/// Determines what action the print operation should perform.
9434///
9435/// A parameter of this typs is passed to [`PrintOperationExt::run()`][crate::prelude::PrintOperationExt::run()].
9436#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9437#[non_exhaustive]
9438#[doc(alias = "GtkPrintOperationAction")]
9439pub enum PrintOperationAction {
9440    /// Show the print dialog.
9441    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG")]
9442    PrintDialog,
9443    /// Start to print without showing
9444    ///   the print dialog, based on the current print settings, if possible.
9445    ///   Depending on the platform, a print dialog might appear anyway.
9446    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PRINT")]
9447    Print,
9448    /// Show the print preview.
9449    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_PREVIEW")]
9450    Preview,
9451    /// Export to a file. This requires
9452    ///   the export-filename property to be set.
9453    #[doc(alias = "GTK_PRINT_OPERATION_ACTION_EXPORT")]
9454    Export,
9455    #[doc(hidden)]
9456    __Unknown(i32),
9457}
9458
9459#[doc(hidden)]
9460impl IntoGlib for PrintOperationAction {
9461    type GlibType = ffi::GtkPrintOperationAction;
9462
9463    #[inline]
9464    fn into_glib(self) -> ffi::GtkPrintOperationAction {
9465        match self {
9466            Self::PrintDialog => ffi::GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
9467            Self::Print => ffi::GTK_PRINT_OPERATION_ACTION_PRINT,
9468            Self::Preview => ffi::GTK_PRINT_OPERATION_ACTION_PREVIEW,
9469            Self::Export => ffi::GTK_PRINT_OPERATION_ACTION_EXPORT,
9470            Self::__Unknown(value) => value,
9471        }
9472    }
9473}
9474
9475#[doc(hidden)]
9476impl FromGlib<ffi::GtkPrintOperationAction> for PrintOperationAction {
9477    #[inline]
9478    unsafe fn from_glib(value: ffi::GtkPrintOperationAction) -> Self {
9479        skip_assert_initialized!();
9480
9481        match value {
9482            ffi::GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG => Self::PrintDialog,
9483            ffi::GTK_PRINT_OPERATION_ACTION_PRINT => Self::Print,
9484            ffi::GTK_PRINT_OPERATION_ACTION_PREVIEW => Self::Preview,
9485            ffi::GTK_PRINT_OPERATION_ACTION_EXPORT => Self::Export,
9486            value => Self::__Unknown(value),
9487        }
9488    }
9489}
9490
9491impl StaticType for PrintOperationAction {
9492    #[inline]
9493    #[doc(alias = "gtk_print_operation_action_get_type")]
9494    fn static_type() -> glib::Type {
9495        unsafe { from_glib(ffi::gtk_print_operation_action_get_type()) }
9496    }
9497}
9498
9499impl glib::HasParamSpec for PrintOperationAction {
9500    type ParamSpec = glib::ParamSpecEnum;
9501    type SetValue = Self;
9502    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9503
9504    fn param_spec_builder() -> Self::BuilderFn {
9505        Self::ParamSpec::builder_with_default
9506    }
9507}
9508
9509impl glib::value::ValueType for PrintOperationAction {
9510    type Type = Self;
9511}
9512
9513unsafe impl<'a> glib::value::FromValue<'a> for PrintOperationAction {
9514    type Checker = glib::value::GenericValueTypeChecker<Self>;
9515
9516    #[inline]
9517    unsafe fn from_value(value: &'a glib::Value) -> Self {
9518        skip_assert_initialized!();
9519        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9520    }
9521}
9522
9523impl ToValue for PrintOperationAction {
9524    #[inline]
9525    fn to_value(&self) -> glib::Value {
9526        let mut value = glib::Value::for_value_type::<Self>();
9527        unsafe {
9528            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9529        }
9530        value
9531    }
9532
9533    #[inline]
9534    fn value_type(&self) -> glib::Type {
9535        Self::static_type()
9536    }
9537}
9538
9539impl From<PrintOperationAction> for glib::Value {
9540    #[inline]
9541    fn from(v: PrintOperationAction) -> Self {
9542        skip_assert_initialized!();
9543        ToValue::to_value(&v)
9544    }
9545}
9546
9547/// The result of a print operation.
9548///
9549/// A value of this type is returned by [`PrintOperationExt::run()`][crate::prelude::PrintOperationExt::run()].
9550#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9551#[non_exhaustive]
9552#[doc(alias = "GtkPrintOperationResult")]
9553pub enum PrintOperationResult {
9554    /// An error has occurred.
9555    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_ERROR")]
9556    Error,
9557    /// The print settings should be stored.
9558    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_APPLY")]
9559    Apply,
9560    /// The print operation has been canceled,
9561    ///   the print settings should not be stored.
9562    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_CANCEL")]
9563    Cancel,
9564    /// The print operation is not complete
9565    ///   yet. This value will only be returned when running asynchronously.
9566    #[doc(alias = "GTK_PRINT_OPERATION_RESULT_IN_PROGRESS")]
9567    InProgress,
9568    #[doc(hidden)]
9569    __Unknown(i32),
9570}
9571
9572#[doc(hidden)]
9573impl IntoGlib for PrintOperationResult {
9574    type GlibType = ffi::GtkPrintOperationResult;
9575
9576    #[inline]
9577    fn into_glib(self) -> ffi::GtkPrintOperationResult {
9578        match self {
9579            Self::Error => ffi::GTK_PRINT_OPERATION_RESULT_ERROR,
9580            Self::Apply => ffi::GTK_PRINT_OPERATION_RESULT_APPLY,
9581            Self::Cancel => ffi::GTK_PRINT_OPERATION_RESULT_CANCEL,
9582            Self::InProgress => ffi::GTK_PRINT_OPERATION_RESULT_IN_PROGRESS,
9583            Self::__Unknown(value) => value,
9584        }
9585    }
9586}
9587
9588#[doc(hidden)]
9589impl FromGlib<ffi::GtkPrintOperationResult> for PrintOperationResult {
9590    #[inline]
9591    unsafe fn from_glib(value: ffi::GtkPrintOperationResult) -> Self {
9592        skip_assert_initialized!();
9593
9594        match value {
9595            ffi::GTK_PRINT_OPERATION_RESULT_ERROR => Self::Error,
9596            ffi::GTK_PRINT_OPERATION_RESULT_APPLY => Self::Apply,
9597            ffi::GTK_PRINT_OPERATION_RESULT_CANCEL => Self::Cancel,
9598            ffi::GTK_PRINT_OPERATION_RESULT_IN_PROGRESS => Self::InProgress,
9599            value => Self::__Unknown(value),
9600        }
9601    }
9602}
9603
9604impl StaticType for PrintOperationResult {
9605    #[inline]
9606    #[doc(alias = "gtk_print_operation_result_get_type")]
9607    fn static_type() -> glib::Type {
9608        unsafe { from_glib(ffi::gtk_print_operation_result_get_type()) }
9609    }
9610}
9611
9612impl glib::HasParamSpec for PrintOperationResult {
9613    type ParamSpec = glib::ParamSpecEnum;
9614    type SetValue = Self;
9615    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9616
9617    fn param_spec_builder() -> Self::BuilderFn {
9618        Self::ParamSpec::builder_with_default
9619    }
9620}
9621
9622impl glib::value::ValueType for PrintOperationResult {
9623    type Type = Self;
9624}
9625
9626unsafe impl<'a> glib::value::FromValue<'a> for PrintOperationResult {
9627    type Checker = glib::value::GenericValueTypeChecker<Self>;
9628
9629    #[inline]
9630    unsafe fn from_value(value: &'a glib::Value) -> Self {
9631        skip_assert_initialized!();
9632        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9633    }
9634}
9635
9636impl ToValue for PrintOperationResult {
9637    #[inline]
9638    fn to_value(&self) -> glib::Value {
9639        let mut value = glib::Value::for_value_type::<Self>();
9640        unsafe {
9641            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9642        }
9643        value
9644    }
9645
9646    #[inline]
9647    fn value_type(&self) -> glib::Type {
9648        Self::static_type()
9649    }
9650}
9651
9652impl From<PrintOperationResult> for glib::Value {
9653    #[inline]
9654    fn from(v: PrintOperationResult) -> Self {
9655        skip_assert_initialized!();
9656        ToValue::to_value(&v)
9657    }
9658}
9659
9660/// See also gtk_print_job_set_pages()
9661#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9662#[non_exhaustive]
9663#[doc(alias = "GtkPrintPages")]
9664pub enum PrintPages {
9665    /// All pages.
9666    #[doc(alias = "GTK_PRINT_PAGES_ALL")]
9667    All,
9668    /// Current page.
9669    #[doc(alias = "GTK_PRINT_PAGES_CURRENT")]
9670    Current,
9671    /// Range of pages.
9672    #[doc(alias = "GTK_PRINT_PAGES_RANGES")]
9673    Ranges,
9674    /// Selected pages.
9675    #[doc(alias = "GTK_PRINT_PAGES_SELECTION")]
9676    Selection,
9677    #[doc(hidden)]
9678    __Unknown(i32),
9679}
9680
9681#[doc(hidden)]
9682impl IntoGlib for PrintPages {
9683    type GlibType = ffi::GtkPrintPages;
9684
9685    #[inline]
9686    fn into_glib(self) -> ffi::GtkPrintPages {
9687        match self {
9688            Self::All => ffi::GTK_PRINT_PAGES_ALL,
9689            Self::Current => ffi::GTK_PRINT_PAGES_CURRENT,
9690            Self::Ranges => ffi::GTK_PRINT_PAGES_RANGES,
9691            Self::Selection => ffi::GTK_PRINT_PAGES_SELECTION,
9692            Self::__Unknown(value) => value,
9693        }
9694    }
9695}
9696
9697#[doc(hidden)]
9698impl FromGlib<ffi::GtkPrintPages> for PrintPages {
9699    #[inline]
9700    unsafe fn from_glib(value: ffi::GtkPrintPages) -> Self {
9701        skip_assert_initialized!();
9702
9703        match value {
9704            ffi::GTK_PRINT_PAGES_ALL => Self::All,
9705            ffi::GTK_PRINT_PAGES_CURRENT => Self::Current,
9706            ffi::GTK_PRINT_PAGES_RANGES => Self::Ranges,
9707            ffi::GTK_PRINT_PAGES_SELECTION => Self::Selection,
9708            value => Self::__Unknown(value),
9709        }
9710    }
9711}
9712
9713impl StaticType for PrintPages {
9714    #[inline]
9715    #[doc(alias = "gtk_print_pages_get_type")]
9716    fn static_type() -> glib::Type {
9717        unsafe { from_glib(ffi::gtk_print_pages_get_type()) }
9718    }
9719}
9720
9721impl glib::HasParamSpec for PrintPages {
9722    type ParamSpec = glib::ParamSpecEnum;
9723    type SetValue = Self;
9724    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9725
9726    fn param_spec_builder() -> Self::BuilderFn {
9727        Self::ParamSpec::builder_with_default
9728    }
9729}
9730
9731impl glib::value::ValueType for PrintPages {
9732    type Type = Self;
9733}
9734
9735unsafe impl<'a> glib::value::FromValue<'a> for PrintPages {
9736    type Checker = glib::value::GenericValueTypeChecker<Self>;
9737
9738    #[inline]
9739    unsafe fn from_value(value: &'a glib::Value) -> Self {
9740        skip_assert_initialized!();
9741        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9742    }
9743}
9744
9745impl ToValue for PrintPages {
9746    #[inline]
9747    fn to_value(&self) -> glib::Value {
9748        let mut value = glib::Value::for_value_type::<Self>();
9749        unsafe {
9750            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9751        }
9752        value
9753    }
9754
9755    #[inline]
9756    fn value_type(&self) -> glib::Type {
9757        Self::static_type()
9758    }
9759}
9760
9761impl From<PrintPages> for glib::Value {
9762    #[inline]
9763    fn from(v: PrintPages) -> Self {
9764        skip_assert_initialized!();
9765        ToValue::to_value(&v)
9766    }
9767}
9768
9769/// See also gtk_print_settings_set_quality().
9770#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9771#[non_exhaustive]
9772#[doc(alias = "GtkPrintQuality")]
9773pub enum PrintQuality {
9774    /// Low quality.
9775    #[doc(alias = "GTK_PRINT_QUALITY_LOW")]
9776    Low,
9777    /// Normal quality.
9778    #[doc(alias = "GTK_PRINT_QUALITY_NORMAL")]
9779    Normal,
9780    /// High quality.
9781    #[doc(alias = "GTK_PRINT_QUALITY_HIGH")]
9782    High,
9783    /// Draft quality.
9784    #[doc(alias = "GTK_PRINT_QUALITY_DRAFT")]
9785    Draft,
9786    #[doc(hidden)]
9787    __Unknown(i32),
9788}
9789
9790#[doc(hidden)]
9791impl IntoGlib for PrintQuality {
9792    type GlibType = ffi::GtkPrintQuality;
9793
9794    #[inline]
9795    fn into_glib(self) -> ffi::GtkPrintQuality {
9796        match self {
9797            Self::Low => ffi::GTK_PRINT_QUALITY_LOW,
9798            Self::Normal => ffi::GTK_PRINT_QUALITY_NORMAL,
9799            Self::High => ffi::GTK_PRINT_QUALITY_HIGH,
9800            Self::Draft => ffi::GTK_PRINT_QUALITY_DRAFT,
9801            Self::__Unknown(value) => value,
9802        }
9803    }
9804}
9805
9806#[doc(hidden)]
9807impl FromGlib<ffi::GtkPrintQuality> for PrintQuality {
9808    #[inline]
9809    unsafe fn from_glib(value: ffi::GtkPrintQuality) -> Self {
9810        skip_assert_initialized!();
9811
9812        match value {
9813            ffi::GTK_PRINT_QUALITY_LOW => Self::Low,
9814            ffi::GTK_PRINT_QUALITY_NORMAL => Self::Normal,
9815            ffi::GTK_PRINT_QUALITY_HIGH => Self::High,
9816            ffi::GTK_PRINT_QUALITY_DRAFT => Self::Draft,
9817            value => Self::__Unknown(value),
9818        }
9819    }
9820}
9821
9822impl StaticType for PrintQuality {
9823    #[inline]
9824    #[doc(alias = "gtk_print_quality_get_type")]
9825    fn static_type() -> glib::Type {
9826        unsafe { from_glib(ffi::gtk_print_quality_get_type()) }
9827    }
9828}
9829
9830impl glib::HasParamSpec for PrintQuality {
9831    type ParamSpec = glib::ParamSpecEnum;
9832    type SetValue = Self;
9833    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9834
9835    fn param_spec_builder() -> Self::BuilderFn {
9836        Self::ParamSpec::builder_with_default
9837    }
9838}
9839
9840impl glib::value::ValueType for PrintQuality {
9841    type Type = Self;
9842}
9843
9844unsafe impl<'a> glib::value::FromValue<'a> for PrintQuality {
9845    type Checker = glib::value::GenericValueTypeChecker<Self>;
9846
9847    #[inline]
9848    unsafe fn from_value(value: &'a glib::Value) -> Self {
9849        skip_assert_initialized!();
9850        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9851    }
9852}
9853
9854impl ToValue for PrintQuality {
9855    #[inline]
9856    fn to_value(&self) -> glib::Value {
9857        let mut value = glib::Value::for_value_type::<Self>();
9858        unsafe {
9859            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9860        }
9861        value
9862    }
9863
9864    #[inline]
9865    fn value_type(&self) -> glib::Type {
9866        Self::static_type()
9867    }
9868}
9869
9870impl From<PrintQuality> for glib::Value {
9871    #[inline]
9872    fn from(v: PrintQuality) -> Self {
9873        skip_assert_initialized!();
9874        ToValue::to_value(&v)
9875    }
9876}
9877
9878/// The status gives a rough indication of the completion of a running
9879/// print operation.
9880#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9881#[non_exhaustive]
9882#[doc(alias = "GtkPrintStatus")]
9883pub enum PrintStatus {
9884    /// The printing has not started yet; this
9885    ///   status is set initially, and while the print dialog is shown.
9886    #[doc(alias = "GTK_PRINT_STATUS_INITIAL")]
9887    Initial,
9888    /// This status is set while the begin-print
9889    ///   signal is emitted and during pagination.
9890    #[doc(alias = "GTK_PRINT_STATUS_PREPARING")]
9891    Preparing,
9892    /// This status is set while the
9893    ///   pages are being rendered.
9894    #[doc(alias = "GTK_PRINT_STATUS_GENERATING_DATA")]
9895    GeneratingData,
9896    /// The print job is being sent off to the
9897    ///   printer.
9898    #[doc(alias = "GTK_PRINT_STATUS_SENDING_DATA")]
9899    SendingData,
9900    /// The print job has been sent to the printer,
9901    ///   but is not printed for some reason, e.g. the printer may be stopped.
9902    #[doc(alias = "GTK_PRINT_STATUS_PENDING")]
9903    Pending,
9904    /// Some problem has occurred during
9905    ///   printing, e.g. a paper jam.
9906    #[doc(alias = "GTK_PRINT_STATUS_PENDING_ISSUE")]
9907    PendingIssue,
9908    /// The printer is processing the print job.
9909    #[doc(alias = "GTK_PRINT_STATUS_PRINTING")]
9910    Printing,
9911    /// The printing has been completed successfully.
9912    #[doc(alias = "GTK_PRINT_STATUS_FINISHED")]
9913    Finished,
9914    /// The printing has been aborted.
9915    #[doc(alias = "GTK_PRINT_STATUS_FINISHED_ABORTED")]
9916    FinishedAborted,
9917    #[doc(hidden)]
9918    __Unknown(i32),
9919}
9920
9921#[doc(hidden)]
9922impl IntoGlib for PrintStatus {
9923    type GlibType = ffi::GtkPrintStatus;
9924
9925    #[inline]
9926    fn into_glib(self) -> ffi::GtkPrintStatus {
9927        match self {
9928            Self::Initial => ffi::GTK_PRINT_STATUS_INITIAL,
9929            Self::Preparing => ffi::GTK_PRINT_STATUS_PREPARING,
9930            Self::GeneratingData => ffi::GTK_PRINT_STATUS_GENERATING_DATA,
9931            Self::SendingData => ffi::GTK_PRINT_STATUS_SENDING_DATA,
9932            Self::Pending => ffi::GTK_PRINT_STATUS_PENDING,
9933            Self::PendingIssue => ffi::GTK_PRINT_STATUS_PENDING_ISSUE,
9934            Self::Printing => ffi::GTK_PRINT_STATUS_PRINTING,
9935            Self::Finished => ffi::GTK_PRINT_STATUS_FINISHED,
9936            Self::FinishedAborted => ffi::GTK_PRINT_STATUS_FINISHED_ABORTED,
9937            Self::__Unknown(value) => value,
9938        }
9939    }
9940}
9941
9942#[doc(hidden)]
9943impl FromGlib<ffi::GtkPrintStatus> for PrintStatus {
9944    #[inline]
9945    unsafe fn from_glib(value: ffi::GtkPrintStatus) -> Self {
9946        skip_assert_initialized!();
9947
9948        match value {
9949            ffi::GTK_PRINT_STATUS_INITIAL => Self::Initial,
9950            ffi::GTK_PRINT_STATUS_PREPARING => Self::Preparing,
9951            ffi::GTK_PRINT_STATUS_GENERATING_DATA => Self::GeneratingData,
9952            ffi::GTK_PRINT_STATUS_SENDING_DATA => Self::SendingData,
9953            ffi::GTK_PRINT_STATUS_PENDING => Self::Pending,
9954            ffi::GTK_PRINT_STATUS_PENDING_ISSUE => Self::PendingIssue,
9955            ffi::GTK_PRINT_STATUS_PRINTING => Self::Printing,
9956            ffi::GTK_PRINT_STATUS_FINISHED => Self::Finished,
9957            ffi::GTK_PRINT_STATUS_FINISHED_ABORTED => Self::FinishedAborted,
9958            value => Self::__Unknown(value),
9959        }
9960    }
9961}
9962
9963impl StaticType for PrintStatus {
9964    #[inline]
9965    #[doc(alias = "gtk_print_status_get_type")]
9966    fn static_type() -> glib::Type {
9967        unsafe { from_glib(ffi::gtk_print_status_get_type()) }
9968    }
9969}
9970
9971impl glib::HasParamSpec for PrintStatus {
9972    type ParamSpec = glib::ParamSpecEnum;
9973    type SetValue = Self;
9974    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9975
9976    fn param_spec_builder() -> Self::BuilderFn {
9977        Self::ParamSpec::builder_with_default
9978    }
9979}
9980
9981impl glib::value::ValueType for PrintStatus {
9982    type Type = Self;
9983}
9984
9985unsafe impl<'a> glib::value::FromValue<'a> for PrintStatus {
9986    type Checker = glib::value::GenericValueTypeChecker<Self>;
9987
9988    #[inline]
9989    unsafe fn from_value(value: &'a glib::Value) -> Self {
9990        skip_assert_initialized!();
9991        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
9992    }
9993}
9994
9995impl ToValue for PrintStatus {
9996    #[inline]
9997    fn to_value(&self) -> glib::Value {
9998        let mut value = glib::Value::for_value_type::<Self>();
9999        unsafe {
10000            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10001        }
10002        value
10003    }
10004
10005    #[inline]
10006    fn value_type(&self) -> glib::Type {
10007        Self::static_type()
10008    }
10009}
10010
10011impl From<PrintStatus> for glib::Value {
10012    #[inline]
10013    fn from(v: PrintStatus) -> Self {
10014        skip_assert_initialized!();
10015        ToValue::to_value(&v)
10016    }
10017}
10018
10019/// Describes limits of a [`EventController`][crate::EventController] for handling events
10020/// targeting other widgets.
10021#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10022#[non_exhaustive]
10023#[doc(alias = "GtkPropagationLimit")]
10024pub enum PropagationLimit {
10025    /// Events are handled regardless of what their
10026    ///   target is.
10027    #[doc(alias = "GTK_LIMIT_NONE")]
10028    None,
10029    /// Events are only handled if their target is in
10030    ///   the same [`Native`][crate::Native] (or widget with [`limit-events`][struct@crate::Widget#limit-events]
10031    ///   set) as the event controllers widget.
10032    ///   Note that some event types have two targets (origin and destination).
10033    #[doc(alias = "GTK_LIMIT_SAME_NATIVE")]
10034    SameNative,
10035    #[doc(hidden)]
10036    __Unknown(i32),
10037}
10038
10039#[doc(hidden)]
10040impl IntoGlib for PropagationLimit {
10041    type GlibType = ffi::GtkPropagationLimit;
10042
10043    #[inline]
10044    fn into_glib(self) -> ffi::GtkPropagationLimit {
10045        match self {
10046            Self::None => ffi::GTK_LIMIT_NONE,
10047            Self::SameNative => ffi::GTK_LIMIT_SAME_NATIVE,
10048            Self::__Unknown(value) => value,
10049        }
10050    }
10051}
10052
10053#[doc(hidden)]
10054impl FromGlib<ffi::GtkPropagationLimit> for PropagationLimit {
10055    #[inline]
10056    unsafe fn from_glib(value: ffi::GtkPropagationLimit) -> Self {
10057        skip_assert_initialized!();
10058
10059        match value {
10060            ffi::GTK_LIMIT_NONE => Self::None,
10061            ffi::GTK_LIMIT_SAME_NATIVE => Self::SameNative,
10062            value => Self::__Unknown(value),
10063        }
10064    }
10065}
10066
10067impl StaticType for PropagationLimit {
10068    #[inline]
10069    #[doc(alias = "gtk_propagation_limit_get_type")]
10070    fn static_type() -> glib::Type {
10071        unsafe { from_glib(ffi::gtk_propagation_limit_get_type()) }
10072    }
10073}
10074
10075impl glib::HasParamSpec for PropagationLimit {
10076    type ParamSpec = glib::ParamSpecEnum;
10077    type SetValue = Self;
10078    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10079
10080    fn param_spec_builder() -> Self::BuilderFn {
10081        Self::ParamSpec::builder_with_default
10082    }
10083}
10084
10085impl glib::value::ValueType for PropagationLimit {
10086    type Type = Self;
10087}
10088
10089unsafe impl<'a> glib::value::FromValue<'a> for PropagationLimit {
10090    type Checker = glib::value::GenericValueTypeChecker<Self>;
10091
10092    #[inline]
10093    unsafe fn from_value(value: &'a glib::Value) -> Self {
10094        skip_assert_initialized!();
10095        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10096    }
10097}
10098
10099impl ToValue for PropagationLimit {
10100    #[inline]
10101    fn to_value(&self) -> glib::Value {
10102        let mut value = glib::Value::for_value_type::<Self>();
10103        unsafe {
10104            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10105        }
10106        value
10107    }
10108
10109    #[inline]
10110    fn value_type(&self) -> glib::Type {
10111        Self::static_type()
10112    }
10113}
10114
10115impl From<PropagationLimit> for glib::Value {
10116    #[inline]
10117    fn from(v: PropagationLimit) -> Self {
10118        skip_assert_initialized!();
10119        ToValue::to_value(&v)
10120    }
10121}
10122
10123/// Describes the stage at which events are fed into a [`EventController`][crate::EventController].
10124#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10125#[non_exhaustive]
10126#[doc(alias = "GtkPropagationPhase")]
10127pub enum PropagationPhase {
10128    /// Events are not delivered.
10129    #[doc(alias = "GTK_PHASE_NONE")]
10130    None,
10131    /// Events are delivered in the capture phase. The
10132    ///   capture phase happens before the bubble phase, runs from the toplevel down
10133    ///   to the event widget. This option should only be used on containers that
10134    ///   might possibly handle events before their children do.
10135    #[doc(alias = "GTK_PHASE_CAPTURE")]
10136    Capture,
10137    /// Events are delivered in the bubble phase. The bubble
10138    ///   phase happens after the capture phase, and before the default handlers
10139    ///   are run. This phase runs from the event widget, up to the toplevel.
10140    #[doc(alias = "GTK_PHASE_BUBBLE")]
10141    Bubble,
10142    /// Events are delivered in the default widget event handlers,
10143    ///   note that widget implementations must chain up on button, motion, touch and
10144    ///   grab broken handlers for controllers in this phase to be run.
10145    #[doc(alias = "GTK_PHASE_TARGET")]
10146    Target,
10147    #[doc(hidden)]
10148    __Unknown(i32),
10149}
10150
10151#[doc(hidden)]
10152impl IntoGlib for PropagationPhase {
10153    type GlibType = ffi::GtkPropagationPhase;
10154
10155    #[inline]
10156    fn into_glib(self) -> ffi::GtkPropagationPhase {
10157        match self {
10158            Self::None => ffi::GTK_PHASE_NONE,
10159            Self::Capture => ffi::GTK_PHASE_CAPTURE,
10160            Self::Bubble => ffi::GTK_PHASE_BUBBLE,
10161            Self::Target => ffi::GTK_PHASE_TARGET,
10162            Self::__Unknown(value) => value,
10163        }
10164    }
10165}
10166
10167#[doc(hidden)]
10168impl FromGlib<ffi::GtkPropagationPhase> for PropagationPhase {
10169    #[inline]
10170    unsafe fn from_glib(value: ffi::GtkPropagationPhase) -> Self {
10171        skip_assert_initialized!();
10172
10173        match value {
10174            ffi::GTK_PHASE_NONE => Self::None,
10175            ffi::GTK_PHASE_CAPTURE => Self::Capture,
10176            ffi::GTK_PHASE_BUBBLE => Self::Bubble,
10177            ffi::GTK_PHASE_TARGET => Self::Target,
10178            value => Self::__Unknown(value),
10179        }
10180    }
10181}
10182
10183impl StaticType for PropagationPhase {
10184    #[inline]
10185    #[doc(alias = "gtk_propagation_phase_get_type")]
10186    fn static_type() -> glib::Type {
10187        unsafe { from_glib(ffi::gtk_propagation_phase_get_type()) }
10188    }
10189}
10190
10191impl glib::HasParamSpec for PropagationPhase {
10192    type ParamSpec = glib::ParamSpecEnum;
10193    type SetValue = Self;
10194    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10195
10196    fn param_spec_builder() -> Self::BuilderFn {
10197        Self::ParamSpec::builder_with_default
10198    }
10199}
10200
10201impl glib::value::ValueType for PropagationPhase {
10202    type Type = Self;
10203}
10204
10205unsafe impl<'a> glib::value::FromValue<'a> for PropagationPhase {
10206    type Checker = glib::value::GenericValueTypeChecker<Self>;
10207
10208    #[inline]
10209    unsafe fn from_value(value: &'a glib::Value) -> Self {
10210        skip_assert_initialized!();
10211        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10212    }
10213}
10214
10215impl ToValue for PropagationPhase {
10216    #[inline]
10217    fn to_value(&self) -> glib::Value {
10218        let mut value = glib::Value::for_value_type::<Self>();
10219        unsafe {
10220            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10221        }
10222        value
10223    }
10224
10225    #[inline]
10226    fn value_type(&self) -> glib::Type {
10227        Self::static_type()
10228    }
10229}
10230
10231impl From<PropagationPhase> for glib::Value {
10232    #[inline]
10233    fn from(v: PropagationPhase) -> Self {
10234        skip_assert_initialized!();
10235        ToValue::to_value(&v)
10236    }
10237}
10238
10239/// Error codes for [`RecentManager`][crate::RecentManager] operations
10240#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10241#[non_exhaustive]
10242#[doc(alias = "GtkRecentManagerError")]
10243pub enum RecentManagerError {
10244    /// the URI specified does not exists in
10245    ///   the recently used resources list.
10246    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_NOT_FOUND")]
10247    NotFound,
10248    /// the URI specified is not valid.
10249    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_INVALID_URI")]
10250    InvalidUri,
10251    /// the supplied string is not
10252    ///   UTF-8 encoded.
10253    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING")]
10254    InvalidEncoding,
10255    /// no application has registered
10256    ///   the specified item.
10257    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED")]
10258    NotRegistered,
10259    /// failure while reading the recently used
10260    ///   resources file.
10261    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_READ")]
10262    Read,
10263    /// failure while writing the recently used
10264    ///   resources file.
10265    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_WRITE")]
10266    Write,
10267    /// unspecified error.
10268    #[doc(alias = "GTK_RECENT_MANAGER_ERROR_UNKNOWN")]
10269    Unknown,
10270    #[doc(hidden)]
10271    __Unknown(i32),
10272}
10273
10274#[doc(hidden)]
10275impl IntoGlib for RecentManagerError {
10276    type GlibType = ffi::GtkRecentManagerError;
10277
10278    #[inline]
10279    fn into_glib(self) -> ffi::GtkRecentManagerError {
10280        match self {
10281            Self::NotFound => ffi::GTK_RECENT_MANAGER_ERROR_NOT_FOUND,
10282            Self::InvalidUri => ffi::GTK_RECENT_MANAGER_ERROR_INVALID_URI,
10283            Self::InvalidEncoding => ffi::GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING,
10284            Self::NotRegistered => ffi::GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED,
10285            Self::Read => ffi::GTK_RECENT_MANAGER_ERROR_READ,
10286            Self::Write => ffi::GTK_RECENT_MANAGER_ERROR_WRITE,
10287            Self::Unknown => ffi::GTK_RECENT_MANAGER_ERROR_UNKNOWN,
10288            Self::__Unknown(value) => value,
10289        }
10290    }
10291}
10292
10293#[doc(hidden)]
10294impl FromGlib<ffi::GtkRecentManagerError> for RecentManagerError {
10295    #[inline]
10296    unsafe fn from_glib(value: ffi::GtkRecentManagerError) -> Self {
10297        skip_assert_initialized!();
10298
10299        match value {
10300            ffi::GTK_RECENT_MANAGER_ERROR_NOT_FOUND => Self::NotFound,
10301            ffi::GTK_RECENT_MANAGER_ERROR_INVALID_URI => Self::InvalidUri,
10302            ffi::GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING => Self::InvalidEncoding,
10303            ffi::GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED => Self::NotRegistered,
10304            ffi::GTK_RECENT_MANAGER_ERROR_READ => Self::Read,
10305            ffi::GTK_RECENT_MANAGER_ERROR_WRITE => Self::Write,
10306            ffi::GTK_RECENT_MANAGER_ERROR_UNKNOWN => Self::Unknown,
10307            value => Self::__Unknown(value),
10308        }
10309    }
10310}
10311
10312impl glib::error::ErrorDomain for RecentManagerError {
10313    #[inline]
10314    fn domain() -> glib::Quark {
10315        skip_assert_initialized!();
10316
10317        unsafe { from_glib(ffi::gtk_recent_manager_error_quark()) }
10318    }
10319
10320    #[inline]
10321    fn code(self) -> i32 {
10322        self.into_glib()
10323    }
10324
10325    #[inline]
10326    #[allow(clippy::match_single_binding)]
10327    fn from(code: i32) -> Option<Self> {
10328        skip_assert_initialized!();
10329        match unsafe { from_glib(code) } {
10330            value => Some(value),
10331        }
10332    }
10333}
10334
10335impl StaticType for RecentManagerError {
10336    #[inline]
10337    #[doc(alias = "gtk_recent_manager_error_get_type")]
10338    fn static_type() -> glib::Type {
10339        unsafe { from_glib(ffi::gtk_recent_manager_error_get_type()) }
10340    }
10341}
10342
10343impl glib::HasParamSpec for RecentManagerError {
10344    type ParamSpec = glib::ParamSpecEnum;
10345    type SetValue = Self;
10346    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10347
10348    fn param_spec_builder() -> Self::BuilderFn {
10349        Self::ParamSpec::builder_with_default
10350    }
10351}
10352
10353impl glib::value::ValueType for RecentManagerError {
10354    type Type = Self;
10355}
10356
10357unsafe impl<'a> glib::value::FromValue<'a> for RecentManagerError {
10358    type Checker = glib::value::GenericValueTypeChecker<Self>;
10359
10360    #[inline]
10361    unsafe fn from_value(value: &'a glib::Value) -> Self {
10362        skip_assert_initialized!();
10363        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10364    }
10365}
10366
10367impl ToValue for RecentManagerError {
10368    #[inline]
10369    fn to_value(&self) -> glib::Value {
10370        let mut value = glib::Value::for_value_type::<Self>();
10371        unsafe {
10372            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10373        }
10374        value
10375    }
10376
10377    #[inline]
10378    fn value_type(&self) -> glib::Type {
10379        Self::static_type()
10380    }
10381}
10382
10383impl From<RecentManagerError> for glib::Value {
10384    #[inline]
10385    fn from(v: RecentManagerError) -> Self {
10386        skip_assert_initialized!();
10387        ToValue::to_value(&v)
10388    }
10389}
10390
10391/// Values for the [`gtk-interface-reduced-motion`][struct@crate::Settings#gtk-interface-reduced-motion]
10392/// and [`prefers-reduced-motion`][struct@crate::CssProvider#prefers-reduced-motion] properties
10393/// that indicates the preferred level of motion animations.
10394///
10395/// This information can be used inside CSS via media queries.
10396#[cfg(feature = "v4_22")]
10397#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10398#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10399#[non_exhaustive]
10400#[doc(alias = "GtkReducedMotion")]
10401pub enum ReducedMotion {
10402    /// The user has made no preference known to the system
10403    #[doc(alias = "GTK_REDUCED_MOTION_NO_PREFERENCE")]
10404    NoPreference,
10405    /// The user has notified the system that they
10406    ///   prefer an interface that removes or replaces the types of motion-based
10407    ///   animation that either trigger discomfort for those with vestibular
10408    ///   motion sensitivity, or distraction for those with attention deficits
10409    #[doc(alias = "GTK_REDUCED_MOTION_REDUCE")]
10410    Reduce,
10411    #[doc(hidden)]
10412    __Unknown(i32),
10413}
10414
10415#[cfg(feature = "v4_22")]
10416#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10417#[doc(hidden)]
10418impl IntoGlib for ReducedMotion {
10419    type GlibType = ffi::GtkReducedMotion;
10420
10421    #[inline]
10422    fn into_glib(self) -> ffi::GtkReducedMotion {
10423        match self {
10424            Self::NoPreference => ffi::GTK_REDUCED_MOTION_NO_PREFERENCE,
10425            Self::Reduce => ffi::GTK_REDUCED_MOTION_REDUCE,
10426            Self::__Unknown(value) => value,
10427        }
10428    }
10429}
10430
10431#[cfg(feature = "v4_22")]
10432#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10433#[doc(hidden)]
10434impl FromGlib<ffi::GtkReducedMotion> for ReducedMotion {
10435    #[inline]
10436    unsafe fn from_glib(value: ffi::GtkReducedMotion) -> Self {
10437        skip_assert_initialized!();
10438
10439        match value {
10440            ffi::GTK_REDUCED_MOTION_NO_PREFERENCE => Self::NoPreference,
10441            ffi::GTK_REDUCED_MOTION_REDUCE => Self::Reduce,
10442            value => Self::__Unknown(value),
10443        }
10444    }
10445}
10446
10447#[cfg(feature = "v4_22")]
10448#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10449impl StaticType for ReducedMotion {
10450    #[inline]
10451    #[doc(alias = "gtk_reduced_motion_get_type")]
10452    fn static_type() -> glib::Type {
10453        unsafe { from_glib(ffi::gtk_reduced_motion_get_type()) }
10454    }
10455}
10456
10457#[cfg(feature = "v4_22")]
10458#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10459impl glib::HasParamSpec for ReducedMotion {
10460    type ParamSpec = glib::ParamSpecEnum;
10461    type SetValue = Self;
10462    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10463
10464    fn param_spec_builder() -> Self::BuilderFn {
10465        Self::ParamSpec::builder_with_default
10466    }
10467}
10468
10469#[cfg(feature = "v4_22")]
10470#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10471impl glib::value::ValueType for ReducedMotion {
10472    type Type = Self;
10473}
10474
10475#[cfg(feature = "v4_22")]
10476#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10477unsafe impl<'a> glib::value::FromValue<'a> for ReducedMotion {
10478    type Checker = glib::value::GenericValueTypeChecker<Self>;
10479
10480    #[inline]
10481    unsafe fn from_value(value: &'a glib::Value) -> Self {
10482        skip_assert_initialized!();
10483        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10484    }
10485}
10486
10487#[cfg(feature = "v4_22")]
10488#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10489impl ToValue for ReducedMotion {
10490    #[inline]
10491    fn to_value(&self) -> glib::Value {
10492        let mut value = glib::Value::for_value_type::<Self>();
10493        unsafe {
10494            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10495        }
10496        value
10497    }
10498
10499    #[inline]
10500    fn value_type(&self) -> glib::Type {
10501        Self::static_type()
10502    }
10503}
10504
10505#[cfg(feature = "v4_22")]
10506#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10507impl From<ReducedMotion> for glib::Value {
10508    #[inline]
10509    fn from(v: ReducedMotion) -> Self {
10510        skip_assert_initialized!();
10511        ToValue::to_value(&v)
10512    }
10513}
10514
10515/// Enumerates possible reasons for an application to restore saved state.
10516///
10517/// See [`restore-state`][struct@crate::Application#restore-state].
10518#[cfg(feature = "v4_24")]
10519#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10520#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10521#[non_exhaustive]
10522#[doc(alias = "GtkRestoreReason")]
10523pub enum RestoreReason {
10524    /// Don't restore anything
10525    #[doc(alias = "GTK_RESTORE_REASON_PRISTINE")]
10526    Pristine,
10527    /// This is normal launch. Restore as little as is reasonable
10528    #[doc(alias = "GTK_RESTORE_REASON_LAUNCH")]
10529    Launch,
10530    /// The application has crashed before. Try to restore the previous state
10531    #[doc(alias = "GTK_RESTORE_REASON_RECOVER")]
10532    Recover,
10533    /// This is a session restore. Restore the previous state as far as possible
10534    #[doc(alias = "GTK_RESTORE_REASON_RESTORE")]
10535    Restore,
10536    #[doc(hidden)]
10537    __Unknown(i32),
10538}
10539
10540#[cfg(feature = "v4_24")]
10541#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10542#[doc(hidden)]
10543impl IntoGlib for RestoreReason {
10544    type GlibType = ffi::GtkRestoreReason;
10545
10546    #[inline]
10547    fn into_glib(self) -> ffi::GtkRestoreReason {
10548        match self {
10549            Self::Pristine => ffi::GTK_RESTORE_REASON_PRISTINE,
10550            Self::Launch => ffi::GTK_RESTORE_REASON_LAUNCH,
10551            Self::Recover => ffi::GTK_RESTORE_REASON_RECOVER,
10552            Self::Restore => ffi::GTK_RESTORE_REASON_RESTORE,
10553            Self::__Unknown(value) => value,
10554        }
10555    }
10556}
10557
10558#[cfg(feature = "v4_24")]
10559#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10560#[doc(hidden)]
10561impl FromGlib<ffi::GtkRestoreReason> for RestoreReason {
10562    #[inline]
10563    unsafe fn from_glib(value: ffi::GtkRestoreReason) -> Self {
10564        skip_assert_initialized!();
10565
10566        match value {
10567            ffi::GTK_RESTORE_REASON_PRISTINE => Self::Pristine,
10568            ffi::GTK_RESTORE_REASON_LAUNCH => Self::Launch,
10569            ffi::GTK_RESTORE_REASON_RECOVER => Self::Recover,
10570            ffi::GTK_RESTORE_REASON_RESTORE => Self::Restore,
10571            value => Self::__Unknown(value),
10572        }
10573    }
10574}
10575
10576#[cfg(feature = "v4_24")]
10577#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10578impl StaticType for RestoreReason {
10579    #[inline]
10580    #[doc(alias = "gtk_restore_reason_get_type")]
10581    fn static_type() -> glib::Type {
10582        unsafe { from_glib(ffi::gtk_restore_reason_get_type()) }
10583    }
10584}
10585
10586#[cfg(feature = "v4_24")]
10587#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10588impl glib::HasParamSpec for RestoreReason {
10589    type ParamSpec = glib::ParamSpecEnum;
10590    type SetValue = Self;
10591    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10592
10593    fn param_spec_builder() -> Self::BuilderFn {
10594        Self::ParamSpec::builder_with_default
10595    }
10596}
10597
10598#[cfg(feature = "v4_24")]
10599#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10600impl glib::value::ValueType for RestoreReason {
10601    type Type = Self;
10602}
10603
10604#[cfg(feature = "v4_24")]
10605#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10606unsafe impl<'a> glib::value::FromValue<'a> for RestoreReason {
10607    type Checker = glib::value::GenericValueTypeChecker<Self>;
10608
10609    #[inline]
10610    unsafe fn from_value(value: &'a glib::Value) -> Self {
10611        skip_assert_initialized!();
10612        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10613    }
10614}
10615
10616#[cfg(feature = "v4_24")]
10617#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10618impl ToValue for RestoreReason {
10619    #[inline]
10620    fn to_value(&self) -> glib::Value {
10621        let mut value = glib::Value::for_value_type::<Self>();
10622        unsafe {
10623            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10624        }
10625        value
10626    }
10627
10628    #[inline]
10629    fn value_type(&self) -> glib::Type {
10630        Self::static_type()
10631    }
10632}
10633
10634#[cfg(feature = "v4_24")]
10635#[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
10636impl From<RestoreReason> for glib::Value {
10637    #[inline]
10638    fn from(v: RestoreReason) -> Self {
10639        skip_assert_initialized!();
10640        ToValue::to_value(&v)
10641    }
10642}
10643
10644/// These enumeration values describe the possible transitions
10645/// when the child of a [`Revealer`][crate::Revealer] widget is shown or hidden.
10646#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10647#[non_exhaustive]
10648#[doc(alias = "GtkRevealerTransitionType")]
10649pub enum RevealerTransitionType {
10650    /// No transition
10651    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_NONE")]
10652    None,
10653    /// Fade in
10654    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_CROSSFADE")]
10655    Crossfade,
10656    /// Slide in from the left
10657    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT")]
10658    SlideRight,
10659    /// Slide in from the right
10660    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT")]
10661    SlideLeft,
10662    /// Slide in from the bottom
10663    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP")]
10664    SlideUp,
10665    /// Slide in from the top
10666    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN")]
10667    SlideDown,
10668    /// Floop in from the left
10669    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT")]
10670    SwingRight,
10671    /// Floop in from the right
10672    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT")]
10673    SwingLeft,
10674    /// Floop in from the bottom
10675    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_UP")]
10676    SwingUp,
10677    /// Floop in from the top
10678    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN")]
10679    SwingDown,
10680    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10681    /// and [enum@Gtk.RevealerTransitionType.SLIDE_RIGHT].
10682    #[cfg(feature = "v4_22")]
10683    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10684    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT")]
10685    FadeSlideRight,
10686    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10687    /// and [enum@Gtk.RevealerTransitionType.SLIDE_LEFT].
10688    #[cfg(feature = "v4_22")]
10689    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10690    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT")]
10691    FadeSlideLeft,
10692    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10693    /// and [enum@Gtk.RevealerTransitionType.SLIDE_UP].
10694    #[cfg(feature = "v4_22")]
10695    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10696    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP")]
10697    FadeSlideUp,
10698    /// Combination of [enum@Gtk.RevealerTransitionType.CROSSFADE]
10699    /// and [enum@Gtk.RevealerTransitionType.SLIDE_DOWN].
10700    #[cfg(feature = "v4_22")]
10701    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
10702    #[doc(alias = "GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN")]
10703    FadeSlideDown,
10704    #[doc(hidden)]
10705    __Unknown(i32),
10706}
10707
10708#[doc(hidden)]
10709impl IntoGlib for RevealerTransitionType {
10710    type GlibType = ffi::GtkRevealerTransitionType;
10711
10712    fn into_glib(self) -> ffi::GtkRevealerTransitionType {
10713        match self {
10714            Self::None => ffi::GTK_REVEALER_TRANSITION_TYPE_NONE,
10715            Self::Crossfade => ffi::GTK_REVEALER_TRANSITION_TYPE_CROSSFADE,
10716            Self::SlideRight => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT,
10717            Self::SlideLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT,
10718            Self::SlideUp => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP,
10719            Self::SlideDown => ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN,
10720            Self::SwingRight => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT,
10721            Self::SwingLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT,
10722            Self::SwingUp => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_UP,
10723            Self::SwingDown => ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN,
10724            #[cfg(feature = "v4_22")]
10725            Self::FadeSlideRight => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT,
10726            #[cfg(feature = "v4_22")]
10727            Self::FadeSlideLeft => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT,
10728            #[cfg(feature = "v4_22")]
10729            Self::FadeSlideUp => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP,
10730            #[cfg(feature = "v4_22")]
10731            Self::FadeSlideDown => ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN,
10732            Self::__Unknown(value) => value,
10733        }
10734    }
10735}
10736
10737#[doc(hidden)]
10738impl FromGlib<ffi::GtkRevealerTransitionType> for RevealerTransitionType {
10739    unsafe fn from_glib(value: ffi::GtkRevealerTransitionType) -> Self {
10740        skip_assert_initialized!();
10741
10742        match value {
10743            ffi::GTK_REVEALER_TRANSITION_TYPE_NONE => Self::None,
10744            ffi::GTK_REVEALER_TRANSITION_TYPE_CROSSFADE => Self::Crossfade,
10745            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT => Self::SlideRight,
10746            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT => Self::SlideLeft,
10747            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP => Self::SlideUp,
10748            ffi::GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN => Self::SlideDown,
10749            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT => Self::SwingRight,
10750            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT => Self::SwingLeft,
10751            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_UP => Self::SwingUp,
10752            ffi::GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN => Self::SwingDown,
10753            #[cfg(feature = "v4_22")]
10754            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_RIGHT => Self::FadeSlideRight,
10755            #[cfg(feature = "v4_22")]
10756            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_LEFT => Self::FadeSlideLeft,
10757            #[cfg(feature = "v4_22")]
10758            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_UP => Self::FadeSlideUp,
10759            #[cfg(feature = "v4_22")]
10760            ffi::GTK_REVEALER_TRANSITION_TYPE_FADE_SLIDE_DOWN => Self::FadeSlideDown,
10761            value => Self::__Unknown(value),
10762        }
10763    }
10764}
10765
10766impl StaticType for RevealerTransitionType {
10767    #[inline]
10768    #[doc(alias = "gtk_revealer_transition_type_get_type")]
10769    fn static_type() -> glib::Type {
10770        unsafe { from_glib(ffi::gtk_revealer_transition_type_get_type()) }
10771    }
10772}
10773
10774impl glib::HasParamSpec for RevealerTransitionType {
10775    type ParamSpec = glib::ParamSpecEnum;
10776    type SetValue = Self;
10777    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10778
10779    fn param_spec_builder() -> Self::BuilderFn {
10780        Self::ParamSpec::builder_with_default
10781    }
10782}
10783
10784impl glib::value::ValueType for RevealerTransitionType {
10785    type Type = Self;
10786}
10787
10788unsafe impl<'a> glib::value::FromValue<'a> for RevealerTransitionType {
10789    type Checker = glib::value::GenericValueTypeChecker<Self>;
10790
10791    #[inline]
10792    unsafe fn from_value(value: &'a glib::Value) -> Self {
10793        skip_assert_initialized!();
10794        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10795    }
10796}
10797
10798impl ToValue for RevealerTransitionType {
10799    #[inline]
10800    fn to_value(&self) -> glib::Value {
10801        let mut value = glib::Value::for_value_type::<Self>();
10802        unsafe {
10803            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10804        }
10805        value
10806    }
10807
10808    #[inline]
10809    fn value_type(&self) -> glib::Type {
10810        Self::static_type()
10811    }
10812}
10813
10814impl From<RevealerTransitionType> for glib::Value {
10815    #[inline]
10816    fn from(v: RevealerTransitionType) -> Self {
10817        skip_assert_initialized!();
10818        ToValue::to_value(&v)
10819    }
10820}
10821
10822/// Passed as argument to various keybinding signals.
10823#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10824#[non_exhaustive]
10825#[doc(alias = "GtkScrollStep")]
10826pub enum ScrollStep {
10827    /// Scroll in steps.
10828    #[doc(alias = "GTK_SCROLL_STEPS")]
10829    Steps,
10830    /// Scroll by pages.
10831    #[doc(alias = "GTK_SCROLL_PAGES")]
10832    Pages,
10833    /// Scroll to ends.
10834    #[doc(alias = "GTK_SCROLL_ENDS")]
10835    Ends,
10836    /// Scroll in horizontal steps.
10837    #[doc(alias = "GTK_SCROLL_HORIZONTAL_STEPS")]
10838    HorizontalSteps,
10839    /// Scroll by horizontal pages.
10840    #[doc(alias = "GTK_SCROLL_HORIZONTAL_PAGES")]
10841    HorizontalPages,
10842    /// Scroll to the horizontal ends.
10843    #[doc(alias = "GTK_SCROLL_HORIZONTAL_ENDS")]
10844    HorizontalEnds,
10845    #[doc(hidden)]
10846    __Unknown(i32),
10847}
10848
10849#[doc(hidden)]
10850impl IntoGlib for ScrollStep {
10851    type GlibType = ffi::GtkScrollStep;
10852
10853    #[inline]
10854    fn into_glib(self) -> ffi::GtkScrollStep {
10855        match self {
10856            Self::Steps => ffi::GTK_SCROLL_STEPS,
10857            Self::Pages => ffi::GTK_SCROLL_PAGES,
10858            Self::Ends => ffi::GTK_SCROLL_ENDS,
10859            Self::HorizontalSteps => ffi::GTK_SCROLL_HORIZONTAL_STEPS,
10860            Self::HorizontalPages => ffi::GTK_SCROLL_HORIZONTAL_PAGES,
10861            Self::HorizontalEnds => ffi::GTK_SCROLL_HORIZONTAL_ENDS,
10862            Self::__Unknown(value) => value,
10863        }
10864    }
10865}
10866
10867#[doc(hidden)]
10868impl FromGlib<ffi::GtkScrollStep> for ScrollStep {
10869    #[inline]
10870    unsafe fn from_glib(value: ffi::GtkScrollStep) -> Self {
10871        skip_assert_initialized!();
10872
10873        match value {
10874            ffi::GTK_SCROLL_STEPS => Self::Steps,
10875            ffi::GTK_SCROLL_PAGES => Self::Pages,
10876            ffi::GTK_SCROLL_ENDS => Self::Ends,
10877            ffi::GTK_SCROLL_HORIZONTAL_STEPS => Self::HorizontalSteps,
10878            ffi::GTK_SCROLL_HORIZONTAL_PAGES => Self::HorizontalPages,
10879            ffi::GTK_SCROLL_HORIZONTAL_ENDS => Self::HorizontalEnds,
10880            value => Self::__Unknown(value),
10881        }
10882    }
10883}
10884
10885impl StaticType for ScrollStep {
10886    #[inline]
10887    #[doc(alias = "gtk_scroll_step_get_type")]
10888    fn static_type() -> glib::Type {
10889        unsafe { from_glib(ffi::gtk_scroll_step_get_type()) }
10890    }
10891}
10892
10893impl glib::HasParamSpec for ScrollStep {
10894    type ParamSpec = glib::ParamSpecEnum;
10895    type SetValue = Self;
10896    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
10897
10898    fn param_spec_builder() -> Self::BuilderFn {
10899        Self::ParamSpec::builder_with_default
10900    }
10901}
10902
10903impl glib::value::ValueType for ScrollStep {
10904    type Type = Self;
10905}
10906
10907unsafe impl<'a> glib::value::FromValue<'a> for ScrollStep {
10908    type Checker = glib::value::GenericValueTypeChecker<Self>;
10909
10910    #[inline]
10911    unsafe fn from_value(value: &'a glib::Value) -> Self {
10912        skip_assert_initialized!();
10913        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
10914    }
10915}
10916
10917impl ToValue for ScrollStep {
10918    #[inline]
10919    fn to_value(&self) -> glib::Value {
10920        let mut value = glib::Value::for_value_type::<Self>();
10921        unsafe {
10922            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
10923        }
10924        value
10925    }
10926
10927    #[inline]
10928    fn value_type(&self) -> glib::Type {
10929        Self::static_type()
10930    }
10931}
10932
10933impl From<ScrollStep> for glib::Value {
10934    #[inline]
10935    fn from(v: ScrollStep) -> Self {
10936        skip_assert_initialized!();
10937        ToValue::to_value(&v)
10938    }
10939}
10940
10941/// Scrolling types.
10942#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10943#[non_exhaustive]
10944#[doc(alias = "GtkScrollType")]
10945pub enum ScrollType {
10946    /// No scrolling.
10947    #[doc(alias = "GTK_SCROLL_NONE")]
10948    None,
10949    /// Jump to new location.
10950    #[doc(alias = "GTK_SCROLL_JUMP")]
10951    Jump,
10952    /// Step backward.
10953    #[doc(alias = "GTK_SCROLL_STEP_BACKWARD")]
10954    StepBackward,
10955    /// Step forward.
10956    #[doc(alias = "GTK_SCROLL_STEP_FORWARD")]
10957    StepForward,
10958    /// Page backward.
10959    #[doc(alias = "GTK_SCROLL_PAGE_BACKWARD")]
10960    PageBackward,
10961    /// Page forward.
10962    #[doc(alias = "GTK_SCROLL_PAGE_FORWARD")]
10963    PageForward,
10964    /// Step up.
10965    #[doc(alias = "GTK_SCROLL_STEP_UP")]
10966    StepUp,
10967    /// Step down.
10968    #[doc(alias = "GTK_SCROLL_STEP_DOWN")]
10969    StepDown,
10970    /// Page up.
10971    #[doc(alias = "GTK_SCROLL_PAGE_UP")]
10972    PageUp,
10973    /// Page down.
10974    #[doc(alias = "GTK_SCROLL_PAGE_DOWN")]
10975    PageDown,
10976    /// Step to the left.
10977    #[doc(alias = "GTK_SCROLL_STEP_LEFT")]
10978    StepLeft,
10979    /// Step to the right.
10980    #[doc(alias = "GTK_SCROLL_STEP_RIGHT")]
10981    StepRight,
10982    /// Page to the left.
10983    #[doc(alias = "GTK_SCROLL_PAGE_LEFT")]
10984    PageLeft,
10985    /// Page to the right.
10986    #[doc(alias = "GTK_SCROLL_PAGE_RIGHT")]
10987    PageRight,
10988    /// Scroll to start.
10989    #[doc(alias = "GTK_SCROLL_START")]
10990    Start,
10991    /// Scroll to end.
10992    #[doc(alias = "GTK_SCROLL_END")]
10993    End,
10994    #[doc(hidden)]
10995    __Unknown(i32),
10996}
10997
10998#[doc(hidden)]
10999impl IntoGlib for ScrollType {
11000    type GlibType = ffi::GtkScrollType;
11001
11002    fn into_glib(self) -> ffi::GtkScrollType {
11003        match self {
11004            Self::None => ffi::GTK_SCROLL_NONE,
11005            Self::Jump => ffi::GTK_SCROLL_JUMP,
11006            Self::StepBackward => ffi::GTK_SCROLL_STEP_BACKWARD,
11007            Self::StepForward => ffi::GTK_SCROLL_STEP_FORWARD,
11008            Self::PageBackward => ffi::GTK_SCROLL_PAGE_BACKWARD,
11009            Self::PageForward => ffi::GTK_SCROLL_PAGE_FORWARD,
11010            Self::StepUp => ffi::GTK_SCROLL_STEP_UP,
11011            Self::StepDown => ffi::GTK_SCROLL_STEP_DOWN,
11012            Self::PageUp => ffi::GTK_SCROLL_PAGE_UP,
11013            Self::PageDown => ffi::GTK_SCROLL_PAGE_DOWN,
11014            Self::StepLeft => ffi::GTK_SCROLL_STEP_LEFT,
11015            Self::StepRight => ffi::GTK_SCROLL_STEP_RIGHT,
11016            Self::PageLeft => ffi::GTK_SCROLL_PAGE_LEFT,
11017            Self::PageRight => ffi::GTK_SCROLL_PAGE_RIGHT,
11018            Self::Start => ffi::GTK_SCROLL_START,
11019            Self::End => ffi::GTK_SCROLL_END,
11020            Self::__Unknown(value) => value,
11021        }
11022    }
11023}
11024
11025#[doc(hidden)]
11026impl FromGlib<ffi::GtkScrollType> for ScrollType {
11027    unsafe fn from_glib(value: ffi::GtkScrollType) -> Self {
11028        skip_assert_initialized!();
11029
11030        match value {
11031            ffi::GTK_SCROLL_NONE => Self::None,
11032            ffi::GTK_SCROLL_JUMP => Self::Jump,
11033            ffi::GTK_SCROLL_STEP_BACKWARD => Self::StepBackward,
11034            ffi::GTK_SCROLL_STEP_FORWARD => Self::StepForward,
11035            ffi::GTK_SCROLL_PAGE_BACKWARD => Self::PageBackward,
11036            ffi::GTK_SCROLL_PAGE_FORWARD => Self::PageForward,
11037            ffi::GTK_SCROLL_STEP_UP => Self::StepUp,
11038            ffi::GTK_SCROLL_STEP_DOWN => Self::StepDown,
11039            ffi::GTK_SCROLL_PAGE_UP => Self::PageUp,
11040            ffi::GTK_SCROLL_PAGE_DOWN => Self::PageDown,
11041            ffi::GTK_SCROLL_STEP_LEFT => Self::StepLeft,
11042            ffi::GTK_SCROLL_STEP_RIGHT => Self::StepRight,
11043            ffi::GTK_SCROLL_PAGE_LEFT => Self::PageLeft,
11044            ffi::GTK_SCROLL_PAGE_RIGHT => Self::PageRight,
11045            ffi::GTK_SCROLL_START => Self::Start,
11046            ffi::GTK_SCROLL_END => Self::End,
11047            value => Self::__Unknown(value),
11048        }
11049    }
11050}
11051
11052impl StaticType for ScrollType {
11053    #[inline]
11054    #[doc(alias = "gtk_scroll_type_get_type")]
11055    fn static_type() -> glib::Type {
11056        unsafe { from_glib(ffi::gtk_scroll_type_get_type()) }
11057    }
11058}
11059
11060impl glib::HasParamSpec for ScrollType {
11061    type ParamSpec = glib::ParamSpecEnum;
11062    type SetValue = Self;
11063    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11064
11065    fn param_spec_builder() -> Self::BuilderFn {
11066        Self::ParamSpec::builder_with_default
11067    }
11068}
11069
11070impl glib::value::ValueType for ScrollType {
11071    type Type = Self;
11072}
11073
11074unsafe impl<'a> glib::value::FromValue<'a> for ScrollType {
11075    type Checker = glib::value::GenericValueTypeChecker<Self>;
11076
11077    #[inline]
11078    unsafe fn from_value(value: &'a glib::Value) -> Self {
11079        skip_assert_initialized!();
11080        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11081    }
11082}
11083
11084impl ToValue for ScrollType {
11085    #[inline]
11086    fn to_value(&self) -> glib::Value {
11087        let mut value = glib::Value::for_value_type::<Self>();
11088        unsafe {
11089            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11090        }
11091        value
11092    }
11093
11094    #[inline]
11095    fn value_type(&self) -> glib::Type {
11096        Self::static_type()
11097    }
11098}
11099
11100impl From<ScrollType> for glib::Value {
11101    #[inline]
11102    fn from(v: ScrollType) -> Self {
11103        skip_assert_initialized!();
11104        ToValue::to_value(&v)
11105    }
11106}
11107
11108/// Defines the policy to be used in a scrollable widget when updating
11109/// the scrolled window adjustments in a given orientation.
11110#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11111#[non_exhaustive]
11112#[doc(alias = "GtkScrollablePolicy")]
11113pub enum ScrollablePolicy {
11114    /// Scrollable adjustments are based on the minimum size
11115    #[doc(alias = "GTK_SCROLL_MINIMUM")]
11116    Minimum,
11117    /// Scrollable adjustments are based on the natural size
11118    #[doc(alias = "GTK_SCROLL_NATURAL")]
11119    Natural,
11120    #[doc(hidden)]
11121    __Unknown(i32),
11122}
11123
11124#[doc(hidden)]
11125impl IntoGlib for ScrollablePolicy {
11126    type GlibType = ffi::GtkScrollablePolicy;
11127
11128    #[inline]
11129    fn into_glib(self) -> ffi::GtkScrollablePolicy {
11130        match self {
11131            Self::Minimum => ffi::GTK_SCROLL_MINIMUM,
11132            Self::Natural => ffi::GTK_SCROLL_NATURAL,
11133            Self::__Unknown(value) => value,
11134        }
11135    }
11136}
11137
11138#[doc(hidden)]
11139impl FromGlib<ffi::GtkScrollablePolicy> for ScrollablePolicy {
11140    #[inline]
11141    unsafe fn from_glib(value: ffi::GtkScrollablePolicy) -> Self {
11142        skip_assert_initialized!();
11143
11144        match value {
11145            ffi::GTK_SCROLL_MINIMUM => Self::Minimum,
11146            ffi::GTK_SCROLL_NATURAL => Self::Natural,
11147            value => Self::__Unknown(value),
11148        }
11149    }
11150}
11151
11152impl StaticType for ScrollablePolicy {
11153    #[inline]
11154    #[doc(alias = "gtk_scrollable_policy_get_type")]
11155    fn static_type() -> glib::Type {
11156        unsafe { from_glib(ffi::gtk_scrollable_policy_get_type()) }
11157    }
11158}
11159
11160impl glib::HasParamSpec for ScrollablePolicy {
11161    type ParamSpec = glib::ParamSpecEnum;
11162    type SetValue = Self;
11163    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11164
11165    fn param_spec_builder() -> Self::BuilderFn {
11166        Self::ParamSpec::builder_with_default
11167    }
11168}
11169
11170impl glib::value::ValueType for ScrollablePolicy {
11171    type Type = Self;
11172}
11173
11174unsafe impl<'a> glib::value::FromValue<'a> for ScrollablePolicy {
11175    type Checker = glib::value::GenericValueTypeChecker<Self>;
11176
11177    #[inline]
11178    unsafe fn from_value(value: &'a glib::Value) -> Self {
11179        skip_assert_initialized!();
11180        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11181    }
11182}
11183
11184impl ToValue for ScrollablePolicy {
11185    #[inline]
11186    fn to_value(&self) -> glib::Value {
11187        let mut value = glib::Value::for_value_type::<Self>();
11188        unsafe {
11189            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11190        }
11191        value
11192    }
11193
11194    #[inline]
11195    fn value_type(&self) -> glib::Type {
11196        Self::static_type()
11197    }
11198}
11199
11200impl From<ScrollablePolicy> for glib::Value {
11201    #[inline]
11202    fn from(v: ScrollablePolicy) -> Self {
11203        skip_assert_initialized!();
11204        ToValue::to_value(&v)
11205    }
11206}
11207
11208/// Used to control what selections users are allowed to make.
11209#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11210#[non_exhaustive]
11211#[doc(alias = "GtkSelectionMode")]
11212pub enum SelectionMode {
11213    /// No selection is possible.
11214    #[doc(alias = "GTK_SELECTION_NONE")]
11215    None,
11216    /// Zero or one element may be selected.
11217    #[doc(alias = "GTK_SELECTION_SINGLE")]
11218    Single,
11219    /// t deselect a currently selected element except by selecting
11220    ///   another element.
11221    #[doc(alias = "GTK_SELECTION_BROWSE")]
11222    Browse,
11223    /// Any number of elements may be selected.
11224    ///   The Ctrl key may be used to enlarge the selection, and Shift
11225    ///   key to select between the focus and the child pointed to.
11226    ///   Some widgets may also allow Click-drag to select a range of elements.
11227    #[doc(alias = "GTK_SELECTION_MULTIPLE")]
11228    Multiple,
11229    #[doc(hidden)]
11230    __Unknown(i32),
11231}
11232
11233#[doc(hidden)]
11234impl IntoGlib for SelectionMode {
11235    type GlibType = ffi::GtkSelectionMode;
11236
11237    #[inline]
11238    fn into_glib(self) -> ffi::GtkSelectionMode {
11239        match self {
11240            Self::None => ffi::GTK_SELECTION_NONE,
11241            Self::Single => ffi::GTK_SELECTION_SINGLE,
11242            Self::Browse => ffi::GTK_SELECTION_BROWSE,
11243            Self::Multiple => ffi::GTK_SELECTION_MULTIPLE,
11244            Self::__Unknown(value) => value,
11245        }
11246    }
11247}
11248
11249#[doc(hidden)]
11250impl FromGlib<ffi::GtkSelectionMode> for SelectionMode {
11251    #[inline]
11252    unsafe fn from_glib(value: ffi::GtkSelectionMode) -> Self {
11253        skip_assert_initialized!();
11254
11255        match value {
11256            ffi::GTK_SELECTION_NONE => Self::None,
11257            ffi::GTK_SELECTION_SINGLE => Self::Single,
11258            ffi::GTK_SELECTION_BROWSE => Self::Browse,
11259            ffi::GTK_SELECTION_MULTIPLE => Self::Multiple,
11260            value => Self::__Unknown(value),
11261        }
11262    }
11263}
11264
11265impl StaticType for SelectionMode {
11266    #[inline]
11267    #[doc(alias = "gtk_selection_mode_get_type")]
11268    fn static_type() -> glib::Type {
11269        unsafe { from_glib(ffi::gtk_selection_mode_get_type()) }
11270    }
11271}
11272
11273impl glib::HasParamSpec for SelectionMode {
11274    type ParamSpec = glib::ParamSpecEnum;
11275    type SetValue = Self;
11276    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11277
11278    fn param_spec_builder() -> Self::BuilderFn {
11279        Self::ParamSpec::builder_with_default
11280    }
11281}
11282
11283impl glib::value::ValueType for SelectionMode {
11284    type Type = Self;
11285}
11286
11287unsafe impl<'a> glib::value::FromValue<'a> for SelectionMode {
11288    type Checker = glib::value::GenericValueTypeChecker<Self>;
11289
11290    #[inline]
11291    unsafe fn from_value(value: &'a glib::Value) -> Self {
11292        skip_assert_initialized!();
11293        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11294    }
11295}
11296
11297impl ToValue for SelectionMode {
11298    #[inline]
11299    fn to_value(&self) -> glib::Value {
11300        let mut value = glib::Value::for_value_type::<Self>();
11301        unsafe {
11302            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11303        }
11304        value
11305    }
11306
11307    #[inline]
11308    fn value_type(&self) -> glib::Type {
11309        Self::static_type()
11310    }
11311}
11312
11313impl From<SelectionMode> for glib::Value {
11314    #[inline]
11315    fn from(v: SelectionMode) -> Self {
11316        skip_assert_initialized!();
11317        ToValue::to_value(&v)
11318    }
11319}
11320
11321/// Determines how GTK handles the sensitivity of various controls,
11322/// such as combo box buttons.
11323#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11324#[non_exhaustive]
11325#[doc(alias = "GtkSensitivityType")]
11326pub enum SensitivityType {
11327    /// The control is made insensitive if no
11328    ///   action can be triggered
11329    #[doc(alias = "GTK_SENSITIVITY_AUTO")]
11330    Auto,
11331    /// The control is always sensitive
11332    #[doc(alias = "GTK_SENSITIVITY_ON")]
11333    On,
11334    /// The control is always insensitive
11335    #[doc(alias = "GTK_SENSITIVITY_OFF")]
11336    Off,
11337    #[doc(hidden)]
11338    __Unknown(i32),
11339}
11340
11341#[doc(hidden)]
11342impl IntoGlib for SensitivityType {
11343    type GlibType = ffi::GtkSensitivityType;
11344
11345    #[inline]
11346    fn into_glib(self) -> ffi::GtkSensitivityType {
11347        match self {
11348            Self::Auto => ffi::GTK_SENSITIVITY_AUTO,
11349            Self::On => ffi::GTK_SENSITIVITY_ON,
11350            Self::Off => ffi::GTK_SENSITIVITY_OFF,
11351            Self::__Unknown(value) => value,
11352        }
11353    }
11354}
11355
11356#[doc(hidden)]
11357impl FromGlib<ffi::GtkSensitivityType> for SensitivityType {
11358    #[inline]
11359    unsafe fn from_glib(value: ffi::GtkSensitivityType) -> Self {
11360        skip_assert_initialized!();
11361
11362        match value {
11363            ffi::GTK_SENSITIVITY_AUTO => Self::Auto,
11364            ffi::GTK_SENSITIVITY_ON => Self::On,
11365            ffi::GTK_SENSITIVITY_OFF => Self::Off,
11366            value => Self::__Unknown(value),
11367        }
11368    }
11369}
11370
11371impl StaticType for SensitivityType {
11372    #[inline]
11373    #[doc(alias = "gtk_sensitivity_type_get_type")]
11374    fn static_type() -> glib::Type {
11375        unsafe { from_glib(ffi::gtk_sensitivity_type_get_type()) }
11376    }
11377}
11378
11379impl glib::HasParamSpec for SensitivityType {
11380    type ParamSpec = glib::ParamSpecEnum;
11381    type SetValue = Self;
11382    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11383
11384    fn param_spec_builder() -> Self::BuilderFn {
11385        Self::ParamSpec::builder_with_default
11386    }
11387}
11388
11389impl glib::value::ValueType for SensitivityType {
11390    type Type = Self;
11391}
11392
11393unsafe impl<'a> glib::value::FromValue<'a> for SensitivityType {
11394    type Checker = glib::value::GenericValueTypeChecker<Self>;
11395
11396    #[inline]
11397    unsafe fn from_value(value: &'a glib::Value) -> Self {
11398        skip_assert_initialized!();
11399        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11400    }
11401}
11402
11403impl ToValue for SensitivityType {
11404    #[inline]
11405    fn to_value(&self) -> glib::Value {
11406        let mut value = glib::Value::for_value_type::<Self>();
11407        unsafe {
11408            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11409        }
11410        value
11411    }
11412
11413    #[inline]
11414    fn value_type(&self) -> glib::Type {
11415        Self::static_type()
11416    }
11417}
11418
11419impl From<SensitivityType> for glib::Value {
11420    #[inline]
11421    fn from(v: SensitivityType) -> Self {
11422        skip_assert_initialized!();
11423        ToValue::to_value(&v)
11424    }
11425}
11426
11427/// Describes where [`Shortcut`][crate::Shortcut]s added to a
11428/// [`ShortcutController`][crate::ShortcutController] get handled.
11429#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11430#[non_exhaustive]
11431#[doc(alias = "GtkShortcutScope")]
11432pub enum ShortcutScope {
11433    /// Shortcuts are handled inside
11434    ///   the widget the controller belongs to.
11435    #[doc(alias = "GTK_SHORTCUT_SCOPE_LOCAL")]
11436    Local,
11437    /// Shortcuts are handled by
11438    ///   the first ancestor that is a [`ShortcutManager`][crate::ShortcutManager]
11439    #[doc(alias = "GTK_SHORTCUT_SCOPE_MANAGED")]
11440    Managed,
11441    /// Shortcuts are handled by
11442    ///   the root widget.
11443    #[doc(alias = "GTK_SHORTCUT_SCOPE_GLOBAL")]
11444    Global,
11445    #[doc(hidden)]
11446    __Unknown(i32),
11447}
11448
11449#[doc(hidden)]
11450impl IntoGlib for ShortcutScope {
11451    type GlibType = ffi::GtkShortcutScope;
11452
11453    #[inline]
11454    fn into_glib(self) -> ffi::GtkShortcutScope {
11455        match self {
11456            Self::Local => ffi::GTK_SHORTCUT_SCOPE_LOCAL,
11457            Self::Managed => ffi::GTK_SHORTCUT_SCOPE_MANAGED,
11458            Self::Global => ffi::GTK_SHORTCUT_SCOPE_GLOBAL,
11459            Self::__Unknown(value) => value,
11460        }
11461    }
11462}
11463
11464#[doc(hidden)]
11465impl FromGlib<ffi::GtkShortcutScope> for ShortcutScope {
11466    #[inline]
11467    unsafe fn from_glib(value: ffi::GtkShortcutScope) -> Self {
11468        skip_assert_initialized!();
11469
11470        match value {
11471            ffi::GTK_SHORTCUT_SCOPE_LOCAL => Self::Local,
11472            ffi::GTK_SHORTCUT_SCOPE_MANAGED => Self::Managed,
11473            ffi::GTK_SHORTCUT_SCOPE_GLOBAL => Self::Global,
11474            value => Self::__Unknown(value),
11475        }
11476    }
11477}
11478
11479impl StaticType for ShortcutScope {
11480    #[inline]
11481    #[doc(alias = "gtk_shortcut_scope_get_type")]
11482    fn static_type() -> glib::Type {
11483        unsafe { from_glib(ffi::gtk_shortcut_scope_get_type()) }
11484    }
11485}
11486
11487impl glib::HasParamSpec for ShortcutScope {
11488    type ParamSpec = glib::ParamSpecEnum;
11489    type SetValue = Self;
11490    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11491
11492    fn param_spec_builder() -> Self::BuilderFn {
11493        Self::ParamSpec::builder_with_default
11494    }
11495}
11496
11497impl glib::value::ValueType for ShortcutScope {
11498    type Type = Self;
11499}
11500
11501unsafe impl<'a> glib::value::FromValue<'a> for ShortcutScope {
11502    type Checker = glib::value::GenericValueTypeChecker<Self>;
11503
11504    #[inline]
11505    unsafe fn from_value(value: &'a glib::Value) -> Self {
11506        skip_assert_initialized!();
11507        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11508    }
11509}
11510
11511impl ToValue for ShortcutScope {
11512    #[inline]
11513    fn to_value(&self) -> glib::Value {
11514        let mut value = glib::Value::for_value_type::<Self>();
11515        unsafe {
11516            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11517        }
11518        value
11519    }
11520
11521    #[inline]
11522    fn value_type(&self) -> glib::Type {
11523        Self::static_type()
11524    }
11525}
11526
11527impl From<ShortcutScope> for glib::Value {
11528    #[inline]
11529    fn from(v: ShortcutScope) -> Self {
11530        skip_assert_initialized!();
11531        ToValue::to_value(&v)
11532    }
11533}
11534
11535/// GtkShortcutType specifies the kind of shortcut that is being described.
11536///
11537/// More values may be added to this enumeration over time.
11538#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11539#[non_exhaustive]
11540#[doc(alias = "GtkShortcutType")]
11541pub enum ShortcutType {
11542    /// The shortcut is a keyboard accelerator. The GtkShortcutsShortcut:accelerator
11543    ///   property will be used.
11544    #[doc(alias = "GTK_SHORTCUT_ACCELERATOR")]
11545    Accelerator,
11546    /// The shortcut is a pinch gesture. GTK provides an icon and subtitle.
11547    #[doc(alias = "GTK_SHORTCUT_GESTURE_PINCH")]
11548    GesturePinch,
11549    /// The shortcut is a stretch gesture. GTK provides an icon and subtitle.
11550    #[doc(alias = "GTK_SHORTCUT_GESTURE_STRETCH")]
11551    GestureStretch,
11552    /// The shortcut is a clockwise rotation gesture. GTK provides an icon and subtitle.
11553    #[doc(alias = "GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE")]
11554    GestureRotateClockwise,
11555    /// The shortcut is a counterclockwise rotation gesture. GTK provides an icon and subtitle.
11556    #[doc(alias = "GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE")]
11557    GestureRotateCounterclockwise,
11558    /// The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
11559    #[doc(alias = "GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT")]
11560    GestureTwoFingerSwipeLeft,
11561    /// The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
11562    #[doc(alias = "GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT")]
11563    GestureTwoFingerSwipeRight,
11564    /// The shortcut is a gesture. The GtkShortcutsShortcut:icon property will be
11565    ///   used.
11566    #[doc(alias = "GTK_SHORTCUT_GESTURE")]
11567    Gesture,
11568    /// The shortcut is a swipe gesture. GTK provides an icon and subtitle.
11569    #[doc(alias = "GTK_SHORTCUT_GESTURE_SWIPE_LEFT")]
11570    GestureSwipeLeft,
11571    /// The shortcut is a swipe gesture. GTK provides an icon and subtitle.
11572    #[doc(alias = "GTK_SHORTCUT_GESTURE_SWIPE_RIGHT")]
11573    GestureSwipeRight,
11574    #[doc(hidden)]
11575    __Unknown(i32),
11576}
11577
11578#[doc(hidden)]
11579impl IntoGlib for ShortcutType {
11580    type GlibType = ffi::GtkShortcutType;
11581
11582    #[inline]
11583    fn into_glib(self) -> ffi::GtkShortcutType {
11584        match self {
11585            Self::Accelerator => ffi::GTK_SHORTCUT_ACCELERATOR,
11586            Self::GesturePinch => ffi::GTK_SHORTCUT_GESTURE_PINCH,
11587            Self::GestureStretch => ffi::GTK_SHORTCUT_GESTURE_STRETCH,
11588            Self::GestureRotateClockwise => ffi::GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE,
11589            Self::GestureRotateCounterclockwise => {
11590                ffi::GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE
11591            }
11592            Self::GestureTwoFingerSwipeLeft => ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT,
11593            Self::GestureTwoFingerSwipeRight => ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT,
11594            Self::Gesture => ffi::GTK_SHORTCUT_GESTURE,
11595            Self::GestureSwipeLeft => ffi::GTK_SHORTCUT_GESTURE_SWIPE_LEFT,
11596            Self::GestureSwipeRight => ffi::GTK_SHORTCUT_GESTURE_SWIPE_RIGHT,
11597            Self::__Unknown(value) => value,
11598        }
11599    }
11600}
11601
11602#[doc(hidden)]
11603impl FromGlib<ffi::GtkShortcutType> for ShortcutType {
11604    #[inline]
11605    unsafe fn from_glib(value: ffi::GtkShortcutType) -> Self {
11606        skip_assert_initialized!();
11607
11608        match value {
11609            ffi::GTK_SHORTCUT_ACCELERATOR => Self::Accelerator,
11610            ffi::GTK_SHORTCUT_GESTURE_PINCH => Self::GesturePinch,
11611            ffi::GTK_SHORTCUT_GESTURE_STRETCH => Self::GestureStretch,
11612            ffi::GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE => Self::GestureRotateClockwise,
11613            ffi::GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE => {
11614                Self::GestureRotateCounterclockwise
11615            }
11616            ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT => Self::GestureTwoFingerSwipeLeft,
11617            ffi::GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT => Self::GestureTwoFingerSwipeRight,
11618            ffi::GTK_SHORTCUT_GESTURE => Self::Gesture,
11619            ffi::GTK_SHORTCUT_GESTURE_SWIPE_LEFT => Self::GestureSwipeLeft,
11620            ffi::GTK_SHORTCUT_GESTURE_SWIPE_RIGHT => Self::GestureSwipeRight,
11621            value => Self::__Unknown(value),
11622        }
11623    }
11624}
11625
11626impl StaticType for ShortcutType {
11627    #[inline]
11628    #[doc(alias = "gtk_shortcut_type_get_type")]
11629    fn static_type() -> glib::Type {
11630        unsafe { from_glib(ffi::gtk_shortcut_type_get_type()) }
11631    }
11632}
11633
11634impl glib::HasParamSpec for ShortcutType {
11635    type ParamSpec = glib::ParamSpecEnum;
11636    type SetValue = Self;
11637    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11638
11639    fn param_spec_builder() -> Self::BuilderFn {
11640        Self::ParamSpec::builder_with_default
11641    }
11642}
11643
11644impl glib::value::ValueType for ShortcutType {
11645    type Type = Self;
11646}
11647
11648unsafe impl<'a> glib::value::FromValue<'a> for ShortcutType {
11649    type Checker = glib::value::GenericValueTypeChecker<Self>;
11650
11651    #[inline]
11652    unsafe fn from_value(value: &'a glib::Value) -> Self {
11653        skip_assert_initialized!();
11654        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11655    }
11656}
11657
11658impl ToValue for ShortcutType {
11659    #[inline]
11660    fn to_value(&self) -> glib::Value {
11661        let mut value = glib::Value::for_value_type::<Self>();
11662        unsafe {
11663            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11664        }
11665        value
11666    }
11667
11668    #[inline]
11669    fn value_type(&self) -> glib::Type {
11670        Self::static_type()
11671    }
11672}
11673
11674impl From<ShortcutType> for glib::Value {
11675    #[inline]
11676    fn from(v: ShortcutType) -> Self {
11677        skip_assert_initialized!();
11678        ToValue::to_value(&v)
11679    }
11680}
11681
11682/// The mode of the size group determines the directions in which the size
11683/// group affects the requested sizes of its component widgets.
11684#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11685#[non_exhaustive]
11686#[doc(alias = "GtkSizeGroupMode")]
11687pub enum SizeGroupMode {
11688    /// group has no effect
11689    #[doc(alias = "GTK_SIZE_GROUP_NONE")]
11690    None,
11691    /// group affects horizontal requisition
11692    #[doc(alias = "GTK_SIZE_GROUP_HORIZONTAL")]
11693    Horizontal,
11694    /// group affects vertical requisition
11695    #[doc(alias = "GTK_SIZE_GROUP_VERTICAL")]
11696    Vertical,
11697    /// group affects both horizontal and vertical requisition
11698    #[doc(alias = "GTK_SIZE_GROUP_BOTH")]
11699    Both,
11700    #[doc(hidden)]
11701    __Unknown(i32),
11702}
11703
11704#[doc(hidden)]
11705impl IntoGlib for SizeGroupMode {
11706    type GlibType = ffi::GtkSizeGroupMode;
11707
11708    #[inline]
11709    fn into_glib(self) -> ffi::GtkSizeGroupMode {
11710        match self {
11711            Self::None => ffi::GTK_SIZE_GROUP_NONE,
11712            Self::Horizontal => ffi::GTK_SIZE_GROUP_HORIZONTAL,
11713            Self::Vertical => ffi::GTK_SIZE_GROUP_VERTICAL,
11714            Self::Both => ffi::GTK_SIZE_GROUP_BOTH,
11715            Self::__Unknown(value) => value,
11716        }
11717    }
11718}
11719
11720#[doc(hidden)]
11721impl FromGlib<ffi::GtkSizeGroupMode> for SizeGroupMode {
11722    #[inline]
11723    unsafe fn from_glib(value: ffi::GtkSizeGroupMode) -> Self {
11724        skip_assert_initialized!();
11725
11726        match value {
11727            ffi::GTK_SIZE_GROUP_NONE => Self::None,
11728            ffi::GTK_SIZE_GROUP_HORIZONTAL => Self::Horizontal,
11729            ffi::GTK_SIZE_GROUP_VERTICAL => Self::Vertical,
11730            ffi::GTK_SIZE_GROUP_BOTH => Self::Both,
11731            value => Self::__Unknown(value),
11732        }
11733    }
11734}
11735
11736impl StaticType for SizeGroupMode {
11737    #[inline]
11738    #[doc(alias = "gtk_size_group_mode_get_type")]
11739    fn static_type() -> glib::Type {
11740        unsafe { from_glib(ffi::gtk_size_group_mode_get_type()) }
11741    }
11742}
11743
11744impl glib::HasParamSpec for SizeGroupMode {
11745    type ParamSpec = glib::ParamSpecEnum;
11746    type SetValue = Self;
11747    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11748
11749    fn param_spec_builder() -> Self::BuilderFn {
11750        Self::ParamSpec::builder_with_default
11751    }
11752}
11753
11754impl glib::value::ValueType for SizeGroupMode {
11755    type Type = Self;
11756}
11757
11758unsafe impl<'a> glib::value::FromValue<'a> for SizeGroupMode {
11759    type Checker = glib::value::GenericValueTypeChecker<Self>;
11760
11761    #[inline]
11762    unsafe fn from_value(value: &'a glib::Value) -> Self {
11763        skip_assert_initialized!();
11764        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11765    }
11766}
11767
11768impl ToValue for SizeGroupMode {
11769    #[inline]
11770    fn to_value(&self) -> glib::Value {
11771        let mut value = glib::Value::for_value_type::<Self>();
11772        unsafe {
11773            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11774        }
11775        value
11776    }
11777
11778    #[inline]
11779    fn value_type(&self) -> glib::Type {
11780        Self::static_type()
11781    }
11782}
11783
11784impl From<SizeGroupMode> for glib::Value {
11785    #[inline]
11786    fn from(v: SizeGroupMode) -> Self {
11787        skip_assert_initialized!();
11788        ToValue::to_value(&v)
11789    }
11790}
11791
11792/// Specifies a preference for height-for-width or
11793/// width-for-height geometry management.
11794#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11795#[non_exhaustive]
11796#[doc(alias = "GtkSizeRequestMode")]
11797pub enum SizeRequestMode {
11798    /// Prefer height-for-width geometry management
11799    #[doc(alias = "GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH")]
11800    HeightForWidth,
11801    /// Prefer width-for-height geometry management
11802    #[doc(alias = "GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT")]
11803    WidthForHeight,
11804    /// t trade height-for-width or width-for-height
11805    #[doc(alias = "GTK_SIZE_REQUEST_CONSTANT_SIZE")]
11806    ConstantSize,
11807    #[doc(hidden)]
11808    __Unknown(i32),
11809}
11810
11811#[doc(hidden)]
11812impl IntoGlib for SizeRequestMode {
11813    type GlibType = ffi::GtkSizeRequestMode;
11814
11815    #[inline]
11816    fn into_glib(self) -> ffi::GtkSizeRequestMode {
11817        match self {
11818            Self::HeightForWidth => ffi::GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH,
11819            Self::WidthForHeight => ffi::GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT,
11820            Self::ConstantSize => ffi::GTK_SIZE_REQUEST_CONSTANT_SIZE,
11821            Self::__Unknown(value) => value,
11822        }
11823    }
11824}
11825
11826#[doc(hidden)]
11827impl FromGlib<ffi::GtkSizeRequestMode> for SizeRequestMode {
11828    #[inline]
11829    unsafe fn from_glib(value: ffi::GtkSizeRequestMode) -> Self {
11830        skip_assert_initialized!();
11831
11832        match value {
11833            ffi::GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH => Self::HeightForWidth,
11834            ffi::GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT => Self::WidthForHeight,
11835            ffi::GTK_SIZE_REQUEST_CONSTANT_SIZE => Self::ConstantSize,
11836            value => Self::__Unknown(value),
11837        }
11838    }
11839}
11840
11841impl StaticType for SizeRequestMode {
11842    #[inline]
11843    #[doc(alias = "gtk_size_request_mode_get_type")]
11844    fn static_type() -> glib::Type {
11845        unsafe { from_glib(ffi::gtk_size_request_mode_get_type()) }
11846    }
11847}
11848
11849impl glib::HasParamSpec for SizeRequestMode {
11850    type ParamSpec = glib::ParamSpecEnum;
11851    type SetValue = Self;
11852    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11853
11854    fn param_spec_builder() -> Self::BuilderFn {
11855        Self::ParamSpec::builder_with_default
11856    }
11857}
11858
11859impl glib::value::ValueType for SizeRequestMode {
11860    type Type = Self;
11861}
11862
11863unsafe impl<'a> glib::value::FromValue<'a> for SizeRequestMode {
11864    type Checker = glib::value::GenericValueTypeChecker<Self>;
11865
11866    #[inline]
11867    unsafe fn from_value(value: &'a glib::Value) -> Self {
11868        skip_assert_initialized!();
11869        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11870    }
11871}
11872
11873impl ToValue for SizeRequestMode {
11874    #[inline]
11875    fn to_value(&self) -> glib::Value {
11876        let mut value = glib::Value::for_value_type::<Self>();
11877        unsafe {
11878            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11879        }
11880        value
11881    }
11882
11883    #[inline]
11884    fn value_type(&self) -> glib::Type {
11885        Self::static_type()
11886    }
11887}
11888
11889impl From<SizeRequestMode> for glib::Value {
11890    #[inline]
11891    fn from(v: SizeRequestMode) -> Self {
11892        skip_assert_initialized!();
11893        ToValue::to_value(&v)
11894    }
11895}
11896
11897/// Determines the direction of a sort.
11898#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11899#[non_exhaustive]
11900#[doc(alias = "GtkSortType")]
11901pub enum SortType {
11902    /// Sorting is in ascending order.
11903    #[doc(alias = "GTK_SORT_ASCENDING")]
11904    Ascending,
11905    /// Sorting is in descending order.
11906    #[doc(alias = "GTK_SORT_DESCENDING")]
11907    Descending,
11908    #[doc(hidden)]
11909    __Unknown(i32),
11910}
11911
11912#[doc(hidden)]
11913impl IntoGlib for SortType {
11914    type GlibType = ffi::GtkSortType;
11915
11916    #[inline]
11917    fn into_glib(self) -> ffi::GtkSortType {
11918        match self {
11919            Self::Ascending => ffi::GTK_SORT_ASCENDING,
11920            Self::Descending => ffi::GTK_SORT_DESCENDING,
11921            Self::__Unknown(value) => value,
11922        }
11923    }
11924}
11925
11926#[doc(hidden)]
11927impl FromGlib<ffi::GtkSortType> for SortType {
11928    #[inline]
11929    unsafe fn from_glib(value: ffi::GtkSortType) -> Self {
11930        skip_assert_initialized!();
11931
11932        match value {
11933            ffi::GTK_SORT_ASCENDING => Self::Ascending,
11934            ffi::GTK_SORT_DESCENDING => Self::Descending,
11935            value => Self::__Unknown(value),
11936        }
11937    }
11938}
11939
11940impl StaticType for SortType {
11941    #[inline]
11942    #[doc(alias = "gtk_sort_type_get_type")]
11943    fn static_type() -> glib::Type {
11944        unsafe { from_glib(ffi::gtk_sort_type_get_type()) }
11945    }
11946}
11947
11948impl glib::HasParamSpec for SortType {
11949    type ParamSpec = glib::ParamSpecEnum;
11950    type SetValue = Self;
11951    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
11952
11953    fn param_spec_builder() -> Self::BuilderFn {
11954        Self::ParamSpec::builder_with_default
11955    }
11956}
11957
11958impl glib::value::ValueType for SortType {
11959    type Type = Self;
11960}
11961
11962unsafe impl<'a> glib::value::FromValue<'a> for SortType {
11963    type Checker = glib::value::GenericValueTypeChecker<Self>;
11964
11965    #[inline]
11966    unsafe fn from_value(value: &'a glib::Value) -> Self {
11967        skip_assert_initialized!();
11968        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
11969    }
11970}
11971
11972impl ToValue for SortType {
11973    #[inline]
11974    fn to_value(&self) -> glib::Value {
11975        let mut value = glib::Value::for_value_type::<Self>();
11976        unsafe {
11977            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
11978        }
11979        value
11980    }
11981
11982    #[inline]
11983    fn value_type(&self) -> glib::Type {
11984        Self::static_type()
11985    }
11986}
11987
11988impl From<SortType> for glib::Value {
11989    #[inline]
11990    fn from(v: SortType) -> Self {
11991        skip_assert_initialized!();
11992        ToValue::to_value(&v)
11993    }
11994}
11995
11996/// Describes changes in a sorter in more detail and allows users
11997/// to optimize resorting.
11998#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11999#[non_exhaustive]
12000#[doc(alias = "GtkSorterChange")]
12001pub enum SorterChange {
12002    /// The sorter change cannot be described
12003    ///   by any of the other enumeration values
12004    #[doc(alias = "GTK_SORTER_CHANGE_DIFFERENT")]
12005    Different,
12006    /// The sort order was inverted. Comparisons
12007    ///   that returned [`Ordering::Smaller`][crate::Ordering::Smaller] now return [`Ordering::Larger`][crate::Ordering::Larger]
12008    ///   and vice versa. Other comparisons return the same values as before.
12009    #[doc(alias = "GTK_SORTER_CHANGE_INVERTED")]
12010    Inverted,
12011    /// The sorter is less strict: Comparisons
12012    ///   may now return [`Ordering::Equal`][crate::Ordering::Equal] that did not do so before.
12013    #[doc(alias = "GTK_SORTER_CHANGE_LESS_STRICT")]
12014    LessStrict,
12015    /// The sorter is more strict: Comparisons
12016    ///   that did return [`Ordering::Equal`][crate::Ordering::Equal] may not do so anymore.
12017    #[doc(alias = "GTK_SORTER_CHANGE_MORE_STRICT")]
12018    MoreStrict,
12019    #[doc(hidden)]
12020    __Unknown(i32),
12021}
12022
12023#[doc(hidden)]
12024impl IntoGlib for SorterChange {
12025    type GlibType = ffi::GtkSorterChange;
12026
12027    #[inline]
12028    fn into_glib(self) -> ffi::GtkSorterChange {
12029        match self {
12030            Self::Different => ffi::GTK_SORTER_CHANGE_DIFFERENT,
12031            Self::Inverted => ffi::GTK_SORTER_CHANGE_INVERTED,
12032            Self::LessStrict => ffi::GTK_SORTER_CHANGE_LESS_STRICT,
12033            Self::MoreStrict => ffi::GTK_SORTER_CHANGE_MORE_STRICT,
12034            Self::__Unknown(value) => value,
12035        }
12036    }
12037}
12038
12039#[doc(hidden)]
12040impl FromGlib<ffi::GtkSorterChange> for SorterChange {
12041    #[inline]
12042    unsafe fn from_glib(value: ffi::GtkSorterChange) -> Self {
12043        skip_assert_initialized!();
12044
12045        match value {
12046            ffi::GTK_SORTER_CHANGE_DIFFERENT => Self::Different,
12047            ffi::GTK_SORTER_CHANGE_INVERTED => Self::Inverted,
12048            ffi::GTK_SORTER_CHANGE_LESS_STRICT => Self::LessStrict,
12049            ffi::GTK_SORTER_CHANGE_MORE_STRICT => Self::MoreStrict,
12050            value => Self::__Unknown(value),
12051        }
12052    }
12053}
12054
12055impl StaticType for SorterChange {
12056    #[inline]
12057    #[doc(alias = "gtk_sorter_change_get_type")]
12058    fn static_type() -> glib::Type {
12059        unsafe { from_glib(ffi::gtk_sorter_change_get_type()) }
12060    }
12061}
12062
12063impl glib::HasParamSpec for SorterChange {
12064    type ParamSpec = glib::ParamSpecEnum;
12065    type SetValue = Self;
12066    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12067
12068    fn param_spec_builder() -> Self::BuilderFn {
12069        Self::ParamSpec::builder_with_default
12070    }
12071}
12072
12073impl glib::value::ValueType for SorterChange {
12074    type Type = Self;
12075}
12076
12077unsafe impl<'a> glib::value::FromValue<'a> for SorterChange {
12078    type Checker = glib::value::GenericValueTypeChecker<Self>;
12079
12080    #[inline]
12081    unsafe fn from_value(value: &'a glib::Value) -> Self {
12082        skip_assert_initialized!();
12083        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12084    }
12085}
12086
12087impl ToValue for SorterChange {
12088    #[inline]
12089    fn to_value(&self) -> glib::Value {
12090        let mut value = glib::Value::for_value_type::<Self>();
12091        unsafe {
12092            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12093        }
12094        value
12095    }
12096
12097    #[inline]
12098    fn value_type(&self) -> glib::Type {
12099        Self::static_type()
12100    }
12101}
12102
12103impl From<SorterChange> for glib::Value {
12104    #[inline]
12105    fn from(v: SorterChange) -> Self {
12106        skip_assert_initialized!();
12107        ToValue::to_value(&v)
12108    }
12109}
12110
12111/// Describes the type of order that a [`Sorter`][crate::Sorter] may produce.
12112#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12113#[non_exhaustive]
12114#[doc(alias = "GtkSorterOrder")]
12115pub enum SorterOrder {
12116    /// A partial order. Any [`Ordering`][crate::Ordering] is possible.
12117    #[doc(alias = "GTK_SORTER_ORDER_PARTIAL")]
12118    Partial,
12119    /// No order, all elements are considered equal.
12120    ///   gtk_sorter_compare() will only return [`Ordering::Equal`][crate::Ordering::Equal].
12121    #[doc(alias = "GTK_SORTER_ORDER_NONE")]
12122    None,
12123    /// A total order. gtk_sorter_compare() will only
12124    ///   return [`Ordering::Equal`][crate::Ordering::Equal] if an item is compared with itself. Two
12125    ///   different items will never cause this value to be returned.
12126    #[doc(alias = "GTK_SORTER_ORDER_TOTAL")]
12127    Total,
12128    #[doc(hidden)]
12129    __Unknown(i32),
12130}
12131
12132#[doc(hidden)]
12133impl IntoGlib for SorterOrder {
12134    type GlibType = ffi::GtkSorterOrder;
12135
12136    #[inline]
12137    fn into_glib(self) -> ffi::GtkSorterOrder {
12138        match self {
12139            Self::Partial => ffi::GTK_SORTER_ORDER_PARTIAL,
12140            Self::None => ffi::GTK_SORTER_ORDER_NONE,
12141            Self::Total => ffi::GTK_SORTER_ORDER_TOTAL,
12142            Self::__Unknown(value) => value,
12143        }
12144    }
12145}
12146
12147#[doc(hidden)]
12148impl FromGlib<ffi::GtkSorterOrder> for SorterOrder {
12149    #[inline]
12150    unsafe fn from_glib(value: ffi::GtkSorterOrder) -> Self {
12151        skip_assert_initialized!();
12152
12153        match value {
12154            ffi::GTK_SORTER_ORDER_PARTIAL => Self::Partial,
12155            ffi::GTK_SORTER_ORDER_NONE => Self::None,
12156            ffi::GTK_SORTER_ORDER_TOTAL => Self::Total,
12157            value => Self::__Unknown(value),
12158        }
12159    }
12160}
12161
12162impl StaticType for SorterOrder {
12163    #[inline]
12164    #[doc(alias = "gtk_sorter_order_get_type")]
12165    fn static_type() -> glib::Type {
12166        unsafe { from_glib(ffi::gtk_sorter_order_get_type()) }
12167    }
12168}
12169
12170impl glib::HasParamSpec for SorterOrder {
12171    type ParamSpec = glib::ParamSpecEnum;
12172    type SetValue = Self;
12173    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12174
12175    fn param_spec_builder() -> Self::BuilderFn {
12176        Self::ParamSpec::builder_with_default
12177    }
12178}
12179
12180impl glib::value::ValueType for SorterOrder {
12181    type Type = Self;
12182}
12183
12184unsafe impl<'a> glib::value::FromValue<'a> for SorterOrder {
12185    type Checker = glib::value::GenericValueTypeChecker<Self>;
12186
12187    #[inline]
12188    unsafe fn from_value(value: &'a glib::Value) -> Self {
12189        skip_assert_initialized!();
12190        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12191    }
12192}
12193
12194impl ToValue for SorterOrder {
12195    #[inline]
12196    fn to_value(&self) -> glib::Value {
12197        let mut value = glib::Value::for_value_type::<Self>();
12198        unsafe {
12199            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12200        }
12201        value
12202    }
12203
12204    #[inline]
12205    fn value_type(&self) -> glib::Type {
12206        Self::static_type()
12207    }
12208}
12209
12210impl From<SorterOrder> for glib::Value {
12211    #[inline]
12212    fn from(v: SorterOrder) -> Self {
12213        skip_assert_initialized!();
12214        ToValue::to_value(&v)
12215    }
12216}
12217
12218/// Determines whether the spin button displays values outside the adjustment
12219/// bounds.
12220///
12221/// See [`SpinButton::set_update_policy()`][crate::SpinButton::set_update_policy()].
12222#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12223#[non_exhaustive]
12224#[doc(alias = "GtkSpinButtonUpdatePolicy")]
12225pub enum SpinButtonUpdatePolicy {
12226    /// When refreshing your [`SpinButton`][crate::SpinButton], the value is
12227    ///   always displayed
12228    #[doc(alias = "GTK_UPDATE_ALWAYS")]
12229    Always,
12230    /// When refreshing your [`SpinButton`][crate::SpinButton], the value is
12231    ///   only displayed if it is valid within the bounds of the spin button's
12232    ///   adjustment
12233    #[doc(alias = "GTK_UPDATE_IF_VALID")]
12234    IfValid,
12235    #[doc(hidden)]
12236    __Unknown(i32),
12237}
12238
12239#[doc(hidden)]
12240impl IntoGlib for SpinButtonUpdatePolicy {
12241    type GlibType = ffi::GtkSpinButtonUpdatePolicy;
12242
12243    #[inline]
12244    fn into_glib(self) -> ffi::GtkSpinButtonUpdatePolicy {
12245        match self {
12246            Self::Always => ffi::GTK_UPDATE_ALWAYS,
12247            Self::IfValid => ffi::GTK_UPDATE_IF_VALID,
12248            Self::__Unknown(value) => value,
12249        }
12250    }
12251}
12252
12253#[doc(hidden)]
12254impl FromGlib<ffi::GtkSpinButtonUpdatePolicy> for SpinButtonUpdatePolicy {
12255    #[inline]
12256    unsafe fn from_glib(value: ffi::GtkSpinButtonUpdatePolicy) -> Self {
12257        skip_assert_initialized!();
12258
12259        match value {
12260            ffi::GTK_UPDATE_ALWAYS => Self::Always,
12261            ffi::GTK_UPDATE_IF_VALID => Self::IfValid,
12262            value => Self::__Unknown(value),
12263        }
12264    }
12265}
12266
12267impl StaticType for SpinButtonUpdatePolicy {
12268    #[inline]
12269    #[doc(alias = "gtk_spin_button_update_policy_get_type")]
12270    fn static_type() -> glib::Type {
12271        unsafe { from_glib(ffi::gtk_spin_button_update_policy_get_type()) }
12272    }
12273}
12274
12275impl glib::HasParamSpec for SpinButtonUpdatePolicy {
12276    type ParamSpec = glib::ParamSpecEnum;
12277    type SetValue = Self;
12278    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12279
12280    fn param_spec_builder() -> Self::BuilderFn {
12281        Self::ParamSpec::builder_with_default
12282    }
12283}
12284
12285impl glib::value::ValueType for SpinButtonUpdatePolicy {
12286    type Type = Self;
12287}
12288
12289unsafe impl<'a> glib::value::FromValue<'a> for SpinButtonUpdatePolicy {
12290    type Checker = glib::value::GenericValueTypeChecker<Self>;
12291
12292    #[inline]
12293    unsafe fn from_value(value: &'a glib::Value) -> Self {
12294        skip_assert_initialized!();
12295        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12296    }
12297}
12298
12299impl ToValue for SpinButtonUpdatePolicy {
12300    #[inline]
12301    fn to_value(&self) -> glib::Value {
12302        let mut value = glib::Value::for_value_type::<Self>();
12303        unsafe {
12304            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12305        }
12306        value
12307    }
12308
12309    #[inline]
12310    fn value_type(&self) -> glib::Type {
12311        Self::static_type()
12312    }
12313}
12314
12315impl From<SpinButtonUpdatePolicy> for glib::Value {
12316    #[inline]
12317    fn from(v: SpinButtonUpdatePolicy) -> Self {
12318        skip_assert_initialized!();
12319        ToValue::to_value(&v)
12320    }
12321}
12322
12323/// The values of the GtkSpinType enumeration are used to specify the
12324/// change to make in gtk_spin_button_spin().
12325#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12326#[non_exhaustive]
12327#[doc(alias = "GtkSpinType")]
12328pub enum SpinType {
12329    /// Increment by the adjustments step increment.
12330    #[doc(alias = "GTK_SPIN_STEP_FORWARD")]
12331    StepForward,
12332    /// Decrement by the adjustments step increment.
12333    #[doc(alias = "GTK_SPIN_STEP_BACKWARD")]
12334    StepBackward,
12335    /// Increment by the adjustments page increment.
12336    #[doc(alias = "GTK_SPIN_PAGE_FORWARD")]
12337    PageForward,
12338    /// Decrement by the adjustments page increment.
12339    #[doc(alias = "GTK_SPIN_PAGE_BACKWARD")]
12340    PageBackward,
12341    /// Go to the adjustments lower bound.
12342    #[doc(alias = "GTK_SPIN_HOME")]
12343    Home,
12344    /// Go to the adjustments upper bound.
12345    #[doc(alias = "GTK_SPIN_END")]
12346    End,
12347    /// Change by a specified amount.
12348    #[doc(alias = "GTK_SPIN_USER_DEFINED")]
12349    UserDefined,
12350    #[doc(hidden)]
12351    __Unknown(i32),
12352}
12353
12354#[doc(hidden)]
12355impl IntoGlib for SpinType {
12356    type GlibType = ffi::GtkSpinType;
12357
12358    #[inline]
12359    fn into_glib(self) -> ffi::GtkSpinType {
12360        match self {
12361            Self::StepForward => ffi::GTK_SPIN_STEP_FORWARD,
12362            Self::StepBackward => ffi::GTK_SPIN_STEP_BACKWARD,
12363            Self::PageForward => ffi::GTK_SPIN_PAGE_FORWARD,
12364            Self::PageBackward => ffi::GTK_SPIN_PAGE_BACKWARD,
12365            Self::Home => ffi::GTK_SPIN_HOME,
12366            Self::End => ffi::GTK_SPIN_END,
12367            Self::UserDefined => ffi::GTK_SPIN_USER_DEFINED,
12368            Self::__Unknown(value) => value,
12369        }
12370    }
12371}
12372
12373#[doc(hidden)]
12374impl FromGlib<ffi::GtkSpinType> for SpinType {
12375    #[inline]
12376    unsafe fn from_glib(value: ffi::GtkSpinType) -> Self {
12377        skip_assert_initialized!();
12378
12379        match value {
12380            ffi::GTK_SPIN_STEP_FORWARD => Self::StepForward,
12381            ffi::GTK_SPIN_STEP_BACKWARD => Self::StepBackward,
12382            ffi::GTK_SPIN_PAGE_FORWARD => Self::PageForward,
12383            ffi::GTK_SPIN_PAGE_BACKWARD => Self::PageBackward,
12384            ffi::GTK_SPIN_HOME => Self::Home,
12385            ffi::GTK_SPIN_END => Self::End,
12386            ffi::GTK_SPIN_USER_DEFINED => Self::UserDefined,
12387            value => Self::__Unknown(value),
12388        }
12389    }
12390}
12391
12392impl StaticType for SpinType {
12393    #[inline]
12394    #[doc(alias = "gtk_spin_type_get_type")]
12395    fn static_type() -> glib::Type {
12396        unsafe { from_glib(ffi::gtk_spin_type_get_type()) }
12397    }
12398}
12399
12400impl glib::HasParamSpec for SpinType {
12401    type ParamSpec = glib::ParamSpecEnum;
12402    type SetValue = Self;
12403    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12404
12405    fn param_spec_builder() -> Self::BuilderFn {
12406        Self::ParamSpec::builder_with_default
12407    }
12408}
12409
12410impl glib::value::ValueType for SpinType {
12411    type Type = Self;
12412}
12413
12414unsafe impl<'a> glib::value::FromValue<'a> for SpinType {
12415    type Checker = glib::value::GenericValueTypeChecker<Self>;
12416
12417    #[inline]
12418    unsafe fn from_value(value: &'a glib::Value) -> Self {
12419        skip_assert_initialized!();
12420        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12421    }
12422}
12423
12424impl ToValue for SpinType {
12425    #[inline]
12426    fn to_value(&self) -> glib::Value {
12427        let mut value = glib::Value::for_value_type::<Self>();
12428        unsafe {
12429            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12430        }
12431        value
12432    }
12433
12434    #[inline]
12435    fn value_type(&self) -> glib::Type {
12436        Self::static_type()
12437    }
12438}
12439
12440impl From<SpinType> for glib::Value {
12441    #[inline]
12442    fn from(v: SpinType) -> Self {
12443        skip_assert_initialized!();
12444        ToValue::to_value(&v)
12445    }
12446}
12447
12448/// Possible transitions between pages in a [`Stack`][crate::Stack] widget.
12449///
12450/// New values may be added to this enumeration over time.
12451#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12452#[non_exhaustive]
12453#[doc(alias = "GtkStackTransitionType")]
12454pub enum StackTransitionType {
12455    /// No transition
12456    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_NONE")]
12457    None,
12458    /// A cross-fade
12459    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_CROSSFADE")]
12460    Crossfade,
12461    /// Slide from left to right
12462    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT")]
12463    SlideRight,
12464    /// Slide from right to left
12465    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT")]
12466    SlideLeft,
12467    /// Slide from bottom up
12468    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_UP")]
12469    SlideUp,
12470    /// Slide from top down
12471    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN")]
12472    SlideDown,
12473    /// Slide from left or right according to the children order
12474    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT")]
12475    SlideLeftRight,
12476    /// Slide from top down or bottom up according to the order
12477    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN")]
12478    SlideUpDown,
12479    /// Cover the old page by sliding up
12480    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_UP")]
12481    OverUp,
12482    /// Cover the old page by sliding down
12483    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_DOWN")]
12484    OverDown,
12485    /// Cover the old page by sliding to the left
12486    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_LEFT")]
12487    OverLeft,
12488    /// Cover the old page by sliding to the right
12489    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_RIGHT")]
12490    OverRight,
12491    /// Uncover the new page by sliding up
12492    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_UP")]
12493    UnderUp,
12494    /// Uncover the new page by sliding down
12495    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_DOWN")]
12496    UnderDown,
12497    /// Uncover the new page by sliding to the left
12498    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_LEFT")]
12499    UnderLeft,
12500    /// Uncover the new page by sliding to the right
12501    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT")]
12502    UnderRight,
12503    /// Cover the old page sliding up or uncover the new page sliding down, according to order
12504    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN")]
12505    OverUpDown,
12506    /// Cover the old page sliding down or uncover the new page sliding up, according to order
12507    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP")]
12508    OverDownUp,
12509    /// Cover the old page sliding left or uncover the new page sliding right, according to order
12510    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT")]
12511    OverLeftRight,
12512    /// Cover the old page sliding right or uncover the new page sliding left, according to order
12513    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT")]
12514    OverRightLeft,
12515    /// Pretend the pages are sides of a cube and rotate that cube to the left
12516    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT")]
12517    RotateLeft,
12518    /// Pretend the pages are sides of a cube and rotate that cube to the right
12519    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT")]
12520    RotateRight,
12521    /// Pretend the pages are sides of a cube and rotate that cube to the left or right according to the children order
12522    #[doc(alias = "GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT")]
12523    RotateLeftRight,
12524    #[doc(hidden)]
12525    __Unknown(i32),
12526}
12527
12528#[doc(hidden)]
12529impl IntoGlib for StackTransitionType {
12530    type GlibType = ffi::GtkStackTransitionType;
12531
12532    fn into_glib(self) -> ffi::GtkStackTransitionType {
12533        match self {
12534            Self::None => ffi::GTK_STACK_TRANSITION_TYPE_NONE,
12535            Self::Crossfade => ffi::GTK_STACK_TRANSITION_TYPE_CROSSFADE,
12536            Self::SlideRight => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT,
12537            Self::SlideLeft => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT,
12538            Self::SlideUp => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP,
12539            Self::SlideDown => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN,
12540            Self::SlideLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT,
12541            Self::SlideUpDown => ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN,
12542            Self::OverUp => ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP,
12543            Self::OverDown => ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN,
12544            Self::OverLeft => ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT,
12545            Self::OverRight => ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT,
12546            Self::UnderUp => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_UP,
12547            Self::UnderDown => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_DOWN,
12548            Self::UnderLeft => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_LEFT,
12549            Self::UnderRight => ffi::GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT,
12550            Self::OverUpDown => ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN,
12551            Self::OverDownUp => ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP,
12552            Self::OverLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT,
12553            Self::OverRightLeft => ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT,
12554            Self::RotateLeft => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT,
12555            Self::RotateRight => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT,
12556            Self::RotateLeftRight => ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT,
12557            Self::__Unknown(value) => value,
12558        }
12559    }
12560}
12561
12562#[doc(hidden)]
12563impl FromGlib<ffi::GtkStackTransitionType> for StackTransitionType {
12564    unsafe fn from_glib(value: ffi::GtkStackTransitionType) -> Self {
12565        skip_assert_initialized!();
12566
12567        match value {
12568            ffi::GTK_STACK_TRANSITION_TYPE_NONE => Self::None,
12569            ffi::GTK_STACK_TRANSITION_TYPE_CROSSFADE => Self::Crossfade,
12570            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT => Self::SlideRight,
12571            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT => Self::SlideLeft,
12572            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP => Self::SlideUp,
12573            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN => Self::SlideDown,
12574            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT => Self::SlideLeftRight,
12575            ffi::GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN => Self::SlideUpDown,
12576            ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP => Self::OverUp,
12577            ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN => Self::OverDown,
12578            ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT => Self::OverLeft,
12579            ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT => Self::OverRight,
12580            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_UP => Self::UnderUp,
12581            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_DOWN => Self::UnderDown,
12582            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_LEFT => Self::UnderLeft,
12583            ffi::GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT => Self::UnderRight,
12584            ffi::GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN => Self::OverUpDown,
12585            ffi::GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP => Self::OverDownUp,
12586            ffi::GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT => Self::OverLeftRight,
12587            ffi::GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT => Self::OverRightLeft,
12588            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT => Self::RotateLeft,
12589            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT => Self::RotateRight,
12590            ffi::GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT => Self::RotateLeftRight,
12591            value => Self::__Unknown(value),
12592        }
12593    }
12594}
12595
12596impl StaticType for StackTransitionType {
12597    #[inline]
12598    #[doc(alias = "gtk_stack_transition_type_get_type")]
12599    fn static_type() -> glib::Type {
12600        unsafe { from_glib(ffi::gtk_stack_transition_type_get_type()) }
12601    }
12602}
12603
12604impl glib::HasParamSpec for StackTransitionType {
12605    type ParamSpec = glib::ParamSpecEnum;
12606    type SetValue = Self;
12607    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12608
12609    fn param_spec_builder() -> Self::BuilderFn {
12610        Self::ParamSpec::builder_with_default
12611    }
12612}
12613
12614impl glib::value::ValueType for StackTransitionType {
12615    type Type = Self;
12616}
12617
12618unsafe impl<'a> glib::value::FromValue<'a> for StackTransitionType {
12619    type Checker = glib::value::GenericValueTypeChecker<Self>;
12620
12621    #[inline]
12622    unsafe fn from_value(value: &'a glib::Value) -> Self {
12623        skip_assert_initialized!();
12624        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12625    }
12626}
12627
12628impl ToValue for StackTransitionType {
12629    #[inline]
12630    fn to_value(&self) -> glib::Value {
12631        let mut value = glib::Value::for_value_type::<Self>();
12632        unsafe {
12633            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12634        }
12635        value
12636    }
12637
12638    #[inline]
12639    fn value_type(&self) -> glib::Type {
12640        Self::static_type()
12641    }
12642}
12643
12644impl From<StackTransitionType> for glib::Value {
12645    #[inline]
12646    fn from(v: StackTransitionType) -> Self {
12647        skip_assert_initialized!();
12648        ToValue::to_value(&v)
12649    }
12650}
12651
12652/// Specifies how search strings are matched inside text.
12653#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12654#[non_exhaustive]
12655#[doc(alias = "GtkStringFilterMatchMode")]
12656pub enum StringFilterMatchMode {
12657    /// The search string and
12658    ///   text must match exactly
12659    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_EXACT")]
12660    Exact,
12661    /// The search string
12662    ///   must be contained as a substring inside the text
12663    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_SUBSTRING")]
12664    Substring,
12665    /// The text must begin
12666    ///   with the search string
12667    #[doc(alias = "GTK_STRING_FILTER_MATCH_MODE_PREFIX")]
12668    Prefix,
12669    #[doc(hidden)]
12670    __Unknown(i32),
12671}
12672
12673#[doc(hidden)]
12674impl IntoGlib for StringFilterMatchMode {
12675    type GlibType = ffi::GtkStringFilterMatchMode;
12676
12677    #[inline]
12678    fn into_glib(self) -> ffi::GtkStringFilterMatchMode {
12679        match self {
12680            Self::Exact => ffi::GTK_STRING_FILTER_MATCH_MODE_EXACT,
12681            Self::Substring => ffi::GTK_STRING_FILTER_MATCH_MODE_SUBSTRING,
12682            Self::Prefix => ffi::GTK_STRING_FILTER_MATCH_MODE_PREFIX,
12683            Self::__Unknown(value) => value,
12684        }
12685    }
12686}
12687
12688#[doc(hidden)]
12689impl FromGlib<ffi::GtkStringFilterMatchMode> for StringFilterMatchMode {
12690    #[inline]
12691    unsafe fn from_glib(value: ffi::GtkStringFilterMatchMode) -> Self {
12692        skip_assert_initialized!();
12693
12694        match value {
12695            ffi::GTK_STRING_FILTER_MATCH_MODE_EXACT => Self::Exact,
12696            ffi::GTK_STRING_FILTER_MATCH_MODE_SUBSTRING => Self::Substring,
12697            ffi::GTK_STRING_FILTER_MATCH_MODE_PREFIX => Self::Prefix,
12698            value => Self::__Unknown(value),
12699        }
12700    }
12701}
12702
12703impl StaticType for StringFilterMatchMode {
12704    #[inline]
12705    #[doc(alias = "gtk_string_filter_match_mode_get_type")]
12706    fn static_type() -> glib::Type {
12707        unsafe { from_glib(ffi::gtk_string_filter_match_mode_get_type()) }
12708    }
12709}
12710
12711impl glib::HasParamSpec for StringFilterMatchMode {
12712    type ParamSpec = glib::ParamSpecEnum;
12713    type SetValue = Self;
12714    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12715
12716    fn param_spec_builder() -> Self::BuilderFn {
12717        Self::ParamSpec::builder_with_default
12718    }
12719}
12720
12721impl glib::value::ValueType for StringFilterMatchMode {
12722    type Type = Self;
12723}
12724
12725unsafe impl<'a> glib::value::FromValue<'a> for StringFilterMatchMode {
12726    type Checker = glib::value::GenericValueTypeChecker<Self>;
12727
12728    #[inline]
12729    unsafe fn from_value(value: &'a glib::Value) -> Self {
12730        skip_assert_initialized!();
12731        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12732    }
12733}
12734
12735impl ToValue for StringFilterMatchMode {
12736    #[inline]
12737    fn to_value(&self) -> glib::Value {
12738        let mut value = glib::Value::for_value_type::<Self>();
12739        unsafe {
12740            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12741        }
12742        value
12743    }
12744
12745    #[inline]
12746    fn value_type(&self) -> glib::Type {
12747        Self::static_type()
12748    }
12749}
12750
12751impl From<StringFilterMatchMode> for glib::Value {
12752    #[inline]
12753    fn from(v: StringFilterMatchMode) -> Self {
12754        skip_assert_initialized!();
12755        ToValue::to_value(&v)
12756    }
12757}
12758
12759/// Error codes in the `GTK_SVG_ERROR` domain for errors
12760/// that happen during parsing or rendering of SVG.
12761#[cfg(feature = "v4_22")]
12762#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12763#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12764#[non_exhaustive]
12765#[doc(alias = "GtkSvgError")]
12766pub enum SvgError {
12767    /// The XML syntax is broken
12768    ///   in some way
12769    #[doc(alias = "GTK_SVG_ERROR_INVALID_SYNTAX")]
12770    InvalidSyntax,
12771    /// An XML element is invalid
12772    ///   (either because it is not part of SVG, or because it is
12773    ///   in the wrong place, or because it not implemented in GTK)
12774    #[doc(alias = "GTK_SVG_ERROR_INVALID_ELEMENT")]
12775    InvalidElement,
12776    /// An attribute is invalid
12777    ///   (either because it is not part of SVG, or because it is
12778    ///   not implemented in GTK, or its value is problematic)
12779    #[doc(alias = "GTK_SVG_ERROR_INVALID_ATTRIBUTE")]
12780    InvalidAttribute,
12781    /// A required attribute is missing
12782    #[doc(alias = "GTK_SVG_ERROR_MISSING_ATTRIBUTE")]
12783    MissingAttribute,
12784    /// A reference does not point to
12785    ///   a suitable element
12786    #[doc(alias = "GTK_SVG_ERROR_INVALID_REFERENCE")]
12787    InvalidReference,
12788    /// An animation could not be updated
12789    #[doc(alias = "GTK_SVG_ERROR_FAILED_UPDATE")]
12790    FailedUpdate,
12791    /// Rendering is not according to
12792    ///   expecations
12793    #[doc(alias = "GTK_SVG_ERROR_FAILED_RENDERING")]
12794    FailedRendering,
12795    /// An XML element is ignored,
12796    ///   but it should not affect rendering (this error code is used
12797    ///   for metadata and exension elements)
12798    #[doc(alias = "GTK_SVG_ERROR_IGNORED_ELEMENT")]
12799    IgnoredElement,
12800    /// An implementation limit has
12801    ///   been hit, such as the number of loaded shapes.
12802    #[doc(alias = "GTK_SVG_ERROR_LIMITS_EXCEEDED")]
12803    LimitsExceeded,
12804    /// The SVG uses features that
12805    ///   are not supported by [`Svg`][crate::Svg]. It may be advisable to use
12806    ///   a different SVG renderer.
12807    #[doc(alias = "GTK_SVG_ERROR_NOT_IMPLEMENTED")]
12808    NotImplemented,
12809    #[doc(alias = "GTK_SVG_ERROR_FEATURE_DISABLED")]
12810    FeatureDisabled,
12811    #[doc(hidden)]
12812    __Unknown(i32),
12813}
12814
12815#[cfg(feature = "v4_22")]
12816#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12817impl SvgError {
12818    #[doc(alias = "gtk_svg_error_get_attribute")]
12819    #[doc(alias = "get_attribute")]
12820    pub fn attribute(error: &glib::Error) -> Option<glib::GString> {
12821        assert_initialized_main_thread!();
12822        unsafe { from_glib_none(ffi::gtk_svg_error_get_attribute(error.to_glib_none().0)) }
12823    }
12824
12825    #[doc(alias = "gtk_svg_error_get_element")]
12826    #[doc(alias = "get_element")]
12827    pub fn element(error: &glib::Error) -> Option<glib::GString> {
12828        assert_initialized_main_thread!();
12829        unsafe { from_glib_none(ffi::gtk_svg_error_get_element(error.to_glib_none().0)) }
12830    }
12831
12832    //#[doc(alias = "gtk_svg_error_get_end")]
12833    //#[doc(alias = "get_end")]
12834    //pub fn end(error: &glib::Error) -> /*Ignored*/Option<SvgLocation> {
12835    //    unsafe { TODO: call ffi:gtk_svg_error_get_end() }
12836    //}
12837
12838    #[cfg(feature = "v4_24")]
12839    #[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
12840    #[doc(alias = "gtk_svg_error_get_input")]
12841    #[doc(alias = "get_input")]
12842    pub fn input(error: &glib::Error) -> Option<glib::GString> {
12843        assert_initialized_main_thread!();
12844        unsafe { from_glib_none(ffi::gtk_svg_error_get_input(error.to_glib_none().0)) }
12845    }
12846
12847    //#[doc(alias = "gtk_svg_error_get_start")]
12848    //#[doc(alias = "get_start")]
12849    //pub fn start(error: &glib::Error) -> /*Ignored*/Option<SvgLocation> {
12850    //    unsafe { TODO: call ffi:gtk_svg_error_get_start() }
12851    //}
12852
12853    #[doc(alias = "gtk_svg_error_quark")]
12854    pub fn quark() -> glib::Quark {
12855        assert_initialized_main_thread!();
12856        unsafe { from_glib(ffi::gtk_svg_error_quark()) }
12857    }
12858}
12859
12860#[cfg(feature = "v4_22")]
12861#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12862#[doc(hidden)]
12863impl IntoGlib for SvgError {
12864    type GlibType = ffi::GtkSvgError;
12865
12866    #[inline]
12867    fn into_glib(self) -> ffi::GtkSvgError {
12868        match self {
12869            Self::InvalidSyntax => ffi::GTK_SVG_ERROR_INVALID_SYNTAX,
12870            Self::InvalidElement => ffi::GTK_SVG_ERROR_INVALID_ELEMENT,
12871            Self::InvalidAttribute => ffi::GTK_SVG_ERROR_INVALID_ATTRIBUTE,
12872            Self::MissingAttribute => ffi::GTK_SVG_ERROR_MISSING_ATTRIBUTE,
12873            Self::InvalidReference => ffi::GTK_SVG_ERROR_INVALID_REFERENCE,
12874            Self::FailedUpdate => ffi::GTK_SVG_ERROR_FAILED_UPDATE,
12875            Self::FailedRendering => ffi::GTK_SVG_ERROR_FAILED_RENDERING,
12876            Self::IgnoredElement => ffi::GTK_SVG_ERROR_IGNORED_ELEMENT,
12877            Self::LimitsExceeded => ffi::GTK_SVG_ERROR_LIMITS_EXCEEDED,
12878            Self::NotImplemented => ffi::GTK_SVG_ERROR_NOT_IMPLEMENTED,
12879            Self::FeatureDisabled => ffi::GTK_SVG_ERROR_FEATURE_DISABLED,
12880            Self::__Unknown(value) => value,
12881        }
12882    }
12883}
12884
12885#[cfg(feature = "v4_22")]
12886#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12887#[doc(hidden)]
12888impl FromGlib<ffi::GtkSvgError> for SvgError {
12889    #[inline]
12890    unsafe fn from_glib(value: ffi::GtkSvgError) -> Self {
12891        skip_assert_initialized!();
12892
12893        match value {
12894            ffi::GTK_SVG_ERROR_INVALID_SYNTAX => Self::InvalidSyntax,
12895            ffi::GTK_SVG_ERROR_INVALID_ELEMENT => Self::InvalidElement,
12896            ffi::GTK_SVG_ERROR_INVALID_ATTRIBUTE => Self::InvalidAttribute,
12897            ffi::GTK_SVG_ERROR_MISSING_ATTRIBUTE => Self::MissingAttribute,
12898            ffi::GTK_SVG_ERROR_INVALID_REFERENCE => Self::InvalidReference,
12899            ffi::GTK_SVG_ERROR_FAILED_UPDATE => Self::FailedUpdate,
12900            ffi::GTK_SVG_ERROR_FAILED_RENDERING => Self::FailedRendering,
12901            ffi::GTK_SVG_ERROR_IGNORED_ELEMENT => Self::IgnoredElement,
12902            ffi::GTK_SVG_ERROR_LIMITS_EXCEEDED => Self::LimitsExceeded,
12903            ffi::GTK_SVG_ERROR_NOT_IMPLEMENTED => Self::NotImplemented,
12904            ffi::GTK_SVG_ERROR_FEATURE_DISABLED => Self::FeatureDisabled,
12905            value => Self::__Unknown(value),
12906        }
12907    }
12908}
12909
12910#[cfg(feature = "v4_22")]
12911#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12912impl glib::error::ErrorDomain for SvgError {
12913    #[inline]
12914    fn domain() -> glib::Quark {
12915        skip_assert_initialized!();
12916
12917        static QUARK: ::std::sync::OnceLock<glib::ffi::GQuark> = ::std::sync::OnceLock::new();
12918        let quark = *QUARK.get_or_init(|| unsafe {
12919            glib::ffi::g_quark_from_static_string(c"GtkSvgError".as_ptr())
12920        });
12921        unsafe { from_glib(quark) }
12922    }
12923
12924    #[inline]
12925    fn code(self) -> i32 {
12926        self.into_glib()
12927    }
12928
12929    #[inline]
12930    #[allow(clippy::match_single_binding)]
12931    fn from(code: i32) -> Option<Self> {
12932        skip_assert_initialized!();
12933        match unsafe { from_glib(code) } {
12934            value => Some(value),
12935        }
12936    }
12937}
12938
12939#[cfg(feature = "v4_22")]
12940#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12941impl StaticType for SvgError {
12942    #[inline]
12943    #[doc(alias = "gtk_svg_error_get_type")]
12944    fn static_type() -> glib::Type {
12945        unsafe { from_glib(ffi::gtk_svg_error_get_type()) }
12946    }
12947}
12948
12949#[cfg(feature = "v4_22")]
12950#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12951impl glib::HasParamSpec for SvgError {
12952    type ParamSpec = glib::ParamSpecEnum;
12953    type SetValue = Self;
12954    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
12955
12956    fn param_spec_builder() -> Self::BuilderFn {
12957        Self::ParamSpec::builder_with_default
12958    }
12959}
12960
12961#[cfg(feature = "v4_22")]
12962#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12963impl glib::value::ValueType for SvgError {
12964    type Type = Self;
12965}
12966
12967#[cfg(feature = "v4_22")]
12968#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12969unsafe impl<'a> glib::value::FromValue<'a> for SvgError {
12970    type Checker = glib::value::GenericValueTypeChecker<Self>;
12971
12972    #[inline]
12973    unsafe fn from_value(value: &'a glib::Value) -> Self {
12974        skip_assert_initialized!();
12975        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
12976    }
12977}
12978
12979#[cfg(feature = "v4_22")]
12980#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12981impl ToValue for SvgError {
12982    #[inline]
12983    fn to_value(&self) -> glib::Value {
12984        let mut value = glib::Value::for_value_type::<Self>();
12985        unsafe {
12986            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
12987        }
12988        value
12989    }
12990
12991    #[inline]
12992    fn value_type(&self) -> glib::Type {
12993        Self::static_type()
12994    }
12995}
12996
12997#[cfg(feature = "v4_22")]
12998#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
12999impl From<SvgError> for glib::Value {
13000    #[inline]
13001    fn from(v: SvgError) -> Self {
13002        skip_assert_initialized!();
13003        ToValue::to_value(&v)
13004    }
13005}
13006
13007/// The indexes of colors passed to symbolic color rendering, such as
13008/// `vfunc::Gtk::SymbolicPaintable::snapshot_symbolic`.
13009///
13010/// More values may be added over time.
13011#[cfg(feature = "v4_6")]
13012#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13013#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13014#[non_exhaustive]
13015#[doc(alias = "GtkSymbolicColor")]
13016pub enum SymbolicColor {
13017    /// The default foreground color
13018    #[doc(alias = "GTK_SYMBOLIC_COLOR_FOREGROUND")]
13019    Foreground,
13020    /// Indication color for errors
13021    #[doc(alias = "GTK_SYMBOLIC_COLOR_ERROR")]
13022    Error,
13023    /// Indication color for warnings
13024    #[doc(alias = "GTK_SYMBOLIC_COLOR_WARNING")]
13025    Warning,
13026    /// Indication color for success
13027    #[doc(alias = "GTK_SYMBOLIC_COLOR_SUCCESS")]
13028    Success,
13029    /// The system accent color.
13030    #[cfg(feature = "v4_22")]
13031    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
13032    #[doc(alias = "GTK_SYMBOLIC_COLOR_ACCENT")]
13033    Accent,
13034    #[doc(hidden)]
13035    __Unknown(i32),
13036}
13037
13038#[cfg(feature = "v4_6")]
13039#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13040#[doc(hidden)]
13041impl IntoGlib for SymbolicColor {
13042    type GlibType = ffi::GtkSymbolicColor;
13043
13044    #[inline]
13045    fn into_glib(self) -> ffi::GtkSymbolicColor {
13046        match self {
13047            Self::Foreground => ffi::GTK_SYMBOLIC_COLOR_FOREGROUND,
13048            Self::Error => ffi::GTK_SYMBOLIC_COLOR_ERROR,
13049            Self::Warning => ffi::GTK_SYMBOLIC_COLOR_WARNING,
13050            Self::Success => ffi::GTK_SYMBOLIC_COLOR_SUCCESS,
13051            #[cfg(feature = "v4_22")]
13052            Self::Accent => ffi::GTK_SYMBOLIC_COLOR_ACCENT,
13053            Self::__Unknown(value) => value,
13054        }
13055    }
13056}
13057
13058#[cfg(feature = "v4_6")]
13059#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13060#[doc(hidden)]
13061impl FromGlib<ffi::GtkSymbolicColor> for SymbolicColor {
13062    #[inline]
13063    unsafe fn from_glib(value: ffi::GtkSymbolicColor) -> Self {
13064        skip_assert_initialized!();
13065
13066        match value {
13067            ffi::GTK_SYMBOLIC_COLOR_FOREGROUND => Self::Foreground,
13068            ffi::GTK_SYMBOLIC_COLOR_ERROR => Self::Error,
13069            ffi::GTK_SYMBOLIC_COLOR_WARNING => Self::Warning,
13070            ffi::GTK_SYMBOLIC_COLOR_SUCCESS => Self::Success,
13071            #[cfg(feature = "v4_22")]
13072            ffi::GTK_SYMBOLIC_COLOR_ACCENT => Self::Accent,
13073            value => Self::__Unknown(value),
13074        }
13075    }
13076}
13077
13078#[cfg(feature = "v4_6")]
13079#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13080impl StaticType for SymbolicColor {
13081    #[inline]
13082    #[doc(alias = "gtk_symbolic_color_get_type")]
13083    fn static_type() -> glib::Type {
13084        unsafe { from_glib(ffi::gtk_symbolic_color_get_type()) }
13085    }
13086}
13087
13088#[cfg(feature = "v4_6")]
13089#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13090impl glib::HasParamSpec for SymbolicColor {
13091    type ParamSpec = glib::ParamSpecEnum;
13092    type SetValue = Self;
13093    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13094
13095    fn param_spec_builder() -> Self::BuilderFn {
13096        Self::ParamSpec::builder_with_default
13097    }
13098}
13099
13100#[cfg(feature = "v4_6")]
13101#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13102impl glib::value::ValueType for SymbolicColor {
13103    type Type = Self;
13104}
13105
13106#[cfg(feature = "v4_6")]
13107#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13108unsafe impl<'a> glib::value::FromValue<'a> for SymbolicColor {
13109    type Checker = glib::value::GenericValueTypeChecker<Self>;
13110
13111    #[inline]
13112    unsafe fn from_value(value: &'a glib::Value) -> Self {
13113        skip_assert_initialized!();
13114        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13115    }
13116}
13117
13118#[cfg(feature = "v4_6")]
13119#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13120impl ToValue for SymbolicColor {
13121    #[inline]
13122    fn to_value(&self) -> glib::Value {
13123        let mut value = glib::Value::for_value_type::<Self>();
13124        unsafe {
13125            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13126        }
13127        value
13128    }
13129
13130    #[inline]
13131    fn value_type(&self) -> glib::Type {
13132        Self::static_type()
13133    }
13134}
13135
13136#[cfg(feature = "v4_6")]
13137#[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
13138impl From<SymbolicColor> for glib::Value {
13139    #[inline]
13140    fn from(v: SymbolicColor) -> Self {
13141        skip_assert_initialized!();
13142        ToValue::to_value(&v)
13143    }
13144}
13145
13146/// Values that can be passed to the [`WidgetImpl::system_setting_changed()`][crate::subclass::prelude::WidgetImpl::system_setting_changed()]
13147/// vfunc.
13148///
13149/// The values indicate which system setting has changed.
13150/// Widgets may need to drop caches, or react otherwise.
13151///
13152/// Most of the values correspond to [`Settings`][crate::Settings] properties.
13153///
13154/// More values may be added over time.
13155#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13156#[non_exhaustive]
13157#[doc(alias = "GtkSystemSetting")]
13158pub enum SystemSetting {
13159    /// the [`gtk-xft-dpi`][struct@crate::Settings#gtk-xft-dpi] setting has changed
13160    #[doc(alias = "GTK_SYSTEM_SETTING_DPI")]
13161    Dpi,
13162    /// The [`gtk-font-name`][struct@crate::Settings#gtk-font-name] setting has changed
13163    #[doc(alias = "GTK_SYSTEM_SETTING_FONT_NAME")]
13164    FontName,
13165    /// The font configuration has changed in a way that
13166    ///   requires text to be redrawn. This can be any of the
13167    ///   [`gtk-xft-antialias`][struct@crate::Settings#gtk-xft-antialias],
13168    ///   [`gtk-xft-hinting`][struct@crate::Settings#gtk-xft-hinting],
13169    ///   [`gtk-xft-hintstyle`][struct@crate::Settings#gtk-xft-hintstyle],
13170    ///   [`gtk-xft-rgba`][struct@crate::Settings#gtk-xft-rgba] or
13171    ///   [`gtk-fontconfig-timestamp`][struct@crate::Settings#gtk-fontconfig-timestamp] settings
13172    #[doc(alias = "GTK_SYSTEM_SETTING_FONT_CONFIG")]
13173    FontConfig,
13174    /// The display has changed
13175    #[doc(alias = "GTK_SYSTEM_SETTING_DISPLAY")]
13176    Display,
13177    /// The icon theme has changed in a way that requires
13178    ///   icons to be looked up again
13179    #[doc(alias = "GTK_SYSTEM_SETTING_ICON_THEME")]
13180    IconTheme,
13181    #[doc(hidden)]
13182    __Unknown(i32),
13183}
13184
13185#[doc(hidden)]
13186impl IntoGlib for SystemSetting {
13187    type GlibType = ffi::GtkSystemSetting;
13188
13189    #[inline]
13190    fn into_glib(self) -> ffi::GtkSystemSetting {
13191        match self {
13192            Self::Dpi => ffi::GTK_SYSTEM_SETTING_DPI,
13193            Self::FontName => ffi::GTK_SYSTEM_SETTING_FONT_NAME,
13194            Self::FontConfig => ffi::GTK_SYSTEM_SETTING_FONT_CONFIG,
13195            Self::Display => ffi::GTK_SYSTEM_SETTING_DISPLAY,
13196            Self::IconTheme => ffi::GTK_SYSTEM_SETTING_ICON_THEME,
13197            Self::__Unknown(value) => value,
13198        }
13199    }
13200}
13201
13202#[doc(hidden)]
13203impl FromGlib<ffi::GtkSystemSetting> for SystemSetting {
13204    #[inline]
13205    unsafe fn from_glib(value: ffi::GtkSystemSetting) -> Self {
13206        skip_assert_initialized!();
13207
13208        match value {
13209            ffi::GTK_SYSTEM_SETTING_DPI => Self::Dpi,
13210            ffi::GTK_SYSTEM_SETTING_FONT_NAME => Self::FontName,
13211            ffi::GTK_SYSTEM_SETTING_FONT_CONFIG => Self::FontConfig,
13212            ffi::GTK_SYSTEM_SETTING_DISPLAY => Self::Display,
13213            ffi::GTK_SYSTEM_SETTING_ICON_THEME => Self::IconTheme,
13214            value => Self::__Unknown(value),
13215        }
13216    }
13217}
13218
13219impl StaticType for SystemSetting {
13220    #[inline]
13221    #[doc(alias = "gtk_system_setting_get_type")]
13222    fn static_type() -> glib::Type {
13223        unsafe { from_glib(ffi::gtk_system_setting_get_type()) }
13224    }
13225}
13226
13227impl glib::HasParamSpec for SystemSetting {
13228    type ParamSpec = glib::ParamSpecEnum;
13229    type SetValue = Self;
13230    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13231
13232    fn param_spec_builder() -> Self::BuilderFn {
13233        Self::ParamSpec::builder_with_default
13234    }
13235}
13236
13237impl glib::value::ValueType for SystemSetting {
13238    type Type = Self;
13239}
13240
13241unsafe impl<'a> glib::value::FromValue<'a> for SystemSetting {
13242    type Checker = glib::value::GenericValueTypeChecker<Self>;
13243
13244    #[inline]
13245    unsafe fn from_value(value: &'a glib::Value) -> Self {
13246        skip_assert_initialized!();
13247        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13248    }
13249}
13250
13251impl ToValue for SystemSetting {
13252    #[inline]
13253    fn to_value(&self) -> glib::Value {
13254        let mut value = glib::Value::for_value_type::<Self>();
13255        unsafe {
13256            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13257        }
13258        value
13259    }
13260
13261    #[inline]
13262    fn value_type(&self) -> glib::Type {
13263        Self::static_type()
13264    }
13265}
13266
13267impl From<SystemSetting> for glib::Value {
13268    #[inline]
13269    fn from(v: SystemSetting) -> Self {
13270        skip_assert_initialized!();
13271        ToValue::to_value(&v)
13272    }
13273}
13274
13275/// Reading directions for text.
13276#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13277#[non_exhaustive]
13278#[doc(alias = "GtkTextDirection")]
13279pub enum TextDirection {
13280    /// No direction.
13281    #[doc(alias = "GTK_TEXT_DIR_NONE")]
13282    None,
13283    /// Left to right text direction.
13284    #[doc(alias = "GTK_TEXT_DIR_LTR")]
13285    Ltr,
13286    /// Right to left text direction.
13287    #[doc(alias = "GTK_TEXT_DIR_RTL")]
13288    Rtl,
13289    #[doc(hidden)]
13290    __Unknown(i32),
13291}
13292
13293#[doc(hidden)]
13294impl IntoGlib for TextDirection {
13295    type GlibType = ffi::GtkTextDirection;
13296
13297    #[inline]
13298    fn into_glib(self) -> ffi::GtkTextDirection {
13299        match self {
13300            Self::None => ffi::GTK_TEXT_DIR_NONE,
13301            Self::Ltr => ffi::GTK_TEXT_DIR_LTR,
13302            Self::Rtl => ffi::GTK_TEXT_DIR_RTL,
13303            Self::__Unknown(value) => value,
13304        }
13305    }
13306}
13307
13308#[doc(hidden)]
13309impl FromGlib<ffi::GtkTextDirection> for TextDirection {
13310    #[inline]
13311    unsafe fn from_glib(value: ffi::GtkTextDirection) -> Self {
13312        skip_assert_initialized!();
13313
13314        match value {
13315            ffi::GTK_TEXT_DIR_NONE => Self::None,
13316            ffi::GTK_TEXT_DIR_LTR => Self::Ltr,
13317            ffi::GTK_TEXT_DIR_RTL => Self::Rtl,
13318            value => Self::__Unknown(value),
13319        }
13320    }
13321}
13322
13323impl StaticType for TextDirection {
13324    #[inline]
13325    #[doc(alias = "gtk_text_direction_get_type")]
13326    fn static_type() -> glib::Type {
13327        unsafe { from_glib(ffi::gtk_text_direction_get_type()) }
13328    }
13329}
13330
13331impl glib::HasParamSpec for TextDirection {
13332    type ParamSpec = glib::ParamSpecEnum;
13333    type SetValue = Self;
13334    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13335
13336    fn param_spec_builder() -> Self::BuilderFn {
13337        Self::ParamSpec::builder_with_default
13338    }
13339}
13340
13341impl glib::value::ValueType for TextDirection {
13342    type Type = Self;
13343}
13344
13345unsafe impl<'a> glib::value::FromValue<'a> for TextDirection {
13346    type Checker = glib::value::GenericValueTypeChecker<Self>;
13347
13348    #[inline]
13349    unsafe fn from_value(value: &'a glib::Value) -> Self {
13350        skip_assert_initialized!();
13351        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13352    }
13353}
13354
13355impl ToValue for TextDirection {
13356    #[inline]
13357    fn to_value(&self) -> glib::Value {
13358        let mut value = glib::Value::for_value_type::<Self>();
13359        unsafe {
13360            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13361        }
13362        value
13363    }
13364
13365    #[inline]
13366    fn value_type(&self) -> glib::Type {
13367        Self::static_type()
13368    }
13369}
13370
13371impl From<TextDirection> for glib::Value {
13372    #[inline]
13373    fn from(v: TextDirection) -> Self {
13374        skip_assert_initialized!();
13375        ToValue::to_value(&v)
13376    }
13377}
13378
13379/// Granularity types that extend the text selection. Use the
13380/// `GtkTextView::extend-selection` signal to customize the selection.
13381#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13382#[non_exhaustive]
13383#[doc(alias = "GtkTextExtendSelection")]
13384pub enum TextExtendSelection {
13385    /// Selects the current word. It is triggered by
13386    ///   a double-click for example.
13387    #[doc(alias = "GTK_TEXT_EXTEND_SELECTION_WORD")]
13388    Word,
13389    /// Selects the current line. It is triggered by
13390    ///   a triple-click for example.
13391    #[doc(alias = "GTK_TEXT_EXTEND_SELECTION_LINE")]
13392    Line,
13393    #[doc(hidden)]
13394    __Unknown(i32),
13395}
13396
13397#[doc(hidden)]
13398impl IntoGlib for TextExtendSelection {
13399    type GlibType = ffi::GtkTextExtendSelection;
13400
13401    #[inline]
13402    fn into_glib(self) -> ffi::GtkTextExtendSelection {
13403        match self {
13404            Self::Word => ffi::GTK_TEXT_EXTEND_SELECTION_WORD,
13405            Self::Line => ffi::GTK_TEXT_EXTEND_SELECTION_LINE,
13406            Self::__Unknown(value) => value,
13407        }
13408    }
13409}
13410
13411#[doc(hidden)]
13412impl FromGlib<ffi::GtkTextExtendSelection> for TextExtendSelection {
13413    #[inline]
13414    unsafe fn from_glib(value: ffi::GtkTextExtendSelection) -> Self {
13415        skip_assert_initialized!();
13416
13417        match value {
13418            ffi::GTK_TEXT_EXTEND_SELECTION_WORD => Self::Word,
13419            ffi::GTK_TEXT_EXTEND_SELECTION_LINE => Self::Line,
13420            value => Self::__Unknown(value),
13421        }
13422    }
13423}
13424
13425impl StaticType for TextExtendSelection {
13426    #[inline]
13427    #[doc(alias = "gtk_text_extend_selection_get_type")]
13428    fn static_type() -> glib::Type {
13429        unsafe { from_glib(ffi::gtk_text_extend_selection_get_type()) }
13430    }
13431}
13432
13433impl glib::HasParamSpec for TextExtendSelection {
13434    type ParamSpec = glib::ParamSpecEnum;
13435    type SetValue = Self;
13436    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13437
13438    fn param_spec_builder() -> Self::BuilderFn {
13439        Self::ParamSpec::builder_with_default
13440    }
13441}
13442
13443impl glib::value::ValueType for TextExtendSelection {
13444    type Type = Self;
13445}
13446
13447unsafe impl<'a> glib::value::FromValue<'a> for TextExtendSelection {
13448    type Checker = glib::value::GenericValueTypeChecker<Self>;
13449
13450    #[inline]
13451    unsafe fn from_value(value: &'a glib::Value) -> Self {
13452        skip_assert_initialized!();
13453        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13454    }
13455}
13456
13457impl ToValue for TextExtendSelection {
13458    #[inline]
13459    fn to_value(&self) -> glib::Value {
13460        let mut value = glib::Value::for_value_type::<Self>();
13461        unsafe {
13462            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13463        }
13464        value
13465    }
13466
13467    #[inline]
13468    fn value_type(&self) -> glib::Type {
13469        Self::static_type()
13470    }
13471}
13472
13473impl From<TextExtendSelection> for glib::Value {
13474    #[inline]
13475    fn from(v: TextExtendSelection) -> Self {
13476        skip_assert_initialized!();
13477        ToValue::to_value(&v)
13478    }
13479}
13480
13481/// Used to reference the layers of [`TextView`][crate::TextView] for the purpose of customized
13482/// drawing with the ::snapshot_layer vfunc.
13483#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13484#[non_exhaustive]
13485#[doc(alias = "GtkTextViewLayer")]
13486pub enum TextViewLayer {
13487    /// The layer rendered below the text (but above the background).
13488    #[doc(alias = "GTK_TEXT_VIEW_LAYER_BELOW_TEXT")]
13489    BelowText,
13490    /// The layer rendered above the text.
13491    #[doc(alias = "GTK_TEXT_VIEW_LAYER_ABOVE_TEXT")]
13492    AboveText,
13493    #[doc(hidden)]
13494    __Unknown(i32),
13495}
13496
13497#[doc(hidden)]
13498impl IntoGlib for TextViewLayer {
13499    type GlibType = ffi::GtkTextViewLayer;
13500
13501    #[inline]
13502    fn into_glib(self) -> ffi::GtkTextViewLayer {
13503        match self {
13504            Self::BelowText => ffi::GTK_TEXT_VIEW_LAYER_BELOW_TEXT,
13505            Self::AboveText => ffi::GTK_TEXT_VIEW_LAYER_ABOVE_TEXT,
13506            Self::__Unknown(value) => value,
13507        }
13508    }
13509}
13510
13511#[doc(hidden)]
13512impl FromGlib<ffi::GtkTextViewLayer> for TextViewLayer {
13513    #[inline]
13514    unsafe fn from_glib(value: ffi::GtkTextViewLayer) -> Self {
13515        skip_assert_initialized!();
13516
13517        match value {
13518            ffi::GTK_TEXT_VIEW_LAYER_BELOW_TEXT => Self::BelowText,
13519            ffi::GTK_TEXT_VIEW_LAYER_ABOVE_TEXT => Self::AboveText,
13520            value => Self::__Unknown(value),
13521        }
13522    }
13523}
13524
13525impl StaticType for TextViewLayer {
13526    #[inline]
13527    #[doc(alias = "gtk_text_view_layer_get_type")]
13528    fn static_type() -> glib::Type {
13529        unsafe { from_glib(ffi::gtk_text_view_layer_get_type()) }
13530    }
13531}
13532
13533impl glib::HasParamSpec for TextViewLayer {
13534    type ParamSpec = glib::ParamSpecEnum;
13535    type SetValue = Self;
13536    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13537
13538    fn param_spec_builder() -> Self::BuilderFn {
13539        Self::ParamSpec::builder_with_default
13540    }
13541}
13542
13543impl glib::value::ValueType for TextViewLayer {
13544    type Type = Self;
13545}
13546
13547unsafe impl<'a> glib::value::FromValue<'a> for TextViewLayer {
13548    type Checker = glib::value::GenericValueTypeChecker<Self>;
13549
13550    #[inline]
13551    unsafe fn from_value(value: &'a glib::Value) -> Self {
13552        skip_assert_initialized!();
13553        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13554    }
13555}
13556
13557impl ToValue for TextViewLayer {
13558    #[inline]
13559    fn to_value(&self) -> glib::Value {
13560        let mut value = glib::Value::for_value_type::<Self>();
13561        unsafe {
13562            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13563        }
13564        value
13565    }
13566
13567    #[inline]
13568    fn value_type(&self) -> glib::Type {
13569        Self::static_type()
13570    }
13571}
13572
13573impl From<TextViewLayer> for glib::Value {
13574    #[inline]
13575    fn from(v: TextViewLayer) -> Self {
13576        skip_assert_initialized!();
13577        ToValue::to_value(&v)
13578    }
13579}
13580
13581/// Used to reference the parts of [`TextView`][crate::TextView].
13582#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13583#[non_exhaustive]
13584#[doc(alias = "GtkTextWindowType")]
13585pub enum TextWindowType {
13586    /// Window that floats over scrolling areas.
13587    #[doc(alias = "GTK_TEXT_WINDOW_WIDGET")]
13588    Widget,
13589    /// Scrollable text window.
13590    #[doc(alias = "GTK_TEXT_WINDOW_TEXT")]
13591    Text,
13592    /// Left side border window.
13593    #[doc(alias = "GTK_TEXT_WINDOW_LEFT")]
13594    Left,
13595    /// Right side border window.
13596    #[doc(alias = "GTK_TEXT_WINDOW_RIGHT")]
13597    Right,
13598    /// Top border window.
13599    #[doc(alias = "GTK_TEXT_WINDOW_TOP")]
13600    Top,
13601    /// Bottom border window.
13602    #[doc(alias = "GTK_TEXT_WINDOW_BOTTOM")]
13603    Bottom,
13604    #[doc(hidden)]
13605    __Unknown(i32),
13606}
13607
13608#[doc(hidden)]
13609impl IntoGlib for TextWindowType {
13610    type GlibType = ffi::GtkTextWindowType;
13611
13612    #[inline]
13613    fn into_glib(self) -> ffi::GtkTextWindowType {
13614        match self {
13615            Self::Widget => ffi::GTK_TEXT_WINDOW_WIDGET,
13616            Self::Text => ffi::GTK_TEXT_WINDOW_TEXT,
13617            Self::Left => ffi::GTK_TEXT_WINDOW_LEFT,
13618            Self::Right => ffi::GTK_TEXT_WINDOW_RIGHT,
13619            Self::Top => ffi::GTK_TEXT_WINDOW_TOP,
13620            Self::Bottom => ffi::GTK_TEXT_WINDOW_BOTTOM,
13621            Self::__Unknown(value) => value,
13622        }
13623    }
13624}
13625
13626#[doc(hidden)]
13627impl FromGlib<ffi::GtkTextWindowType> for TextWindowType {
13628    #[inline]
13629    unsafe fn from_glib(value: ffi::GtkTextWindowType) -> Self {
13630        skip_assert_initialized!();
13631
13632        match value {
13633            ffi::GTK_TEXT_WINDOW_WIDGET => Self::Widget,
13634            ffi::GTK_TEXT_WINDOW_TEXT => Self::Text,
13635            ffi::GTK_TEXT_WINDOW_LEFT => Self::Left,
13636            ffi::GTK_TEXT_WINDOW_RIGHT => Self::Right,
13637            ffi::GTK_TEXT_WINDOW_TOP => Self::Top,
13638            ffi::GTK_TEXT_WINDOW_BOTTOM => Self::Bottom,
13639            value => Self::__Unknown(value),
13640        }
13641    }
13642}
13643
13644impl StaticType for TextWindowType {
13645    #[inline]
13646    #[doc(alias = "gtk_text_window_type_get_type")]
13647    fn static_type() -> glib::Type {
13648        unsafe { from_glib(ffi::gtk_text_window_type_get_type()) }
13649    }
13650}
13651
13652impl glib::HasParamSpec for TextWindowType {
13653    type ParamSpec = glib::ParamSpecEnum;
13654    type SetValue = Self;
13655    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13656
13657    fn param_spec_builder() -> Self::BuilderFn {
13658        Self::ParamSpec::builder_with_default
13659    }
13660}
13661
13662impl glib::value::ValueType for TextWindowType {
13663    type Type = Self;
13664}
13665
13666unsafe impl<'a> glib::value::FromValue<'a> for TextWindowType {
13667    type Checker = glib::value::GenericValueTypeChecker<Self>;
13668
13669    #[inline]
13670    unsafe fn from_value(value: &'a glib::Value) -> Self {
13671        skip_assert_initialized!();
13672        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13673    }
13674}
13675
13676impl ToValue for TextWindowType {
13677    #[inline]
13678    fn to_value(&self) -> glib::Value {
13679        let mut value = glib::Value::for_value_type::<Self>();
13680        unsafe {
13681            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13682        }
13683        value
13684    }
13685
13686    #[inline]
13687    fn value_type(&self) -> glib::Type {
13688        Self::static_type()
13689    }
13690}
13691
13692impl From<TextWindowType> for glib::Value {
13693    #[inline]
13694    fn from(v: TextWindowType) -> Self {
13695        skip_assert_initialized!();
13696        ToValue::to_value(&v)
13697    }
13698}
13699
13700/// The sizing method the column uses to determine its width.  Please note
13701/// that [`Autosize`][Self::Autosize] are inefficient for large views, and
13702/// can make columns appear choppy.
13703///
13704/// # Deprecated since 4.20
13705///
13706/// There is no replacement.
13707#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13708#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13709#[non_exhaustive]
13710#[doc(alias = "GtkTreeViewColumnSizing")]
13711pub enum TreeViewColumnSizing {
13712    /// Columns only get bigger in reaction to changes in the model
13713    #[doc(alias = "GTK_TREE_VIEW_COLUMN_GROW_ONLY")]
13714    GrowOnly,
13715    /// Columns resize to be the optimal size every time the model changes.
13716    #[doc(alias = "GTK_TREE_VIEW_COLUMN_AUTOSIZE")]
13717    Autosize,
13718    /// Columns are a fixed numbers of pixels wide.
13719    #[doc(alias = "GTK_TREE_VIEW_COLUMN_FIXED")]
13720    Fixed,
13721    #[doc(hidden)]
13722    __Unknown(i32),
13723}
13724
13725#[allow(deprecated)]
13726#[doc(hidden)]
13727impl IntoGlib for TreeViewColumnSizing {
13728    type GlibType = ffi::GtkTreeViewColumnSizing;
13729
13730    #[inline]
13731    fn into_glib(self) -> ffi::GtkTreeViewColumnSizing {
13732        match self {
13733            Self::GrowOnly => ffi::GTK_TREE_VIEW_COLUMN_GROW_ONLY,
13734            Self::Autosize => ffi::GTK_TREE_VIEW_COLUMN_AUTOSIZE,
13735            Self::Fixed => ffi::GTK_TREE_VIEW_COLUMN_FIXED,
13736            Self::__Unknown(value) => value,
13737        }
13738    }
13739}
13740
13741#[allow(deprecated)]
13742#[doc(hidden)]
13743impl FromGlib<ffi::GtkTreeViewColumnSizing> for TreeViewColumnSizing {
13744    #[inline]
13745    unsafe fn from_glib(value: ffi::GtkTreeViewColumnSizing) -> Self {
13746        skip_assert_initialized!();
13747
13748        match value {
13749            ffi::GTK_TREE_VIEW_COLUMN_GROW_ONLY => Self::GrowOnly,
13750            ffi::GTK_TREE_VIEW_COLUMN_AUTOSIZE => Self::Autosize,
13751            ffi::GTK_TREE_VIEW_COLUMN_FIXED => Self::Fixed,
13752            value => Self::__Unknown(value),
13753        }
13754    }
13755}
13756
13757#[allow(deprecated)]
13758impl StaticType for TreeViewColumnSizing {
13759    #[inline]
13760    #[doc(alias = "gtk_tree_view_column_sizing_get_type")]
13761    fn static_type() -> glib::Type {
13762        unsafe { from_glib(ffi::gtk_tree_view_column_sizing_get_type()) }
13763    }
13764}
13765
13766#[allow(deprecated)]
13767impl glib::HasParamSpec for TreeViewColumnSizing {
13768    type ParamSpec = glib::ParamSpecEnum;
13769    type SetValue = Self;
13770    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13771
13772    fn param_spec_builder() -> Self::BuilderFn {
13773        Self::ParamSpec::builder_with_default
13774    }
13775}
13776
13777#[allow(deprecated)]
13778impl glib::value::ValueType for TreeViewColumnSizing {
13779    type Type = Self;
13780}
13781
13782#[allow(deprecated)]
13783unsafe impl<'a> glib::value::FromValue<'a> for TreeViewColumnSizing {
13784    type Checker = glib::value::GenericValueTypeChecker<Self>;
13785
13786    #[inline]
13787    unsafe fn from_value(value: &'a glib::Value) -> Self {
13788        skip_assert_initialized!();
13789        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13790    }
13791}
13792
13793#[allow(deprecated)]
13794impl ToValue for TreeViewColumnSizing {
13795    #[inline]
13796    fn to_value(&self) -> glib::Value {
13797        let mut value = glib::Value::for_value_type::<Self>();
13798        unsafe {
13799            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13800        }
13801        value
13802    }
13803
13804    #[inline]
13805    fn value_type(&self) -> glib::Type {
13806        Self::static_type()
13807    }
13808}
13809
13810#[allow(deprecated)]
13811impl From<TreeViewColumnSizing> for glib::Value {
13812    #[inline]
13813    fn from(v: TreeViewColumnSizing) -> Self {
13814        skip_assert_initialized!();
13815        ToValue::to_value(&v)
13816    }
13817}
13818
13819/// An enum for determining where a dropped row goes.
13820///
13821/// # Deprecated since 4.20
13822///
13823/// There is no replacement.
13824#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13825#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13826#[non_exhaustive]
13827#[doc(alias = "GtkTreeViewDropPosition")]
13828pub enum TreeViewDropPosition {
13829    /// dropped row is inserted before
13830    #[doc(alias = "GTK_TREE_VIEW_DROP_BEFORE")]
13831    Before,
13832    /// dropped row is inserted after
13833    #[doc(alias = "GTK_TREE_VIEW_DROP_AFTER")]
13834    After,
13835    /// dropped row becomes a child or is inserted before
13836    #[doc(alias = "GTK_TREE_VIEW_DROP_INTO_OR_BEFORE")]
13837    IntoOrBefore,
13838    /// dropped row becomes a child or is inserted after
13839    #[doc(alias = "GTK_TREE_VIEW_DROP_INTO_OR_AFTER")]
13840    IntoOrAfter,
13841    #[doc(hidden)]
13842    __Unknown(i32),
13843}
13844
13845#[allow(deprecated)]
13846#[doc(hidden)]
13847impl IntoGlib for TreeViewDropPosition {
13848    type GlibType = ffi::GtkTreeViewDropPosition;
13849
13850    #[inline]
13851    fn into_glib(self) -> ffi::GtkTreeViewDropPosition {
13852        match self {
13853            Self::Before => ffi::GTK_TREE_VIEW_DROP_BEFORE,
13854            Self::After => ffi::GTK_TREE_VIEW_DROP_AFTER,
13855            Self::IntoOrBefore => ffi::GTK_TREE_VIEW_DROP_INTO_OR_BEFORE,
13856            Self::IntoOrAfter => ffi::GTK_TREE_VIEW_DROP_INTO_OR_AFTER,
13857            Self::__Unknown(value) => value,
13858        }
13859    }
13860}
13861
13862#[allow(deprecated)]
13863#[doc(hidden)]
13864impl FromGlib<ffi::GtkTreeViewDropPosition> for TreeViewDropPosition {
13865    #[inline]
13866    unsafe fn from_glib(value: ffi::GtkTreeViewDropPosition) -> Self {
13867        skip_assert_initialized!();
13868
13869        match value {
13870            ffi::GTK_TREE_VIEW_DROP_BEFORE => Self::Before,
13871            ffi::GTK_TREE_VIEW_DROP_AFTER => Self::After,
13872            ffi::GTK_TREE_VIEW_DROP_INTO_OR_BEFORE => Self::IntoOrBefore,
13873            ffi::GTK_TREE_VIEW_DROP_INTO_OR_AFTER => Self::IntoOrAfter,
13874            value => Self::__Unknown(value),
13875        }
13876    }
13877}
13878
13879#[allow(deprecated)]
13880impl StaticType for TreeViewDropPosition {
13881    #[inline]
13882    #[doc(alias = "gtk_tree_view_drop_position_get_type")]
13883    fn static_type() -> glib::Type {
13884        unsafe { from_glib(ffi::gtk_tree_view_drop_position_get_type()) }
13885    }
13886}
13887
13888#[allow(deprecated)]
13889impl glib::HasParamSpec for TreeViewDropPosition {
13890    type ParamSpec = glib::ParamSpecEnum;
13891    type SetValue = Self;
13892    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
13893
13894    fn param_spec_builder() -> Self::BuilderFn {
13895        Self::ParamSpec::builder_with_default
13896    }
13897}
13898
13899#[allow(deprecated)]
13900impl glib::value::ValueType for TreeViewDropPosition {
13901    type Type = Self;
13902}
13903
13904#[allow(deprecated)]
13905unsafe impl<'a> glib::value::FromValue<'a> for TreeViewDropPosition {
13906    type Checker = glib::value::GenericValueTypeChecker<Self>;
13907
13908    #[inline]
13909    unsafe fn from_value(value: &'a glib::Value) -> Self {
13910        skip_assert_initialized!();
13911        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
13912    }
13913}
13914
13915#[allow(deprecated)]
13916impl ToValue for TreeViewDropPosition {
13917    #[inline]
13918    fn to_value(&self) -> glib::Value {
13919        let mut value = glib::Value::for_value_type::<Self>();
13920        unsafe {
13921            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
13922        }
13923        value
13924    }
13925
13926    #[inline]
13927    fn value_type(&self) -> glib::Type {
13928        Self::static_type()
13929    }
13930}
13931
13932#[allow(deprecated)]
13933impl From<TreeViewDropPosition> for glib::Value {
13934    #[inline]
13935    fn from(v: TreeViewDropPosition) -> Self {
13936        skip_assert_initialized!();
13937        ToValue::to_value(&v)
13938    }
13939}
13940
13941/// Used to indicate which grid lines to draw in a tree view.
13942///
13943/// # Deprecated since 4.20
13944///
13945/// There is no replacement
13946#[cfg_attr(feature = "v4_20", deprecated = "Since 4.20")]
13947#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
13948#[non_exhaustive]
13949#[doc(alias = "GtkTreeViewGridLines")]
13950pub enum TreeViewGridLines {
13951    /// No grid lines.
13952    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_NONE")]
13953    None,
13954    /// Horizontal grid lines.
13955    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_HORIZONTAL")]
13956    Horizontal,
13957    /// Vertical grid lines.
13958    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_VERTICAL")]
13959    Vertical,
13960    /// Horizontal and vertical grid lines.
13961    #[doc(alias = "GTK_TREE_VIEW_GRID_LINES_BOTH")]
13962    Both,
13963    #[doc(hidden)]
13964    __Unknown(i32),
13965}
13966
13967#[allow(deprecated)]
13968#[doc(hidden)]
13969impl IntoGlib for TreeViewGridLines {
13970    type GlibType = ffi::GtkTreeViewGridLines;
13971
13972    #[inline]
13973    fn into_glib(self) -> ffi::GtkTreeViewGridLines {
13974        match self {
13975            Self::None => ffi::GTK_TREE_VIEW_GRID_LINES_NONE,
13976            Self::Horizontal => ffi::GTK_TREE_VIEW_GRID_LINES_HORIZONTAL,
13977            Self::Vertical => ffi::GTK_TREE_VIEW_GRID_LINES_VERTICAL,
13978            Self::Both => ffi::GTK_TREE_VIEW_GRID_LINES_BOTH,
13979            Self::__Unknown(value) => value,
13980        }
13981    }
13982}
13983
13984#[allow(deprecated)]
13985#[doc(hidden)]
13986impl FromGlib<ffi::GtkTreeViewGridLines> for TreeViewGridLines {
13987    #[inline]
13988    unsafe fn from_glib(value: ffi::GtkTreeViewGridLines) -> Self {
13989        skip_assert_initialized!();
13990
13991        match value {
13992            ffi::GTK_TREE_VIEW_GRID_LINES_NONE => Self::None,
13993            ffi::GTK_TREE_VIEW_GRID_LINES_HORIZONTAL => Self::Horizontal,
13994            ffi::GTK_TREE_VIEW_GRID_LINES_VERTICAL => Self::Vertical,
13995            ffi::GTK_TREE_VIEW_GRID_LINES_BOTH => Self::Both,
13996            value => Self::__Unknown(value),
13997        }
13998    }
13999}
14000
14001#[allow(deprecated)]
14002impl StaticType for TreeViewGridLines {
14003    #[inline]
14004    #[doc(alias = "gtk_tree_view_grid_lines_get_type")]
14005    fn static_type() -> glib::Type {
14006        unsafe { from_glib(ffi::gtk_tree_view_grid_lines_get_type()) }
14007    }
14008}
14009
14010#[allow(deprecated)]
14011impl glib::HasParamSpec for TreeViewGridLines {
14012    type ParamSpec = glib::ParamSpecEnum;
14013    type SetValue = Self;
14014    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14015
14016    fn param_spec_builder() -> Self::BuilderFn {
14017        Self::ParamSpec::builder_with_default
14018    }
14019}
14020
14021#[allow(deprecated)]
14022impl glib::value::ValueType for TreeViewGridLines {
14023    type Type = Self;
14024}
14025
14026#[allow(deprecated)]
14027unsafe impl<'a> glib::value::FromValue<'a> for TreeViewGridLines {
14028    type Checker = glib::value::GenericValueTypeChecker<Self>;
14029
14030    #[inline]
14031    unsafe fn from_value(value: &'a glib::Value) -> Self {
14032        skip_assert_initialized!();
14033        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14034    }
14035}
14036
14037#[allow(deprecated)]
14038impl ToValue for TreeViewGridLines {
14039    #[inline]
14040    fn to_value(&self) -> glib::Value {
14041        let mut value = glib::Value::for_value_type::<Self>();
14042        unsafe {
14043            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14044        }
14045        value
14046    }
14047
14048    #[inline]
14049    fn value_type(&self) -> glib::Type {
14050        Self::static_type()
14051    }
14052}
14053
14054#[allow(deprecated)]
14055impl From<TreeViewGridLines> for glib::Value {
14056    #[inline]
14057    fn from(v: TreeViewGridLines) -> Self {
14058        skip_assert_initialized!();
14059        ToValue::to_value(&v)
14060    }
14061}
14062
14063/// See also gtk_print_settings_set_paper_width().
14064#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
14065#[non_exhaustive]
14066#[doc(alias = "GtkUnit")]
14067pub enum Unit {
14068    /// No units.
14069    #[doc(alias = "GTK_UNIT_NONE")]
14070    None,
14071    /// Dimensions in points.
14072    #[doc(alias = "GTK_UNIT_POINTS")]
14073    Points,
14074    /// Dimensions in inches.
14075    #[doc(alias = "GTK_UNIT_INCH")]
14076    Inch,
14077    /// Dimensions in millimeters
14078    #[doc(alias = "GTK_UNIT_MM")]
14079    Mm,
14080    #[doc(hidden)]
14081    __Unknown(i32),
14082}
14083
14084#[doc(hidden)]
14085impl IntoGlib for Unit {
14086    type GlibType = ffi::GtkUnit;
14087
14088    #[inline]
14089    fn into_glib(self) -> ffi::GtkUnit {
14090        match self {
14091            Self::None => ffi::GTK_UNIT_NONE,
14092            Self::Points => ffi::GTK_UNIT_POINTS,
14093            Self::Inch => ffi::GTK_UNIT_INCH,
14094            Self::Mm => ffi::GTK_UNIT_MM,
14095            Self::__Unknown(value) => value,
14096        }
14097    }
14098}
14099
14100#[doc(hidden)]
14101impl FromGlib<ffi::GtkUnit> for Unit {
14102    #[inline]
14103    unsafe fn from_glib(value: ffi::GtkUnit) -> Self {
14104        skip_assert_initialized!();
14105
14106        match value {
14107            ffi::GTK_UNIT_NONE => Self::None,
14108            ffi::GTK_UNIT_POINTS => Self::Points,
14109            ffi::GTK_UNIT_INCH => Self::Inch,
14110            ffi::GTK_UNIT_MM => Self::Mm,
14111            value => Self::__Unknown(value),
14112        }
14113    }
14114}
14115
14116impl StaticType for Unit {
14117    #[inline]
14118    #[doc(alias = "gtk_unit_get_type")]
14119    fn static_type() -> glib::Type {
14120        unsafe { from_glib(ffi::gtk_unit_get_type()) }
14121    }
14122}
14123
14124impl glib::HasParamSpec for Unit {
14125    type ParamSpec = glib::ParamSpecEnum;
14126    type SetValue = Self;
14127    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14128
14129    fn param_spec_builder() -> Self::BuilderFn {
14130        Self::ParamSpec::builder_with_default
14131    }
14132}
14133
14134impl glib::value::ValueType for Unit {
14135    type Type = Self;
14136}
14137
14138unsafe impl<'a> glib::value::FromValue<'a> for Unit {
14139    type Checker = glib::value::GenericValueTypeChecker<Self>;
14140
14141    #[inline]
14142    unsafe fn from_value(value: &'a glib::Value) -> Self {
14143        skip_assert_initialized!();
14144        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14145    }
14146}
14147
14148impl ToValue for Unit {
14149    #[inline]
14150    fn to_value(&self) -> glib::Value {
14151        let mut value = glib::Value::for_value_type::<Self>();
14152        unsafe {
14153            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14154        }
14155        value
14156    }
14157
14158    #[inline]
14159    fn value_type(&self) -> glib::Type {
14160        Self::static_type()
14161    }
14162}
14163
14164impl From<Unit> for glib::Value {
14165    #[inline]
14166    fn from(v: Unit) -> Self {
14167        skip_assert_initialized!();
14168        ToValue::to_value(&v)
14169    }
14170}
14171
14172/// Determines which point or edge of a window is meant to remain fixed
14173/// when a window changes size.
14174#[cfg(feature = "v4_20")]
14175#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14176#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
14177#[non_exhaustive]
14178#[doc(alias = "GtkWindowGravity")]
14179pub enum WindowGravity {
14180    /// The top left corner
14181    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_LEFT")]
14182    TopLeft,
14183    /// The top edge
14184    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP")]
14185    Top,
14186    /// The top right corner
14187    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_RIGHT")]
14188    TopRight,
14189    /// The left edge
14190    #[doc(alias = "GTK_WINDOW_GRAVITY_LEFT")]
14191    Left,
14192    /// The center pointer
14193    #[doc(alias = "GTK_WINDOW_GRAVITY_CENTER")]
14194    Center,
14195    /// The right edge
14196    #[doc(alias = "GTK_WINDOW_GRAVITY_RIGHT")]
14197    Right,
14198    /// The bottom left corner
14199    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_LEFT")]
14200    BottomLeft,
14201    /// the bottom edge
14202    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM")]
14203    Bottom,
14204    /// The bottom right corner
14205    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_RIGHT")]
14206    BottomRight,
14207    /// The top left or top right corner,
14208    ///   depending on the text direction
14209    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_START")]
14210    TopStart,
14211    /// The top right or top left corner,
14212    ///   depending on the text direction
14213    #[doc(alias = "GTK_WINDOW_GRAVITY_TOP_END")]
14214    TopEnd,
14215    /// The left or right edge,
14216    ///   depending on the text direction
14217    #[doc(alias = "GTK_WINDOW_GRAVITY_START")]
14218    Start,
14219    /// The right or left edge,
14220    ///   depending on the text direction
14221    #[doc(alias = "GTK_WINDOW_GRAVITY_END")]
14222    End,
14223    /// The bottom left or top right corner,
14224    ///   depending on the text direction
14225    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_START")]
14226    BottomStart,
14227    /// The bottom right or top left corner,
14228    ///   depending on the text direction
14229    #[doc(alias = "GTK_WINDOW_GRAVITY_BOTTOM_END")]
14230    BottomEnd,
14231    #[doc(hidden)]
14232    __Unknown(i32),
14233}
14234
14235#[cfg(feature = "v4_20")]
14236#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14237#[doc(hidden)]
14238impl IntoGlib for WindowGravity {
14239    type GlibType = ffi::GtkWindowGravity;
14240
14241    fn into_glib(self) -> ffi::GtkWindowGravity {
14242        match self {
14243            Self::TopLeft => ffi::GTK_WINDOW_GRAVITY_TOP_LEFT,
14244            Self::Top => ffi::GTK_WINDOW_GRAVITY_TOP,
14245            Self::TopRight => ffi::GTK_WINDOW_GRAVITY_TOP_RIGHT,
14246            Self::Left => ffi::GTK_WINDOW_GRAVITY_LEFT,
14247            Self::Center => ffi::GTK_WINDOW_GRAVITY_CENTER,
14248            Self::Right => ffi::GTK_WINDOW_GRAVITY_RIGHT,
14249            Self::BottomLeft => ffi::GTK_WINDOW_GRAVITY_BOTTOM_LEFT,
14250            Self::Bottom => ffi::GTK_WINDOW_GRAVITY_BOTTOM,
14251            Self::BottomRight => ffi::GTK_WINDOW_GRAVITY_BOTTOM_RIGHT,
14252            Self::TopStart => ffi::GTK_WINDOW_GRAVITY_TOP_START,
14253            Self::TopEnd => ffi::GTK_WINDOW_GRAVITY_TOP_END,
14254            Self::Start => ffi::GTK_WINDOW_GRAVITY_START,
14255            Self::End => ffi::GTK_WINDOW_GRAVITY_END,
14256            Self::BottomStart => ffi::GTK_WINDOW_GRAVITY_BOTTOM_START,
14257            Self::BottomEnd => ffi::GTK_WINDOW_GRAVITY_BOTTOM_END,
14258            Self::__Unknown(value) => value,
14259        }
14260    }
14261}
14262
14263#[cfg(feature = "v4_20")]
14264#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14265#[doc(hidden)]
14266impl FromGlib<ffi::GtkWindowGravity> for WindowGravity {
14267    unsafe fn from_glib(value: ffi::GtkWindowGravity) -> Self {
14268        skip_assert_initialized!();
14269
14270        match value {
14271            ffi::GTK_WINDOW_GRAVITY_TOP_LEFT => Self::TopLeft,
14272            ffi::GTK_WINDOW_GRAVITY_TOP => Self::Top,
14273            ffi::GTK_WINDOW_GRAVITY_TOP_RIGHT => Self::TopRight,
14274            ffi::GTK_WINDOW_GRAVITY_LEFT => Self::Left,
14275            ffi::GTK_WINDOW_GRAVITY_CENTER => Self::Center,
14276            ffi::GTK_WINDOW_GRAVITY_RIGHT => Self::Right,
14277            ffi::GTK_WINDOW_GRAVITY_BOTTOM_LEFT => Self::BottomLeft,
14278            ffi::GTK_WINDOW_GRAVITY_BOTTOM => Self::Bottom,
14279            ffi::GTK_WINDOW_GRAVITY_BOTTOM_RIGHT => Self::BottomRight,
14280            ffi::GTK_WINDOW_GRAVITY_TOP_START => Self::TopStart,
14281            ffi::GTK_WINDOW_GRAVITY_TOP_END => Self::TopEnd,
14282            ffi::GTK_WINDOW_GRAVITY_START => Self::Start,
14283            ffi::GTK_WINDOW_GRAVITY_END => Self::End,
14284            ffi::GTK_WINDOW_GRAVITY_BOTTOM_START => Self::BottomStart,
14285            ffi::GTK_WINDOW_GRAVITY_BOTTOM_END => Self::BottomEnd,
14286            value => Self::__Unknown(value),
14287        }
14288    }
14289}
14290
14291#[cfg(feature = "v4_20")]
14292#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14293impl StaticType for WindowGravity {
14294    #[inline]
14295    #[doc(alias = "gtk_window_gravity_get_type")]
14296    fn static_type() -> glib::Type {
14297        unsafe { from_glib(ffi::gtk_window_gravity_get_type()) }
14298    }
14299}
14300
14301#[cfg(feature = "v4_20")]
14302#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14303impl glib::HasParamSpec for WindowGravity {
14304    type ParamSpec = glib::ParamSpecEnum;
14305    type SetValue = Self;
14306    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14307
14308    fn param_spec_builder() -> Self::BuilderFn {
14309        Self::ParamSpec::builder_with_default
14310    }
14311}
14312
14313#[cfg(feature = "v4_20")]
14314#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14315impl glib::value::ValueType for WindowGravity {
14316    type Type = Self;
14317}
14318
14319#[cfg(feature = "v4_20")]
14320#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14321unsafe impl<'a> glib::value::FromValue<'a> for WindowGravity {
14322    type Checker = glib::value::GenericValueTypeChecker<Self>;
14323
14324    #[inline]
14325    unsafe fn from_value(value: &'a glib::Value) -> Self {
14326        skip_assert_initialized!();
14327        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14328    }
14329}
14330
14331#[cfg(feature = "v4_20")]
14332#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14333impl ToValue for WindowGravity {
14334    #[inline]
14335    fn to_value(&self) -> glib::Value {
14336        let mut value = glib::Value::for_value_type::<Self>();
14337        unsafe {
14338            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14339        }
14340        value
14341    }
14342
14343    #[inline]
14344    fn value_type(&self) -> glib::Type {
14345        Self::static_type()
14346    }
14347}
14348
14349#[cfg(feature = "v4_20")]
14350#[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
14351impl From<WindowGravity> for glib::Value {
14352    #[inline]
14353    fn from(v: WindowGravity) -> Self {
14354        skip_assert_initialized!();
14355        ToValue::to_value(&v)
14356    }
14357}
14358
14359/// Describes a type of line wrapping.
14360#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
14361#[non_exhaustive]
14362#[doc(alias = "GtkWrapMode")]
14363pub enum WrapMode {
14364    /// do not wrap lines; just make the text area wider
14365    #[doc(alias = "GTK_WRAP_NONE")]
14366    None,
14367    /// wrap text, breaking lines anywhere the cursor can
14368    ///   appear (between characters, usually - if you want to be technical,
14369    ///   between graphemes, see pango_get_log_attrs())
14370    #[doc(alias = "GTK_WRAP_CHAR")]
14371    Char,
14372    /// wrap text, breaking lines in between words
14373    #[doc(alias = "GTK_WRAP_WORD")]
14374    Word,
14375    /// wrap text, breaking lines in between words, or if
14376    ///   that is not enough, also between graphemes
14377    #[doc(alias = "GTK_WRAP_WORD_CHAR")]
14378    WordChar,
14379    #[doc(hidden)]
14380    __Unknown(i32),
14381}
14382
14383#[doc(hidden)]
14384impl IntoGlib for WrapMode {
14385    type GlibType = ffi::GtkWrapMode;
14386
14387    #[inline]
14388    fn into_glib(self) -> ffi::GtkWrapMode {
14389        match self {
14390            Self::None => ffi::GTK_WRAP_NONE,
14391            Self::Char => ffi::GTK_WRAP_CHAR,
14392            Self::Word => ffi::GTK_WRAP_WORD,
14393            Self::WordChar => ffi::GTK_WRAP_WORD_CHAR,
14394            Self::__Unknown(value) => value,
14395        }
14396    }
14397}
14398
14399#[doc(hidden)]
14400impl FromGlib<ffi::GtkWrapMode> for WrapMode {
14401    #[inline]
14402    unsafe fn from_glib(value: ffi::GtkWrapMode) -> Self {
14403        skip_assert_initialized!();
14404
14405        match value {
14406            ffi::GTK_WRAP_NONE => Self::None,
14407            ffi::GTK_WRAP_CHAR => Self::Char,
14408            ffi::GTK_WRAP_WORD => Self::Word,
14409            ffi::GTK_WRAP_WORD_CHAR => Self::WordChar,
14410            value => Self::__Unknown(value),
14411        }
14412    }
14413}
14414
14415impl StaticType for WrapMode {
14416    #[inline]
14417    #[doc(alias = "gtk_wrap_mode_get_type")]
14418    fn static_type() -> glib::Type {
14419        unsafe { from_glib(ffi::gtk_wrap_mode_get_type()) }
14420    }
14421}
14422
14423impl glib::HasParamSpec for WrapMode {
14424    type ParamSpec = glib::ParamSpecEnum;
14425    type SetValue = Self;
14426    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
14427
14428    fn param_spec_builder() -> Self::BuilderFn {
14429        Self::ParamSpec::builder_with_default
14430    }
14431}
14432
14433impl glib::value::ValueType for WrapMode {
14434    type Type = Self;
14435}
14436
14437unsafe impl<'a> glib::value::FromValue<'a> for WrapMode {
14438    type Checker = glib::value::GenericValueTypeChecker<Self>;
14439
14440    #[inline]
14441    unsafe fn from_value(value: &'a glib::Value) -> Self {
14442        skip_assert_initialized!();
14443        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
14444    }
14445}
14446
14447impl ToValue for WrapMode {
14448    #[inline]
14449    fn to_value(&self) -> glib::Value {
14450        let mut value = glib::Value::for_value_type::<Self>();
14451        unsafe {
14452            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
14453        }
14454        value
14455    }
14456
14457    #[inline]
14458    fn value_type(&self) -> glib::Type {
14459        Self::static_type()
14460    }
14461}
14462
14463impl From<WrapMode> for glib::Value {
14464    #[inline]
14465    fn from(v: WrapMode) -> Self {
14466        skip_assert_initialized!();
14467        ToValue::to_value(&v)
14468    }
14469}