use crate::{ffi, SessionItem};
use glib::translate::*;
glib::wrapper! {
#[doc(alias = "PanelSession")]
pub struct Session(Object<ffi::PanelSession, ffi::PanelSessionClass>);
match fn {
type_ => || ffi::panel_session_get_type(),
}
}
impl Session {
#[doc(alias = "panel_session_new")]
pub fn new() -> Session {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::panel_session_new()) }
}
#[cfg(feature = "v1_4")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
#[doc(alias = "panel_session_new_from_variant")]
#[doc(alias = "new_from_variant")]
pub fn from_variant(variant: &glib::Variant) -> Result<Session, glib::Error> {
assert_initialized_main_thread!();
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::panel_session_new_from_variant(variant.to_glib_none().0, &mut error);
if error.is_null() {
Ok(from_glib_full(ret))
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "panel_session_append")]
pub fn append(&self, item: &SessionItem) {
unsafe {
ffi::panel_session_append(self.to_glib_none().0, item.to_glib_none().0);
}
}
#[cfg(feature = "v1_4")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
#[doc(alias = "panel_session_get_item")]
#[doc(alias = "get_item")]
pub fn item(&self, position: u32) -> Option<SessionItem> {
unsafe { from_glib_none(ffi::panel_session_get_item(self.to_glib_none().0, position)) }
}
#[doc(alias = "panel_session_get_n_items")]
#[doc(alias = "get_n_items")]
pub fn n_items(&self) -> u32 {
unsafe { ffi::panel_session_get_n_items(self.to_glib_none().0) }
}
#[doc(alias = "panel_session_insert")]
pub fn insert(&self, position: u32, item: &SessionItem) {
unsafe {
ffi::panel_session_insert(self.to_glib_none().0, position, item.to_glib_none().0);
}
}
#[cfg(feature = "v1_4")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
#[doc(alias = "panel_session_lookup_by_id")]
pub fn lookup_by_id(&self, id: &str) -> Option<SessionItem> {
unsafe {
from_glib_full(ffi::panel_session_lookup_by_id(
self.to_glib_none().0,
id.to_glib_none().0,
))
}
}
#[doc(alias = "panel_session_prepend")]
pub fn prepend(&self, item: &SessionItem) {
unsafe {
ffi::panel_session_prepend(self.to_glib_none().0, item.to_glib_none().0);
}
}
#[doc(alias = "panel_session_remove")]
pub fn remove(&self, item: &SessionItem) {
unsafe {
ffi::panel_session_remove(self.to_glib_none().0, item.to_glib_none().0);
}
}
#[doc(alias = "panel_session_remove_at")]
pub fn remove_at(&self, position: u32) {
unsafe {
ffi::panel_session_remove_at(self.to_glib_none().0, position);
}
}
#[doc(alias = "panel_session_to_variant")]
pub fn to_variant(&self) -> glib::Variant {
unsafe { from_glib_full(ffi::panel_session_to_variant(self.to_glib_none().0)) }
}
}
impl Default for Session {
fn default() -> Self {
Self::new()
}
}