// GENERATED — DO NOT EDIT

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

///|
pub(open) trait INotebookPage {
  fn as_notebook_page(Self) -> NotebookPage
  fn get_child(Self) -> Widget = _
}

///|
pub impl INotebookPage for NotebookPage with fn as_notebook_page(self) {
  self
}

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

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.detachable.html).
pub fn NotebookPage::get_detachable(self : NotebookPage) -> Bool {
  moonbit_gtk_notebook_page_get_detachable(self) != 0
}

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

///|
pub fn NotebookPage::set_detachable(self : NotebookPage, value : Bool) -> Unit {
  moonbit_gtk_notebook_page_set_detachable(self, if value { 1 } else { 0 })
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.menu.html).
pub fn NotebookPage::get_menu(self : NotebookPage) -> Widget? {
  moonbit_gtk_notebook_page_get_menu(self).to_option()
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.menu-label.html).
pub fn NotebookPage::get_menu_label(self : NotebookPage) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_notebook_page_get_menu_label(self))
}

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

///|
pub fn NotebookPage::set_menu_label(
  self : NotebookPage,
  value : String,
) -> Unit {
  moonbit_gtk_notebook_page_set_menu_label(self, @encoding/utf8.encode(value))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.position.html).
#borrow(self_)
pub extern "c" fn NotebookPage::get_position(self_ : NotebookPage) -> Int = "moonbit_gtk_notebook_page_get_position"

///|
#borrow(self_, value)
pub extern "c" fn NotebookPage::set_position(self_ : NotebookPage, value : Int) = "moonbit_gtk_notebook_page_set_position"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.reorderable.html).
pub fn NotebookPage::get_reorderable(self : NotebookPage) -> Bool {
  moonbit_gtk_notebook_page_get_reorderable(self) != 0
}

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

///|
pub fn NotebookPage::set_reorderable(self : NotebookPage, value : Bool) -> Unit {
  moonbit_gtk_notebook_page_set_reorderable(self, if value { 1 } else { 0 })
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.tab.html).
pub fn NotebookPage::get_tab(self : NotebookPage) -> Widget? {
  moonbit_gtk_notebook_page_get_tab(self).to_option()
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.tab-expand.html).
pub fn NotebookPage::get_tab_expand(self : NotebookPage) -> Bool {
  moonbit_gtk_notebook_page_get_tab_expand(self) != 0
}

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

///|
pub fn NotebookPage::set_tab_expand(self : NotebookPage, value : Bool) -> Unit {
  moonbit_gtk_notebook_page_set_tab_expand(self, if value { 1 } else { 0 })
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.tab-fill.html).
pub fn NotebookPage::get_tab_fill(self : NotebookPage) -> Bool {
  moonbit_gtk_notebook_page_get_tab_fill(self) != 0
}

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

///|
pub fn NotebookPage::set_tab_fill(self : NotebookPage, value : Bool) -> Unit {
  moonbit_gtk_notebook_page_set_tab_fill(self, if value { 1 } else { 0 })
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.NotebookPage.tab-label.html).
pub fn NotebookPage::get_tab_label(self : NotebookPage) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_notebook_page_get_tab_label(self))
}

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

///|
pub fn NotebookPage::set_tab_label(self : NotebookPage, value : String) -> Unit {
  moonbit_gtk_notebook_page_set_tab_label(self, @encoding/utf8.encode(value))
}

///|
impl INotebookPage with fn get_child(self) -> Widget {
  self.as_notebook_page().get_child()
}

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

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