// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/class.Settings.html).
pub type Settings

///|
pub(open) trait ISettings {
  fn as_settings(Self) -> Settings
  fn reset_property(Self, String) -> Unit = _
}

///|
pub impl ISettings for Settings with fn as_settings(self) {
  self
}

///|
extern "c" fn moonbit_gtk_settings_get_default() -> @glib.Nullable[Settings] = "moonbit_gtk_settings_get_default"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/type_func.Settings.get_default.html).
pub fn Settings::get_default() -> Settings? {
  let raw_result = moonbit_gtk_settings_get_default()
  raw_result.to_option()
}

///|
#borrow(display)
extern "c" fn moonbit_gtk_settings_get_for_display(
  display : @gdk.Display,
) -> Settings = "moonbit_gtk_settings_get_for_display"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/type_func.Settings.get_for_display.html).
pub fn Settings::get_for_display(display : &@gdk.IDisplay) -> Settings {
  moonbit_gtk_settings_get_for_display(display.as_display())
}

///|
#borrow(self_, name)
extern "c" fn moonbit_gtk_settings_reset_property(
  self_ : Settings,
  name : Bytes,
) = "moonbit_gtk_settings_reset_property"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Settings.reset_property.html).
pub fn Settings::reset_property(self : Settings, name : String) -> Unit {
  moonbit_gtk_settings_reset_property(self, @encoding/utf8.encode(name))
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_alternative_button_order(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_alternative_button_order"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-alternative-button-order.html).
pub fn Settings::get_gtk_alternative_button_order(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_alternative_button_order(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_alternative_button_order(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_alternative_button_order"

///|
pub fn Settings::set_gtk_alternative_button_order(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_alternative_button_order(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_alternative_sort_arrows(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_alternative_sort_arrows"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-alternative-sort-arrows.html).
pub fn Settings::get_gtk_alternative_sort_arrows(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_alternative_sort_arrows(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_alternative_sort_arrows(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_alternative_sort_arrows"

///|
pub fn Settings::set_gtk_alternative_sort_arrows(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_alternative_sort_arrows(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-cursor-aspect-ratio.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_cursor_aspect_ratio(
  self_ : Settings,
) -> Double = "moonbit_gtk_settings_get_gtk_cursor_aspect_ratio"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_cursor_aspect_ratio(
  self_ : Settings,
  value : Double,
) = "moonbit_gtk_settings_set_gtk_cursor_aspect_ratio"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_cursor_blink(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_cursor_blink"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-cursor-blink.html).
pub fn Settings::get_gtk_cursor_blink(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_cursor_blink(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_cursor_blink(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_cursor_blink"

///|
pub fn Settings::set_gtk_cursor_blink(self : Settings, value : Bool) -> Unit {
  moonbit_gtk_settings_set_gtk_cursor_blink(self, if value { 1 } else { 0 })
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-cursor-blink-time.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_cursor_blink_time(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_cursor_blink_time"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_cursor_blink_time(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_cursor_blink_time"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-cursor-blink-timeout.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_cursor_blink_timeout(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_cursor_blink_timeout"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_cursor_blink_timeout(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_cursor_blink_timeout"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_cursor_theme_name(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_cursor_theme_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-cursor-theme-name.html).
pub fn Settings::get_gtk_cursor_theme_name(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_cursor_theme_name(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_cursor_theme_name(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_cursor_theme_name"

///|
pub fn Settings::set_gtk_cursor_theme_name(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_cursor_theme_name(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-cursor-theme-size.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_cursor_theme_size(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_cursor_theme_size"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_cursor_theme_size(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_cursor_theme_size"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_decoration_layout(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_decoration_layout"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-decoration-layout.html).
pub fn Settings::get_gtk_decoration_layout(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_decoration_layout(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_decoration_layout(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_decoration_layout"

///|
pub fn Settings::set_gtk_decoration_layout(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_decoration_layout(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_dialogs_use_header(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_dialogs_use_header"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-dialogs-use-header.html).
pub fn Settings::get_gtk_dialogs_use_header(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_dialogs_use_header(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_dialogs_use_header(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_dialogs_use_header"

///|
pub fn Settings::set_gtk_dialogs_use_header(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_dialogs_use_header(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-dnd-drag-threshold.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_dnd_drag_threshold(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_dnd_drag_threshold"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_dnd_drag_threshold(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_dnd_drag_threshold"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-double-click-distance.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_double_click_distance(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_double_click_distance"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_double_click_distance(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_double_click_distance"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-double-click-time.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_double_click_time(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_double_click_time"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_double_click_time(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_double_click_time"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_enable_accels(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_enable_accels"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-enable-accels.html).
pub fn Settings::get_gtk_enable_accels(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_enable_accels(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_enable_accels(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_enable_accels"

///|
pub fn Settings::set_gtk_enable_accels(self : Settings, value : Bool) -> Unit {
  moonbit_gtk_settings_set_gtk_enable_accels(self, if value { 1 } else { 0 })
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_enable_animations(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_enable_animations"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-enable-animations.html).
pub fn Settings::get_gtk_enable_animations(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_enable_animations(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_enable_animations(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_enable_animations"

///|
pub fn Settings::set_gtk_enable_animations(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_enable_animations(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_enable_event_sounds(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_enable_event_sounds"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-enable-event-sounds.html).
pub fn Settings::get_gtk_enable_event_sounds(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_enable_event_sounds(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_enable_event_sounds(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_enable_event_sounds"

///|
pub fn Settings::set_gtk_enable_event_sounds(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_enable_event_sounds(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_enable_input_feedback_sounds(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_enable_input_feedback_sounds"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-enable-input-feedback-sounds.html).
pub fn Settings::get_gtk_enable_input_feedback_sounds(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_enable_input_feedback_sounds(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_enable_input_feedback_sounds(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_enable_input_feedback_sounds"

///|
pub fn Settings::set_gtk_enable_input_feedback_sounds(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_enable_input_feedback_sounds(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_enable_primary_paste(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_enable_primary_paste"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-enable-primary-paste.html).
pub fn Settings::get_gtk_enable_primary_paste(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_enable_primary_paste(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_enable_primary_paste(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_enable_primary_paste"

///|
pub fn Settings::set_gtk_enable_primary_paste(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_enable_primary_paste(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-entry-password-hint-timeout.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_entry_password_hint_timeout(
  self_ : Settings,
) -> UInt = "moonbit_gtk_settings_get_gtk_entry_password_hint_timeout"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_entry_password_hint_timeout(
  self_ : Settings,
  value : UInt,
) = "moonbit_gtk_settings_set_gtk_entry_password_hint_timeout"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_entry_select_on_focus(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_entry_select_on_focus"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-entry-select-on-focus.html).
pub fn Settings::get_gtk_entry_select_on_focus(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_entry_select_on_focus(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_entry_select_on_focus(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_entry_select_on_focus"

///|
pub fn Settings::set_gtk_entry_select_on_focus(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_entry_select_on_focus(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_error_bell(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_error_bell"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-error-bell.html).
pub fn Settings::get_gtk_error_bell(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_error_bell(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_error_bell(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_error_bell"

///|
pub fn Settings::set_gtk_error_bell(self : Settings, value : Bool) -> Unit {
  moonbit_gtk_settings_set_gtk_error_bell(self, if value { 1 } else { 0 })
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_font_name(self_ : Settings) -> Bytes = "moonbit_gtk_settings_get_gtk_font_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-font-name.html).
pub fn Settings::get_gtk_font_name(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_settings_get_gtk_font_name(self))
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_font_name(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_font_name"

///|
pub fn Settings::set_gtk_font_name(self : Settings, value : String) -> Unit {
  moonbit_gtk_settings_set_gtk_font_name(self, @encoding/utf8.encode(value))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-font-rendering.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_font_rendering(
  self_ : Settings,
) -> FontRendering = "moonbit_gtk_settings_get_gtk_font_rendering"

///|
#borrow(self_)
pub extern "c" fn Settings::set_gtk_font_rendering(
  self_ : Settings,
  value : FontRendering,
) = "moonbit_gtk_settings_set_gtk_font_rendering"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-fontconfig-timestamp.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_fontconfig_timestamp(
  self_ : Settings,
) -> UInt = "moonbit_gtk_settings_get_gtk_fontconfig_timestamp"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_fontconfig_timestamp(
  self_ : Settings,
  value : UInt,
) = "moonbit_gtk_settings_set_gtk_fontconfig_timestamp"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_hint_font_metrics(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_hint_font_metrics"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-hint-font-metrics.html).
pub fn Settings::get_gtk_hint_font_metrics(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_hint_font_metrics(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_hint_font_metrics(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_hint_font_metrics"

///|
pub fn Settings::set_gtk_hint_font_metrics(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_hint_font_metrics(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_icon_theme_name(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_icon_theme_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-icon-theme-name.html).
pub fn Settings::get_gtk_icon_theme_name(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_icon_theme_name(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_icon_theme_name(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_icon_theme_name"

///|
pub fn Settings::set_gtk_icon_theme_name(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_icon_theme_name(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_im_module(self_ : Settings) -> Bytes = "moonbit_gtk_settings_get_gtk_im_module"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-im-module.html).
pub fn Settings::get_gtk_im_module(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_settings_get_gtk_im_module(self))
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_im_module(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_im_module"

///|
pub fn Settings::set_gtk_im_module(self : Settings, value : String) -> Unit {
  moonbit_gtk_settings_set_gtk_im_module(self, @encoding/utf8.encode(value))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-interface-color-scheme.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_interface_color_scheme(
  self_ : Settings,
) -> InterfaceColorScheme = "moonbit_gtk_settings_get_gtk_interface_color_scheme"

///|
#borrow(self_)
pub extern "c" fn Settings::set_gtk_interface_color_scheme(
  self_ : Settings,
  value : InterfaceColorScheme,
) = "moonbit_gtk_settings_set_gtk_interface_color_scheme"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-interface-contrast.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_interface_contrast(
  self_ : Settings,
) -> InterfaceContrast = "moonbit_gtk_settings_get_gtk_interface_contrast"

///|
#borrow(self_)
pub extern "c" fn Settings::set_gtk_interface_contrast(
  self_ : Settings,
  value : InterfaceContrast,
) = "moonbit_gtk_settings_set_gtk_interface_contrast"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-interface-reduced-motion.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_interface_reduced_motion(
  self_ : Settings,
) -> ReducedMotion = "moonbit_gtk_settings_get_gtk_interface_reduced_motion"

///|
#borrow(self_)
pub extern "c" fn Settings::set_gtk_interface_reduced_motion(
  self_ : Settings,
  value : ReducedMotion,
) = "moonbit_gtk_settings_set_gtk_interface_reduced_motion"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_keynav_use_caret(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_keynav_use_caret"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-keynav-use-caret.html).
pub fn Settings::get_gtk_keynav_use_caret(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_keynav_use_caret(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_keynav_use_caret(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_keynav_use_caret"

///|
pub fn Settings::set_gtk_keynav_use_caret(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_keynav_use_caret(self, if value { 1 } else { 0 })
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_label_select_on_focus(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_label_select_on_focus"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-label-select-on-focus.html).
pub fn Settings::get_gtk_label_select_on_focus(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_label_select_on_focus(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_label_select_on_focus(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_label_select_on_focus"

///|
pub fn Settings::set_gtk_label_select_on_focus(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_label_select_on_focus(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-long-press-time.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_long_press_time(self_ : Settings) -> UInt = "moonbit_gtk_settings_get_gtk_long_press_time"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_long_press_time(
  self_ : Settings,
  value : UInt,
) = "moonbit_gtk_settings_set_gtk_long_press_time"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_overlay_scrolling(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_overlay_scrolling"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-overlay-scrolling.html).
pub fn Settings::get_gtk_overlay_scrolling(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_overlay_scrolling(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_overlay_scrolling(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_overlay_scrolling"

///|
pub fn Settings::set_gtk_overlay_scrolling(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_overlay_scrolling(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_primary_button_warps_slider(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_primary_button_warps_slider"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-primary-button-warps-slider.html).
pub fn Settings::get_gtk_primary_button_warps_slider(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_primary_button_warps_slider(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_primary_button_warps_slider(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_primary_button_warps_slider"

///|
pub fn Settings::set_gtk_primary_button_warps_slider(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_primary_button_warps_slider(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_print_backends(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_print_backends"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-print-backends.html).
pub fn Settings::get_gtk_print_backends(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_settings_get_gtk_print_backends(self))
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_print_backends(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_print_backends"

///|
pub fn Settings::set_gtk_print_backends(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_print_backends(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_print_preview_command(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_print_preview_command"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-print-preview-command.html).
pub fn Settings::get_gtk_print_preview_command(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_print_preview_command(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_print_preview_command(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_print_preview_command"

///|
pub fn Settings::set_gtk_print_preview_command(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_print_preview_command(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_recent_files_enabled(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_recent_files_enabled"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-recent-files-enabled.html).
pub fn Settings::get_gtk_recent_files_enabled(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_recent_files_enabled(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_recent_files_enabled(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_recent_files_enabled"

///|
pub fn Settings::set_gtk_recent_files_enabled(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_recent_files_enabled(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-recent-files-max-age.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_recent_files_max_age(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_recent_files_max_age"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_recent_files_max_age(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_recent_files_max_age"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_show_status_shapes(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_show_status_shapes"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-show-status-shapes.html).
pub fn Settings::get_gtk_show_status_shapes(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_show_status_shapes(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_show_status_shapes(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_show_status_shapes"

///|
pub fn Settings::set_gtk_show_status_shapes(
  self : Settings,
  value : Bool,
) -> Unit {
  moonbit_gtk_settings_set_gtk_show_status_shapes(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_sound_theme_name(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_sound_theme_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-sound-theme-name.html).
pub fn Settings::get_gtk_sound_theme_name(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_sound_theme_name(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_sound_theme_name(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_sound_theme_name"

///|
pub fn Settings::set_gtk_sound_theme_name(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_sound_theme_name(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_split_cursor(
  self_ : Settings,
) -> Int = "moonbit_gtk_settings_get_gtk_split_cursor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-split-cursor.html).
pub fn Settings::get_gtk_split_cursor(self : Settings) -> Bool {
  moonbit_gtk_settings_get_gtk_split_cursor(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_set_gtk_split_cursor(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_split_cursor"

///|
pub fn Settings::set_gtk_split_cursor(self : Settings, value : Bool) -> Unit {
  moonbit_gtk_settings_set_gtk_split_cursor(self, if value { 1 } else { 0 })
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_theme_name(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_theme_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-theme-name.html).
pub fn Settings::get_gtk_theme_name(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_settings_get_gtk_theme_name(self))
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_theme_name(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_theme_name"

///|
pub fn Settings::set_gtk_theme_name(self : Settings, value : String) -> Unit {
  moonbit_gtk_settings_set_gtk_theme_name(self, @encoding/utf8.encode(value))
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_titlebar_double_click(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_titlebar_double_click"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-titlebar-double-click.html).
pub fn Settings::get_gtk_titlebar_double_click(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_titlebar_double_click(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_titlebar_double_click(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_titlebar_double_click"

///|
pub fn Settings::set_gtk_titlebar_double_click(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_titlebar_double_click(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_titlebar_middle_click(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_titlebar_middle_click"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-titlebar-middle-click.html).
pub fn Settings::get_gtk_titlebar_middle_click(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_titlebar_middle_click(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_titlebar_middle_click(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_titlebar_middle_click"

///|
pub fn Settings::set_gtk_titlebar_middle_click(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_titlebar_middle_click(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_titlebar_right_click(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_titlebar_right_click"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-titlebar-right-click.html).
pub fn Settings::get_gtk_titlebar_right_click(self : Settings) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_settings_get_gtk_titlebar_right_click(self),
  )
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_titlebar_right_click(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_titlebar_right_click"

///|
pub fn Settings::set_gtk_titlebar_right_click(
  self : Settings,
  value : String,
) -> Unit {
  moonbit_gtk_settings_set_gtk_titlebar_right_click(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-xft-antialias.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_xft_antialias(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_xft_antialias"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_xft_antialias(
  self_ : Settings,
  value : Int,
) = "moonbit_gtk_settings_set_gtk_xft_antialias"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-xft-dpi.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_xft_dpi(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_xft_dpi"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_xft_dpi(self_ : Settings, value : Int) = "moonbit_gtk_settings_set_gtk_xft_dpi"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-xft-hinting.html).
#borrow(self_)
pub extern "c" fn Settings::get_gtk_xft_hinting(self_ : Settings) -> Int = "moonbit_gtk_settings_get_gtk_xft_hinting"

///|
#borrow(self_, value)
pub extern "c" fn Settings::set_gtk_xft_hinting(self_ : Settings, value : Int) = "moonbit_gtk_settings_set_gtk_xft_hinting"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_xft_hintstyle(
  self_ : Settings,
) -> Bytes = "moonbit_gtk_settings_get_gtk_xft_hintstyle"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-xft-hintstyle.html).
pub fn Settings::get_gtk_xft_hintstyle(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_settings_get_gtk_xft_hintstyle(self))
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_xft_hintstyle(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_xft_hintstyle"

///|
pub fn Settings::set_gtk_xft_hintstyle(self : Settings, value : String) -> Unit {
  moonbit_gtk_settings_set_gtk_xft_hintstyle(self, @encoding/utf8.encode(value))
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_settings_get_gtk_xft_rgba(self_ : Settings) -> Bytes = "moonbit_gtk_settings_get_gtk_xft_rgba"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Settings.gtk-xft-rgba.html).
pub fn Settings::get_gtk_xft_rgba(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_settings_get_gtk_xft_rgba(self))
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_settings_set_gtk_xft_rgba(
  self_ : Settings,
  value : Bytes,
) = "moonbit_gtk_settings_set_gtk_xft_rgba"

///|
pub fn Settings::set_gtk_xft_rgba(self : Settings, value : String) -> Unit {
  moonbit_gtk_settings_set_gtk_xft_rgba(self, @encoding/utf8.encode(value))
}

///|
impl ISettings with fn reset_property(self, name) -> Unit {
  self.as_settings().reset_property(name)
}

///|
pub fn Settings::as_gobject_object(self : Settings) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for Settings with fn as_object(self) {
  self.as_gobject_object()
}

///|
pub fn Settings::as_style_provider(self : Settings) -> StyleProvider = "%identity"

///|
pub impl IStyleProvider for Settings with fn as_style_provider(self) {
  self.as_style_provider()
}