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