// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ActionRow.html).
pub type ActionRow

///|
pub(open) trait IActionRow {
  fn as_action_row(Self) -> ActionRow
  fn activate(Self) -> Unit = _
  fn add_prefix(Self, &@gtk.IWidget) -> Unit = _
  fn add_suffix(Self, &@gtk.IWidget) -> Unit = _
  fn get_activatable_widget(Self) -> @gtk.Widget? = _
  fn get_subtitle(Self) -> String? = _
  fn get_subtitle_lines(Self) -> Int = _
  fn get_subtitle_selectable(Self) -> Bool = _
  fn get_title_lines(Self) -> Int = _
  fn remove(Self, &@gtk.IWidget) -> Unit = _
  fn set_activatable_widget(Self, &@gtk.IWidget?) -> Unit = _
  fn set_subtitle(Self, String) -> Unit = _
  fn set_subtitle_lines(Self, Int) -> Unit = _
  fn set_subtitle_selectable(Self, Bool) -> Unit = _
  fn set_title_lines(Self, Int) -> Unit = _
  fn connect_activated(Self, (ActionRow) -> Unit) -> UInt64 = _
}

///|
pub impl IActionRow for ActionRow with fn as_action_row(self) {
  self
}

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

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/ctor.ActionRow.new.html).
pub extern "c" fn ActionRow::new() -> ActionRow = "moonbit_adw_action_row_new"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.activate.html).
#borrow(self)
pub extern "c" fn ActionRow::activate(self : ActionRow) = "moonbit_adw_action_row_activate"

///|
#borrow(self_, widget)
extern "c" fn moonbit_adw_action_row_add_prefix(
  self_ : ActionRow,
  widget : @gtk.Widget,
) = "moonbit_adw_action_row_add_prefix"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.add_prefix.html).
pub fn ActionRow::add_prefix(self : ActionRow, widget : &@gtk.IWidget) -> Unit {
  moonbit_adw_action_row_add_prefix(self, widget.as_widget())
}

///|
#borrow(self_, widget)
extern "c" fn moonbit_adw_action_row_add_suffix(
  self_ : ActionRow,
  widget : @gtk.Widget,
) = "moonbit_adw_action_row_add_suffix"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.add_suffix.html).
pub fn ActionRow::add_suffix(self : ActionRow, widget : &@gtk.IWidget) -> Unit {
  moonbit_adw_action_row_add_suffix(self, widget.as_widget())
}

///|
#borrow(self_)
extern "c" fn moonbit_adw_action_row_get_activatable_widget(
  self_ : ActionRow,
) -> @glib.Nullable[@gtk.Widget] = "moonbit_adw_action_row_get_activatable_widget"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.get_activatable_widget.html).
pub fn ActionRow::get_activatable_widget(self : ActionRow) -> @gtk.Widget? {
  let raw_result = moonbit_adw_action_row_get_activatable_widget(self)
  raw_result.to_option()
}

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

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.get_subtitle.html).
pub fn ActionRow::get_subtitle(self : ActionRow) -> String? {
  let result = moonbit_adw_action_row_get_subtitle(self)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.get_subtitle_lines.html).
#borrow(self)
pub extern "c" fn ActionRow::get_subtitle_lines(self : ActionRow) -> Int = "moonbit_adw_action_row_get_subtitle_lines"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.get_subtitle_selectable.html).
#borrow(self)
pub extern "c" fn ActionRow::get_subtitle_selectable(self : ActionRow) -> Bool = "moonbit_adw_action_row_get_subtitle_selectable"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.get_title_lines.html).
#borrow(self)
pub extern "c" fn ActionRow::get_title_lines(self : ActionRow) -> Int = "moonbit_adw_action_row_get_title_lines"

///|
#borrow(self_, widget)
extern "c" fn moonbit_adw_action_row_remove(
  self_ : ActionRow,
  widget : @gtk.Widget,
) = "moonbit_adw_action_row_remove"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.remove.html).
pub fn ActionRow::remove(self : ActionRow, widget : &@gtk.IWidget) -> Unit {
  moonbit_adw_action_row_remove(self, widget.as_widget())
}

///|
#borrow(self_, widget)
extern "c" fn moonbit_adw_action_row_set_activatable_widget(
  self_ : ActionRow,
  widget : @glib.Nullable[@gtk.Widget],
) = "moonbit_adw_action_row_set_activatable_widget"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.set_activatable_widget.html).
pub fn ActionRow::set_activatable_widget(
  self : ActionRow,
  widget : &@gtk.IWidget?,
) -> Unit {
  moonbit_adw_action_row_set_activatable_widget(
    self,
    match widget {
      Some(v) => @glib.Nullable::some(v.as_widget())
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, subtitle)
extern "c" fn moonbit_adw_action_row_set_subtitle(
  self_ : ActionRow,
  subtitle : Bytes,
) = "moonbit_adw_action_row_set_subtitle"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.set_subtitle.html).
pub fn ActionRow::set_subtitle(self : ActionRow, subtitle : String) -> Unit {
  moonbit_adw_action_row_set_subtitle(self, @encoding/utf8.encode(subtitle))
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.set_subtitle_lines.html).
#borrow(self)
pub extern "c" fn ActionRow::set_subtitle_lines(
  self : ActionRow,
  subtitle_lines : Int,
) = "moonbit_adw_action_row_set_subtitle_lines"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.set_subtitle_selectable.html).
#borrow(self)
pub extern "c" fn ActionRow::set_subtitle_selectable(
  self : ActionRow,
  subtitle_selectable : Bool,
) = "moonbit_adw_action_row_set_subtitle_selectable"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ActionRow.set_title_lines.html).
#borrow(self)
pub extern "c" fn ActionRow::set_title_lines(
  self : ActionRow,
  title_lines : Int,
) = "moonbit_adw_action_row_set_title_lines"

///|
#borrow(instance)
extern "c" fn adw_action_row_connect_activated(
  instance : ActionRow,
  function : FuncRef[(ActionRow, (ActionRow) -> Unit) -> Unit],
  closure : (ActionRow) -> Unit,
) -> UInt64 = "moonbit_adw_action_row_connect_activated"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/signal.ActionRow.activated.html).
pub fn ActionRow::connect_activated(
  self : ActionRow,
  f : (ActionRow) -> Unit,
) -> UInt64 {
  adw_action_row_connect_activated(self, fn(instance_, f) { f(instance_) }, f)
}

///|
impl IActionRow with fn activate(self) -> Unit {
  self.as_action_row().activate()
}

///|
impl IActionRow with fn add_prefix(self, widget) -> Unit {
  self.as_action_row().add_prefix(widget)
}

///|
impl IActionRow with fn add_suffix(self, widget) -> Unit {
  self.as_action_row().add_suffix(widget)
}

///|
impl IActionRow with fn get_activatable_widget(self) -> @gtk.Widget? {
  self.as_action_row().get_activatable_widget()
}

///|
impl IActionRow with fn get_subtitle(self) -> String? {
  self.as_action_row().get_subtitle()
}

///|
impl IActionRow with fn get_subtitle_lines(self) -> Int {
  self.as_action_row().get_subtitle_lines()
}

///|
impl IActionRow with fn get_subtitle_selectable(self) -> Bool {
  self.as_action_row().get_subtitle_selectable()
}

///|
impl IActionRow with fn get_title_lines(self) -> Int {
  self.as_action_row().get_title_lines()
}

///|
impl IActionRow with fn remove(self, widget) -> Unit {
  self.as_action_row().remove(widget)
}

///|
impl IActionRow with fn set_activatable_widget(self, widget) -> Unit {
  self.as_action_row().set_activatable_widget(widget)
}

///|
impl IActionRow with fn set_subtitle(self, subtitle) -> Unit {
  self.as_action_row().set_subtitle(subtitle)
}

///|
impl IActionRow with fn set_subtitle_lines(self, subtitle_lines) -> Unit {
  self.as_action_row().set_subtitle_lines(subtitle_lines)
}

///|
impl IActionRow with fn set_subtitle_selectable(self, subtitle_selectable) -> Unit {
  self.as_action_row().set_subtitle_selectable(subtitle_selectable)
}

///|
impl IActionRow with fn set_title_lines(self, title_lines) -> Unit {
  self.as_action_row().set_title_lines(title_lines)
}

///|
impl IActionRow with fn connect_activated(self, f) -> UInt64 {
  self.as_action_row().connect_activated(f)
}

///|
pub fn ActionRow::as_preferences_row(self : ActionRow) -> PreferencesRow = "%identity"

///|
pub impl IPreferencesRow for ActionRow with fn as_preferences_row(self) {
  self.as_preferences_row()
}

///|
pub fn ActionRow::as_gtk_list_box_row(self : ActionRow) -> @gtk.ListBoxRow = "%identity"

///|
pub impl @gtk.IListBoxRow for ActionRow with fn as_list_box_row(self) {
  self.as_gtk_list_box_row()
}

///|
pub fn ActionRow::as_gtk_widget(self : ActionRow) -> @gtk.Widget = "%identity"

///|
pub impl @gtk.IWidget for ActionRow with fn as_widget(self) {
  self.as_gtk_widget()
}

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

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