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