use crate::{ffi};
use glib::{prelude::*,translate::*};
glib::wrapper! {
#[doc(alias = "BisEnumListModel")]
pub struct EnumListModel(Object<ffi::BisEnumListModel, ffi::BisEnumListModelClass>) @implements gio::ListModel;
match fn {
type_ => || ffi::bis_enum_list_model_get_type(),
}
}
impl EnumListModel {
#[doc(alias = "bis_enum_list_model_new")]
pub fn new(enum_type: glib::types::Type) -> EnumListModel {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::bis_enum_list_model_new(enum_type.into_glib()))
}
}
pub fn builder() -> EnumListModelBuilder {
EnumListModelBuilder::new()
}
#[doc(alias = "bis_enum_list_model_find_position")]
pub fn find_position(&self, value: i32) -> u32 {
unsafe {
ffi::bis_enum_list_model_find_position(self.to_glib_none().0, value)
}
}
#[doc(alias = "bis_enum_list_model_get_enum_type")]
#[doc(alias = "get_enum_type")]
#[doc(alias = "enum-type")]
pub fn enum_type(&self) -> glib::types::Type {
unsafe {
from_glib(ffi::bis_enum_list_model_get_enum_type(self.to_glib_none().0))
}
}
}
impl Default for EnumListModel {
fn default() -> Self {
glib::object::Object::new::<Self>()
}
}
#[must_use = "The builder must be built to be used"]
pub struct EnumListModelBuilder {
builder: glib::object::ObjectBuilder<'static, EnumListModel>,
}
impl EnumListModelBuilder {
fn new() -> Self {
Self { builder: glib::object::Object::builder() }
}
pub fn enum_type(self, enum_type: glib::types::Type) -> Self {
Self { builder: self.builder.property("enum-type", enum_type), }
}
#[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
pub fn build(self) -> EnumListModel {
self.builder.build() }
}