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