// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IStackPage {
  fn as_stack_page(Self) -> StackPage
  fn get_child(Self) -> Widget = _
  fn get_icon_name(Self) -> String? = _
  fn get_name(Self) -> String? = _
  fn get_needs_attention(Self) -> Bool = _
  fn get_title(Self) -> String? = _
  fn get_use_underline(Self) -> Bool = _
  fn get_visible(Self) -> Bool = _
  fn set_icon_name(Self, String) -> Unit = _
  fn set_name(Self, String) -> Unit = _
  fn set_needs_attention(Self, Bool) -> Unit = _
  fn set_title(Self, String) -> Unit = _
  fn set_use_underline(Self, Bool) -> Unit = _
  fn set_visible(Self, Bool) -> Unit = _
}

///|
pub impl IStackPage for StackPage with fn as_stack_page(self) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.StackPage.get_child.html).
#borrow(self)
pub extern "c" fn StackPage::get_child(self : StackPage) -> Widget = "moonbit_gtk_stack_page_get_child"

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

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

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

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

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

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

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

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

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

///|
#borrow(self_, setting)
extern "c" fn moonbit_gtk_stack_page_set_icon_name(
  self_ : StackPage,
  setting : Bytes,
) = "moonbit_gtk_stack_page_set_icon_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.StackPage.set_icon_name.html).
pub fn StackPage::set_icon_name(self : StackPage, setting : String) -> Unit {
  moonbit_gtk_stack_page_set_icon_name(self, @encoding/utf8.encode(setting))
}

///|
#borrow(self_, setting)
extern "c" fn moonbit_gtk_stack_page_set_name(
  self_ : StackPage,
  setting : Bytes,
) = "moonbit_gtk_stack_page_set_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.StackPage.set_name.html).
pub fn StackPage::set_name(self : StackPage, setting : String) -> Unit {
  moonbit_gtk_stack_page_set_name(self, @encoding/utf8.encode(setting))
}

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

///|
#borrow(self_, setting)
extern "c" fn moonbit_gtk_stack_page_set_title(
  self_ : StackPage,
  setting : Bytes,
) = "moonbit_gtk_stack_page_set_title"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.StackPage.set_title.html).
pub fn StackPage::set_title(self : StackPage, setting : String) -> Unit {
  moonbit_gtk_stack_page_set_title(self, @encoding/utf8.encode(setting))
}

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

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

///|
impl IStackPage with fn get_child(self) -> Widget {
  self.as_stack_page().get_child()
}

///|
impl IStackPage with fn get_icon_name(self) -> String? {
  self.as_stack_page().get_icon_name()
}

///|
impl IStackPage with fn get_name(self) -> String? {
  self.as_stack_page().get_name()
}

///|
impl IStackPage with fn get_needs_attention(self) -> Bool {
  self.as_stack_page().get_needs_attention()
}

///|
impl IStackPage with fn get_title(self) -> String? {
  self.as_stack_page().get_title()
}

///|
impl IStackPage with fn get_use_underline(self) -> Bool {
  self.as_stack_page().get_use_underline()
}

///|
impl IStackPage with fn get_visible(self) -> Bool {
  self.as_stack_page().get_visible()
}

///|
impl IStackPage with fn set_icon_name(self, setting) -> Unit {
  self.as_stack_page().set_icon_name(setting)
}

///|
impl IStackPage with fn set_name(self, setting) -> Unit {
  self.as_stack_page().set_name(setting)
}

///|
impl IStackPage with fn set_needs_attention(self, setting) -> Unit {
  self.as_stack_page().set_needs_attention(setting)
}

///|
impl IStackPage with fn set_title(self, setting) -> Unit {
  self.as_stack_page().set_title(setting)
}

///|
impl IStackPage with fn set_use_underline(self, setting) -> Unit {
  self.as_stack_page().set_use_underline(setting)
}

///|
impl IStackPage with fn set_visible(self, visible) -> Unit {
  self.as_stack_page().set_visible(visible)
}

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

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