// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IEntry {
  fn as_entry(Self) -> Entry
  fn get_activates_default(Self) -> Bool = _
  fn get_alignment(Self) -> Float = _
  fn get_attributes(Self) -> @pango.AttrList? = _
  fn get_buffer(Self) -> EntryBuffer = _
  fn get_current_icon_drag_source(Self) -> Int = _
  fn get_extra_menu(Self) -> @gio.MenuModel? = _
  fn get_has_frame(Self) -> Bool = _
  fn get_icon_activatable(Self, EntryIconPosition) -> Bool = _
  fn get_icon_area(Self, EntryIconPosition) -> @gdk.Rectangle = _
  fn get_icon_at_pos(Self, Int, Int) -> Int = _
  fn get_icon_gicon(Self, EntryIconPosition) -> @gio.Icon? = _
  fn get_icon_name(Self, EntryIconPosition) -> String? = _
  fn get_icon_paintable(Self, EntryIconPosition) -> @gdk.Paintable? = _
  fn get_icon_sensitive(Self, EntryIconPosition) -> Bool = _
  fn get_icon_storage_type(Self, EntryIconPosition) -> ImageType = _
  fn get_icon_tooltip_markup(Self, EntryIconPosition) -> String? = _
  fn get_icon_tooltip_text(Self, EntryIconPosition) -> String? = _
  fn get_input_hints(Self) -> InputHints = _
  fn get_input_purpose(Self) -> InputPurpose = _
  fn get_invisible_char(Self) -> UInt = _
  fn get_max_length(Self) -> Int = _
  fn get_menu_entry_icon_text(Self, EntryIconPosition) -> String? = _
  fn get_overwrite_mode(Self) -> Bool = _
  fn get_placeholder_text(Self) -> String? = _
  fn get_progress_fraction(Self) -> Double = _
  fn get_progress_pulse_step(Self) -> Double = _
  fn get_tabs(Self) -> @pango.TabArray? = _
  fn get_text_length(Self) -> UInt = _
  fn get_visibility(Self) -> Bool = _
  fn grab_focus_without_selecting(Self) -> Bool = _
  fn progress_pulse(Self) -> Unit = _
  fn reset_im_context(Self) -> Unit = _
  fn set_activates_default(Self, Bool) -> Unit = _
  fn set_alignment(Self, Float) -> Unit = _
  fn set_attributes(Self, @pango.AttrList) -> Unit = _
  fn set_buffer(Self, &IEntryBuffer) -> Unit = _
  fn set_extra_menu(Self, &@gio.IMenuModel?) -> Unit = _
  fn set_has_frame(Self, Bool) -> Unit = _
  fn set_icon_activatable(Self, EntryIconPosition, Bool) -> Unit = _
  fn set_icon_drag_source(
    Self,
    EntryIconPosition,
    &@gdk.IContentProvider,
    @gdk.DragAction,
  ) -> Unit = _
  fn set_icon_from_gicon(Self, EntryIconPosition, &@gio.IIcon?) -> Unit = _
  fn set_icon_from_icon_name(Self, EntryIconPosition, String?) -> Unit = _
  fn set_icon_from_paintable(Self, EntryIconPosition, &@gdk.IPaintable?) -> Unit = _
  fn set_icon_sensitive(Self, EntryIconPosition, Bool) -> Unit = _
  fn set_icon_tooltip_markup(Self, EntryIconPosition, String?) -> Unit = _
  fn set_icon_tooltip_text(Self, EntryIconPosition, String?) -> Unit = _
  fn set_input_hints(Self, InputHints) -> Unit = _
  fn set_input_purpose(Self, InputPurpose) -> Unit = _
  fn set_invisible_char(Self, UInt) -> Unit = _
  fn set_max_length(Self, Int) -> Unit = _
  fn set_menu_entry_icon_text(Self, EntryIconPosition, String) -> Unit = _
  fn set_overwrite_mode(Self, Bool) -> Unit = _
  fn set_placeholder_text(Self, String?) -> Unit = _
  fn set_progress_fraction(Self, Double) -> Unit = _
  fn set_progress_pulse_step(Self, Double) -> Unit = _
  fn set_tabs(Self, @pango.TabArray?) -> Unit = _
  fn set_visibility(Self, Bool) -> Unit = _
  fn unset_invisible_char(Self) -> Unit = _
  fn connect_activate(Self, (Entry) -> Unit) -> UInt64 = _
  fn connect_icon_press(Self, (Entry, EntryIconPosition) -> Unit) -> UInt64 = _
  fn connect_icon_release(Self, (Entry, EntryIconPosition) -> Unit) -> UInt64 = _
}

///|
pub impl IEntry for Entry with fn as_entry(self) {
  self
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/ctor.Entry.new.html).
pub extern "c" fn Entry::new() -> Entry = "moonbit_gtk_entry_new"

///|
#borrow(buffer)
extern "c" fn moonbit_gtk_entry_new_with_buffer(buffer : EntryBuffer) -> Entry = "moonbit_gtk_entry_new_with_buffer"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/ctor.Entry.new_with_buffer.html).
pub fn Entry::new_with_buffer(buffer : &IEntryBuffer) -> Entry {
  moonbit_gtk_entry_new_with_buffer(buffer.as_entry_buffer())
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_activates_default.html).
#borrow(self)
pub extern "c" fn Entry::get_activates_default(self : Entry) -> Bool = "moonbit_gtk_entry_get_activates_default"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_alignment.html).
#borrow(self)
pub extern "c" fn Entry::get_alignment(self : Entry) -> Float = "moonbit_gtk_entry_get_alignment"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_attributes(
  self_ : Entry,
) -> @glib.Nullable[@pango.AttrList] = "moonbit_gtk_entry_get_attributes"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_attributes.html).
pub fn Entry::get_attributes(self : Entry) -> @pango.AttrList? {
  let raw_result = moonbit_gtk_entry_get_attributes(self)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_buffer.html).
#borrow(self)
pub extern "c" fn Entry::get_buffer(self : Entry) -> EntryBuffer = "moonbit_gtk_entry_get_buffer"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_current_icon_drag_source.html).
#borrow(self)
pub extern "c" fn Entry::get_current_icon_drag_source(self : Entry) -> Int = "moonbit_gtk_entry_get_current_icon_drag_source"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_extra_menu(
  self_ : Entry,
) -> @glib.Nullable[@gio.MenuModel] = "moonbit_gtk_entry_get_extra_menu"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_extra_menu.html).
pub fn Entry::get_extra_menu(self : Entry) -> @gio.MenuModel? {
  let raw_result = moonbit_gtk_entry_get_extra_menu(self)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_has_frame.html).
#borrow(self)
pub extern "c" fn Entry::get_has_frame(self : Entry) -> Bool = "moonbit_gtk_entry_get_has_frame"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_activatable.html).
#borrow(self)
pub extern "c" fn Entry::get_icon_activatable(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> Bool = "moonbit_gtk_entry_get_icon_activatable"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_icon_area(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @gdk.Rectangle = "moonbit_gtk_entry_get_icon_area"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_area.html).
pub fn Entry::get_icon_area(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> @gdk.Rectangle {
  let __result = moonbit_gtk_entry_get_icon_area(self, icon_pos)
  __result
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_at_pos.html).
#borrow(self)
pub extern "c" fn Entry::get_icon_at_pos(self : Entry, x : Int, y : Int) -> Int = "moonbit_gtk_entry_get_icon_at_pos"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_icon_gicon(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @glib.Nullable[@gio.Icon] = "moonbit_gtk_entry_get_icon_gicon"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_gicon.html).
pub fn Entry::get_icon_gicon(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> @gio.Icon? {
  let raw_result = moonbit_gtk_entry_get_icon_gicon(self, icon_pos)
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_icon_name(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @glib.Nullable[Bytes] = "moonbit_gtk_entry_get_icon_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_name.html).
pub fn Entry::get_icon_name(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> String? {
  let result = moonbit_gtk_entry_get_icon_name(self, icon_pos)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_icon_paintable(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @glib.Nullable[@gdk.Paintable] = "moonbit_gtk_entry_get_icon_paintable"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_paintable.html).
pub fn Entry::get_icon_paintable(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> @gdk.Paintable? {
  let raw_result = moonbit_gtk_entry_get_icon_paintable(self, icon_pos)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_sensitive.html).
#borrow(self)
pub extern "c" fn Entry::get_icon_sensitive(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> Bool = "moonbit_gtk_entry_get_icon_sensitive"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_storage_type.html).
#borrow(self)
pub extern "c" fn Entry::get_icon_storage_type(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> ImageType = "moonbit_gtk_entry_get_icon_storage_type"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_icon_tooltip_markup(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @glib.Nullable[Bytes] = "moonbit_gtk_entry_get_icon_tooltip_markup"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_tooltip_markup.html).
pub fn Entry::get_icon_tooltip_markup(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> String? {
  let result = moonbit_gtk_entry_get_icon_tooltip_markup(self, icon_pos)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_icon_tooltip_text(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @glib.Nullable[Bytes] = "moonbit_gtk_entry_get_icon_tooltip_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_icon_tooltip_text.html).
pub fn Entry::get_icon_tooltip_text(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> String? {
  let result = moonbit_gtk_entry_get_icon_tooltip_text(self, icon_pos)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_input_hints.html).
pub fn Entry::get_input_hints(self : Entry) -> InputHints {
  InputHints::from_int(moonbit_gtk_entry_get_input_hints(self))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_input_purpose.html).
#borrow(self)
pub extern "c" fn Entry::get_input_purpose(self : Entry) -> InputPurpose = "moonbit_gtk_entry_get_input_purpose"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_invisible_char.html).
#borrow(self)
pub extern "c" fn Entry::get_invisible_char(self : Entry) -> UInt = "moonbit_gtk_entry_get_invisible_char"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_max_length.html).
#borrow(self)
pub extern "c" fn Entry::get_max_length(self : Entry) -> Int = "moonbit_gtk_entry_get_max_length"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_menu_entry_icon_text(
  self_ : Entry,
  icon_pos : EntryIconPosition,
) -> @glib.Nullable[Bytes] = "moonbit_gtk_entry_get_menu_entry_icon_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_menu_entry_icon_text.html).
pub fn Entry::get_menu_entry_icon_text(
  self : Entry,
  icon_pos : EntryIconPosition,
) -> String? {
  let result = moonbit_gtk_entry_get_menu_entry_icon_text(self, icon_pos)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_overwrite_mode.html).
#borrow(self)
pub extern "c" fn Entry::get_overwrite_mode(self : Entry) -> Bool = "moonbit_gtk_entry_get_overwrite_mode"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_placeholder_text(
  self_ : Entry,
) -> @glib.Nullable[Bytes] = "moonbit_gtk_entry_get_placeholder_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_placeholder_text.html).
pub fn Entry::get_placeholder_text(self : Entry) -> String? {
  let result = moonbit_gtk_entry_get_placeholder_text(self)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_progress_fraction.html).
#borrow(self)
pub extern "c" fn Entry::get_progress_fraction(self : Entry) -> Double = "moonbit_gtk_entry_get_progress_fraction"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_progress_pulse_step.html).
#borrow(self)
pub extern "c" fn Entry::get_progress_pulse_step(self : Entry) -> Double = "moonbit_gtk_entry_get_progress_pulse_step"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_tabs(
  self_ : Entry,
) -> @glib.Nullable[@pango.TabArray] = "moonbit_gtk_entry_get_tabs"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_tabs.html).
pub fn Entry::get_tabs(self : Entry) -> @pango.TabArray? {
  let raw_result = moonbit_gtk_entry_get_tabs(self)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_text_length.html).
#borrow(self)
pub extern "c" fn Entry::get_text_length(self : Entry) -> UInt = "moonbit_gtk_entry_get_text_length"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.get_visibility.html).
#borrow(self)
pub extern "c" fn Entry::get_visibility(self : Entry) -> Bool = "moonbit_gtk_entry_get_visibility"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.grab_focus_without_selecting.html).
#borrow(self)
pub extern "c" fn Entry::grab_focus_without_selecting(self : Entry) -> Bool = "moonbit_gtk_entry_grab_focus_without_selecting"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.progress_pulse.html).
#borrow(self)
pub extern "c" fn Entry::progress_pulse(self : Entry) = "moonbit_gtk_entry_progress_pulse"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.reset_im_context.html).
#borrow(self)
pub extern "c" fn Entry::reset_im_context(self : Entry) = "moonbit_gtk_entry_reset_im_context"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_activates_default.html).
#borrow(self)
pub extern "c" fn Entry::set_activates_default(self : Entry, setting : Bool) = "moonbit_gtk_entry_set_activates_default"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_alignment.html).
#borrow(self)
pub extern "c" fn Entry::set_alignment(self : Entry, xalign : Float) = "moonbit_gtk_entry_set_alignment"

///|
#borrow(self_, attrs)
extern "c" fn moonbit_gtk_entry_set_attributes(
  self_ : Entry,
  attrs : @pango.AttrList,
) = "moonbit_gtk_entry_set_attributes"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_attributes.html).
pub fn Entry::set_attributes(self : Entry, attrs : @pango.AttrList) -> Unit {
  moonbit_gtk_entry_set_attributes(self, attrs)
}

///|
#borrow(self_, buffer)
extern "c" fn moonbit_gtk_entry_set_buffer(self_ : Entry, buffer : EntryBuffer) = "moonbit_gtk_entry_set_buffer"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_buffer.html).
pub fn Entry::set_buffer(self : Entry, buffer : &IEntryBuffer) -> Unit {
  moonbit_gtk_entry_set_buffer(self, buffer.as_entry_buffer())
}

///|
#borrow(self_, model)
extern "c" fn moonbit_gtk_entry_set_extra_menu(
  self_ : Entry,
  model : @glib.Nullable[@gio.MenuModel],
) = "moonbit_gtk_entry_set_extra_menu"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_extra_menu.html).
pub fn Entry::set_extra_menu(self : Entry, model : &@gio.IMenuModel?) -> Unit {
  moonbit_gtk_entry_set_extra_menu(
    self,
    match model {
      Some(v) => @glib.Nullable::some(v.as_menu_model())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_has_frame.html).
#borrow(self)
pub extern "c" fn Entry::set_has_frame(self : Entry, setting : Bool) = "moonbit_gtk_entry_set_has_frame"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_activatable.html).
#borrow(self)
pub extern "c" fn Entry::set_icon_activatable(
  self : Entry,
  icon_pos : EntryIconPosition,
  activatable : Bool,
) = "moonbit_gtk_entry_set_icon_activatable"

///|
#borrow(self_, provider)
extern "c" fn moonbit_gtk_entry_set_icon_drag_source(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  provider : @gdk.ContentProvider,
  actions : Int,
) = "moonbit_gtk_entry_set_icon_drag_source"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_drag_source.html).
pub fn Entry::set_icon_drag_source(
  self : Entry,
  icon_pos : EntryIconPosition,
  provider : &@gdk.IContentProvider,
  actions : @gdk.DragAction,
) -> Unit {
  moonbit_gtk_entry_set_icon_drag_source(
    self,
    icon_pos,
    provider.as_content_provider(),
    actions.to_int(),
  )
}

///|
#borrow(self_, icon)
extern "c" fn moonbit_gtk_entry_set_icon_from_gicon(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  icon : @glib.Nullable[@gio.Icon],
) = "moonbit_gtk_entry_set_icon_from_gicon"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_from_gicon.html).
pub fn Entry::set_icon_from_gicon(
  self : Entry,
  icon_pos : EntryIconPosition,
  icon : &@gio.IIcon?,
) -> Unit {
  moonbit_gtk_entry_set_icon_from_gicon(
    self,
    icon_pos,
    match icon {
      Some(v) => @glib.Nullable::some(v.as_icon())
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, icon_name)
extern "c" fn moonbit_gtk_entry_set_icon_from_icon_name(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  icon_name : @glib.Nullable[Bytes],
) = "moonbit_gtk_entry_set_icon_from_icon_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_from_icon_name.html).
pub fn Entry::set_icon_from_icon_name(
  self : Entry,
  icon_pos : EntryIconPosition,
  icon_name : String?,
) -> Unit {
  moonbit_gtk_entry_set_icon_from_icon_name(
    self,
    icon_pos,
    match icon_name {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, paintable)
extern "c" fn moonbit_gtk_entry_set_icon_from_paintable(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  paintable : @glib.Nullable[@gdk.Paintable],
) = "moonbit_gtk_entry_set_icon_from_paintable"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_from_paintable.html).
pub fn Entry::set_icon_from_paintable(
  self : Entry,
  icon_pos : EntryIconPosition,
  paintable : &@gdk.IPaintable?,
) -> Unit {
  moonbit_gtk_entry_set_icon_from_paintable(
    self,
    icon_pos,
    match paintable {
      Some(v) => @glib.Nullable::some(v.as_paintable())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_sensitive.html).
#borrow(self)
pub extern "c" fn Entry::set_icon_sensitive(
  self : Entry,
  icon_pos : EntryIconPosition,
  sensitive : Bool,
) = "moonbit_gtk_entry_set_icon_sensitive"

///|
#borrow(self_, tooltip)
extern "c" fn moonbit_gtk_entry_set_icon_tooltip_markup(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  tooltip : @glib.Nullable[Bytes],
) = "moonbit_gtk_entry_set_icon_tooltip_markup"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_tooltip_markup.html).
pub fn Entry::set_icon_tooltip_markup(
  self : Entry,
  icon_pos : EntryIconPosition,
  tooltip : String?,
) -> Unit {
  moonbit_gtk_entry_set_icon_tooltip_markup(
    self,
    icon_pos,
    match tooltip {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, tooltip)
extern "c" fn moonbit_gtk_entry_set_icon_tooltip_text(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  tooltip : @glib.Nullable[Bytes],
) = "moonbit_gtk_entry_set_icon_tooltip_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_icon_tooltip_text.html).
pub fn Entry::set_icon_tooltip_text(
  self : Entry,
  icon_pos : EntryIconPosition,
  tooltip : String?,
) -> Unit {
  moonbit_gtk_entry_set_icon_tooltip_text(
    self,
    icon_pos,
    match tooltip {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_set_input_hints(self_ : Entry, hints : Int) = "moonbit_gtk_entry_set_input_hints"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_input_hints.html).
pub fn Entry::set_input_hints(self : Entry, hints : InputHints) -> Unit {
  moonbit_gtk_entry_set_input_hints(self, hints.to_int())
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_input_purpose.html).
#borrow(self)
pub extern "c" fn Entry::set_input_purpose(
  self : Entry,
  purpose : InputPurpose,
) = "moonbit_gtk_entry_set_input_purpose"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_invisible_char.html).
#borrow(self)
pub extern "c" fn Entry::set_invisible_char(self : Entry, ch : UInt) = "moonbit_gtk_entry_set_invisible_char"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_max_length.html).
#borrow(self)
pub extern "c" fn Entry::set_max_length(self : Entry, max : Int) = "moonbit_gtk_entry_set_max_length"

///|
#borrow(self_, text)
extern "c" fn moonbit_gtk_entry_set_menu_entry_icon_text(
  self_ : Entry,
  icon_pos : EntryIconPosition,
  text : Bytes,
) = "moonbit_gtk_entry_set_menu_entry_icon_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_menu_entry_icon_text.html).
pub fn Entry::set_menu_entry_icon_text(
  self : Entry,
  icon_pos : EntryIconPosition,
  text : String,
) -> Unit {
  moonbit_gtk_entry_set_menu_entry_icon_text(
    self,
    icon_pos,
    @encoding/utf8.encode(text),
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_overwrite_mode.html).
#borrow(self)
pub extern "c" fn Entry::set_overwrite_mode(self : Entry, overwrite : Bool) = "moonbit_gtk_entry_set_overwrite_mode"

///|
#borrow(self_, text)
extern "c" fn moonbit_gtk_entry_set_placeholder_text(
  self_ : Entry,
  text : @glib.Nullable[Bytes],
) = "moonbit_gtk_entry_set_placeholder_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_placeholder_text.html).
pub fn Entry::set_placeholder_text(self : Entry, text : String?) -> Unit {
  moonbit_gtk_entry_set_placeholder_text(
    self,
    match text {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_progress_fraction.html).
#borrow(self)
pub extern "c" fn Entry::set_progress_fraction(self : Entry, fraction : Double) = "moonbit_gtk_entry_set_progress_fraction"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_progress_pulse_step.html).
#borrow(self)
pub extern "c" fn Entry::set_progress_pulse_step(
  self : Entry,
  fraction : Double,
) = "moonbit_gtk_entry_set_progress_pulse_step"

///|
#borrow(self_, tabs)
extern "c" fn moonbit_gtk_entry_set_tabs(
  self_ : Entry,
  tabs : @glib.Nullable[@pango.TabArray],
) = "moonbit_gtk_entry_set_tabs"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_tabs.html).
pub fn Entry::set_tabs(self : Entry, tabs : @pango.TabArray?) -> Unit {
  moonbit_gtk_entry_set_tabs(
    self,
    match tabs {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.set_visibility.html).
#borrow(self)
pub extern "c" fn Entry::set_visibility(self : Entry, visible : Bool) = "moonbit_gtk_entry_set_visibility"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.Entry.unset_invisible_char.html).
#borrow(self)
pub extern "c" fn Entry::unset_invisible_char(self : Entry) = "moonbit_gtk_entry_unset_invisible_char"

///|
#borrow(instance)
extern "c" fn gtk_entry_connect_activate(
  instance : Entry,
  function : FuncRef[(Entry, (Entry) -> Unit) -> Unit],
  closure : (Entry) -> Unit,
) -> UInt64 = "moonbit_gtk_entry_connect_activate"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.Entry.activate.html).
pub fn Entry::connect_activate(self : Entry, f : (Entry) -> Unit) -> UInt64 {
  gtk_entry_connect_activate(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn gtk_entry_connect_icon_press(
  instance : Entry,
  function : FuncRef[
    (Entry, EntryIconPosition, (Entry, EntryIconPosition) -> Unit) -> Unit,
  ],
  closure : (Entry, EntryIconPosition) -> Unit,
) -> UInt64 = "moonbit_gtk_entry_connect_icon_press"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.Entry.icon-press.html).
pub fn Entry::connect_icon_press(
  self : Entry,
  f : (Entry, EntryIconPosition) -> Unit,
) -> UInt64 {
  gtk_entry_connect_icon_press(
    self,
    fn(instance_, icon_pos, f) { f(instance_, icon_pos) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_entry_connect_icon_release(
  instance : Entry,
  function : FuncRef[
    (Entry, EntryIconPosition, (Entry, EntryIconPosition) -> Unit) -> Unit,
  ],
  closure : (Entry, EntryIconPosition) -> Unit,
) -> UInt64 = "moonbit_gtk_entry_connect_icon_release"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.Entry.icon-release.html).
pub fn Entry::connect_icon_release(
  self : Entry,
  f : (Entry, EntryIconPosition) -> Unit,
) -> UInt64 {
  gtk_entry_connect_icon_release(
    self,
    fn(instance_, icon_pos, f) { f(instance_, icon_pos) },
    f,
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.enable-emoji-completion.html).
pub fn Entry::get_enable_emoji_completion(self : Entry) -> Bool {
  moonbit_gtk_entry_get_enable_emoji_completion(self) != 0
}

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

///|
pub fn Entry::set_enable_emoji_completion(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_enable_emoji_completion(self, if value { 1 } else { 0 })
}

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

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

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

///|
pub fn Entry::set_im_module(self : Entry, value : String) -> Unit {
  moonbit_gtk_entry_set_im_module(self, @encoding/utf8.encode(value))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.invisible-char-set.html).
pub fn Entry::get_invisible_char_set(self : Entry) -> Bool {
  moonbit_gtk_entry_get_invisible_char_set(self) != 0
}

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

///|
pub fn Entry::set_invisible_char_set(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_invisible_char_set(self, if value { 1 } else { 0 })
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.menu-entry-icon-primary-text.html).
pub fn Entry::get_menu_entry_icon_primary_text(self : Entry) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_entry_get_menu_entry_icon_primary_text(self),
  )
}

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

///|
pub fn Entry::set_menu_entry_icon_primary_text(
  self : Entry,
  value : String,
) -> Unit {
  moonbit_gtk_entry_set_menu_entry_icon_primary_text(
    self,
    @encoding/utf8.encode(value),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.menu-entry-icon-secondary-text.html).
pub fn Entry::get_menu_entry_icon_secondary_text(self : Entry) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_entry_get_menu_entry_icon_secondary_text(self),
  )
}

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

///|
pub fn Entry::set_menu_entry_icon_secondary_text(
  self : Entry,
  value : String,
) -> Unit {
  moonbit_gtk_entry_set_menu_entry_icon_secondary_text(
    self,
    @encoding/utf8.encode(value),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-activatable.html).
pub fn Entry::get_primary_icon_activatable(self : Entry) -> Bool {
  moonbit_gtk_entry_get_primary_icon_activatable(self) != 0
}

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

///|
pub fn Entry::set_primary_icon_activatable(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_primary_icon_activatable(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_primary_icon_gicon(
  self_ : Entry,
) -> @glib.Nullable[@gio.Icon] = "moonbit_gtk_entry_get_primary_icon_gicon"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-gicon.html).
pub fn Entry::get_primary_icon_gicon(self : Entry) -> @gio.Icon? {
  moonbit_gtk_entry_get_primary_icon_gicon(self).to_option()
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_entry_set_primary_icon_gicon(
  self_ : Entry,
  value : @glib.Nullable[@gio.Icon],
) = "moonbit_gtk_entry_set_primary_icon_gicon"

///|
pub fn Entry::set_primary_icon_gicon(self : Entry, value : @gio.Icon?) -> Unit {
  moonbit_gtk_entry_set_primary_icon_gicon(
    self,
    match value {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-name.html).
pub fn Entry::get_primary_icon_name(self : Entry) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_entry_get_primary_icon_name(self))
}

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

///|
pub fn Entry::set_primary_icon_name(self : Entry, value : String) -> Unit {
  moonbit_gtk_entry_set_primary_icon_name(self, @encoding/utf8.encode(value))
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_primary_icon_paintable(
  self_ : Entry,
) -> @glib.Nullable[@gdk.Paintable] = "moonbit_gtk_entry_get_primary_icon_paintable"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-paintable.html).
pub fn Entry::get_primary_icon_paintable(self : Entry) -> @gdk.Paintable? {
  moonbit_gtk_entry_get_primary_icon_paintable(self).to_option()
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_entry_set_primary_icon_paintable(
  self_ : Entry,
  value : @glib.Nullable[@gdk.Paintable],
) = "moonbit_gtk_entry_set_primary_icon_paintable"

///|
pub fn Entry::set_primary_icon_paintable(
  self : Entry,
  value : @gdk.Paintable?,
) -> Unit {
  moonbit_gtk_entry_set_primary_icon_paintable(
    self,
    match value {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-sensitive.html).
pub fn Entry::get_primary_icon_sensitive(self : Entry) -> Bool {
  moonbit_gtk_entry_get_primary_icon_sensitive(self) != 0
}

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

///|
pub fn Entry::set_primary_icon_sensitive(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_primary_icon_sensitive(self, if value { 1 } else { 0 })
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-storage-type.html).
#borrow(self_)
pub extern "c" fn Entry::get_primary_icon_storage_type(
  self_ : Entry,
) -> ImageType = "moonbit_gtk_entry_get_primary_icon_storage_type"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-tooltip-markup.html).
pub fn Entry::get_primary_icon_tooltip_markup(self : Entry) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_entry_get_primary_icon_tooltip_markup(self),
  )
}

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

///|
pub fn Entry::set_primary_icon_tooltip_markup(
  self : Entry,
  value : String,
) -> Unit {
  moonbit_gtk_entry_set_primary_icon_tooltip_markup(
    self,
    @encoding/utf8.encode(value),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.primary-icon-tooltip-text.html).
pub fn Entry::get_primary_icon_tooltip_text(self : Entry) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_entry_get_primary_icon_tooltip_text(self),
  )
}

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

///|
pub fn Entry::set_primary_icon_tooltip_text(
  self : Entry,
  value : String,
) -> Unit {
  moonbit_gtk_entry_set_primary_icon_tooltip_text(
    self,
    @encoding/utf8.encode(value),
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.scroll-offset.html).
#borrow(self_)
pub extern "c" fn Entry::get_scroll_offset(self_ : Entry) -> Int = "moonbit_gtk_entry_get_scroll_offset"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-activatable.html).
pub fn Entry::get_secondary_icon_activatable(self : Entry) -> Bool {
  moonbit_gtk_entry_get_secondary_icon_activatable(self) != 0
}

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

///|
pub fn Entry::set_secondary_icon_activatable(
  self : Entry,
  value : Bool,
) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_activatable(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_secondary_icon_gicon(
  self_ : Entry,
) -> @glib.Nullable[@gio.Icon] = "moonbit_gtk_entry_get_secondary_icon_gicon"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-gicon.html).
pub fn Entry::get_secondary_icon_gicon(self : Entry) -> @gio.Icon? {
  moonbit_gtk_entry_get_secondary_icon_gicon(self).to_option()
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_entry_set_secondary_icon_gicon(
  self_ : Entry,
  value : @glib.Nullable[@gio.Icon],
) = "moonbit_gtk_entry_set_secondary_icon_gicon"

///|
pub fn Entry::set_secondary_icon_gicon(
  self : Entry,
  value : @gio.Icon?,
) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_gicon(
    self,
    match value {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-name.html).
pub fn Entry::get_secondary_icon_name(self : Entry) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_entry_get_secondary_icon_name(self))
}

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

///|
pub fn Entry::set_secondary_icon_name(self : Entry, value : String) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_name(self, @encoding/utf8.encode(value))
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_entry_get_secondary_icon_paintable(
  self_ : Entry,
) -> @glib.Nullable[@gdk.Paintable] = "moonbit_gtk_entry_get_secondary_icon_paintable"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-paintable.html).
pub fn Entry::get_secondary_icon_paintable(self : Entry) -> @gdk.Paintable? {
  moonbit_gtk_entry_get_secondary_icon_paintable(self).to_option()
}

///|
#borrow(self_, value)
extern "c" fn moonbit_gtk_entry_set_secondary_icon_paintable(
  self_ : Entry,
  value : @glib.Nullable[@gdk.Paintable],
) = "moonbit_gtk_entry_set_secondary_icon_paintable"

///|
pub fn Entry::set_secondary_icon_paintable(
  self : Entry,
  value : @gdk.Paintable?,
) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_paintable(
    self,
    match value {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-sensitive.html).
pub fn Entry::get_secondary_icon_sensitive(self : Entry) -> Bool {
  moonbit_gtk_entry_get_secondary_icon_sensitive(self) != 0
}

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

///|
pub fn Entry::set_secondary_icon_sensitive(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_sensitive(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-storage-type.html).
#borrow(self_)
pub extern "c" fn Entry::get_secondary_icon_storage_type(
  self_ : Entry,
) -> ImageType = "moonbit_gtk_entry_get_secondary_icon_storage_type"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-tooltip-markup.html).
pub fn Entry::get_secondary_icon_tooltip_markup(self : Entry) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_entry_get_secondary_icon_tooltip_markup(self),
  )
}

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

///|
pub fn Entry::set_secondary_icon_tooltip_markup(
  self : Entry,
  value : String,
) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_tooltip_markup(
    self,
    @encoding/utf8.encode(value),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.secondary-icon-tooltip-text.html).
pub fn Entry::get_secondary_icon_tooltip_text(self : Entry) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_entry_get_secondary_icon_tooltip_text(self),
  )
}

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

///|
pub fn Entry::set_secondary_icon_tooltip_text(
  self : Entry,
  value : String,
) -> Unit {
  moonbit_gtk_entry_set_secondary_icon_tooltip_text(
    self,
    @encoding/utf8.encode(value),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.show-emoji-icon.html).
pub fn Entry::get_show_emoji_icon(self : Entry) -> Bool {
  moonbit_gtk_entry_get_show_emoji_icon(self) != 0
}

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

///|
pub fn Entry::set_show_emoji_icon(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_show_emoji_icon(self, if value { 1 } else { 0 })
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.Entry.truncate-multiline.html).
pub fn Entry::get_truncate_multiline(self : Entry) -> Bool {
  moonbit_gtk_entry_get_truncate_multiline(self) != 0
}

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

///|
pub fn Entry::set_truncate_multiline(self : Entry, value : Bool) -> Unit {
  moonbit_gtk_entry_set_truncate_multiline(self, if value { 1 } else { 0 })
}

///|
impl IEntry with fn get_activates_default(self) -> Bool {
  self.as_entry().get_activates_default()
}

///|
impl IEntry with fn get_alignment(self) -> Float {
  self.as_entry().get_alignment()
}

///|
impl IEntry with fn get_attributes(self) -> @pango.AttrList? {
  self.as_entry().get_attributes()
}

///|
impl IEntry with fn get_buffer(self) -> EntryBuffer {
  self.as_entry().get_buffer()
}

///|
impl IEntry with fn get_current_icon_drag_source(self) -> Int {
  self.as_entry().get_current_icon_drag_source()
}

///|
impl IEntry with fn get_extra_menu(self) -> @gio.MenuModel? {
  self.as_entry().get_extra_menu()
}

///|
impl IEntry with fn get_has_frame(self) -> Bool {
  self.as_entry().get_has_frame()
}

///|
impl IEntry with fn get_icon_activatable(self, icon_pos) -> Bool {
  self.as_entry().get_icon_activatable(icon_pos)
}

///|
impl IEntry with fn get_icon_area(self, icon_pos) -> @gdk.Rectangle {
  self.as_entry().get_icon_area(icon_pos)
}

///|
impl IEntry with fn get_icon_at_pos(self, x, y) -> Int {
  self.as_entry().get_icon_at_pos(x, y)
}

///|
impl IEntry with fn get_icon_gicon(self, icon_pos) -> @gio.Icon? {
  self.as_entry().get_icon_gicon(icon_pos)
}

///|
impl IEntry with fn get_icon_name(self, icon_pos) -> String? {
  self.as_entry().get_icon_name(icon_pos)
}

///|
impl IEntry with fn get_icon_paintable(self, icon_pos) -> @gdk.Paintable? {
  self.as_entry().get_icon_paintable(icon_pos)
}

///|
impl IEntry with fn get_icon_sensitive(self, icon_pos) -> Bool {
  self.as_entry().get_icon_sensitive(icon_pos)
}

///|
impl IEntry with fn get_icon_storage_type(self, icon_pos) -> ImageType {
  self.as_entry().get_icon_storage_type(icon_pos)
}

///|
impl IEntry with fn get_icon_tooltip_markup(self, icon_pos) -> String? {
  self.as_entry().get_icon_tooltip_markup(icon_pos)
}

///|
impl IEntry with fn get_icon_tooltip_text(self, icon_pos) -> String? {
  self.as_entry().get_icon_tooltip_text(icon_pos)
}

///|
impl IEntry with fn get_input_hints(self) -> InputHints {
  self.as_entry().get_input_hints()
}

///|
impl IEntry with fn get_input_purpose(self) -> InputPurpose {
  self.as_entry().get_input_purpose()
}

///|
impl IEntry with fn get_invisible_char(self) -> UInt {
  self.as_entry().get_invisible_char()
}

///|
impl IEntry with fn get_max_length(self) -> Int {
  self.as_entry().get_max_length()
}

///|
impl IEntry with fn get_menu_entry_icon_text(self, icon_pos) -> String? {
  self.as_entry().get_menu_entry_icon_text(icon_pos)
}

///|
impl IEntry with fn get_overwrite_mode(self) -> Bool {
  self.as_entry().get_overwrite_mode()
}

///|
impl IEntry with fn get_placeholder_text(self) -> String? {
  self.as_entry().get_placeholder_text()
}

///|
impl IEntry with fn get_progress_fraction(self) -> Double {
  self.as_entry().get_progress_fraction()
}

///|
impl IEntry with fn get_progress_pulse_step(self) -> Double {
  self.as_entry().get_progress_pulse_step()
}

///|
impl IEntry with fn get_tabs(self) -> @pango.TabArray? {
  self.as_entry().get_tabs()
}

///|
impl IEntry with fn get_text_length(self) -> UInt {
  self.as_entry().get_text_length()
}

///|
impl IEntry with fn get_visibility(self) -> Bool {
  self.as_entry().get_visibility()
}

///|
impl IEntry with fn grab_focus_without_selecting(self) -> Bool {
  self.as_entry().grab_focus_without_selecting()
}

///|
impl IEntry with fn progress_pulse(self) -> Unit {
  self.as_entry().progress_pulse()
}

///|
impl IEntry with fn reset_im_context(self) -> Unit {
  self.as_entry().reset_im_context()
}

///|
impl IEntry with fn set_activates_default(self, setting) -> Unit {
  self.as_entry().set_activates_default(setting)
}

///|
impl IEntry with fn set_alignment(self, xalign) -> Unit {
  self.as_entry().set_alignment(xalign)
}

///|
impl IEntry with fn set_attributes(self, attrs) -> Unit {
  self.as_entry().set_attributes(attrs)
}

///|
impl IEntry with fn set_buffer(self, buffer) -> Unit {
  self.as_entry().set_buffer(buffer)
}

///|
impl IEntry with fn set_extra_menu(self, model) -> Unit {
  self.as_entry().set_extra_menu(model)
}

///|
impl IEntry with fn set_has_frame(self, setting) -> Unit {
  self.as_entry().set_has_frame(setting)
}

///|
impl IEntry with fn set_icon_activatable(self, icon_pos, activatable) -> Unit {
  self.as_entry().set_icon_activatable(icon_pos, activatable)
}

///|
impl IEntry with fn set_icon_drag_source(self, icon_pos, provider, actions) -> Unit {
  self.as_entry().set_icon_drag_source(icon_pos, provider, actions)
}

///|
impl IEntry with fn set_icon_from_gicon(self, icon_pos, icon) -> Unit {
  self.as_entry().set_icon_from_gicon(icon_pos, icon)
}

///|
impl IEntry with fn set_icon_from_icon_name(self, icon_pos, icon_name) -> Unit {
  self.as_entry().set_icon_from_icon_name(icon_pos, icon_name)
}

///|
impl IEntry with fn set_icon_from_paintable(self, icon_pos, paintable) -> Unit {
  self.as_entry().set_icon_from_paintable(icon_pos, paintable)
}

///|
impl IEntry with fn set_icon_sensitive(self, icon_pos, sensitive) -> Unit {
  self.as_entry().set_icon_sensitive(icon_pos, sensitive)
}

///|
impl IEntry with fn set_icon_tooltip_markup(self, icon_pos, tooltip) -> Unit {
  self.as_entry().set_icon_tooltip_markup(icon_pos, tooltip)
}

///|
impl IEntry with fn set_icon_tooltip_text(self, icon_pos, tooltip) -> Unit {
  self.as_entry().set_icon_tooltip_text(icon_pos, tooltip)
}

///|
impl IEntry with fn set_input_hints(self, hints) -> Unit {
  self.as_entry().set_input_hints(hints)
}

///|
impl IEntry with fn set_input_purpose(self, purpose) -> Unit {
  self.as_entry().set_input_purpose(purpose)
}

///|
impl IEntry with fn set_invisible_char(self, ch) -> Unit {
  self.as_entry().set_invisible_char(ch)
}

///|
impl IEntry with fn set_max_length(self, max) -> Unit {
  self.as_entry().set_max_length(max)
}

///|
impl IEntry with fn set_menu_entry_icon_text(self, icon_pos, text) -> Unit {
  self.as_entry().set_menu_entry_icon_text(icon_pos, text)
}

///|
impl IEntry with fn set_overwrite_mode(self, overwrite) -> Unit {
  self.as_entry().set_overwrite_mode(overwrite)
}

///|
impl IEntry with fn set_placeholder_text(self, text) -> Unit {
  self.as_entry().set_placeholder_text(text)
}

///|
impl IEntry with fn set_progress_fraction(self, fraction) -> Unit {
  self.as_entry().set_progress_fraction(fraction)
}

///|
impl IEntry with fn set_progress_pulse_step(self, fraction) -> Unit {
  self.as_entry().set_progress_pulse_step(fraction)
}

///|
impl IEntry with fn set_tabs(self, tabs) -> Unit {
  self.as_entry().set_tabs(tabs)
}

///|
impl IEntry with fn set_visibility(self, visible) -> Unit {
  self.as_entry().set_visibility(visible)
}

///|
impl IEntry with fn unset_invisible_char(self) -> Unit {
  self.as_entry().unset_invisible_char()
}

///|
impl IEntry with fn connect_activate(self, f) -> UInt64 {
  self.as_entry().connect_activate(f)
}

///|
impl IEntry with fn connect_icon_press(self, f) -> UInt64 {
  self.as_entry().connect_icon_press(f)
}

///|
impl IEntry with fn connect_icon_release(self, f) -> UInt64 {
  self.as_entry().connect_icon_release(f)
}

///|
pub fn Entry::as_widget(self : Entry) -> Widget = "%identity"

///|
pub impl IWidget for Entry with fn as_widget(self) {
  self.as_widget()
}

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

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

///|
pub fn Entry::as_editable(self : Entry) -> Editable = "%identity"

///|
pub impl IEditable for Entry with fn as_editable(self) {
  self.as_editable()
}