// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IPreferencesRow {
  fn as_preferences_row(Self) -> PreferencesRow
  fn get_title(Self) -> String = _
  fn get_title_selectable(Self) -> Bool = _
  fn get_use_markup(Self) -> Bool = _
  fn get_use_underline(Self) -> Bool = _
  fn set_title(Self, String) -> Unit = _
  fn set_title_selectable(Self, Bool) -> Unit = _
  fn set_use_markup(Self, Bool) -> Unit = _
  fn set_use_underline(Self, Bool) -> Unit = _
}

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

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

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

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.PreferencesRow.get_title.html).
pub fn PreferencesRow::get_title(self : PreferencesRow) -> String {
  @encoding/utf8.decode_lossy(moonbit_adw_preferences_row_get_title(self))
}

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

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

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

///|
#borrow(self_, title)
extern "c" fn moonbit_adw_preferences_row_set_title(
  self_ : PreferencesRow,
  title : Bytes,
) = "moonbit_adw_preferences_row_set_title"

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

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.PreferencesRow.set_title_selectable.html).
#borrow(self)
pub extern "c" fn PreferencesRow::set_title_selectable(
  self : PreferencesRow,
  title_selectable : Bool,
) = "moonbit_adw_preferences_row_set_title_selectable"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.PreferencesRow.set_use_markup.html).
#borrow(self)
pub extern "c" fn PreferencesRow::set_use_markup(
  self : PreferencesRow,
  use_markup : Bool,
) = "moonbit_adw_preferences_row_set_use_markup"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.PreferencesRow.set_use_underline.html).
#borrow(self)
pub extern "c" fn PreferencesRow::set_use_underline(
  self : PreferencesRow,
  use_underline : Bool,
) = "moonbit_adw_preferences_row_set_use_underline"

///|
impl IPreferencesRow with fn get_title(self) -> String {
  self.as_preferences_row().get_title()
}

///|
impl IPreferencesRow with fn get_title_selectable(self) -> Bool {
  self.as_preferences_row().get_title_selectable()
}

///|
impl IPreferencesRow with fn get_use_markup(self) -> Bool {
  self.as_preferences_row().get_use_markup()
}

///|
impl IPreferencesRow with fn get_use_underline(self) -> Bool {
  self.as_preferences_row().get_use_underline()
}

///|
impl IPreferencesRow with fn set_title(self, title) -> Unit {
  self.as_preferences_row().set_title(title)
}

///|
impl IPreferencesRow with fn set_title_selectable(self, title_selectable) -> Unit {
  self.as_preferences_row().set_title_selectable(title_selectable)
}

///|
impl IPreferencesRow with fn set_use_markup(self, use_markup) -> Unit {
  self.as_preferences_row().set_use_markup(use_markup)
}

///|
impl IPreferencesRow with fn set_use_underline(self, use_underline) -> Unit {
  self.as_preferences_row().set_use_underline(use_underline)
}

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

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

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

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

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

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