// GENERATED — DO NOT EDIT

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

///|
pub(open) trait ISettings {
  fn as_settings(Self) -> Settings
  fn apply(Self) -> Unit = _
  fn bind(Self, String, &@gobject.IObject, String, SettingsBindFlags) -> Unit = _
  fn bind_writable(Self, String, &@gobject.IObject, String, Bool) -> Unit = _
  fn create_action(Self, String) -> Action = _
  fn delay(Self) -> Unit = _
  fn get_boolean(Self, String) -> Bool = _
  fn get_child(Self, String) -> Settings = _
  fn get_default_value(Self, String) -> @glib.Variant? = _
  fn get_double(Self, String) -> Double = _
  fn get_enum(Self, String) -> Int = _
  fn get_flags(Self, String) -> UInt = _
  fn get_has_unapplied(Self) -> Bool = _
  fn get_int(Self, String) -> Int = _
  fn get_int64(Self, String) -> Int64 = _
  fn get_string(Self, String) -> String = _
  fn get_uint(Self, String) -> UInt = _
  fn get_uint64(Self, String) -> UInt64 = _
  fn get_user_value(Self, String) -> @glib.Variant? = _
  fn get_value(Self, String) -> @glib.Variant = _
  fn is_writable(Self, String) -> Bool = _
  fn reset(Self, String) -> Unit = _
  fn revert(Self) -> Unit = _
  fn set_boolean(Self, String, Bool) -> Bool = _
  fn set_double(Self, String, Double) -> Bool = _
  fn set_enum(Self, String, Int) -> Bool = _
  fn set_flags(Self, String, UInt) -> Bool = _
  fn set_int(Self, String, Int) -> Bool = _
  fn set_int64(Self, String, Int64) -> Bool = _
  fn set_string(Self, String, String) -> Bool = _
  fn set_strv(Self, String, Array[String]?) -> Bool = _
  fn set_uint(Self, String, UInt) -> Bool = _
  fn set_uint64(Self, String, UInt64) -> Bool = _
  fn set_value(Self, String, &@glib.IVariant) -> Bool = _
  fn connect_changed(Self, (Settings, String) -> Unit) -> UInt64 = _
  fn connect_writable_change_event(Self, (Settings, UInt) -> Bool) -> UInt64 = _
  fn connect_writable_changed(Self, (Settings, String) -> Unit) -> UInt64 = _
}

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

///|
/// Implementation contract for Settings.changed. Self is the retained MoonBit state; the second parameter is the invoked Settings object.
pub(open) trait VSettingsChanged {
  fn changed(Self, Settings, String) -> Unit
}

///|
/// Implementation contract for Settings.writable_changed. Self is the retained MoonBit state; the second parameter is the invoked Settings object.
pub(open) trait VSettingsWritableChanged {
  fn writable_changed(Self, Settings, String) -> Unit
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.Settings.new.html).
pub fn Settings::new(schema_id : String) -> Settings {
  moonbit_g_settings_new(@encoding/utf8.encode(schema_id))
}

///|
#borrow(schema_id, path)
extern "c" fn moonbit_g_settings_new_with_path(
  schema_id : Bytes,
  path : Bytes,
) -> Settings = "moonbit_g_settings_new_with_path"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.Settings.new_with_path.html).
pub fn Settings::new_with_path(schema_id : String, path : String) -> Settings {
  moonbit_g_settings_new_with_path(
    @encoding/utf8.encode(schema_id),
    @encoding/utf8.encode(path),
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/type_func.Settings.sync.html).
pub extern "c" fn Settings::sync() -> Unit = "moonbit_g_settings_sync"

///|
#borrow(object, property)
extern "c" fn moonbit_g_settings_unbind(
  object : @gobject.Object,
  property : Bytes,
) = "moonbit_g_settings_unbind"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/type_func.Settings.unbind.html).
pub fn Settings::unbind(object : &@gobject.IObject, property : String) -> Unit {
  moonbit_g_settings_unbind(object.as_object(), @encoding/utf8.encode(property))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.apply.html).
#borrow(self)
pub extern "c" fn Settings::apply(self : Settings) = "moonbit_g_settings_apply"

///|
#borrow(self_, key, object, property)
extern "c" fn moonbit_g_settings_bind(
  self_ : Settings,
  key : Bytes,
  object : @gobject.Object,
  property : Bytes,
  flags : Int,
) = "moonbit_g_settings_bind"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.bind.html).
pub fn Settings::bind(
  self : Settings,
  key : String,
  object : &@gobject.IObject,
  property : String,
  flags : SettingsBindFlags,
) -> Unit {
  moonbit_g_settings_bind(
    self,
    @encoding/utf8.encode(key),
    object.as_object(),
    @encoding/utf8.encode(property),
    flags.to_int(),
  )
}

///|
#borrow(self_, key, object, property)
extern "c" fn moonbit_g_settings_bind_writable(
  self_ : Settings,
  key : Bytes,
  object : @gobject.Object,
  property : Bytes,
  inverted : Bool,
) = "moonbit_g_settings_bind_writable"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.bind_writable.html).
pub fn Settings::bind_writable(
  self : Settings,
  key : String,
  object : &@gobject.IObject,
  property : String,
  inverted : Bool,
) -> Unit {
  moonbit_g_settings_bind_writable(
    self,
    @encoding/utf8.encode(key),
    object.as_object(),
    @encoding/utf8.encode(property),
    inverted,
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.create_action.html).
pub fn Settings::create_action(self : Settings, key : String) -> Action {
  moonbit_g_settings_create_action(self, @encoding/utf8.encode(key))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.delay.html).
#borrow(self)
pub extern "c" fn Settings::delay(self : Settings) = "moonbit_g_settings_delay"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_boolean.html).
pub fn Settings::get_boolean(self : Settings, key : String) -> Bool {
  moonbit_g_settings_get_boolean(self, @encoding/utf8.encode(key))
}

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

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

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_get_default_value(
  self_ : Settings,
  key : Bytes,
) -> @glib.Nullable[@glib.Variant] = "moonbit_g_settings_get_default_value"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_default_value.html).
pub fn Settings::get_default_value(
  self : Settings,
  key : String,
) -> @glib.Variant? {
  let raw_result = moonbit_g_settings_get_default_value(
    self,
    @encoding/utf8.encode(key),
  )
  raw_result.to_option()
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_double.html).
pub fn Settings::get_double(self : Settings, key : String) -> Double {
  moonbit_g_settings_get_double(self, @encoding/utf8.encode(key))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_enum.html).
pub fn Settings::get_enum(self : Settings, key : String) -> Int {
  moonbit_g_settings_get_enum(self, @encoding/utf8.encode(key))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_flags.html).
pub fn Settings::get_flags(self : Settings, key : String) -> UInt {
  moonbit_g_settings_get_flags(self, @encoding/utf8.encode(key))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_has_unapplied.html).
#borrow(self)
pub extern "c" fn Settings::get_has_unapplied(self : Settings) -> Bool = "moonbit_g_settings_get_has_unapplied"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_int.html).
pub fn Settings::get_int(self : Settings, key : String) -> Int {
  moonbit_g_settings_get_int(self, @encoding/utf8.encode(key))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_int64.html).
pub fn Settings::get_int64(self : Settings, key : String) -> Int64 {
  moonbit_g_settings_get_int64(self, @encoding/utf8.encode(key))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_string.html).
pub fn Settings::get_string(self : Settings, key : String) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_g_settings_get_string(self, @encoding/utf8.encode(key)),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_uint.html).
pub fn Settings::get_uint(self : Settings, key : String) -> UInt {
  moonbit_g_settings_get_uint(self, @encoding/utf8.encode(key))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_uint64.html).
pub fn Settings::get_uint64(self : Settings, key : String) -> UInt64 {
  moonbit_g_settings_get_uint64(self, @encoding/utf8.encode(key))
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_get_user_value(
  self_ : Settings,
  key : Bytes,
) -> @glib.Nullable[@glib.Variant] = "moonbit_g_settings_get_user_value"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_user_value.html).
pub fn Settings::get_user_value(
  self : Settings,
  key : String,
) -> @glib.Variant? {
  let raw_result = moonbit_g_settings_get_user_value(
    self,
    @encoding/utf8.encode(key),
  )
  raw_result.to_option()
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_get_value(
  self_ : Settings,
  key : Bytes,
) -> @glib.Variant = "moonbit_g_settings_get_value"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.get_value.html).
pub fn Settings::get_value(self : Settings, key : String) -> @glib.Variant {
  moonbit_g_settings_get_value(self, @encoding/utf8.encode(key))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.is_writable.html).
pub fn Settings::is_writable(self : Settings, name : String) -> Bool {
  moonbit_g_settings_is_writable(self, @encoding/utf8.encode(name))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.reset.html).
pub fn Settings::reset(self : Settings, key : String) -> Unit {
  moonbit_g_settings_reset(self, @encoding/utf8.encode(key))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.revert.html).
#borrow(self)
pub extern "c" fn Settings::revert(self : Settings) = "moonbit_g_settings_revert"

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_boolean(
  self_ : Settings,
  key : Bytes,
  value : Bool,
) -> Bool = "moonbit_g_settings_set_boolean"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_boolean.html).
pub fn Settings::set_boolean(
  self : Settings,
  key : String,
  value : Bool,
) -> Bool {
  moonbit_g_settings_set_boolean(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_double(
  self_ : Settings,
  key : Bytes,
  value : Double,
) -> Bool = "moonbit_g_settings_set_double"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_double.html).
pub fn Settings::set_double(
  self : Settings,
  key : String,
  value : Double,
) -> Bool {
  moonbit_g_settings_set_double(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_enum(
  self_ : Settings,
  key : Bytes,
  value : Int,
) -> Bool = "moonbit_g_settings_set_enum"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_enum.html).
pub fn Settings::set_enum(self : Settings, key : String, value : Int) -> Bool {
  moonbit_g_settings_set_enum(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_flags(
  self_ : Settings,
  key : Bytes,
  value : UInt,
) -> Bool = "moonbit_g_settings_set_flags"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_flags.html).
pub fn Settings::set_flags(self : Settings, key : String, value : UInt) -> Bool {
  moonbit_g_settings_set_flags(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_int(
  self_ : Settings,
  key : Bytes,
  value : Int,
) -> Bool = "moonbit_g_settings_set_int"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_int.html).
pub fn Settings::set_int(self : Settings, key : String, value : Int) -> Bool {
  moonbit_g_settings_set_int(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_int64(
  self_ : Settings,
  key : Bytes,
  value : Int64,
) -> Bool = "moonbit_g_settings_set_int64"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_int64.html).
pub fn Settings::set_int64(
  self : Settings,
  key : String,
  value : Int64,
) -> Bool {
  moonbit_g_settings_set_int64(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key, value)
extern "c" fn moonbit_g_settings_set_string(
  self_ : Settings,
  key : Bytes,
  value : Bytes,
) -> Bool = "moonbit_g_settings_set_string"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_string.html).
pub fn Settings::set_string(
  self : Settings,
  key : String,
  value : String,
) -> Bool {
  moonbit_g_settings_set_string(
    self,
    @encoding/utf8.encode(key),
    @encoding/utf8.encode(value),
  )
}

///|
#borrow(self_, key, __sa_value)
extern "c" fn moonbit_g_settings_set_strv(
  self_ : Settings,
  key : Bytes,
  __sa_value : @glib.Nullable[FixedArray[Bytes]],
) -> Bool = "moonbit_g_settings_set_strv"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_strv.html).
pub fn Settings::set_strv(
  self : Settings,
  key : String,
  value : Array[String]?,
) -> Bool {
  moonbit_g_settings_set_strv(
    self,
    @encoding/utf8.encode(key),
    match value {
      Some(arr) =>
        @glib.Nullable::some(
          FixedArray::from_array(arr.map(fn(s) { @encoding/utf8.encode(s) })),
        )
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_uint(
  self_ : Settings,
  key : Bytes,
  value : UInt,
) -> Bool = "moonbit_g_settings_set_uint"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_uint.html).
pub fn Settings::set_uint(self : Settings, key : String, value : UInt) -> Bool {
  moonbit_g_settings_set_uint(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key)
extern "c" fn moonbit_g_settings_set_uint64(
  self_ : Settings,
  key : Bytes,
  value : UInt64,
) -> Bool = "moonbit_g_settings_set_uint64"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_uint64.html).
pub fn Settings::set_uint64(
  self : Settings,
  key : String,
  value : UInt64,
) -> Bool {
  moonbit_g_settings_set_uint64(self, @encoding/utf8.encode(key), value)
}

///|
#borrow(self_, key, value)
extern "c" fn moonbit_g_settings_set_value(
  self_ : Settings,
  key : Bytes,
  value : @glib.Variant,
) -> Bool = "moonbit_g_settings_set_value"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Settings.set_value.html).
pub fn Settings::set_value(
  self : Settings,
  key : String,
  value : &@glib.IVariant,
) -> Bool {
  moonbit_g_settings_set_value(
    self,
    @encoding/utf8.encode(key),
    value.as_variant(),
  )
}

///|
#borrow(instance)
extern "c" fn g_settings_connect_changed(
  instance : Settings,
  function : FuncRef[(Settings, Bytes, (Settings, String) -> Unit) -> Unit],
  closure : (Settings, String) -> Unit,
) -> UInt64 = "moonbit_g_settings_connect_changed"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/signal.Settings.changed.html).
pub fn Settings::connect_changed(
  self : Settings,
  f : (Settings, String) -> Unit,
) -> UInt64 {
  g_settings_connect_changed(
    self,
    fn(instance_, key, f) { f(instance_, @encoding/utf8.decode_lossy(key)) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn g_settings_connect_writable_change_event(
  instance : Settings,
  function : FuncRef[(Settings, UInt, (Settings, UInt) -> Bool) -> Bool],
  closure : (Settings, UInt) -> Bool,
) -> UInt64 = "moonbit_g_settings_connect_writable_change_event"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/signal.Settings.writable-change-event.html).
pub fn Settings::connect_writable_change_event(
  self : Settings,
  f : (Settings, UInt) -> Bool,
) -> UInt64 {
  g_settings_connect_writable_change_event(
    self,
    fn(instance_, key, f) { f(instance_, key) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn g_settings_connect_writable_changed(
  instance : Settings,
  function : FuncRef[(Settings, Bytes, (Settings, String) -> Unit) -> Unit],
  closure : (Settings, String) -> Unit,
) -> UInt64 = "moonbit_g_settings_connect_writable_changed"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/signal.Settings.writable-changed.html).
pub fn Settings::connect_writable_changed(
  self : Settings,
  f : (Settings, String) -> Unit,
) -> UInt64 {
  g_settings_connect_writable_changed(
    self,
    fn(instance_, key, f) { f(instance_, @encoding/utf8.decode_lossy(key)) },
    f,
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.Settings.delay-apply.html).
pub fn Settings::get_delay_apply(self : Settings) -> Bool {
  moonbit_g_settings_get_delay_apply(self) != 0
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.Settings.path.html).
pub fn Settings::get_path(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_settings_get_path(self))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.Settings.schema-id.html).
pub fn Settings::get_schema_id(self : Settings) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_settings_get_schema_id(self))
}

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

///|
impl ISettings with fn bind(self, key, object, property, flags) -> Unit {
  self.as_settings().bind(key, object, property, flags)
}

///|
impl ISettings with fn bind_writable(self, key, object, property, inverted) -> Unit {
  self.as_settings().bind_writable(key, object, property, inverted)
}

///|
impl ISettings with fn create_action(self, key) -> Action {
  self.as_settings().create_action(key)
}

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

///|
impl ISettings with fn get_boolean(self, key) -> Bool {
  self.as_settings().get_boolean(key)
}

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

///|
impl ISettings with fn get_default_value(self, key) -> @glib.Variant? {
  self.as_settings().get_default_value(key)
}

///|
impl ISettings with fn get_double(self, key) -> Double {
  self.as_settings().get_double(key)
}

///|
impl ISettings with fn get_enum(self, key) -> Int {
  self.as_settings().get_enum(key)
}

///|
impl ISettings with fn get_flags(self, key) -> UInt {
  self.as_settings().get_flags(key)
}

///|
impl ISettings with fn get_has_unapplied(self) -> Bool {
  self.as_settings().get_has_unapplied()
}

///|
impl ISettings with fn get_int(self, key) -> Int {
  self.as_settings().get_int(key)
}

///|
impl ISettings with fn get_int64(self, key) -> Int64 {
  self.as_settings().get_int64(key)
}

///|
impl ISettings with fn get_string(self, key) -> String {
  self.as_settings().get_string(key)
}

///|
impl ISettings with fn get_uint(self, key) -> UInt {
  self.as_settings().get_uint(key)
}

///|
impl ISettings with fn get_uint64(self, key) -> UInt64 {
  self.as_settings().get_uint64(key)
}

///|
impl ISettings with fn get_user_value(self, key) -> @glib.Variant? {
  self.as_settings().get_user_value(key)
}

///|
impl ISettings with fn get_value(self, key) -> @glib.Variant {
  self.as_settings().get_value(key)
}

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

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

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

///|
impl ISettings with fn set_boolean(self, key, value) -> Bool {
  self.as_settings().set_boolean(key, value)
}

///|
impl ISettings with fn set_double(self, key, value) -> Bool {
  self.as_settings().set_double(key, value)
}

///|
impl ISettings with fn set_enum(self, key, value) -> Bool {
  self.as_settings().set_enum(key, value)
}

///|
impl ISettings with fn set_flags(self, key, value) -> Bool {
  self.as_settings().set_flags(key, value)
}

///|
impl ISettings with fn set_int(self, key, value) -> Bool {
  self.as_settings().set_int(key, value)
}

///|
impl ISettings with fn set_int64(self, key, value) -> Bool {
  self.as_settings().set_int64(key, value)
}

///|
impl ISettings with fn set_string(self, key, value) -> Bool {
  self.as_settings().set_string(key, value)
}

///|
impl ISettings with fn set_strv(self, key, value) -> Bool {
  self.as_settings().set_strv(key, value)
}

///|
impl ISettings with fn set_uint(self, key, value) -> Bool {
  self.as_settings().set_uint(key, value)
}

///|
impl ISettings with fn set_uint64(self, key, value) -> Bool {
  self.as_settings().set_uint64(key, value)
}

///|
impl ISettings with fn set_value(self, key, value) -> Bool {
  self.as_settings().set_value(key, value)
}

///|
impl ISettings with fn connect_changed(self, f) -> UInt64 {
  self.as_settings().connect_changed(f)
}

///|
impl ISettings with fn connect_writable_change_event(self, f) -> UInt64 {
  self.as_settings().connect_writable_change_event(f)
}

///|
impl ISettings with fn connect_writable_changed(self, f) -> UInt64 {
  self.as_settings().connect_writable_changed(f)
}

///|
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()
}