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 crate::MenuAttributeIter; 6 use crate::MenuLinkIter; 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 std::boxed::Box as Box_; 13 use std::fmt; 14 use std::mem::transmute; 15 16 glib::wrapper! { 17 #[doc(alias = "GMenuModel")] 18 pub struct MenuModel(Object<ffi::GMenuModel, ffi::GMenuModelClass>); 19 20 match fn { 21 type_ => || ffi::g_menu_model_get_type(), 22 } 23 } 24 25 pub const NONE_MENU_MODEL: Option<&MenuModel> = None; 26 27 pub trait MenuModelExt: 'static { 28 //#[doc(alias = "g_menu_model_get_item_attribute")] 29 //#[doc(alias = "get_item_attribute")] 30 //fn is_item_attribute(&self, item_index: i32, attribute: &str, format_string: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool; 31 32 #[doc(alias = "g_menu_model_get_item_attribute_value")] 33 #[doc(alias = "get_item_attribute_value")] item_attribute_value( &self, item_index: i32, attribute: &str, expected_type: Option<&glib::VariantTy>, ) -> Option<glib::Variant>34 fn item_attribute_value( 35 &self, 36 item_index: i32, 37 attribute: &str, 38 expected_type: Option<&glib::VariantTy>, 39 ) -> Option<glib::Variant>; 40 41 #[doc(alias = "g_menu_model_get_item_link")] 42 #[doc(alias = "get_item_link")] item_link(&self, item_index: i32, link: &str) -> Option<MenuModel>43 fn item_link(&self, item_index: i32, link: &str) -> Option<MenuModel>; 44 45 #[doc(alias = "g_menu_model_get_n_items")] 46 #[doc(alias = "get_n_items")] n_items(&self) -> i3247 fn n_items(&self) -> i32; 48 49 #[doc(alias = "g_menu_model_is_mutable")] is_mutable(&self) -> bool50 fn is_mutable(&self) -> bool; 51 52 #[doc(alias = "g_menu_model_items_changed")] items_changed(&self, position: i32, removed: i32, added: i32)53 fn items_changed(&self, position: i32, removed: i32, added: i32); 54 55 #[doc(alias = "g_menu_model_iterate_item_attributes")] iterate_item_attributes(&self, item_index: i32) -> MenuAttributeIter56 fn iterate_item_attributes(&self, item_index: i32) -> MenuAttributeIter; 57 58 #[doc(alias = "g_menu_model_iterate_item_links")] iterate_item_links(&self, item_index: i32) -> MenuLinkIter59 fn iterate_item_links(&self, item_index: i32) -> MenuLinkIter; 60 61 #[doc(alias = "items-changed")] connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>(&self, f: F) -> SignalHandlerId62 fn connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>(&self, f: F) 63 -> SignalHandlerId; 64 } 65 66 impl<O: IsA<MenuModel>> MenuModelExt for O { 67 //fn is_item_attribute(&self, item_index: i32, attribute: &str, format_string: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool { 68 // unsafe { TODO: call ffi:g_menu_model_get_item_attribute() } 69 //} 70 item_attribute_value( &self, item_index: i32, attribute: &str, expected_type: Option<&glib::VariantTy>, ) -> Option<glib::Variant>71 fn item_attribute_value( 72 &self, 73 item_index: i32, 74 attribute: &str, 75 expected_type: Option<&glib::VariantTy>, 76 ) -> Option<glib::Variant> { 77 unsafe { 78 from_glib_full(ffi::g_menu_model_get_item_attribute_value( 79 self.as_ref().to_glib_none().0, 80 item_index, 81 attribute.to_glib_none().0, 82 expected_type.to_glib_none().0, 83 )) 84 } 85 } 86 item_link(&self, item_index: i32, link: &str) -> Option<MenuModel>87 fn item_link(&self, item_index: i32, link: &str) -> Option<MenuModel> { 88 unsafe { 89 from_glib_full(ffi::g_menu_model_get_item_link( 90 self.as_ref().to_glib_none().0, 91 item_index, 92 link.to_glib_none().0, 93 )) 94 } 95 } 96 n_items(&self) -> i3297 fn n_items(&self) -> i32 { 98 unsafe { ffi::g_menu_model_get_n_items(self.as_ref().to_glib_none().0) } 99 } 100 is_mutable(&self) -> bool101 fn is_mutable(&self) -> bool { 102 unsafe { from_glib(ffi::g_menu_model_is_mutable(self.as_ref().to_glib_none().0)) } 103 } 104 items_changed(&self, position: i32, removed: i32, added: i32)105 fn items_changed(&self, position: i32, removed: i32, added: i32) { 106 unsafe { 107 ffi::g_menu_model_items_changed( 108 self.as_ref().to_glib_none().0, 109 position, 110 removed, 111 added, 112 ); 113 } 114 } 115 iterate_item_attributes(&self, item_index: i32) -> MenuAttributeIter116 fn iterate_item_attributes(&self, item_index: i32) -> MenuAttributeIter { 117 unsafe { 118 from_glib_full(ffi::g_menu_model_iterate_item_attributes( 119 self.as_ref().to_glib_none().0, 120 item_index, 121 )) 122 } 123 } 124 iterate_item_links(&self, item_index: i32) -> MenuLinkIter125 fn iterate_item_links(&self, item_index: i32) -> MenuLinkIter { 126 unsafe { 127 from_glib_full(ffi::g_menu_model_iterate_item_links( 128 self.as_ref().to_glib_none().0, 129 item_index, 130 )) 131 } 132 } 133 connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>( &self, f: F, ) -> SignalHandlerId134 fn connect_items_changed<F: Fn(&Self, i32, i32, i32) + 'static>( 135 &self, 136 f: F, 137 ) -> SignalHandlerId { 138 unsafe extern "C" fn items_changed_trampoline< 139 P: IsA<MenuModel>, 140 F: Fn(&P, i32, i32, i32) + 'static, 141 >( 142 this: *mut ffi::GMenuModel, 143 position: libc::c_int, 144 removed: libc::c_int, 145 added: libc::c_int, 146 f: glib::ffi::gpointer, 147 ) { 148 let f: &F = &*(f as *const F); 149 f( 150 MenuModel::from_glib_borrow(this).unsafe_cast_ref(), 151 position, 152 removed, 153 added, 154 ) 155 } 156 unsafe { 157 let f: Box_<F> = Box_::new(f); 158 connect_raw( 159 self.as_ptr() as *mut _, 160 b"items-changed\0".as_ptr() as *const _, 161 Some(transmute::<_, unsafe extern "C" fn()>( 162 items_changed_trampoline::<Self, F> as *const (), 163 )), 164 Box_::into_raw(f), 165 ) 166 } 167 } 168 } 169 170 impl fmt::Display for MenuModel { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result171 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 172 f.write_str("MenuModel") 173 } 174 } 175