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 glib::object::Cast; 6 use glib::object::IsA; 7 use glib::signal::connect_raw; 8 use glib::signal::SignalHandlerId; 9 use glib::translate::*; 10 use std::boxed::Box as Box_; 11 use std::fmt; 12 use std::mem::transmute; 13 14 glib::wrapper! { 15 #[doc(alias = "GListModel")] 16 pub struct ListModel(Interface<ffi::GListModel, ffi::GListModelInterface>); 17 18 match fn { 19 type_ => || ffi::g_list_model_get_type(), 20 } 21 } 22 23 pub const NONE_LIST_MODEL: Option<&ListModel> = None; 24 25 pub trait ListModelExt: 'static { 26 #[doc(alias = "g_list_model_get_item_type")] 27 #[doc(alias = "get_item_type")] item_type(&self) -> glib::types::Type28 fn item_type(&self) -> glib::types::Type; 29 30 #[doc(alias = "g_list_model_get_n_items")] 31 #[doc(alias = "get_n_items")] n_items(&self) -> u3232 fn n_items(&self) -> u32; 33 34 #[doc(alias = "g_list_model_get_object")] 35 #[doc(alias = "get_object")] item(&self, position: u32) -> Option<glib::Object>36 fn item(&self, position: u32) -> Option<glib::Object>; 37 38 #[doc(alias = "g_list_model_items_changed")] items_changed(&self, position: u32, removed: u32, added: u32)39 fn items_changed(&self, position: u32, removed: u32, added: u32); 40 41 #[doc(alias = "items-changed")] connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>(&self, f: F) -> SignalHandlerId42 fn connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>(&self, f: F) 43 -> SignalHandlerId; 44 } 45 46 impl<O: IsA<ListModel>> ListModelExt for O { item_type(&self) -> glib::types::Type47 fn item_type(&self) -> glib::types::Type { 48 unsafe { 49 from_glib(ffi::g_list_model_get_item_type( 50 self.as_ref().to_glib_none().0, 51 )) 52 } 53 } 54 n_items(&self) -> u3255 fn n_items(&self) -> u32 { 56 unsafe { ffi::g_list_model_get_n_items(self.as_ref().to_glib_none().0) } 57 } 58 item(&self, position: u32) -> Option<glib::Object>59 fn item(&self, position: u32) -> Option<glib::Object> { 60 unsafe { 61 from_glib_full(ffi::g_list_model_get_object( 62 self.as_ref().to_glib_none().0, 63 position, 64 )) 65 } 66 } 67 items_changed(&self, position: u32, removed: u32, added: u32)68 fn items_changed(&self, position: u32, removed: u32, added: u32) { 69 unsafe { 70 ffi::g_list_model_items_changed( 71 self.as_ref().to_glib_none().0, 72 position, 73 removed, 74 added, 75 ); 76 } 77 } 78 connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>( &self, f: F, ) -> SignalHandlerId79 fn connect_items_changed<F: Fn(&Self, u32, u32, u32) + 'static>( 80 &self, 81 f: F, 82 ) -> SignalHandlerId { 83 unsafe extern "C" fn items_changed_trampoline< 84 P: IsA<ListModel>, 85 F: Fn(&P, u32, u32, u32) + 'static, 86 >( 87 this: *mut ffi::GListModel, 88 position: libc::c_uint, 89 removed: libc::c_uint, 90 added: libc::c_uint, 91 f: glib::ffi::gpointer, 92 ) { 93 let f: &F = &*(f as *const F); 94 f( 95 ListModel::from_glib_borrow(this).unsafe_cast_ref(), 96 position, 97 removed, 98 added, 99 ) 100 } 101 unsafe { 102 let f: Box_<F> = Box_::new(f); 103 connect_raw( 104 self.as_ptr() as *mut _, 105 b"items-changed\0".as_ptr() as *const _, 106 Some(transmute::<_, unsafe extern "C" fn()>( 107 items_changed_trampoline::<Self, F> as *const (), 108 )), 109 Box_::into_raw(f), 110 ) 111 } 112 } 113 } 114 115 impl fmt::Display for ListModel { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result116 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 117 f.write_str("ListModel") 118 } 119 } 120