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 #[cfg(any(feature = "v2_44", feature = "dox"))] 7 use glib; 8 #[cfg(any(feature = "v2_44", feature = "dox"))] 9 use glib::object::Cast; 10 use glib::object::IsA; 11 #[cfg(any(feature = "v2_44", feature = "dox"))] 12 use glib::signal::connect_raw; 13 #[cfg(any(feature = "v2_44", feature = "dox"))] 14 use glib::signal::SignalHandlerId; 15 use glib::translate::*; 16 #[cfg(any(feature = "v2_44", feature = "dox"))] 17 use glib_sys; 18 #[cfg(any(feature = "v2_44", feature = "dox"))] 19 use libc; 20 #[cfg(any(feature = "v2_44", feature = "dox"))] 21 use std::boxed::Box as Box_; 22 use std::fmt; 23 #[cfg(any(feature = "v2_44", feature = "dox"))] 24 use std::mem::transmute; 25 26 glib_wrapper! { 27 pub struct ListModel(Interface<gio_sys::GListModel>); 28 29 match fn { 30 get_type => || gio_sys::g_list_model_get_type(), 31 } 32 } 33 34 pub const NONE_LIST_MODEL: Option<&ListModel> = None; 35 36 pub trait ListModelExt: 'static { 37 //#[cfg(any(feature = "v2_44", feature = "dox"))] 38 //fn get_item(&self, position: u32) -> /*Unimplemented*/Option<Fundamental: Pointer>; 39 40 #[cfg(any(feature = "v2_44", feature = "dox"))] get_item_type(&self) -> glib::types::Type41 fn get_item_type(&self) -> glib::types::Type; 42 43 #[cfg(any(feature = "v2_44", feature = "dox"))] get_n_items(&self) -> u3244 fn get_n_items(&self) -> u32; 45 46 #[cfg(any(feature = "v2_44", feature = "dox"))] get_object(&self, position: u32) -> Option<glib::Object>47 fn get_object(&self, position: u32) -> Option<glib::Object>; 48 49 #[cfg(any(feature = "v2_44", feature = "dox"))] items_changed(&self, position: u32, removed: u32, added: u32)50 fn items_changed(&self, position: u32, removed: u32, added: u32); 51 52 #[cfg(any(feature = "v2_44", feature = "dox"))] connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>(&self, f: F) -> SignalHandlerId53 fn connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>(&self, f: F) 54 -> SignalHandlerId; 55 } 56 57 impl<O: IsA<ListModel>> ListModelExt for O { 58 //#[cfg(any(feature = "v2_44", feature = "dox"))] 59 //fn get_item(&self, position: u32) -> /*Unimplemented*/Option<Fundamental: Pointer> { 60 // unsafe { TODO: call gio_sys:g_list_model_get_item() } 61 //} 62 63 #[cfg(any(feature = "v2_44", feature = "dox"))] get_item_type(&self) -> glib::types::Type64 fn get_item_type(&self) -> glib::types::Type { 65 unsafe { 66 from_glib(gio_sys::g_list_model_get_item_type( 67 self.as_ref().to_glib_none().0, 68 )) 69 } 70 } 71 72 #[cfg(any(feature = "v2_44", feature = "dox"))] get_n_items(&self) -> u3273 fn get_n_items(&self) -> u32 { 74 unsafe { gio_sys::g_list_model_get_n_items(self.as_ref().to_glib_none().0) } 75 } 76 77 #[cfg(any(feature = "v2_44", feature = "dox"))] get_object(&self, position: u32) -> Option<glib::Object>78 fn get_object(&self, position: u32) -> Option<glib::Object> { 79 unsafe { 80 from_glib_full(gio_sys::g_list_model_get_object( 81 self.as_ref().to_glib_none().0, 82 position, 83 )) 84 } 85 } 86 87 #[cfg(any(feature = "v2_44", feature = "dox"))] items_changed(&self, position: u32, removed: u32, added: u32)88 fn items_changed(&self, position: u32, removed: u32, added: u32) { 89 unsafe { 90 gio_sys::g_list_model_items_changed( 91 self.as_ref().to_glib_none().0, 92 position, 93 removed, 94 added, 95 ); 96 } 97 } 98 99 #[cfg(any(feature = "v2_44", feature = "dox"))] connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>( &self, f: F, ) -> SignalHandlerId100 fn connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>( 101 &self, 102 f: F, 103 ) -> SignalHandlerId { 104 unsafe extern "C" fn items_changed_trampoline<P, F: Fn(&P, u32, u32, u32) + 'static>( 105 this: *mut gio_sys::GListModel, 106 position: libc::c_uint, 107 removed: libc::c_uint, 108 added: libc::c_uint, 109 f: glib_sys::gpointer, 110 ) where 111 P: IsA<ListModel>, 112 { 113 let f: &F = &*(f as *const F); 114 f( 115 &ListModel::from_glib_borrow(this).unsafe_cast(), 116 position, 117 removed, 118 added, 119 ) 120 } 121 unsafe { 122 let f: Box_<F> = Box_::new(f); 123 connect_raw( 124 self.as_ptr() as *mut _, 125 b"items-changed\0".as_ptr() as *const _, 126 Some(transmute(items_changed_trampoline::<Self, F> as usize)), 127 Box_::into_raw(f), 128 ) 129 } 130 } 131 } 132 133 impl fmt::Display for ListModel { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result134 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 135 write!(f, "ListModel") 136 } 137 } 138