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