// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.Orientation.html).
pub(all) enum Orientation {
  Horizontal = 0
  Vertical = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.Align.html).
pub(all) enum Align {
  Fill = 0
  Start = 1
  End = 2
  Center = 3
  BaselineFill = 4
  BaselineCenter = 5
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.BaselinePosition.html).
pub(all) enum BaselinePosition {
  Top = 0
  Center = 1
  Bottom = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.DirectionType.html).
pub(all) enum DirectionType {
  TabForward = 0
  TabBackward = 1
  Up = 2
  Down = 3
  Left = 4
  Right = 5
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.Justification.html).
pub(all) enum Justification {
  Left = 0
  Right = 1
  Center = 2
  Fill = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.NaturalWrapMode.html).
pub(all) enum NaturalWrapMode {
  Inherit = 0
  None = 1
  Word = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.Overflow.html).
pub(all) enum Overflow {
  Visible = 0
  Hidden = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.PickFlags.html).
pub(all) enum PickFlag {
  Default = 1
  Insensitive = 2
  NonTargetable = 4
}

///|
fn PickFlag::to_int(self : PickFlag) -> Int = "%identity"

///|
pub struct PickFlags {
  priv value : Int
}

///|
pub fn PickFlags::PickFlags(flags : Array[PickFlag]) -> PickFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  PickFlags::{ value: v }
}

///|
pub fn PickFlags::from_int(value : Int) -> PickFlags {
  PickFlags::{ value, }
}

///|
pub fn PickFlags::to_int(self : PickFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.SizeRequestMode.html).
pub(all) enum SizeRequestMode {
  HeightForWidth = 0
  WidthForHeight = 1
  ConstantSize = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.StateFlags.html).
pub(all) enum StateFlag {
  Normal = 1
  Active = 2
  Prelight = 4
  Selected = 8
  Insensitive = 16
  Inconsistent = 32
  Focused = 64
  Backdrop = 128
  DirLtr = 256
  DirRtl = 512
  Link = 1024
  Visited = 2048
  Checked = 4096
  DropActive = 8192
  FocusVisible = 16384
  FocusWithin = 32768
}

///|
fn StateFlag::to_int(self : StateFlag) -> Int = "%identity"

///|
pub struct StateFlags {
  priv value : Int
}

///|
pub fn StateFlags::StateFlags(flags : Array[StateFlag]) -> StateFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  StateFlags::{ value: v }
}

///|
pub fn StateFlags::from_int(value : Int) -> StateFlags {
  StateFlags::{ value, }
}

///|
pub fn StateFlags::to_int(self : StateFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.TextDirection.html).
pub(all) enum TextDirection {
  None = 0
  Ltr = 1
  Rtl = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.WindowGravity.html).
pub(all) enum WindowGravity {
  TopLeft = 0
  Top = 1
  TopRight = 2
  Left = 3
  Center = 4
  Right = 5
  BottomLeft = 6
  Bottom = 7
  BottomRight = 8
  TopStart = 9
  TopEnd = 10
  Start = 11
  End = 12
  BottomStart = 13
  BottomEnd = 14
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.ApplicationInhibitFlags.html).
pub(all) enum ApplicationInhibitFlag {
  Logout = 1
  Switch = 2
  Suspend = 4
  Idle = 8
}

///|
fn ApplicationInhibitFlag::to_int(self : ApplicationInhibitFlag) -> Int = "%identity"

///|
pub struct ApplicationInhibitFlags {
  priv value : Int
}

///|
pub fn ApplicationInhibitFlags::ApplicationInhibitFlags(
  flags : Array[ApplicationInhibitFlag],
) -> ApplicationInhibitFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  ApplicationInhibitFlags::{ value: v }
}

///|
pub fn ApplicationInhibitFlags::from_int(
  value : Int,
) -> ApplicationInhibitFlags {
  ApplicationInhibitFlags::{ value, }
}

///|
pub fn ApplicationInhibitFlags::to_int(self : ApplicationInhibitFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.PolicyType.html).
pub(all) enum PolicyType {
  Always = 0
  Automatic = 1
  Never = 2
  External = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.CornerType.html).
pub(all) enum CornerType {
  TopLeft = 0
  BottomLeft = 1
  TopRight = 2
  BottomRight = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.PositionType.html).
pub(all) enum PositionType {
  Left = 0
  Right = 1
  Top = 2
  Bottom = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.RevealerTransitionType.html).
pub(all) enum RevealerTransitionType {
  None = 0
  Crossfade = 1
  SlideRight = 2
  SlideLeft = 3
  SlideUp = 4
  SlideDown = 5
  SwingRight = 6
  SwingLeft = 7
  SwingUp = 8
  SwingDown = 9
  FadeSlideRight = 10
  FadeSlideLeft = 11
  FadeSlideUp = 12
  FadeSlideDown = 13
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.StackTransitionType.html).
pub(all) enum StackTransitionType {
  None = 0
  Crossfade = 1
  SlideRight = 2
  SlideLeft = 3
  SlideUp = 4
  SlideDown = 5
  SlideLeftRight = 6
  SlideUpDown = 7
  OverUp = 8
  OverDown = 9
  OverLeft = 10
  OverRight = 11
  UnderUp = 12
  UnderDown = 13
  UnderLeft = 14
  UnderRight = 15
  OverUpDown = 16
  OverDownUp = 17
  OverLeftRight = 18
  OverRightLeft = 19
  RotateLeft = 20
  RotateRight = 21
  RotateLeftRight = 22
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.SelectionMode.html).
pub(all) enum SelectionMode {
  None = 0
  Single = 1
  Browse = 2
  Multiple = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.WrapMode.html).
pub(all) enum WrapMode {
  None = 0
  Char = 1
  Word = 2
  WordChar = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.InputPurpose.html).
pub(all) enum InputPurpose {
  FreeForm = 0
  Alpha = 1
  Digits = 2
  Number = 3
  Phone = 4
  Url = 5
  Email = 6
  Name = 7
  Password = 8
  Pin = 9
  Terminal = 10
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.EntryIconPosition.html).
pub(all) enum EntryIconPosition {
  Primary = 0
  Secondary = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.SpinType.html).
pub(all) enum SpinType {
  StepForward = 0
  StepBackward = 1
  PageForward = 2
  PageBackward = 3
  Home = 4
  End = 5
  UserDefined = 6
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.SpinButtonUpdatePolicy.html).
pub(all) enum SpinButtonUpdatePolicy {
  Always = 0
  IfValid = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.SortType.html).
pub(all) enum SortType {
  Ascending = 0
  Descending = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ScrollType.html).
pub(all) enum ScrollType {
  None = 0
  Jump = 1
  StepBackward = 2
  StepForward = 3
  PageBackward = 4
  PageForward = 5
  StepUp = 6
  StepDown = 7
  PageUp = 8
  PageDown = 9
  StepLeft = 10
  StepRight = 11
  PageLeft = 12
  PageRight = 13
  Start = 14
  End = 15
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.PackType.html).
pub(all) enum PackType {
  Start = 0
  End = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.IconSize.html).
pub(all) enum IconSize {
  Inherit = 0
  Normal = 1
  Large = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ImageType.html).
pub(all) enum ImageType {
  Empty = 0
  IconName = 1
  Gicon = 2
  Paintable = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.InputHints.html).
pub(all) enum InputHint {
  None = 1
  Spellcheck = 2
  NoSpellcheck = 4
  WordCompletion = 8
  Lowercase = 16
  UppercaseChars = 32
  UppercaseWords = 64
  UppercaseSentences = 128
  InhibitOsk = 256
  VerticalWriting = 512
  Emoji = 1024
  NoEmoji = 2048
  Private = 4096
}

///|
fn InputHint::to_int(self : InputHint) -> Int = "%identity"

///|
pub struct InputHints {
  priv value : Int
}

///|
pub fn InputHints::InputHints(flags : Array[InputHint]) -> InputHints {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  InputHints::{ value: v }
}

///|
pub fn InputHints::from_int(value : Int) -> InputHints {
  InputHints::{ value, }
}

///|
pub fn InputHints::to_int(self : InputHints) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ListTabBehavior.html).
pub(all) enum ListTabBehavior {
  All = 0
  Item = 1
  Cell = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.StringFilterMatchMode.html).
pub(all) enum StringFilterMatchMode {
  Exact = 0
  Substring = 1
  Prefix = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.DeleteType.html).
pub(all) enum DeleteType {
  Chars = 0
  WordEnds = 1
  Words = 2
  DisplayLines = 3
  DisplayLineEnds = 4
  ParagraphEnds = 5
  Paragraphs = 6
  Whitespace = 7
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.TextExtendSelection.html).
pub(all) enum TextExtendSelection {
  Word = 0
  Line = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.MovementStep.html).
pub(all) enum MovementStep {
  LogicalPositions = 0
  VisualPositions = 1
  Words = 2
  DisplayLines = 3
  DisplayLineEnds = 4
  Paragraphs = 5
  ParagraphEnds = 6
  Pages = 7
  BufferEnds = 8
  HorizontalPages = 9
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ScrollStep.html).
pub(all) enum ScrollStep {
  Steps = 0
  Pages = 1
  Ends = 2
  HorizontalSteps = 3
  HorizontalPages = 4
  HorizontalEnds = 5
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.AccessiblePlatformState.html).
pub(all) enum AccessiblePlatformState {
  Focusable = 0
  Focused = 1
  Active = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.NotebookTab.html).
pub(all) enum NotebookTab {
  First = 0
  Last = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.PanDirection.html).
pub(all) enum PanDirection {
  Left = 0
  Right = 1
  Up = 2
  Down = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.PropagationPhase.html).
pub(all) enum PropagationPhase {
  None = 0
  Capture = 1
  Bubble = 2
  Target = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.PropagationLimit.html).
pub(all) enum PropagationLimit {
  None = 0
  SameNative = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.LevelBarMode.html).
pub(all) enum LevelBarMode {
  Continuous = 0
  Discrete = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.PopoverMenuFlags.html).
pub(all) enum PopoverMenuFlag {
  Sliding = 1
  Nested = 2
}

///|
fn PopoverMenuFlag::to_int(self : PopoverMenuFlag) -> Int = "%identity"

///|
pub struct PopoverMenuFlags {
  priv value : Int
}

///|
pub fn PopoverMenuFlags::PopoverMenuFlags(
  flags : Array[PopoverMenuFlag],
) -> PopoverMenuFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  PopoverMenuFlags::{ value: v }
}

///|
pub fn PopoverMenuFlags::from_int(value : Int) -> PopoverMenuFlags {
  PopoverMenuFlags::{ value, }
}

///|
pub fn PopoverMenuFlags::to_int(self : PopoverMenuFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.TextWindowType.html).
pub(all) enum TextWindowType {
  Widget = 0
  Text = 1
  Left = 2
  Right = 3
  Top = 4
  Bottom = 5
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ArrowType.html).
pub(all) enum ArrowType {
  Up = 0
  Down = 1
  Left = 2
  Right = 3
  None = 4
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ContentFit.html).
pub(all) enum ContentFit {
  Fill = 0
  Contain = 1
  Cover = 2
  ScaleDown = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.EventSequenceState.html).
pub(all) enum EventSequenceState {
  None = 0
  Claimed = 1
  Denied = 2
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.EventControllerScrollFlags.html).
pub(all) enum EventControllerScrollFlag {
  None = 1
  Vertical = 2
  Horizontal = 4
  Discrete = 8
  Kinetic = 16
  PhysicalDirection = 32
  BothAxes = 64
}

///|
fn EventControllerScrollFlag::to_int(self : EventControllerScrollFlag) -> Int = "%identity"

///|
pub struct EventControllerScrollFlags {
  priv value : Int
}

///|
pub fn EventControllerScrollFlags::EventControllerScrollFlags(
  flags : Array[EventControllerScrollFlag],
) -> EventControllerScrollFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  EventControllerScrollFlags::{ value: v }
}

///|
pub fn EventControllerScrollFlags::from_int(
  value : Int,
) -> EventControllerScrollFlags {
  EventControllerScrollFlags::{ value, }
}

///|
pub fn EventControllerScrollFlags::to_int(
  self : EventControllerScrollFlags,
) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.FontRendering.html).
pub(all) enum FontRendering {
  Automatic = 0
  Manual = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.InterfaceColorScheme.html).
pub(all) enum InterfaceColorScheme {
  Unsupported = 0
  Default = 1
  Dark = 2
  Light = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.InterfaceContrast.html).
pub(all) enum InterfaceContrast {
  Unsupported = 0
  NoPreference = 1
  More = 2
  Less = 3
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/enum.ReducedMotion.html).
pub(all) enum ReducedMotion {
  NoPreference = 0
  Reduce = 1
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.TextSearchFlags.html).
pub(all) enum TextSearchFlag {
  VisibleOnly = 1
  TextOnly = 2
  CaseInsensitive = 4
}

///|
fn TextSearchFlag::to_int(self : TextSearchFlag) -> Int = "%identity"

///|
pub struct TextSearchFlags {
  priv value : Int
}

///|
pub fn TextSearchFlags::TextSearchFlags(
  flags : Array[TextSearchFlag],
) -> TextSearchFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  TextSearchFlags::{ value: v }
}

///|
pub fn TextSearchFlags::from_int(value : Int) -> TextSearchFlags {
  TextSearchFlags::{ value, }
}

///|
pub fn TextSearchFlags::to_int(self : TextSearchFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/flags.TextBufferNotifyFlags.html).
pub(all) enum TextBufferNotifyFlag {
  BeforeInsert = 1
  AfterInsert = 2
  BeforeDelete = 4
  AfterDelete = 8
}

///|
fn TextBufferNotifyFlag::to_int(self : TextBufferNotifyFlag) -> Int = "%identity"

///|
pub struct TextBufferNotifyFlags {
  priv value : Int
}

///|
pub fn TextBufferNotifyFlags::TextBufferNotifyFlags(
  flags : Array[TextBufferNotifyFlag],
) -> TextBufferNotifyFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  TextBufferNotifyFlags::{ value: v }
}

///|
pub fn TextBufferNotifyFlags::from_int(value : Int) -> TextBufferNotifyFlags {
  TextBufferNotifyFlags::{ value, }
}

///|
pub fn TextBufferNotifyFlags::to_int(self : TextBufferNotifyFlags) -> Int {
  self.value
}