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 pub struct SizeGroupBuilder { 37 ignore_hidden: Option<bool>, 38 mode: Option<SizeGroupMode>, 39 } 40 41 impl SizeGroupBuilder { new() -> Self42 pub fn new() -> Self { 43 Self { 44 ignore_hidden: None, 45 mode: None, 46 } 47 } 48 build(self) -> SizeGroup49 pub fn build(self) -> SizeGroup { 50 let mut properties: Vec<(&str, &dyn ToValue)> = vec![]; 51 if let Some(ref ignore_hidden) = self.ignore_hidden { 52 properties.push(("ignore-hidden", ignore_hidden)); 53 } 54 if let Some(ref mode) = self.mode { 55 properties.push(("mode", mode)); 56 } 57 glib::Object::new(SizeGroup::static_type(), &properties) 58 .expect("object new") 59 .downcast() 60 .expect("downcast") 61 } 62 ignore_hidden(mut self, ignore_hidden: bool) -> Self63 pub fn ignore_hidden(mut self, ignore_hidden: bool) -> Self { 64 self.ignore_hidden = Some(ignore_hidden); 65 self 66 } 67 mode(mut self, mode: SizeGroupMode) -> Self68 pub fn mode(mut self, mode: SizeGroupMode) -> Self { 69 self.mode = Some(mode); 70 self 71 } 72 } 73 74 pub const NONE_SIZE_GROUP: Option<&SizeGroup> = None; 75 76 pub trait SizeGroupExt: 'static { add_widget<P: IsA<Widget>>(&self, widget: &P)77 fn add_widget<P: IsA<Widget>>(&self, widget: &P); 78 79 #[cfg_attr(feature = "v3_22", deprecated)] get_ignore_hidden(&self) -> bool80 fn get_ignore_hidden(&self) -> bool; 81 get_mode(&self) -> SizeGroupMode82 fn get_mode(&self) -> SizeGroupMode; 83 get_widgets(&self) -> Vec<Widget>84 fn get_widgets(&self) -> Vec<Widget>; 85 remove_widget<P: IsA<Widget>>(&self, widget: &P)86 fn remove_widget<P: IsA<Widget>>(&self, widget: &P); 87 88 #[cfg_attr(feature = "v3_22", deprecated)] set_ignore_hidden(&self, ignore_hidden: bool)89 fn set_ignore_hidden(&self, ignore_hidden: bool); 90 set_mode(&self, mode: SizeGroupMode)91 fn set_mode(&self, mode: SizeGroupMode); 92 93 #[cfg_attr(feature = "v3_22", deprecated)] connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId94 fn connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( 95 &self, 96 f: F, 97 ) -> SignalHandlerId; 98 connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId99 fn connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; 100 } 101 102 impl<O: IsA<SizeGroup>> SizeGroupExt for O { add_widget<P: IsA<Widget>>(&self, widget: &P)103 fn add_widget<P: IsA<Widget>>(&self, widget: &P) { 104 unsafe { 105 gtk_sys::gtk_size_group_add_widget( 106 self.as_ref().to_glib_none().0, 107 widget.as_ref().to_glib_none().0, 108 ); 109 } 110 } 111 get_ignore_hidden(&self) -> bool112 fn get_ignore_hidden(&self) -> bool { 113 unsafe { 114 from_glib(gtk_sys::gtk_size_group_get_ignore_hidden( 115 self.as_ref().to_glib_none().0, 116 )) 117 } 118 } 119 get_mode(&self) -> SizeGroupMode120 fn get_mode(&self) -> SizeGroupMode { 121 unsafe { 122 from_glib(gtk_sys::gtk_size_group_get_mode( 123 self.as_ref().to_glib_none().0, 124 )) 125 } 126 } 127 get_widgets(&self) -> Vec<Widget>128 fn get_widgets(&self) -> Vec<Widget> { 129 unsafe { 130 FromGlibPtrContainer::from_glib_none(gtk_sys::gtk_size_group_get_widgets( 131 self.as_ref().to_glib_none().0, 132 )) 133 } 134 } 135 remove_widget<P: IsA<Widget>>(&self, widget: &P)136 fn remove_widget<P: IsA<Widget>>(&self, widget: &P) { 137 unsafe { 138 gtk_sys::gtk_size_group_remove_widget( 139 self.as_ref().to_glib_none().0, 140 widget.as_ref().to_glib_none().0, 141 ); 142 } 143 } 144 set_ignore_hidden(&self, ignore_hidden: bool)145 fn set_ignore_hidden(&self, ignore_hidden: bool) { 146 unsafe { 147 gtk_sys::gtk_size_group_set_ignore_hidden( 148 self.as_ref().to_glib_none().0, 149 ignore_hidden.to_glib(), 150 ); 151 } 152 } 153 set_mode(&self, mode: SizeGroupMode)154 fn set_mode(&self, mode: SizeGroupMode) { 155 unsafe { 156 gtk_sys::gtk_size_group_set_mode(self.as_ref().to_glib_none().0, mode.to_glib()); 157 } 158 } 159 connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId160 fn connect_property_ignore_hidden_notify<F: Fn(&Self) + 'static>( 161 &self, 162 f: F, 163 ) -> SignalHandlerId { 164 unsafe extern "C" fn notify_ignore_hidden_trampoline<P, F: Fn(&P) + 'static>( 165 this: *mut gtk_sys::GtkSizeGroup, 166 _param_spec: glib_sys::gpointer, 167 f: glib_sys::gpointer, 168 ) where 169 P: IsA<SizeGroup>, 170 { 171 let f: &F = &*(f as *const F); 172 f(&SizeGroup::from_glib_borrow(this).unsafe_cast()) 173 } 174 unsafe { 175 let f: Box_<F> = Box_::new(f); 176 connect_raw( 177 self.as_ptr() as *mut _, 178 b"notify::ignore-hidden\0".as_ptr() as *const _, 179 Some(transmute( 180 notify_ignore_hidden_trampoline::<Self, F> as usize, 181 )), 182 Box_::into_raw(f), 183 ) 184 } 185 } 186 connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId187 fn connect_property_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { 188 unsafe extern "C" fn notify_mode_trampoline<P, F: Fn(&P) + 'static>( 189 this: *mut gtk_sys::GtkSizeGroup, 190 _param_spec: glib_sys::gpointer, 191 f: glib_sys::gpointer, 192 ) where 193 P: IsA<SizeGroup>, 194 { 195 let f: &F = &*(f as *const F); 196 f(&SizeGroup::from_glib_borrow(this).unsafe_cast()) 197 } 198 unsafe { 199 let f: Box_<F> = Box_::new(f); 200 connect_raw( 201 self.as_ptr() as *mut _, 202 b"notify::mode\0".as_ptr() as *const _, 203 Some(transmute(notify_mode_trampoline::<Self, F> as usize)), 204 Box_::into_raw(f), 205 ) 206 } 207 } 208 } 209 210 impl fmt::Display for SizeGroup { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result211 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 212 write!(f, "SizeGroup") 213 } 214 } 215