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::IsA; 6 use glib::translate::*; 7 use glib::StaticType; 8 use glib::Value; 9 use gobject_sys; 10 use gtk_sys; 11 use std::boxed::Box as Box_; 12 use std::fmt; 13 use TreeDragSource; 14 use TreeIter; 15 use TreeModel; 16 use TreePath; 17 18 glib_wrapper! { 19 pub struct TreeModelFilter(Object<gtk_sys::GtkTreeModelFilter, gtk_sys::GtkTreeModelFilterClass, TreeModelFilterClass>) @implements TreeDragSource, TreeModel; 20 21 match fn { 22 get_type => || gtk_sys::gtk_tree_model_filter_get_type(), 23 } 24 } 25 26 pub const NONE_TREE_MODEL_FILTER: Option<&TreeModelFilter> = None; 27 28 pub trait TreeModelFilterExt: 'static { clear_cache(&self)29 fn clear_cache(&self); 30 convert_child_iter_to_iter(&self, child_iter: &TreeIter) -> Option<TreeIter>31 fn convert_child_iter_to_iter(&self, child_iter: &TreeIter) -> Option<TreeIter>; 32 convert_child_path_to_path(&self, child_path: &TreePath) -> Option<TreePath>33 fn convert_child_path_to_path(&self, child_path: &TreePath) -> Option<TreePath>; 34 convert_iter_to_child_iter(&self, filter_iter: &TreeIter) -> TreeIter35 fn convert_iter_to_child_iter(&self, filter_iter: &TreeIter) -> TreeIter; 36 convert_path_to_child_path(&self, filter_path: &TreePath) -> Option<TreePath>37 fn convert_path_to_child_path(&self, filter_path: &TreePath) -> Option<TreePath>; 38 get_model(&self) -> Option<TreeModel>39 fn get_model(&self) -> Option<TreeModel>; 40 refilter(&self)41 fn refilter(&self); 42 43 //fn set_modify_func<P: Fn(&TreeModel, &TreeIter, &glib::Value, i32) + 'static>(&self, types: /*Unimplemented*/&CArray TypeId { ns_id: 0, id: 30 }, func: P); 44 set_visible_column(&self, column: i32)45 fn set_visible_column(&self, column: i32); 46 set_visible_func<P: Fn(&TreeModel, &TreeIter) -> bool + 'static>(&self, func: P)47 fn set_visible_func<P: Fn(&TreeModel, &TreeIter) -> bool + 'static>(&self, func: P); 48 get_property_child_model(&self) -> Option<TreeModel>49 fn get_property_child_model(&self) -> Option<TreeModel>; 50 } 51 52 impl<O: IsA<TreeModelFilter>> TreeModelFilterExt for O { clear_cache(&self)53 fn clear_cache(&self) { 54 unsafe { 55 gtk_sys::gtk_tree_model_filter_clear_cache(self.as_ref().to_glib_none().0); 56 } 57 } 58 convert_child_iter_to_iter(&self, child_iter: &TreeIter) -> Option<TreeIter>59 fn convert_child_iter_to_iter(&self, child_iter: &TreeIter) -> Option<TreeIter> { 60 unsafe { 61 let mut filter_iter = TreeIter::uninitialized(); 62 let ret = from_glib(gtk_sys::gtk_tree_model_filter_convert_child_iter_to_iter( 63 self.as_ref().to_glib_none().0, 64 filter_iter.to_glib_none_mut().0, 65 mut_override(child_iter.to_glib_none().0), 66 )); 67 if ret { 68 Some(filter_iter) 69 } else { 70 None 71 } 72 } 73 } 74 convert_child_path_to_path(&self, child_path: &TreePath) -> Option<TreePath>75 fn convert_child_path_to_path(&self, child_path: &TreePath) -> Option<TreePath> { 76 unsafe { 77 from_glib_full(gtk_sys::gtk_tree_model_filter_convert_child_path_to_path( 78 self.as_ref().to_glib_none().0, 79 mut_override(child_path.to_glib_none().0), 80 )) 81 } 82 } 83 convert_iter_to_child_iter(&self, filter_iter: &TreeIter) -> TreeIter84 fn convert_iter_to_child_iter(&self, filter_iter: &TreeIter) -> TreeIter { 85 unsafe { 86 let mut child_iter = TreeIter::uninitialized(); 87 gtk_sys::gtk_tree_model_filter_convert_iter_to_child_iter( 88 self.as_ref().to_glib_none().0, 89 child_iter.to_glib_none_mut().0, 90 mut_override(filter_iter.to_glib_none().0), 91 ); 92 child_iter 93 } 94 } 95 convert_path_to_child_path(&self, filter_path: &TreePath) -> Option<TreePath>96 fn convert_path_to_child_path(&self, filter_path: &TreePath) -> Option<TreePath> { 97 unsafe { 98 from_glib_full(gtk_sys::gtk_tree_model_filter_convert_path_to_child_path( 99 self.as_ref().to_glib_none().0, 100 mut_override(filter_path.to_glib_none().0), 101 )) 102 } 103 } 104 get_model(&self) -> Option<TreeModel>105 fn get_model(&self) -> Option<TreeModel> { 106 unsafe { 107 from_glib_none(gtk_sys::gtk_tree_model_filter_get_model( 108 self.as_ref().to_glib_none().0, 109 )) 110 } 111 } 112 refilter(&self)113 fn refilter(&self) { 114 unsafe { 115 gtk_sys::gtk_tree_model_filter_refilter(self.as_ref().to_glib_none().0); 116 } 117 } 118 119 //fn set_modify_func<P: Fn(&TreeModel, &TreeIter, &glib::Value, i32) + 'static>(&self, types: /*Unimplemented*/&CArray TypeId { ns_id: 0, id: 30 }, func: P) { 120 // unsafe { TODO: call gtk_sys:gtk_tree_model_filter_set_modify_func() } 121 //} 122 set_visible_column(&self, column: i32)123 fn set_visible_column(&self, column: i32) { 124 unsafe { 125 gtk_sys::gtk_tree_model_filter_set_visible_column( 126 self.as_ref().to_glib_none().0, 127 column, 128 ); 129 } 130 } 131 set_visible_func<P: Fn(&TreeModel, &TreeIter) -> bool + 'static>(&self, func: P)132 fn set_visible_func<P: Fn(&TreeModel, &TreeIter) -> bool + 'static>(&self, func: P) { 133 let func_data: Box_<P> = Box_::new(func); 134 unsafe extern "C" fn func_func<P: Fn(&TreeModel, &TreeIter) -> bool + 'static>( 135 model: *mut gtk_sys::GtkTreeModel, 136 iter: *mut gtk_sys::GtkTreeIter, 137 data: glib_sys::gpointer, 138 ) -> glib_sys::gboolean { 139 let model = from_glib_borrow(model); 140 let iter = from_glib_borrow(iter); 141 let callback: &P = &*(data as *mut _); 142 let res = (*callback)(&model, &iter); 143 res.to_glib() 144 } 145 let func = Some(func_func::<P> as _); 146 unsafe extern "C" fn destroy_func<P: Fn(&TreeModel, &TreeIter) -> bool + 'static>( 147 data: glib_sys::gpointer, 148 ) { 149 let _callback: Box_<P> = Box_::from_raw(data as *mut _); 150 } 151 let destroy_call3 = Some(destroy_func::<P> as _); 152 let super_callback0: Box_<P> = func_data; 153 unsafe { 154 gtk_sys::gtk_tree_model_filter_set_visible_func( 155 self.as_ref().to_glib_none().0, 156 func, 157 Box_::into_raw(super_callback0) as *mut _, 158 destroy_call3, 159 ); 160 } 161 } 162 get_property_child_model(&self) -> Option<TreeModel>163 fn get_property_child_model(&self) -> Option<TreeModel> { 164 unsafe { 165 let mut value = Value::from_type(<TreeModel as StaticType>::static_type()); 166 gobject_sys::g_object_get_property( 167 self.to_glib_none().0 as *mut gobject_sys::GObject, 168 b"child-model\0".as_ptr() as *const _, 169 value.to_glib_none_mut().0, 170 ); 171 value 172 .get() 173 .expect("Return Value for property `child-model` getter") 174 } 175 } 176 } 177 178 impl fmt::Display for TreeModelFilter { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result179 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 180 write!(f, "TreeModelFilter") 181 } 182 } 183