// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IListBox {
  fn as_list_box(Self) -> ListBox
  fn append(Self, &IWidget) -> Unit = _
  fn drag_highlight_row(Self, &IListBoxRow) -> Unit = _
  fn drag_unhighlight_row(Self) -> Unit = _
  fn get_activate_on_single_click(Self) -> Bool = _
  fn get_adjustment(Self) -> Adjustment? = _
  fn get_row_at_index(Self, Int) -> ListBoxRow? = _
  fn get_row_at_y(Self, Int) -> ListBoxRow? = _
  fn get_selected_row(Self) -> ListBoxRow? = _
  fn get_selected_rows(Self) -> Array[ListBoxRow] = _
  fn get_selection_mode(Self) -> SelectionMode = _
  fn get_show_separators(Self) -> Bool = _
  fn get_tab_behavior(Self) -> ListTabBehavior = _
  fn insert(Self, &IWidget, Int) -> Unit = _
  fn invalidate_filter(Self) -> Unit = _
  fn invalidate_headers(Self) -> Unit = _
  fn invalidate_sort(Self) -> Unit = _
  fn prepend(Self, &IWidget) -> Unit = _
  fn remove(Self, &IWidget) -> Unit = _
  fn remove_all(Self) -> Unit = _
  fn select_all(Self) -> Unit = _
  fn select_row(Self, &IListBoxRow?) -> Unit = _
  fn set_activate_on_single_click(Self, Bool) -> Unit = _
  fn set_adjustment(Self, &IAdjustment?) -> Unit = _
  fn set_placeholder(Self, &IWidget?) -> Unit = _
  fn set_selection_mode(Self, SelectionMode) -> Unit = _
  fn set_show_separators(Self, Bool) -> Unit = _
  fn set_tab_behavior(Self, ListTabBehavior) -> Unit = _
  fn unselect_all(Self) -> Unit = _
  fn unselect_row(Self, &IListBoxRow) -> Unit = _
  fn connect_activate_cursor_row(Self, (ListBox) -> Unit) -> UInt64 = _
  fn connect_move_cursor(Self, (ListBox, MovementStep, Int, Bool, Bool) -> Unit) -> UInt64 = _
  fn connect_row_activated(Self, (ListBox, ListBoxRow) -> Unit) -> UInt64 = _
  fn connect_row_selected(Self, (ListBox, ListBoxRow?) -> Unit) -> UInt64 = _
  fn connect_select_all(Self, (ListBox) -> Unit) -> UInt64 = _
  fn connect_selected_rows_changed(Self, (ListBox) -> Unit) -> UInt64 = _
  fn connect_toggle_cursor_row(Self, (ListBox) -> Unit) -> UInt64 = _
  fn connect_unselect_all(Self, (ListBox) -> Unit) -> UInt64 = _
  fn set_filter_func(Self, (ListBoxRow) -> Bool) -> Unit = _
  fn set_header_func(Self, (ListBoxRow, ListBoxRow?) -> Unit) -> Unit = _
}

///|
pub impl IListBox for ListBox with fn as_list_box(self) {
  self
}

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

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

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

///|
#borrow(self_, row)
extern "c" fn moonbit_gtk_list_box_drag_highlight_row(
  self_ : ListBox,
  row : ListBoxRow,
) = "moonbit_gtk_list_box_drag_highlight_row"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.drag_highlight_row.html).
pub fn ListBox::drag_highlight_row(self : ListBox, row : &IListBoxRow) -> Unit {
  moonbit_gtk_list_box_drag_highlight_row(self, row.as_list_box_row())
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.drag_unhighlight_row.html).
#borrow(self)
pub extern "c" fn ListBox::drag_unhighlight_row(self : ListBox) = "moonbit_gtk_list_box_drag_unhighlight_row"

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

///|
#borrow(self_)
extern "c" fn moonbit_gtk_list_box_get_adjustment(
  self_ : ListBox,
) -> @glib.Nullable[Adjustment] = "moonbit_gtk_list_box_get_adjustment"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_adjustment.html).
pub fn ListBox::get_adjustment(self : ListBox) -> Adjustment? {
  let raw_result = moonbit_gtk_list_box_get_adjustment(self)
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_list_box_get_row_at_index(
  self_ : ListBox,
  index_ : Int,
) -> @glib.Nullable[ListBoxRow] = "moonbit_gtk_list_box_get_row_at_index"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_row_at_index.html).
pub fn ListBox::get_row_at_index(self : ListBox, index_ : Int) -> ListBoxRow? {
  let raw_result = moonbit_gtk_list_box_get_row_at_index(self, index_)
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_list_box_get_row_at_y(
  self_ : ListBox,
  y : Int,
) -> @glib.Nullable[ListBoxRow] = "moonbit_gtk_list_box_get_row_at_y"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_row_at_y.html).
pub fn ListBox::get_row_at_y(self : ListBox, y : Int) -> ListBoxRow? {
  let raw_result = moonbit_gtk_list_box_get_row_at_y(self, y)
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_list_box_get_selected_row(
  self_ : ListBox,
) -> @glib.Nullable[ListBoxRow] = "moonbit_gtk_list_box_get_selected_row"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_selected_row.html).
pub fn ListBox::get_selected_row(self : ListBox) -> ListBoxRow? {
  let raw_result = moonbit_gtk_list_box_get_selected_row(self)
  raw_result.to_option()
}

///|
#borrow(self_, result)
extern "c" fn moonbit_gtk_list_box_get_selected_rows(
  self_ : ListBox,
  result : Ref[FixedArray[ListBoxRow]],
) = "moonbit_gtk_list_box_get_selected_rows"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_selected_rows.html).
pub fn ListBox::get_selected_rows(self : ListBox) -> Array[ListBoxRow] {
  let result_ref : Ref[FixedArray[ListBoxRow]] = Ref([])
  moonbit_gtk_list_box_get_selected_rows(self, result_ref)
  let values : Array[ListBoxRow] = Array::new(capacity=result_ref.val.length())
  for value in result_ref.val {
    values.push(value)
  }
  values
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_selection_mode.html).
#borrow(self)
pub extern "c" fn ListBox::get_selection_mode(self : ListBox) -> SelectionMode = "moonbit_gtk_list_box_get_selection_mode"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.get_tab_behavior.html).
#borrow(self)
pub extern "c" fn ListBox::get_tab_behavior(self : ListBox) -> ListTabBehavior = "moonbit_gtk_list_box_get_tab_behavior"

///|
#borrow(self_, child)
extern "c" fn moonbit_gtk_list_box_insert(
  self_ : ListBox,
  child : Widget,
  position : Int,
) = "moonbit_gtk_list_box_insert"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.insert.html).
pub fn ListBox::insert(
  self : ListBox,
  child : &IWidget,
  position : Int,
) -> Unit {
  moonbit_gtk_list_box_insert(self, child.as_widget(), position)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.invalidate_filter.html).
#borrow(self)
pub extern "c" fn ListBox::invalidate_filter(self : ListBox) = "moonbit_gtk_list_box_invalidate_filter"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.invalidate_headers.html).
#borrow(self)
pub extern "c" fn ListBox::invalidate_headers(self : ListBox) = "moonbit_gtk_list_box_invalidate_headers"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.invalidate_sort.html).
#borrow(self)
pub extern "c" fn ListBox::invalidate_sort(self : ListBox) = "moonbit_gtk_list_box_invalidate_sort"

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

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

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

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.remove_all.html).
#borrow(self)
pub extern "c" fn ListBox::remove_all(self : ListBox) = "moonbit_gtk_list_box_remove_all"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.select_all.html).
#borrow(self)
pub extern "c" fn ListBox::select_all(self : ListBox) = "moonbit_gtk_list_box_select_all"

///|
#borrow(self_, row)
extern "c" fn moonbit_gtk_list_box_select_row(
  self_ : ListBox,
  row : @glib.Nullable[ListBoxRow],
) = "moonbit_gtk_list_box_select_row"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.select_row.html).
pub fn ListBox::select_row(self : ListBox, row : &IListBoxRow?) -> Unit {
  moonbit_gtk_list_box_select_row(
    self,
    match row {
      Some(v) => @glib.Nullable::some(v.as_list_box_row())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_activate_on_single_click.html).
#borrow(self)
pub extern "c" fn ListBox::set_activate_on_single_click(
  self : ListBox,
  single : Bool,
) = "moonbit_gtk_list_box_set_activate_on_single_click"

///|
#borrow(self_, adjustment)
extern "c" fn moonbit_gtk_list_box_set_adjustment(
  self_ : ListBox,
  adjustment : @glib.Nullable[Adjustment],
) = "moonbit_gtk_list_box_set_adjustment"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_adjustment.html).
pub fn ListBox::set_adjustment(
  self : ListBox,
  adjustment : &IAdjustment?,
) -> Unit {
  moonbit_gtk_list_box_set_adjustment(
    self,
    match adjustment {
      Some(v) => @glib.Nullable::some(v.as_adjustment())
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, placeholder)
extern "c" fn moonbit_gtk_list_box_set_placeholder(
  self_ : ListBox,
  placeholder : @glib.Nullable[Widget],
) = "moonbit_gtk_list_box_set_placeholder"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_selection_mode.html).
#borrow(self)
pub extern "c" fn ListBox::set_selection_mode(
  self : ListBox,
  mode : SelectionMode,
) = "moonbit_gtk_list_box_set_selection_mode"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_show_separators.html).
#borrow(self)
pub extern "c" fn ListBox::set_show_separators(
  self : ListBox,
  show_separators : Bool,
) = "moonbit_gtk_list_box_set_show_separators"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_tab_behavior.html).
#borrow(self)
pub extern "c" fn ListBox::set_tab_behavior(
  self : ListBox,
  behavior : ListTabBehavior,
) = "moonbit_gtk_list_box_set_tab_behavior"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.unselect_all.html).
#borrow(self)
pub extern "c" fn ListBox::unselect_all(self : ListBox) = "moonbit_gtk_list_box_unselect_all"

///|
#borrow(self_, row)
extern "c" fn moonbit_gtk_list_box_unselect_row(
  self_ : ListBox,
  row : ListBoxRow,
) = "moonbit_gtk_list_box_unselect_row"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.unselect_row.html).
pub fn ListBox::unselect_row(self : ListBox, row : &IListBoxRow) -> Unit {
  moonbit_gtk_list_box_unselect_row(self, row.as_list_box_row())
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_activate_cursor_row(
  instance : ListBox,
  function : FuncRef[(ListBox, (ListBox) -> Unit) -> Unit],
  closure : (ListBox) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_activate_cursor_row"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.activate-cursor-row.html).
pub fn ListBox::connect_activate_cursor_row(
  self : ListBox,
  f : (ListBox) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_activate_cursor_row(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_move_cursor(
  instance : ListBox,
  function : FuncRef[
    (
      ListBox,
      MovementStep,
      Int,
      Bool,
      Bool,
      (ListBox, MovementStep, Int, Bool, Bool) -> Unit,
    ) -> Unit,
  ],
  closure : (ListBox, MovementStep, Int, Bool, Bool) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_move_cursor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.move-cursor.html).
pub fn ListBox::connect_move_cursor(
  self : ListBox,
  f : (ListBox, MovementStep, Int, Bool, Bool) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_move_cursor(
    self,
    fn(instance_, step, count, extend_, modify, f) {
      f(instance_, step, count, extend_, modify)
    },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_row_activated(
  instance : ListBox,
  function : FuncRef[
    (ListBox, ListBoxRow, (ListBox, ListBoxRow) -> Unit) -> Unit,
  ],
  closure : (ListBox, ListBoxRow) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_row_activated"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.row-activated.html).
pub fn ListBox::connect_row_activated(
  self : ListBox,
  f : (ListBox, ListBoxRow) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_row_activated(
    self,
    fn(instance_, row, f) { f(instance_, row) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_row_selected(
  instance : ListBox,
  function : FuncRef[
    (ListBox, ListBoxRow?, (ListBox, ListBoxRow?) -> Unit) -> Unit,
  ],
  closure : (ListBox, ListBoxRow?) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_row_selected"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.row-selected.html).
pub fn ListBox::connect_row_selected(
  self : ListBox,
  f : (ListBox, ListBoxRow?) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_row_selected(
    self,
    fn(instance_, row, f) { f(instance_, row) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_select_all(
  instance : ListBox,
  function : FuncRef[(ListBox, (ListBox) -> Unit) -> Unit],
  closure : (ListBox) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_select_all"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.select-all.html).
pub fn ListBox::connect_select_all(
  self : ListBox,
  f : (ListBox) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_select_all(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_selected_rows_changed(
  instance : ListBox,
  function : FuncRef[(ListBox, (ListBox) -> Unit) -> Unit],
  closure : (ListBox) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_selected_rows_changed"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.selected-rows-changed.html).
pub fn ListBox::connect_selected_rows_changed(
  self : ListBox,
  f : (ListBox) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_selected_rows_changed(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_toggle_cursor_row(
  instance : ListBox,
  function : FuncRef[(ListBox, (ListBox) -> Unit) -> Unit],
  closure : (ListBox) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_toggle_cursor_row"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.toggle-cursor-row.html).
pub fn ListBox::connect_toggle_cursor_row(
  self : ListBox,
  f : (ListBox) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_toggle_cursor_row(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_connect_unselect_all(
  instance : ListBox,
  function : FuncRef[(ListBox, (ListBox) -> Unit) -> Unit],
  closure : (ListBox) -> Unit,
) -> UInt64 = "moonbit_gtk_list_box_connect_unselect_all"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.ListBox.unselect-all.html).
pub fn ListBox::connect_unselect_all(
  self : ListBox,
  f : (ListBox) -> Unit,
) -> UInt64 {
  gtk_list_box_connect_unselect_all(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_set_filter_func(
  instance : ListBox,
  function : FuncRef[(ListBoxRow, (ListBoxRow) -> Bool) -> Bool],
  closure : (ListBoxRow) -> Bool,
) -> Unit = "moonbit_gtk_list_box_set_filter_func"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_filter_func.html).
pub fn ListBox::set_filter_func(
  self : ListBox,
  callback : (ListBoxRow) -> Bool,
) -> Unit {
  gtk_list_box_set_filter_func(self, fn(row, f) { f(row) }, callback)
}

///|
#borrow(instance)
extern "c" fn gtk_list_box_set_header_func(
  instance : ListBox,
  function : FuncRef[
    (ListBoxRow, ListBoxRow?, (ListBoxRow, ListBoxRow?) -> Unit) -> Unit,
  ],
  closure : (ListBoxRow, ListBoxRow?) -> Unit,
) -> Unit = "moonbit_gtk_list_box_set_header_func"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.ListBox.set_header_func.html).
pub fn ListBox::set_header_func(
  self : ListBox,
  callback : (ListBoxRow, ListBoxRow?) -> Unit,
) -> Unit {
  gtk_list_box_set_header_func(
    self,
    fn(row, before, f) { f(row, before) },
    callback,
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.ListBox.accept-unpaired-release.html).
pub fn ListBox::get_accept_unpaired_release(self : ListBox) -> Bool {
  moonbit_gtk_list_box_get_accept_unpaired_release(self) != 0
}

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

///|
pub fn ListBox::set_accept_unpaired_release(
  self : ListBox,
  value : Bool,
) -> Unit {
  moonbit_gtk_list_box_set_accept_unpaired_release(
    self,
    if value {
      1
    } else {
      0
    },
  )
}

///|
impl IListBox with fn append(self, child) -> Unit {
  self.as_list_box().append(child)
}

///|
impl IListBox with fn drag_highlight_row(self, row) -> Unit {
  self.as_list_box().drag_highlight_row(row)
}

///|
impl IListBox with fn drag_unhighlight_row(self) -> Unit {
  self.as_list_box().drag_unhighlight_row()
}

///|
impl IListBox with fn get_activate_on_single_click(self) -> Bool {
  self.as_list_box().get_activate_on_single_click()
}

///|
impl IListBox with fn get_adjustment(self) -> Adjustment? {
  self.as_list_box().get_adjustment()
}

///|
impl IListBox with fn get_row_at_index(self, index_) -> ListBoxRow? {
  self.as_list_box().get_row_at_index(index_)
}

///|
impl IListBox with fn get_row_at_y(self, y) -> ListBoxRow? {
  self.as_list_box().get_row_at_y(y)
}

///|
impl IListBox with fn get_selected_row(self) -> ListBoxRow? {
  self.as_list_box().get_selected_row()
}

///|
impl IListBox with fn get_selected_rows(self) -> Array[ListBoxRow] {
  self.as_list_box().get_selected_rows()
}

///|
impl IListBox with fn get_selection_mode(self) -> SelectionMode {
  self.as_list_box().get_selection_mode()
}

///|
impl IListBox with fn get_show_separators(self) -> Bool {
  self.as_list_box().get_show_separators()
}

///|
impl IListBox with fn get_tab_behavior(self) -> ListTabBehavior {
  self.as_list_box().get_tab_behavior()
}

///|
impl IListBox with fn insert(self, child, position) -> Unit {
  self.as_list_box().insert(child, position)
}

///|
impl IListBox with fn invalidate_filter(self) -> Unit {
  self.as_list_box().invalidate_filter()
}

///|
impl IListBox with fn invalidate_headers(self) -> Unit {
  self.as_list_box().invalidate_headers()
}

///|
impl IListBox with fn invalidate_sort(self) -> Unit {
  self.as_list_box().invalidate_sort()
}

///|
impl IListBox with fn prepend(self, child) -> Unit {
  self.as_list_box().prepend(child)
}

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

///|
impl IListBox with fn remove_all(self) -> Unit {
  self.as_list_box().remove_all()
}

///|
impl IListBox with fn select_all(self) -> Unit {
  self.as_list_box().select_all()
}

///|
impl IListBox with fn select_row(self, row) -> Unit {
  self.as_list_box().select_row(row)
}

///|
impl IListBox with fn set_activate_on_single_click(self, single) -> Unit {
  self.as_list_box().set_activate_on_single_click(single)
}

///|
impl IListBox with fn set_adjustment(self, adjustment) -> Unit {
  self.as_list_box().set_adjustment(adjustment)
}

///|
impl IListBox with fn set_placeholder(self, placeholder) -> Unit {
  self.as_list_box().set_placeholder(placeholder)
}

///|
impl IListBox with fn set_selection_mode(self, mode) -> Unit {
  self.as_list_box().set_selection_mode(mode)
}

///|
impl IListBox with fn set_show_separators(self, show_separators) -> Unit {
  self.as_list_box().set_show_separators(show_separators)
}

///|
impl IListBox with fn set_tab_behavior(self, behavior) -> Unit {
  self.as_list_box().set_tab_behavior(behavior)
}

///|
impl IListBox with fn unselect_all(self) -> Unit {
  self.as_list_box().unselect_all()
}

///|
impl IListBox with fn unselect_row(self, row) -> Unit {
  self.as_list_box().unselect_row(row)
}

///|
impl IListBox with fn connect_activate_cursor_row(self, f) -> UInt64 {
  self.as_list_box().connect_activate_cursor_row(f)
}

///|
impl IListBox with fn connect_move_cursor(self, f) -> UInt64 {
  self.as_list_box().connect_move_cursor(f)
}

///|
impl IListBox with fn connect_row_activated(self, f) -> UInt64 {
  self.as_list_box().connect_row_activated(f)
}

///|
impl IListBox with fn connect_row_selected(self, f) -> UInt64 {
  self.as_list_box().connect_row_selected(f)
}

///|
impl IListBox with fn connect_select_all(self, f) -> UInt64 {
  self.as_list_box().connect_select_all(f)
}

///|
impl IListBox with fn connect_selected_rows_changed(self, f) -> UInt64 {
  self.as_list_box().connect_selected_rows_changed(f)
}

///|
impl IListBox with fn connect_toggle_cursor_row(self, f) -> UInt64 {
  self.as_list_box().connect_toggle_cursor_row(f)
}

///|
impl IListBox with fn connect_unselect_all(self, f) -> UInt64 {
  self.as_list_box().connect_unselect_all(f)
}

///|
impl IListBox with fn set_filter_func(self, callback) -> Unit {
  self.as_list_box().set_filter_func(callback)
}

///|
impl IListBox with fn set_header_func(self, callback) -> Unit {
  self.as_list_box().set_header_func(callback)
}

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

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

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

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