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_sys;
11 use gtk_sys;
12 use std::boxed::Box as Box_;
13 use std::fmt;
14 use std::mem::transmute;
15 use Adjustment;
16 #[cfg(any(feature = "v3_16", feature = "dox"))]
17 use Border;
18 use ScrollablePolicy;
19 
20 glib_wrapper! {
21     pub struct Scrollable(Interface<gtk_sys::GtkScrollable>);
22 
23     match fn {
24         get_type => || gtk_sys::gtk_scrollable_get_type(),
25     }
26 }
27 
28 pub const NONE_SCROLLABLE: Option<&Scrollable> = None;
29 
30 pub trait ScrollableExt: 'static {
31     #[cfg(any(feature = "v3_16", feature = "dox"))]
get_border(&self) -> Option<Border>32     fn get_border(&self) -> Option<Border>;
33 
get_hadjustment(&self) -> Option<Adjustment>34     fn get_hadjustment(&self) -> Option<Adjustment>;
35 
get_hscroll_policy(&self) -> ScrollablePolicy36     fn get_hscroll_policy(&self) -> ScrollablePolicy;
37 
get_vadjustment(&self) -> Option<Adjustment>38     fn get_vadjustment(&self) -> Option<Adjustment>;
39 
get_vscroll_policy(&self) -> ScrollablePolicy40     fn get_vscroll_policy(&self) -> ScrollablePolicy;
41 
set_hadjustment<P: IsA<Adjustment>>(&self, hadjustment: Option<&P>)42     fn set_hadjustment<P: IsA<Adjustment>>(&self, hadjustment: Option<&P>);
43 
set_hscroll_policy(&self, policy: ScrollablePolicy)44     fn set_hscroll_policy(&self, policy: ScrollablePolicy);
45 
set_vadjustment<P: IsA<Adjustment>>(&self, vadjustment: Option<&P>)46     fn set_vadjustment<P: IsA<Adjustment>>(&self, vadjustment: Option<&P>);
47 
set_vscroll_policy(&self, policy: ScrollablePolicy)48     fn set_vscroll_policy(&self, policy: ScrollablePolicy);
49 
connect_property_hadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId50     fn connect_property_hadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
51 
connect_property_hscroll_policy_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId52     fn connect_property_hscroll_policy_notify<F: Fn(&Self) + 'static>(
53         &self,
54         f: F,
55     ) -> SignalHandlerId;
56 
connect_property_vadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId57     fn connect_property_vadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
58 
connect_property_vscroll_policy_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId59     fn connect_property_vscroll_policy_notify<F: Fn(&Self) + 'static>(
60         &self,
61         f: F,
62     ) -> SignalHandlerId;
63 }
64 
65 impl<O: IsA<Scrollable>> ScrollableExt for O {
66     #[cfg(any(feature = "v3_16", feature = "dox"))]
get_border(&self) -> Option<Border>67     fn get_border(&self) -> Option<Border> {
68         unsafe {
69             let mut border = Border::uninitialized();
70             let ret = from_glib(gtk_sys::gtk_scrollable_get_border(
71                 self.as_ref().to_glib_none().0,
72                 border.to_glib_none_mut().0,
73             ));
74             if ret {
75                 Some(border)
76             } else {
77                 None
78             }
79         }
80     }
81 
get_hadjustment(&self) -> Option<Adjustment>82     fn get_hadjustment(&self) -> Option<Adjustment> {
83         unsafe {
84             from_glib_none(gtk_sys::gtk_scrollable_get_hadjustment(
85                 self.as_ref().to_glib_none().0,
86             ))
87         }
88     }
89 
get_hscroll_policy(&self) -> ScrollablePolicy90     fn get_hscroll_policy(&self) -> ScrollablePolicy {
91         unsafe {
92             from_glib(gtk_sys::gtk_scrollable_get_hscroll_policy(
93                 self.as_ref().to_glib_none().0,
94             ))
95         }
96     }
97 
get_vadjustment(&self) -> Option<Adjustment>98     fn get_vadjustment(&self) -> Option<Adjustment> {
99         unsafe {
100             from_glib_none(gtk_sys::gtk_scrollable_get_vadjustment(
101                 self.as_ref().to_glib_none().0,
102             ))
103         }
104     }
105 
get_vscroll_policy(&self) -> ScrollablePolicy106     fn get_vscroll_policy(&self) -> ScrollablePolicy {
107         unsafe {
108             from_glib(gtk_sys::gtk_scrollable_get_vscroll_policy(
109                 self.as_ref().to_glib_none().0,
110             ))
111         }
112     }
113 
set_hadjustment<P: IsA<Adjustment>>(&self, hadjustment: Option<&P>)114     fn set_hadjustment<P: IsA<Adjustment>>(&self, hadjustment: Option<&P>) {
115         unsafe {
116             gtk_sys::gtk_scrollable_set_hadjustment(
117                 self.as_ref().to_glib_none().0,
118                 hadjustment.map(|p| p.as_ref()).to_glib_none().0,
119             );
120         }
121     }
122 
set_hscroll_policy(&self, policy: ScrollablePolicy)123     fn set_hscroll_policy(&self, policy: ScrollablePolicy) {
124         unsafe {
125             gtk_sys::gtk_scrollable_set_hscroll_policy(
126                 self.as_ref().to_glib_none().0,
127                 policy.to_glib(),
128             );
129         }
130     }
131 
set_vadjustment<P: IsA<Adjustment>>(&self, vadjustment: Option<&P>)132     fn set_vadjustment<P: IsA<Adjustment>>(&self, vadjustment: Option<&P>) {
133         unsafe {
134             gtk_sys::gtk_scrollable_set_vadjustment(
135                 self.as_ref().to_glib_none().0,
136                 vadjustment.map(|p| p.as_ref()).to_glib_none().0,
137             );
138         }
139     }
140 
set_vscroll_policy(&self, policy: ScrollablePolicy)141     fn set_vscroll_policy(&self, policy: ScrollablePolicy) {
142         unsafe {
143             gtk_sys::gtk_scrollable_set_vscroll_policy(
144                 self.as_ref().to_glib_none().0,
145                 policy.to_glib(),
146             );
147         }
148     }
149 
connect_property_hadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId150     fn connect_property_hadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
151         unsafe extern "C" fn notify_hadjustment_trampoline<P, F: Fn(&P) + 'static>(
152             this: *mut gtk_sys::GtkScrollable,
153             _param_spec: glib_sys::gpointer,
154             f: glib_sys::gpointer,
155         ) where
156             P: IsA<Scrollable>,
157         {
158             let f: &F = &*(f as *const F);
159             f(&Scrollable::from_glib_borrow(this).unsafe_cast())
160         }
161         unsafe {
162             let f: Box_<F> = Box_::new(f);
163             connect_raw(
164                 self.as_ptr() as *mut _,
165                 b"notify::hadjustment\0".as_ptr() as *const _,
166                 Some(transmute(notify_hadjustment_trampoline::<Self, F> as usize)),
167                 Box_::into_raw(f),
168             )
169         }
170     }
171 
connect_property_hscroll_policy_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId172     fn connect_property_hscroll_policy_notify<F: Fn(&Self) + 'static>(
173         &self,
174         f: F,
175     ) -> SignalHandlerId {
176         unsafe extern "C" fn notify_hscroll_policy_trampoline<P, F: Fn(&P) + 'static>(
177             this: *mut gtk_sys::GtkScrollable,
178             _param_spec: glib_sys::gpointer,
179             f: glib_sys::gpointer,
180         ) where
181             P: IsA<Scrollable>,
182         {
183             let f: &F = &*(f as *const F);
184             f(&Scrollable::from_glib_borrow(this).unsafe_cast())
185         }
186         unsafe {
187             let f: Box_<F> = Box_::new(f);
188             connect_raw(
189                 self.as_ptr() as *mut _,
190                 b"notify::hscroll-policy\0".as_ptr() as *const _,
191                 Some(transmute(
192                     notify_hscroll_policy_trampoline::<Self, F> as usize,
193                 )),
194                 Box_::into_raw(f),
195             )
196         }
197     }
198 
connect_property_vadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId199     fn connect_property_vadjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
200         unsafe extern "C" fn notify_vadjustment_trampoline<P, F: Fn(&P) + 'static>(
201             this: *mut gtk_sys::GtkScrollable,
202             _param_spec: glib_sys::gpointer,
203             f: glib_sys::gpointer,
204         ) where
205             P: IsA<Scrollable>,
206         {
207             let f: &F = &*(f as *const F);
208             f(&Scrollable::from_glib_borrow(this).unsafe_cast())
209         }
210         unsafe {
211             let f: Box_<F> = Box_::new(f);
212             connect_raw(
213                 self.as_ptr() as *mut _,
214                 b"notify::vadjustment\0".as_ptr() as *const _,
215                 Some(transmute(notify_vadjustment_trampoline::<Self, F> as usize)),
216                 Box_::into_raw(f),
217             )
218         }
219     }
220 
connect_property_vscroll_policy_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId221     fn connect_property_vscroll_policy_notify<F: Fn(&Self) + 'static>(
222         &self,
223         f: F,
224     ) -> SignalHandlerId {
225         unsafe extern "C" fn notify_vscroll_policy_trampoline<P, F: Fn(&P) + 'static>(
226             this: *mut gtk_sys::GtkScrollable,
227             _param_spec: glib_sys::gpointer,
228             f: glib_sys::gpointer,
229         ) where
230             P: IsA<Scrollable>,
231         {
232             let f: &F = &*(f as *const F);
233             f(&Scrollable::from_glib_borrow(this).unsafe_cast())
234         }
235         unsafe {
236             let f: Box_<F> = Box_::new(f);
237             connect_raw(
238                 self.as_ptr() as *mut _,
239                 b"notify::vscroll-policy\0".as_ptr() as *const _,
240                 Some(transmute(
241                     notify_vscroll_policy_trampoline::<Self, F> as usize,
242                 )),
243                 Box_::into_raw(f),
244             )
245         }
246     }
247 }
248 
249 impl fmt::Display for Scrollable {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result250     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
251         write!(f, "Scrollable")
252     }
253 }
254