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