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 glib_sys; 11 use gtk_sys; 12 use std::boxed::Box as Box_; 13 use std::fmt; 14 use std::mem::transmute; 15 use TreeModel; 16 17 glib_wrapper! { 18 pub struct TreeSortable(Interface<gtk_sys::GtkTreeSortable>) @requires TreeModel; 19 20 match fn { 21 get_type => || gtk_sys::gtk_tree_sortable_get_type(), 22 } 23 } 24 25 pub const NONE_TREE_SORTABLE: Option<&TreeSortable> = None; 26 27 pub trait TreeSortableExt: 'static { has_default_sort_func(&self) -> bool28 fn has_default_sort_func(&self) -> bool; 29 sort_column_changed(&self)30 fn sort_column_changed(&self); 31 connect_sort_column_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId32 fn connect_sort_column_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; 33 } 34 35 impl<O: IsA<TreeSortable>> TreeSortableExt for O { has_default_sort_func(&self) -> bool36 fn has_default_sort_func(&self) -> bool { 37 unsafe { 38 from_glib(gtk_sys::gtk_tree_sortable_has_default_sort_func( 39 self.as_ref().to_glib_none().0, 40 )) 41 } 42 } 43 sort_column_changed(&self)44 fn sort_column_changed(&self) { 45 unsafe { 46 gtk_sys::gtk_tree_sortable_sort_column_changed(self.as_ref().to_glib_none().0); 47 } 48 } 49 connect_sort_column_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId50 fn connect_sort_column_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { 51 unsafe extern "C" fn sort_column_changed_trampoline<P, F: Fn(&P) + 'static>( 52 this: *mut gtk_sys::GtkTreeSortable, 53 f: glib_sys::gpointer, 54 ) where 55 P: IsA<TreeSortable>, 56 { 57 let f: &F = &*(f as *const F); 58 f(&TreeSortable::from_glib_borrow(this).unsafe_cast()) 59 } 60 unsafe { 61 let f: Box_<F> = Box_::new(f); 62 connect_raw( 63 self.as_ptr() as *mut _, 64 b"sort-column-changed\0".as_ptr() as *const _, 65 Some(transmute( 66 sort_column_changed_trampoline::<Self, F> as usize, 67 )), 68 Box_::into_raw(f), 69 ) 70 } 71 } 72 } 73 74 impl fmt::Display for TreeSortable { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result75 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 76 write!(f, "TreeSortable") 77 } 78 } 79