// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IToolbarView {
  fn as_toolbar_view(Self) -> ToolbarView
  fn add_bottom_bar(Self, &@gtk.IWidget) -> Unit = _
  fn add_top_bar(Self, &@gtk.IWidget) -> Unit = _
  fn get_bottom_bar_height(Self) -> Int = _
  fn get_bottom_bar_style(Self) -> ToolbarStyle = _
  fn get_content(Self) -> @gtk.Widget? = _
  fn get_extend_content_to_bottom_edge(Self) -> Bool = _
  fn get_extend_content_to_top_edge(Self) -> Bool = _
  fn get_reveal_bottom_bars(Self) -> Bool = _
  fn get_reveal_top_bars(Self) -> Bool = _
  fn get_top_bar_height(Self) -> Int = _
  fn get_top_bar_style(Self) -> ToolbarStyle = _
  fn remove(Self, &@gtk.IWidget) -> Unit = _
  fn set_bottom_bar_style(Self, ToolbarStyle) -> Unit = _
  fn set_content(Self, &@gtk.IWidget?) -> Unit = _
  fn set_extend_content_to_bottom_edge(Self, Bool) -> Unit = _
  fn set_extend_content_to_top_edge(Self, Bool) -> Unit = _
  fn set_reveal_bottom_bars(Self, Bool) -> Unit = _
  fn set_reveal_top_bars(Self, Bool) -> Unit = _
  fn set_top_bar_style(Self, ToolbarStyle) -> Unit = _
}

///|
pub impl IToolbarView for ToolbarView with fn as_toolbar_view(self) {
  self
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ToolbarView.set_bottom_bar_style.html).
#borrow(self)
pub extern "c" fn ToolbarView::set_bottom_bar_style(
  self : ToolbarView,
  style : ToolbarStyle,
) = "moonbit_adw_toolbar_view_set_bottom_bar_style"

///|
#borrow(self_, content)
extern "c" fn moonbit_adw_toolbar_view_set_content(
  self_ : ToolbarView,
  content : @glib.Nullable[@gtk.Widget],
) = "moonbit_adw_toolbar_view_set_content"

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

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ToolbarView.set_extend_content_to_bottom_edge.html).
#borrow(self)
pub extern "c" fn ToolbarView::set_extend_content_to_bottom_edge(
  self : ToolbarView,
  extend_ : Bool,
) = "moonbit_adw_toolbar_view_set_extend_content_to_bottom_edge"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ToolbarView.set_extend_content_to_top_edge.html).
#borrow(self)
pub extern "c" fn ToolbarView::set_extend_content_to_top_edge(
  self : ToolbarView,
  extend_ : Bool,
) = "moonbit_adw_toolbar_view_set_extend_content_to_top_edge"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ToolbarView.set_reveal_bottom_bars.html).
#borrow(self)
pub extern "c" fn ToolbarView::set_reveal_bottom_bars(
  self : ToolbarView,
  reveal : Bool,
) = "moonbit_adw_toolbar_view_set_reveal_bottom_bars"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ToolbarView.set_reveal_top_bars.html).
#borrow(self)
pub extern "c" fn ToolbarView::set_reveal_top_bars(
  self : ToolbarView,
  reveal : Bool,
) = "moonbit_adw_toolbar_view_set_reveal_top_bars"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.ToolbarView.set_top_bar_style.html).
#borrow(self)
pub extern "c" fn ToolbarView::set_top_bar_style(
  self : ToolbarView,
  style : ToolbarStyle,
) = "moonbit_adw_toolbar_view_set_top_bar_style"

///|
impl IToolbarView with fn add_bottom_bar(self, widget) -> Unit {
  self.as_toolbar_view().add_bottom_bar(widget)
}

///|
impl IToolbarView with fn add_top_bar(self, widget) -> Unit {
  self.as_toolbar_view().add_top_bar(widget)
}

///|
impl IToolbarView with fn get_bottom_bar_height(self) -> Int {
  self.as_toolbar_view().get_bottom_bar_height()
}

///|
impl IToolbarView with fn get_bottom_bar_style(self) -> ToolbarStyle {
  self.as_toolbar_view().get_bottom_bar_style()
}

///|
impl IToolbarView with fn get_content(self) -> @gtk.Widget? {
  self.as_toolbar_view().get_content()
}

///|
impl IToolbarView with fn get_extend_content_to_bottom_edge(self) -> Bool {
  self.as_toolbar_view().get_extend_content_to_bottom_edge()
}

///|
impl IToolbarView with fn get_extend_content_to_top_edge(self) -> Bool {
  self.as_toolbar_view().get_extend_content_to_top_edge()
}

///|
impl IToolbarView with fn get_reveal_bottom_bars(self) -> Bool {
  self.as_toolbar_view().get_reveal_bottom_bars()
}

///|
impl IToolbarView with fn get_reveal_top_bars(self) -> Bool {
  self.as_toolbar_view().get_reveal_top_bars()
}

///|
impl IToolbarView with fn get_top_bar_height(self) -> Int {
  self.as_toolbar_view().get_top_bar_height()
}

///|
impl IToolbarView with fn get_top_bar_style(self) -> ToolbarStyle {
  self.as_toolbar_view().get_top_bar_style()
}

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

///|
impl IToolbarView with fn set_bottom_bar_style(self, style) -> Unit {
  self.as_toolbar_view().set_bottom_bar_style(style)
}

///|
impl IToolbarView with fn set_content(self, content) -> Unit {
  self.as_toolbar_view().set_content(content)
}

///|
impl IToolbarView with fn set_extend_content_to_bottom_edge(self, extend_) -> Unit {
  self.as_toolbar_view().set_extend_content_to_bottom_edge(extend_)
}

///|
impl IToolbarView with fn set_extend_content_to_top_edge(self, extend_) -> Unit {
  self.as_toolbar_view().set_extend_content_to_top_edge(extend_)
}

///|
impl IToolbarView with fn set_reveal_bottom_bars(self, reveal) -> Unit {
  self.as_toolbar_view().set_reveal_bottom_bars(reveal)
}

///|
impl IToolbarView with fn set_reveal_top_bars(self, reveal) -> Unit {
  self.as_toolbar_view().set_reveal_top_bars(reveal)
}

///|
impl IToolbarView with fn set_top_bar_style(self, style) -> Unit {
  self.as_toolbar_view().set_top_bar_style(style)
}

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

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

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

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