libpanel/auto/
menu_manager.rs1use crate::ffi;
7#[cfg(feature = "v1_4")]
8#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
9use glib::prelude::*;
10use glib::translate::*;
11
12glib::wrapper! {
13 #[doc(alias = "PanelMenuManager")]
14 pub struct MenuManager(Object<ffi::PanelMenuManager, ffi::PanelMenuManagerClass>);
15
16 match fn {
17 type_ => || ffi::panel_menu_manager_get_type(),
18 }
19}
20
21impl MenuManager {
22 #[doc(alias = "panel_menu_manager_new")]
23 pub fn new() -> MenuManager {
24 assert_initialized_main_thread!();
25 unsafe { from_glib_full(ffi::panel_menu_manager_new()) }
26 }
27
28 #[cfg(feature = "v1_4")]
29 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
30 #[doc(alias = "panel_menu_manager_find_item_by_id")]
31 pub fn find_item_by_id(&self, id: &str) -> (Option<gio::Menu>, u32) {
32 unsafe {
33 let mut position = std::mem::MaybeUninit::uninit();
34 let ret = from_glib_none(ffi::panel_menu_manager_find_item_by_id(
35 self.to_glib_none().0,
36 id.to_glib_none().0,
37 position.as_mut_ptr(),
38 ));
39 (ret, position.assume_init())
40 }
41 }
42
43 #[cfg(feature = "v1_4")]
44 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
45 #[doc(alias = "panel_menu_manager_get_menu_by_id")]
46 #[doc(alias = "get_menu_by_id")]
47 pub fn menu_by_id(&self, menu_id: &str) -> gio::Menu {
48 unsafe {
49 from_glib_none(ffi::panel_menu_manager_get_menu_by_id(
50 self.to_glib_none().0,
51 menu_id.to_glib_none().0,
52 ))
53 }
54 }
55
56 #[cfg(feature = "v1_4")]
57 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
58 #[doc(alias = "panel_menu_manager_get_menu_ids")]
59 #[doc(alias = "get_menu_ids")]
60 pub fn menu_ids(&self) -> Vec<glib::GString> {
61 unsafe {
62 FromGlibPtrContainer::from_glib_none(ffi::panel_menu_manager_get_menu_ids(
63 self.to_glib_none().0,
64 ))
65 }
66 }
67
68 #[cfg(feature = "v1_4")]
69 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
70 #[doc(alias = "panel_menu_manager_merge")]
71 pub fn merge(&self, menu_id: &str, menu_model: &impl IsA<gio::MenuModel>) -> u32 {
72 unsafe {
73 ffi::panel_menu_manager_merge(
74 self.to_glib_none().0,
75 menu_id.to_glib_none().0,
76 menu_model.as_ref().to_glib_none().0,
77 )
78 }
79 }
80
81 #[cfg(feature = "v1_4")]
82 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
83 #[doc(alias = "panel_menu_manager_remove")]
84 pub fn remove(&self, merge_id: u32) {
85 unsafe {
86 ffi::panel_menu_manager_remove(self.to_glib_none().0, merge_id);
87 }
88 }
89
90 #[cfg(feature = "v1_4")]
91 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
92 #[doc(alias = "panel_menu_manager_set_attribute_string")]
93 pub fn set_attribute_string(
94 &self,
95 menu: &gio::Menu,
96 position: u32,
97 attribute: &str,
98 value: &str,
99 ) {
100 unsafe {
101 ffi::panel_menu_manager_set_attribute_string(
102 self.to_glib_none().0,
103 menu.to_glib_none().0,
104 position,
105 attribute.to_glib_none().0,
106 value.to_glib_none().0,
107 );
108 }
109 }
110}
111
112impl Default for MenuManager {
113 fn default() -> Self {
114 Self::new()
115 }
116}