1use crate::{ffi, SessionItem};
7use glib::translate::*;
8
9glib::wrapper! {
10 #[doc(alias = "PanelSession")]
11 pub struct Session(Object<ffi::PanelSession, ffi::PanelSessionClass>);
12
13 match fn {
14 type_ => || ffi::panel_session_get_type(),
15 }
16}
17
18impl Session {
19 #[doc(alias = "panel_session_new")]
20 pub fn new() -> Session {
21 assert_initialized_main_thread!();
22 unsafe { from_glib_full(ffi::panel_session_new()) }
23 }
24
25 #[cfg(feature = "v1_4")]
26 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
27 #[doc(alias = "panel_session_new_from_variant")]
28 #[doc(alias = "new_from_variant")]
29 pub fn from_variant(variant: &glib::Variant) -> Result<Session, glib::Error> {
30 assert_initialized_main_thread!();
31 unsafe {
32 let mut error = std::ptr::null_mut();
33 let ret = ffi::panel_session_new_from_variant(variant.to_glib_none().0, &mut error);
34 if error.is_null() {
35 Ok(from_glib_full(ret))
36 } else {
37 Err(from_glib_full(error))
38 }
39 }
40 }
41
42 #[doc(alias = "panel_session_append")]
43 pub fn append(&self, item: &SessionItem) {
44 unsafe {
45 ffi::panel_session_append(self.to_glib_none().0, item.to_glib_none().0);
46 }
47 }
48
49 #[cfg(feature = "v1_4")]
50 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
51 #[doc(alias = "panel_session_get_item")]
52 #[doc(alias = "get_item")]
53 pub fn item(&self, position: u32) -> Option<SessionItem> {
54 unsafe { from_glib_none(ffi::panel_session_get_item(self.to_glib_none().0, position)) }
55 }
56
57 #[doc(alias = "panel_session_get_n_items")]
58 #[doc(alias = "get_n_items")]
59 pub fn n_items(&self) -> u32 {
60 unsafe { ffi::panel_session_get_n_items(self.to_glib_none().0) }
61 }
62
63 #[doc(alias = "panel_session_insert")]
64 pub fn insert(&self, position: u32, item: &SessionItem) {
65 unsafe {
66 ffi::panel_session_insert(self.to_glib_none().0, position, item.to_glib_none().0);
67 }
68 }
69
70 #[cfg(feature = "v1_4")]
71 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
72 #[doc(alias = "panel_session_lookup_by_id")]
73 pub fn lookup_by_id(&self, id: &str) -> Option<SessionItem> {
74 unsafe {
75 from_glib_full(ffi::panel_session_lookup_by_id(
76 self.to_glib_none().0,
77 id.to_glib_none().0,
78 ))
79 }
80 }
81
82 #[doc(alias = "panel_session_prepend")]
83 pub fn prepend(&self, item: &SessionItem) {
84 unsafe {
85 ffi::panel_session_prepend(self.to_glib_none().0, item.to_glib_none().0);
86 }
87 }
88
89 #[doc(alias = "panel_session_remove")]
90 pub fn remove(&self, item: &SessionItem) {
91 unsafe {
92 ffi::panel_session_remove(self.to_glib_none().0, item.to_glib_none().0);
93 }
94 }
95
96 #[doc(alias = "panel_session_remove_at")]
97 pub fn remove_at(&self, position: u32) {
98 unsafe {
99 ffi::panel_session_remove_at(self.to_glib_none().0, position);
100 }
101 }
102
103 #[doc(alias = "panel_session_to_variant")]
104 pub fn to_variant(&self) -> glib::Variant {
105 unsafe { from_glib_full(ffi::panel_session_to_variant(self.to_glib_none().0)) }
106 }
107}
108
109impl Default for Session {
110 fn default() -> Self {
111 Self::new()
112 }
113}