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::Buildable; 6 use crate::SizeGroupMode; 7 use crate::Widget; 8 use glib::object::Cast; 9 use glib::object::IsA; 10 use glib::signal::connect_raw; 11 use glib::signal::SignalHandlerId; 12 use glib::translate::*; 13 use glib::StaticType; 14 use glib::ToValue; 15 use std::boxed::Box as Box_; 16 use std::fmt; 17 use std::mem::transmute; 18 19 glib::wrapper! { 20 #[doc(alias = "GtkSizeGroup")] 21 pub struct SizeGroup(Object<ffi::GtkSizeGroup, ffi::GtkSizeGroupClass>) @implements Buildable; 22 23 match fn { 24 type_ => || ffi::gtk_size_group_get_type(), 25 } 26 } 27 28 impl SizeGroup { 29 #[doc(alias = "gtk_size_group_new")] new(mode: SizeGroupMode) -> SizeGroup30 pub fn new(mode: SizeGroupMode) -> SizeGroup { 31 assert_initialized_main_thread!(); 32 unsafe { from_glib_full(ffi::gtk_size_group_new(mode.into_glib())) } 33 } 34 35 // rustdoc-stripper-ignore-next 36 /// Creates a new builder-pattern struct instance to construct [`SizeGroup`] objects. 37 /// 38 /// This method returns an instance of [`SizeGroupBuilder`] which can be used to create [`SizeGroup`] objects. builder() -> SizeGroupBuilder39 pub fn builder() -> SizeGroupBuilder { 40 SizeGroupBuilder::default() 41 } 42 } 43 44 #[derive(Clone, Default)] 45 // rustdoc-stripper-ignore-next 46 /// A [builder-pattern] type to construct [`SizeGroup`] objects. 47 /// 48 /// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html 49 pub struct SizeGroupBuilder { 50 #[cfg_attr(feature = "v3_22", deprecated = "Since 3.22")] 51 ignore_hidden: Option<bool>, 52 mode: Option<SizeGroupMode>, 53 } 54 55 impl SizeGroupBuilder { 56 // rustdoc-stripper-ignore-next 57 /// Create a new [`SizeGroupBuilder`]. new() -> Self58 pub fn new() -> Self { 59 Self::default() 60 } 61 62 // rustdoc-stripper-ignore-next 63 /// Build the [`SizeGroup`]. build(self) -> SizeGroup64 pub fn build(self) -> SizeGroup { 65 let mut properties: Vec<(&str, &dyn ToValue)> = vec![]; 66 if let Some(ref ignore_hidden) = self.ignore_hidden { 67 properties.push(("ignore-hidden", ignore_hidden)); 68 } 69 if let Some(ref mode) = self.mode { 70 properties.push(("mode", mode)); 71 } 72 glib::Object::new::<SizeGroup>(&properties) 73 .expect("Failed to create an instance of SizeGroup") 74 } 75 76 #[cfg_attr(feature = "v3_22", deprecated = "Since 3.22")] ignore_hidden(mut self, ignore_hidden: bool) -> Self77 pub fn ignore_hidden(mut self, ignore_hidden: bool) -> Self { 78 self.ignore_hidden = Some(ignore_hidden); 79 self 80 } 81 mode(mut self, mode: SizeGroupMode) -> Self82 pub fn mode(mut self, mode: SizeGroupMode) -> Self { 83 self.mode = Some(mode); 84 self 85 } 86 } 87 88 pub const NONE_SIZE_GROUP: Option<&SizeGroup> = None; 89 90 pub trait SizeGroupExt: 'static { 91 #[doc(alias = "gtk_size_group_add_widget")] add_widget<P: IsA<Widget>>(&self, widget: &P)92 fn add_widget<P: IsA<Widget>>(&self, widget: &P); 93 94 #[cfg_attr(feature = "v3_22", deprecated = "Since 3.22")] 95 #[doc(alias = "gtk_size_group_get_ignore_hidden")] 96 #[doc(alias = "get_ignore_hidden")] ignores_hidden(&self) -> bool97 fn ignores_hidden(&self) -> bool; 98 99 #[doc(alias = "gtk_size_group_get_mode")] 100 #[doc(alias = "get_mode")] mode(&self) -> SizeGroupMode101 fn mode(&self) -> SizeGroupMode; 102 103 #[doc(alias = "gtk_size_group_get_widgets")] 104 #[doc(alias = "get_widgets")] widgets(&self) -> Vec<Widget>105 fn widgets(&self) -> Vec<Widget>; 106 107 #[doc(alias = "gtk_size_group_remove_widget")] remove_widget<P: IsA<Widget>>(&self, widget: &P)108 fn remove_widget<P: IsA<Widget>>(&self, widget: &P); 109 110 #[cfg_attr(feature = "v3_22", deprecated = "Since 3.22")] 111 #[doc(alias = "gtk_size_group_set_ignore_hidden")] set_ignore_hidden(&self, ignore_hidden: bool)112 fn set_ignore_hidden(&self, ignore_hidden: bool); 113 114 #[doc(alias = "gtk_size_group_set_mode")] set_mode(&self, mode: SizeGroupMode)115 fn set_mode(&self, mode: SizeGroupMode); 116 117 #[cfg_attr(feature = "v3_22", deprecated = "Since 3.22")] 118 #[doc(alias = "ignore-hidden")] connect_ignore_hidden_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId119 fn connect_ignore_hidden_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; 120 121 #[doc(alias = "mode")] connect_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId122 fn connect_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; 123 } 124 125 impl<O: IsA<SizeGroup>> SizeGroupExt for O { add_widget<P: IsA<Widget>>(&self, widget: &P)126 fn add_widget<P: IsA<Widget>>(&self, widget: &P) { 127 unsafe { 128 ffi::gtk_size_group_add_widget( 129 self.as_ref().to_glib_none().0, 130 widget.as_ref().to_glib_none().0, 131 ); 132 } 133 } 134 ignores_hidden(&self) -> bool135 fn ignores_hidden(&self) -> bool { 136 unsafe { 137 from_glib(ffi::gtk_size_group_get_ignore_hidden( 138 self.as_ref().to_glib_none().0, 139 )) 140 } 141 } 142 mode(&self) -> SizeGroupMode143 fn mode(&self) -> SizeGroupMode { 144 unsafe { from_glib(ffi::gtk_size_group_get_mode(self.as_ref().to_glib_none().0)) } 145 } 146 widgets(&self) -> Vec<Widget>147 fn widgets(&self) -> Vec<Widget> { 148 unsafe { 149 FromGlibPtrContainer::from_glib_none(ffi::gtk_size_group_get_widgets( 150 self.as_ref().to_glib_none().0, 151 )) 152 } 153 } 154 remove_widget<P: IsA<Widget>>(&self, widget: &P)155 fn remove_widget<P: IsA<Widget>>(&self, widget: &P) { 156 unsafe { 157 ffi::gtk_size_group_remove_widget( 158 self.as_ref().to_glib_none().0, 159 widget.as_ref().to_glib_none().0, 160 ); 161 } 162 } 163 set_ignore_hidden(&self, ignore_hidden: bool)164 fn set_ignore_hidden(&self, ignore_hidden: bool) { 165 unsafe { 166 ffi::gtk_size_group_set_ignore_hidden( 167 self.as_ref().to_glib_none().0, 168 ignore_hidden.into_glib(), 169 ); 170 } 171 } 172 set_mode(&self, mode: SizeGroupMode)173 fn set_mode(&self, mode: SizeGroupMode) { 174 unsafe { 175 ffi::gtk_size_group_set_mode(self.as_ref().to_glib_none().0, mode.into_glib()); 176 } 177 } 178 connect_ignore_hidden_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId179 fn connect_ignore_hidden_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { 180 unsafe extern "C" fn notify_ignore_hidden_trampoline< 181 P: IsA<SizeGroup>, 182 F: Fn(&P) + 'static, 183 >( 184 this: *mut ffi::GtkSizeGroup, 185 _param_spec: glib::ffi::gpointer, 186 f: glib::ffi::gpointer, 187 ) { 188 let f: &F = &*(f as *const F); 189 f(SizeGroup::from_glib_borrow(this).unsafe_cast_ref()) 190 } 191 unsafe { 192 let f: Box_<F> = Box_::new(f); 193 connect_raw( 194 self.as_ptr() as *mut _, 195 b"notify::ignore-hidden\0".as_ptr() as *const _, 196 Some(transmute::<_, unsafe extern "C" fn()>( 197 notify_ignore_hidden_trampoline::<Self, F> as *const (), 198 )), 199 Box_::into_raw(f), 200 ) 201 } 202 } 203 connect_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId204 fn connect_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { 205 unsafe extern "C" fn notify_mode_trampoline<P: IsA<SizeGroup>, F: Fn(&P) + 'static>( 206 this: *mut ffi::GtkSizeGroup, 207 _param_spec: glib::ffi::gpointer, 208 f: glib::ffi::gpointer, 209 ) { 210 let f: &F = &*(f as *const F); 211 f(SizeGroup::from_glib_borrow(this).unsafe_cast_ref()) 212 } 213 unsafe { 214 let f: Box_<F> = Box_::new(f); 215 connect_raw( 216 self.as_ptr() as *mut _, 217 b"notify::mode\0".as_ptr() as *const _, 218 Some(transmute::<_, unsafe extern "C" fn()>( 219 notify_mode_trampoline::<Self, F> as *const (), 220 )), 221 Box_::into_raw(f), 222 ) 223 } 224 } 225 } 226 227 impl fmt::Display for SizeGroup { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result228 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 229 f.write_str("SizeGroup") 230 } 231 } 232