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::StaticType; 11 use glib::ToValue; 12 use glib_sys; 13 use gtk_sys; 14 use std::boxed::Box as Box_; 15 use std::fmt; 16 use std::mem::transmute; 17 use Buildable; 18 use SizeGroupMode; 19 use Widget; 20 21 glib_wrapper! { 22 pub struct SizeGroup(Object<gtk_sys::GtkSizeGroup, gtk_sys::GtkSizeGroupClass, SizeGroupClass>) @implements Buildable; 23 24 match fn { 25 get_type => || gtk_sys::gtk_size_group_get_type(), 26 } 27 } 28 29 impl SizeGroup { new(mode: SizeGroupMode) -> SizeGroup30 pub fn new(mode: SizeGroupMode) -> SizeGroup { 31 assert_initialized_main_thread!(); 32 unsafe { from_glib_full(gtk_sys::gtk_size_group_new(mode.to_glib())) } 33 } 34 } 35 36 #[derive(Clone, Default)] 37 pub struct SizeGroupBuilder { 38 ignore_hidden: Option<bool>, 39 mode: Option<SizeGroupMode>, 40 } 41 42 impl SizeGroupBuilder { new() -> Self43 pub fn new() -> Self { 44 Self::default() 45 } 46 build(self) -> SizeGroup47 pub fn build(self) -> SizeGroup { 48 let mut properties: Vec<(&str, &dyn ToValue)> = vec![]; 49 if let Some(ref ignore_hidden) = self.ignore_hidden { 50 properties.push(("ignore-hidden", ignore_hidden)); 51 } 52 if let Some(ref mode) = self.mode { 53 properties.push(("mode", mode)); 54 } 55 glib::Object::new(SizeGroup::static_type(), &properties) 56 .expect("object new") 57 .downcast() 58 .expect("downcast") 59 } 60 ignore_hidden(mut self, ignore_hidden: bool) -> Self61 pub fn ignore_hidden(mut self, ignore_hidden: bool) -> Self { 62 self.ignore_hidden = Some(ignore_hidden); 63 self 64 } 65 mode(mut self, mode: SizeGroupMode) -> Self66 pub fn mode(mut self, mode: SizeGroupMode) -> Self { 67 self.mode = Some(mode); 68 self 69 } 70 } 71 72 pub const NONE_SIZE_GROUP: Option<&SizeGroup> = None; 73 74 pub trait SizeGroupExt: 'static { add_widget<P: IsA<Widget>>(&self, widget: &P)75 fn add_widget<P: IsA<Widget>>(&self, widget: &P); 76 77 #[cfg_attr(feature = "v3_22", deprecated)] get_ignore_hidden(&self) -> bool78 fn get_ignore_hidden(&self) -> bool; 79 get_mode(&self) -> SizeGroupMode80 fn get_mode(&self) -> SizeGroupMode; 81 get_widgets(&self) -> Vec<Widget>82 fn get_widgets(&self) -> Vec<Widget>; 83 remove_widget<P: IsA<Widget>>(&self, widget: &P)84 fn remove_widget<P: IsA<Widget>>(&self, widget: &P); 85 86 #[cfg_attr(feature = "v3_22", deprecated)] set_ignore_hidden(&self, ignore_hidden: bool)87 fn set_ignore_hidden(&self, ignore_hidden: bool); 88 set_mode(&self, mode: SizeGroupMode)89 fn set_mode(&self, mode: SizeGroupMode); 90 91 #[cfg_attr(feature = "v3_22", deprecated)] connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId92 fn connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( 93 &self, 94 f: F, 95 ) -> SignalHandlerId; 96 connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId97 fn connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; 98 } 99 100 impl<O: IsA<SizeGroup>> SizeGroupExt for O { add_widget<P: IsA<Widget>>(&self, widget: &P)101 fn add_widget<P: IsA<Widget>>(&self, widget: &P) { 102 unsafe { 103 gtk_sys::gtk_size_group_add_widget( 104 self.as_ref().to_glib_none().0, 105 widget.as_ref().to_glib_none().0, 106 ); 107 } 108 } 109 get_ignore_hidden(&self) -> bool110 fn get_ignore_hidden(&self) -> bool { 111 unsafe { 112 from_glib(gtk_sys::gtk_size_group_get_ignore_hidden( 113 self.as_ref().to_glib_none().0, 114 )) 115 } 116 } 117 get_mode(&self) -> SizeGroupMode118 fn get_mode(&self) -> SizeGroupMode { 119 unsafe { 120 from_glib(gtk_sys::gtk_size_group_get_mode( 121 self.as_ref().to_glib_none().0, 122 )) 123 } 124 } 125 get_widgets(&self) -> Vec<Widget>126 fn get_widgets(&self) -> Vec<Widget> { 127 unsafe { 128 FromGlibPtrContainer::from_glib_none(gtk_sys::gtk_size_group_get_widgets( 129 self.as_ref().to_glib_none().0, 130 )) 131 } 132 } 133 remove_widget<P: IsA<Widget>>(&self, widget: &P)134 fn remove_widget<P: IsA<Widget>>(&self, widget: &P) { 135 unsafe { 136 gtk_sys::gtk_size_group_remove_widget( 137 self.as_ref().to_glib_none().0, 138 widget.as_ref().to_glib_none().0, 139 ); 140 } 141 } 142 set_ignore_hidden(&self, ignore_hidden: bool)143 fn set_ignore_hidden(&self, ignore_hidden: bool) { 144 unsafe { 145 gtk_sys::gtk_size_group_set_ignore_hidden( 146 self.as_ref().to_glib_none().0, 147 ignore_hidden.to_glib(), 148 ); 149 } 150 } 151 set_mode(&self, mode: SizeGroupMode)152 fn set_mode(&self, mode: SizeGroupMode) { 153 unsafe { 154 gtk_sys::gtk_size_group_set_mode(self.as_ref().to_glib_none().0, mode.to_glib()); 155 } 156 } 157 connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId158 fn connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( 159 &self, 160 f: F, 161 ) -> SignalHandlerId { 162 unsafe extern "C" fn notify_ignore_hidden_trampoline<P, F: Fn(&P) + 'static>( 163 this: *mut gtk_sys::GtkSizeGroup, 164 _param_spec: glib_sys::gpointer, 165 f: glib_sys::gpointer, 166 ) where 167 P: IsA<SizeGroup>, 168 { 169 let f: &F = &*(f as *const F); 170 f(&SizeGroup::from_glib_borrow(this).unsafe_cast()) 171 } 172 unsafe { 173 let f: Box_<F> = Box_::new(f); 174 connect_raw( 175 self.as_ptr() as *mut _, 176 b"notify::ignore-hidden\0".as_ptr() as *const _, 177 Some(transmute( 178 notify_ignore_hidden_trampoline::<Self, F> as usize, 179 )), 180 Box_::into_raw(f), 181 ) 182 } 183 } 184 connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId185 fn connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { 186 unsafe extern "C" fn notify_mode_trampoline<P, F: Fn(&P) + 'static>( 187 this: *mut gtk_sys::GtkSizeGroup, 188 _param_spec: glib_sys::gpointer, 189 f: glib_sys::gpointer, 190 ) where 191 P: IsA<SizeGroup>, 192 { 193 let f: &F = &*(f as *const F); 194 f(&SizeGroup::from_glib_borrow(this).unsafe_cast()) 195 } 196 unsafe { 197 let f: Box_<F> = Box_::new(f); 198 connect_raw( 199 self.as_ptr() as *mut _, 200 b"notify::mode\0".as_ptr() as *const _, 201 Some(transmute(notify_mode_trampoline::<Self, F> as usize)), 202 Box_::into_raw(f), 203 ) 204 } 205 } 206 } 207 208 impl fmt::Display for SizeGroup { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result209 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 210 write!(f, "SizeGroup") 211 } 212 } 213