1 // This file was generated by gir (https://github.com/gtk-rs/gir)
2 // from gir-files (https://github.com/gtk-rs/gir-files)
3 // DO NOT EDIT
4 
5 use gio_sys;
6 use glib;
7 use glib::object::Cast;
8 use glib::object::IsA;
9 use glib::signal::connect_raw;
10 use glib::signal::SignalHandlerId;
11 use glib::translate::*;
12 use glib_sys;
13 use libc;
14 use std::boxed::Box as Box_;
15 use std::fmt;
16 use std::mem::transmute;
17 use MenuAttributeIter;
18 use MenuLinkIter;
19 
20 glib_wrapper! {
21     pub struct MenuModel(Object<gio_sys::GMenuModel, gio_sys::GMenuModelClass, MenuModelClass>);
22 
23     match fn {
24         get_type => || gio_sys::g_menu_model_get_type(),
25     }
26 }
27 
28 pub const NONE_MENU_MODEL: Option<&MenuModel> = None;
29 
30 pub trait MenuModelExt: 'static {
31     //fn get_item_attribute(&self, item_index: i32, attribute: &str, format_string: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool;
32 
get_item_attribute_value( &self, item_index: i32, attribute: &str, expected_type: Option<&glib::VariantTy>, ) -> Option<glib::Variant>33     fn get_item_attribute_value(
34         &self,
35         item_index: i32,
36         attribute: &str,
37         expected_type: Option<&glib::VariantTy>,
38     ) -> Option<glib::Variant>;
39 
get_item_link(&self, item_index: i32, link: &str) -> Option<MenuModel>40     fn get_item_link(&self, item_index: i32, link: &str) -> Option<MenuModel>;
41 
get_n_items(&self) -> i3242     fn get_n_items(&self) -> i32;
43 
is_mutable(&self) -> bool44     fn is_mutable(&self) -> bool;
45 
items_changed(&self, position: i32, removed: i32, added: i32)46     fn items_changed(&self, position: i32, removed: i32, added: i32);
47 
iterate_item_attributes(&self, item_index: i32) -> Option<MenuAttributeIter>48     fn iterate_item_attributes(&self, item_index: i32) -> Option<MenuAttributeIter>;
49 
iterate_item_links(&self, item_index: i32) -> Option<MenuLinkIter>50     fn iterate_item_links(&self, item_index: i32) -> Option<MenuLinkIter>;
51 
connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>(&self, f: F) -> SignalHandlerId52     fn connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>(&self, f: F)
53         -> SignalHandlerId;
54 }
55 
56 impl<O: IsA<MenuModel>> MenuModelExt for O {
57     //fn get_item_attribute(&self, item_index: i32, attribute: &str, format_string: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool {
58     //    unsafe { TODO: call gio_sys:g_menu_model_get_item_attribute() }
59     //}
60 
get_item_attribute_value( &self, item_index: i32, attribute: &str, expected_type: Option<&glib::VariantTy>, ) -> Option<glib::Variant>61     fn get_item_attribute_value(
62         &self,
63         item_index: i32,
64         attribute: &str,
65         expected_type: Option<&glib::VariantTy>,
66     ) -> Option<glib::Variant> {
67         unsafe {
68             from_glib_full(gio_sys::g_menu_model_get_item_attribute_value(
69                 self.as_ref().to_glib_none().0,
70                 item_index,
71                 attribute.to_glib_none().0,
72                 expected_type.to_glib_none().0,
73             ))
74         }
75     }
76 
get_item_link(&self, item_index: i32, link: &str) -> Option<MenuModel>77     fn get_item_link(&self, item_index: i32, link: &str) -> Option<MenuModel> {
78         unsafe {
79             from_glib_full(gio_sys::g_menu_model_get_item_link(
80                 self.as_ref().to_glib_none().0,
81                 item_index,
82                 link.to_glib_none().0,
83             ))
84         }
85     }
86 
get_n_items(&self) -> i3287     fn get_n_items(&self) -> i32 {
88         unsafe { gio_sys::g_menu_model_get_n_items(self.as_ref().to_glib_none().0) }
89     }
90 
is_mutable(&self) -> bool91     fn is_mutable(&self) -> bool {
92         unsafe {
93             from_glib(gio_sys::g_menu_model_is_mutable(
94                 self.as_ref().to_glib_none().0,
95             ))
96         }
97     }
98 
items_changed(&self, position: i32, removed: i32, added: i32)99     fn items_changed(&self, position: i32, removed: i32, added: i32) {
100         unsafe {
101             gio_sys::g_menu_model_items_changed(
102                 self.as_ref().to_glib_none().0,
103                 position,
104                 removed,
105                 added,
106             );
107         }
108     }
109 
iterate_item_attributes(&self, item_index: i32) -> Option<MenuAttributeIter>110     fn iterate_item_attributes(&self, item_index: i32) -> Option<MenuAttributeIter> {
111         unsafe {
112             from_glib_full(gio_sys::g_menu_model_iterate_item_attributes(
113                 self.as_ref().to_glib_none().0,
114                 item_index,
115             ))
116         }
117     }
118 
iterate_item_links(&self, item_index: i32) -> Option<MenuLinkIter>119     fn iterate_item_links(&self, item_index: i32) -> Option<MenuLinkIter> {
120         unsafe {
121             from_glib_full(gio_sys::g_menu_model_iterate_item_links(
122                 self.as_ref().to_glib_none().0,
123                 item_index,
124             ))
125         }
126     }
127 
connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>( &self, f: F, ) -> SignalHandlerId128     fn connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>(
129         &self,
130         f: F,
131     ) -> SignalHandlerId {
132         unsafe extern "C" fn items_changed_trampoline<P, F: Fn(&P, i32, i32, i32) + 'static>(
133             this: *mut gio_sys::GMenuModel,
134             position: libc::c_int,
135             removed: libc::c_int,
136             added: libc::c_int,
137             f: glib_sys::gpointer,
138         ) where
139             P: IsA<MenuModel>,
140         {
141             let f: &F = &*(f as *const F);
142             f(
143                 &MenuModel::from_glib_borrow(this).unsafe_cast(),
144                 position,
145                 removed,
146                 added,
147             )
148         }
149         unsafe {
150             let f: Box_<F> = Box_::new(f);
151             connect_raw(
152                 self.as_ptr() as *mut _,
153                 b"items-changed\0".as_ptr() as *const _,
154                 Some(transmute(items_changed_trampoline::<Self, F> as usize)),
155                 Box_::into_raw(f),
156             )
157         }
158     }
159 }
160 
161 impl fmt::Display for MenuModel {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result162     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
163         write!(f, "MenuModel")
164     }
165 }
166