// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IActionBar {
  fn as_action_bar(Self) -> ActionBar
  fn get_center_widget(Self) -> Widget? = _
  fn get_revealed(Self) -> Bool = _
  fn pack_end(Self, &IWidget) -> Unit = _
  fn pack_start(Self, &IWidget) -> Unit = _
  fn remove(Self, &IWidget) -> Unit = _
  fn set_center_widget(Self, &IWidget?) -> Unit = _
  fn set_revealed(Self, Bool) -> Unit = _
}

///|
pub impl IActionBar for ActionBar with fn as_action_bar(self) {
  self
}

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

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ActionBar.get_center_widget.html).
pub fn ActionBar::get_center_widget(self : ActionBar) -> Widget? {
  let raw_result = moonbit_gtk_action_bar_get_center_widget(self)
  raw_result.to_option()
}

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

///|
#borrow(self_, child)
extern "c" fn moonbit_gtk_action_bar_pack_end(
  self_ : ActionBar,
  child : Widget,
) = "moonbit_gtk_action_bar_pack_end"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ActionBar.pack_end.html).
pub fn ActionBar::pack_end(self : ActionBar, child : &IWidget) -> Unit {
  moonbit_gtk_action_bar_pack_end(self, child.as_widget())
}

///|
#borrow(self_, child)
extern "c" fn moonbit_gtk_action_bar_pack_start(
  self_ : ActionBar,
  child : Widget,
) = "moonbit_gtk_action_bar_pack_start"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ActionBar.pack_start.html).
pub fn ActionBar::pack_start(self : ActionBar, child : &IWidget) -> Unit {
  moonbit_gtk_action_bar_pack_start(self, child.as_widget())
}

///|
#borrow(self_, child)
extern "c" fn moonbit_gtk_action_bar_remove(self_ : ActionBar, child : Widget) = "moonbit_gtk_action_bar_remove"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ActionBar.remove.html).
pub fn ActionBar::remove(self : ActionBar, child : &IWidget) -> Unit {
  moonbit_gtk_action_bar_remove(self, child.as_widget())
}

///|
#borrow(self_, center_widget)
extern "c" fn moonbit_gtk_action_bar_set_center_widget(
  self_ : ActionBar,
  center_widget : @glib.Nullable[Widget],
) = "moonbit_gtk_action_bar_set_center_widget"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ActionBar.set_center_widget.html).
pub fn ActionBar::set_center_widget(
  self : ActionBar,
  center_widget : &IWidget?,
) -> Unit {
  moonbit_gtk_action_bar_set_center_widget(
    self,
    match center_widget {
      Some(v) => @glib.Nullable::some(v.as_widget())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ActionBar.set_revealed.html).
#borrow(self)
pub extern "c" fn ActionBar::set_revealed(self : ActionBar, revealed : Bool) = "moonbit_gtk_action_bar_set_revealed"

///|
impl IActionBar with fn get_center_widget(self) -> Widget? {
  self.as_action_bar().get_center_widget()
}

///|
impl IActionBar with fn get_revealed(self) -> Bool {
  self.as_action_bar().get_revealed()
}

///|
impl IActionBar with fn pack_end(self, child) -> Unit {
  self.as_action_bar().pack_end(child)
}

///|
impl IActionBar with fn pack_start(self, child) -> Unit {
  self.as_action_bar().pack_start(child)
}

///|
impl IActionBar with fn remove(self, child) -> Unit {
  self.as_action_bar().remove(child)
}

///|
impl IActionBar with fn set_center_widget(self, center_widget) -> Unit {
  self.as_action_bar().set_center_widget(center_widget)
}

///|
impl IActionBar with fn set_revealed(self, revealed) -> Unit {
  self.as_action_bar().set_revealed(revealed)
}

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

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

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

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