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::Application;
6 use crate::Widget;
7 use glib::object::Cast;
8 use glib::object::IsA;
9 use glib::signal::connect_raw;
10 use glib::signal::SignalHandlerId;
11 use glib::translate::*;
12 use std::boxed::Box as Box_;
13 use std::fmt;
14 use std::mem::transmute;
15 use std::ptr;
16 
17 glib::wrapper! {
18     #[doc(alias = "GtkBuilder")]
19     pub struct Builder(Object<ffi::GtkBuilder, ffi::GtkBuilderClass>);
20 
21     match fn {
22         type_ => || ffi::gtk_builder_get_type(),
23     }
24 }
25 
26 impl Builder {
27     #[doc(alias = "gtk_builder_new")]
new() -> Builder28     pub fn new() -> Builder {
29         assert_initialized_main_thread!();
30         unsafe { from_glib_full(ffi::gtk_builder_new()) }
31     }
32 
33     #[doc(alias = "gtk_builder_new_from_resource")]
34     #[doc(alias = "new_from_resource")]
from_resource(resource_path: &str) -> Builder35     pub fn from_resource(resource_path: &str) -> Builder {
36         assert_initialized_main_thread!();
37         unsafe {
38             from_glib_full(ffi::gtk_builder_new_from_resource(
39                 resource_path.to_glib_none().0,
40             ))
41         }
42     }
43 
44     #[doc(alias = "gtk_builder_new_from_string")]
45     #[doc(alias = "new_from_string")]
from_string(string: &str) -> Builder46     pub fn from_string(string: &str) -> Builder {
47         assert_initialized_main_thread!();
48         let length = string.len() as isize;
49         unsafe {
50             from_glib_full(ffi::gtk_builder_new_from_string(
51                 string.to_glib_none().0,
52                 length,
53             ))
54         }
55     }
56 }
57 
58 impl Default for Builder {
default() -> Self59     fn default() -> Self {
60         Self::new()
61     }
62 }
63 
64 pub const NONE_BUILDER: Option<&Builder> = None;
65 
66 pub trait BuilderExt: 'static {
67     //#[doc(alias = "gtk_builder_add_callback_symbol")]
68     //fn add_callback_symbol<P: FnOnce() + 'static>(&self, callback_name: &str, callback_symbol: P);
69 
70     //#[doc(alias = "gtk_builder_add_callback_symbols")]
71     //fn add_callback_symbols<P: FnOnce() + 'static>(&self, first_callback_name: &str, first_callback_symbol: P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
72 
73     #[doc(alias = "gtk_builder_add_from_resource")]
add_from_resource(&self, resource_path: &str) -> Result<(), glib::Error>74     fn add_from_resource(&self, resource_path: &str) -> Result<(), glib::Error>;
75 
76     #[doc(alias = "gtk_builder_add_from_string")]
add_from_string(&self, buffer: &str) -> Result<(), glib::Error>77     fn add_from_string(&self, buffer: &str) -> Result<(), glib::Error>;
78 
79     #[doc(alias = "gtk_builder_add_objects_from_resource")]
add_objects_from_resource( &self, resource_path: &str, object_ids: &[&str], ) -> Result<(), glib::Error>80     fn add_objects_from_resource(
81         &self,
82         resource_path: &str,
83         object_ids: &[&str],
84     ) -> Result<(), glib::Error>;
85 
86     #[doc(alias = "gtk_builder_add_objects_from_string")]
add_objects_from_string(&self, buffer: &str, object_ids: &[&str]) -> Result<(), glib::Error>87     fn add_objects_from_string(&self, buffer: &str, object_ids: &[&str])
88         -> Result<(), glib::Error>;
89 
90     //#[doc(alias = "gtk_builder_connect_signals")]
91     //fn connect_signals(&self, user_data: /*Unimplemented*/Option<Fundamental: Pointer>);
92 
93     #[doc(alias = "gtk_builder_expose_object")]
expose_object<P: IsA<glib::Object>>(&self, name: &str, object: &P)94     fn expose_object<P: IsA<glib::Object>>(&self, name: &str, object: &P);
95 
96     #[doc(alias = "gtk_builder_extend_with_template")]
extend_with_template<P: IsA<Widget>>( &self, widget: &P, template_type: glib::types::Type, buffer: &str, ) -> Result<(), glib::Error>97     fn extend_with_template<P: IsA<Widget>>(
98         &self,
99         widget: &P,
100         template_type: glib::types::Type,
101         buffer: &str,
102     ) -> Result<(), glib::Error>;
103 
104     #[doc(alias = "gtk_builder_get_application")]
105     #[doc(alias = "get_application")]
application(&self) -> Option<Application>106     fn application(&self) -> Option<Application>;
107 
108     #[doc(alias = "gtk_builder_get_objects")]
109     #[doc(alias = "get_objects")]
objects(&self) -> Vec<glib::Object>110     fn objects(&self) -> Vec<glib::Object>;
111 
112     #[doc(alias = "gtk_builder_get_translation_domain")]
113     #[doc(alias = "get_translation_domain")]
translation_domain(&self) -> Option<glib::GString>114     fn translation_domain(&self) -> Option<glib::GString>;
115 
116     #[doc(alias = "gtk_builder_get_type_from_name")]
117     #[doc(alias = "get_type_from_name")]
type_from_name(&self, type_name: &str) -> glib::types::Type118     fn type_from_name(&self, type_name: &str) -> glib::types::Type;
119 
120     //#[doc(alias = "gtk_builder_lookup_callback_symbol")]
121     //fn lookup_callback_symbol(&self, callback_name: &str) -> Option<Box_<dyn Fn() + 'static>>;
122 
123     #[doc(alias = "gtk_builder_set_application")]
set_application<P: IsA<Application>>(&self, application: &P)124     fn set_application<P: IsA<Application>>(&self, application: &P);
125 
126     #[doc(alias = "gtk_builder_set_translation_domain")]
set_translation_domain(&self, domain: Option<&str>)127     fn set_translation_domain(&self, domain: Option<&str>);
128 
129     #[doc(alias = "gtk_builder_value_from_string")]
value_from_string( &self, pspec: &glib::ParamSpec, string: &str, ) -> Result<glib::Value, glib::Error>130     fn value_from_string(
131         &self,
132         pspec: &glib::ParamSpec,
133         string: &str,
134     ) -> Result<glib::Value, glib::Error>;
135 
136     #[doc(alias = "gtk_builder_value_from_string_type")]
value_from_string_type( &self, type_: glib::types::Type, string: &str, ) -> Result<glib::Value, glib::Error>137     fn value_from_string_type(
138         &self,
139         type_: glib::types::Type,
140         string: &str,
141     ) -> Result<glib::Value, glib::Error>;
142 
143     #[doc(alias = "translation-domain")]
connect_translation_domain_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId144     fn connect_translation_domain_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
145 }
146 
147 impl<O: IsA<Builder>> BuilderExt for O {
148     //fn add_callback_symbol<P: FnOnce() + 'static>(&self, callback_name: &str, callback_symbol: P) {
149     //    unsafe { TODO: call ffi:gtk_builder_add_callback_symbol() }
150     //}
151 
152     //fn add_callback_symbols<P: FnOnce() + 'static>(&self, first_callback_name: &str, first_callback_symbol: P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
153     //    unsafe { TODO: call ffi:gtk_builder_add_callback_symbols() }
154     //}
155 
add_from_resource(&self, resource_path: &str) -> Result<(), glib::Error>156     fn add_from_resource(&self, resource_path: &str) -> Result<(), glib::Error> {
157         unsafe {
158             let mut error = ptr::null_mut();
159             let _ = ffi::gtk_builder_add_from_resource(
160                 self.as_ref().to_glib_none().0,
161                 resource_path.to_glib_none().0,
162                 &mut error,
163             );
164             if error.is_null() {
165                 Ok(())
166             } else {
167                 Err(from_glib_full(error))
168             }
169         }
170     }
171 
add_from_string(&self, buffer: &str) -> Result<(), glib::Error>172     fn add_from_string(&self, buffer: &str) -> Result<(), glib::Error> {
173         let length = buffer.len() as usize;
174         unsafe {
175             let mut error = ptr::null_mut();
176             let _ = ffi::gtk_builder_add_from_string(
177                 self.as_ref().to_glib_none().0,
178                 buffer.to_glib_none().0,
179                 length,
180                 &mut error,
181             );
182             if error.is_null() {
183                 Ok(())
184             } else {
185                 Err(from_glib_full(error))
186             }
187         }
188     }
189 
add_objects_from_resource( &self, resource_path: &str, object_ids: &[&str], ) -> Result<(), glib::Error>190     fn add_objects_from_resource(
191         &self,
192         resource_path: &str,
193         object_ids: &[&str],
194     ) -> Result<(), glib::Error> {
195         unsafe {
196             let mut error = ptr::null_mut();
197             let _ = ffi::gtk_builder_add_objects_from_resource(
198                 self.as_ref().to_glib_none().0,
199                 resource_path.to_glib_none().0,
200                 object_ids.to_glib_none().0,
201                 &mut error,
202             );
203             if error.is_null() {
204                 Ok(())
205             } else {
206                 Err(from_glib_full(error))
207             }
208         }
209     }
210 
add_objects_from_string( &self, buffer: &str, object_ids: &[&str], ) -> Result<(), glib::Error>211     fn add_objects_from_string(
212         &self,
213         buffer: &str,
214         object_ids: &[&str],
215     ) -> Result<(), glib::Error> {
216         let length = buffer.len() as usize;
217         unsafe {
218             let mut error = ptr::null_mut();
219             let _ = ffi::gtk_builder_add_objects_from_string(
220                 self.as_ref().to_glib_none().0,
221                 buffer.to_glib_none().0,
222                 length,
223                 object_ids.to_glib_none().0,
224                 &mut error,
225             );
226             if error.is_null() {
227                 Ok(())
228             } else {
229                 Err(from_glib_full(error))
230             }
231         }
232     }
233 
234     //fn connect_signals(&self, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
235     //    unsafe { TODO: call ffi:gtk_builder_connect_signals() }
236     //}
237 
expose_object<P: IsA<glib::Object>>(&self, name: &str, object: &P)238     fn expose_object<P: IsA<glib::Object>>(&self, name: &str, object: &P) {
239         unsafe {
240             ffi::gtk_builder_expose_object(
241                 self.as_ref().to_glib_none().0,
242                 name.to_glib_none().0,
243                 object.as_ref().to_glib_none().0,
244             );
245         }
246     }
247 
extend_with_template<P: IsA<Widget>>( &self, widget: &P, template_type: glib::types::Type, buffer: &str, ) -> Result<(), glib::Error>248     fn extend_with_template<P: IsA<Widget>>(
249         &self,
250         widget: &P,
251         template_type: glib::types::Type,
252         buffer: &str,
253     ) -> Result<(), glib::Error> {
254         let length = buffer.len() as usize;
255         unsafe {
256             let mut error = ptr::null_mut();
257             let _ = ffi::gtk_builder_extend_with_template(
258                 self.as_ref().to_glib_none().0,
259                 widget.as_ref().to_glib_none().0,
260                 template_type.into_glib(),
261                 buffer.to_glib_none().0,
262                 length,
263                 &mut error,
264             );
265             if error.is_null() {
266                 Ok(())
267             } else {
268                 Err(from_glib_full(error))
269             }
270         }
271     }
272 
application(&self) -> Option<Application>273     fn application(&self) -> Option<Application> {
274         unsafe {
275             from_glib_none(ffi::gtk_builder_get_application(
276                 self.as_ref().to_glib_none().0,
277             ))
278         }
279     }
280 
objects(&self) -> Vec<glib::Object>281     fn objects(&self) -> Vec<glib::Object> {
282         unsafe {
283             FromGlibPtrContainer::from_glib_container(ffi::gtk_builder_get_objects(
284                 self.as_ref().to_glib_none().0,
285             ))
286         }
287     }
288 
translation_domain(&self) -> Option<glib::GString>289     fn translation_domain(&self) -> Option<glib::GString> {
290         unsafe {
291             from_glib_none(ffi::gtk_builder_get_translation_domain(
292                 self.as_ref().to_glib_none().0,
293             ))
294         }
295     }
296 
type_from_name(&self, type_name: &str) -> glib::types::Type297     fn type_from_name(&self, type_name: &str) -> glib::types::Type {
298         unsafe {
299             from_glib(ffi::gtk_builder_get_type_from_name(
300                 self.as_ref().to_glib_none().0,
301                 type_name.to_glib_none().0,
302             ))
303         }
304     }
305 
306     //fn lookup_callback_symbol(&self, callback_name: &str) -> Option<Box_<dyn Fn() + 'static>> {
307     //    unsafe { TODO: call ffi:gtk_builder_lookup_callback_symbol() }
308     //}
309 
set_application<P: IsA<Application>>(&self, application: &P)310     fn set_application<P: IsA<Application>>(&self, application: &P) {
311         unsafe {
312             ffi::gtk_builder_set_application(
313                 self.as_ref().to_glib_none().0,
314                 application.as_ref().to_glib_none().0,
315             );
316         }
317     }
318 
set_translation_domain(&self, domain: Option<&str>)319     fn set_translation_domain(&self, domain: Option<&str>) {
320         unsafe {
321             ffi::gtk_builder_set_translation_domain(
322                 self.as_ref().to_glib_none().0,
323                 domain.to_glib_none().0,
324             );
325         }
326     }
327 
value_from_string( &self, pspec: &glib::ParamSpec, string: &str, ) -> Result<glib::Value, glib::Error>328     fn value_from_string(
329         &self,
330         pspec: &glib::ParamSpec,
331         string: &str,
332     ) -> Result<glib::Value, glib::Error> {
333         unsafe {
334             let mut value = glib::Value::uninitialized();
335             let mut error = ptr::null_mut();
336             let _ = ffi::gtk_builder_value_from_string(
337                 self.as_ref().to_glib_none().0,
338                 pspec.to_glib_none().0,
339                 string.to_glib_none().0,
340                 value.to_glib_none_mut().0,
341                 &mut error,
342             );
343             if error.is_null() {
344                 Ok(value)
345             } else {
346                 Err(from_glib_full(error))
347             }
348         }
349     }
350 
value_from_string_type( &self, type_: glib::types::Type, string: &str, ) -> Result<glib::Value, glib::Error>351     fn value_from_string_type(
352         &self,
353         type_: glib::types::Type,
354         string: &str,
355     ) -> Result<glib::Value, glib::Error> {
356         unsafe {
357             let mut value = glib::Value::uninitialized();
358             let mut error = ptr::null_mut();
359             let _ = ffi::gtk_builder_value_from_string_type(
360                 self.as_ref().to_glib_none().0,
361                 type_.into_glib(),
362                 string.to_glib_none().0,
363                 value.to_glib_none_mut().0,
364                 &mut error,
365             );
366             if error.is_null() {
367                 Ok(value)
368             } else {
369                 Err(from_glib_full(error))
370             }
371         }
372     }
373 
connect_translation_domain_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId374     fn connect_translation_domain_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
375         unsafe extern "C" fn notify_translation_domain_trampoline<
376             P: IsA<Builder>,
377             F: Fn(&P) + 'static,
378         >(
379             this: *mut ffi::GtkBuilder,
380             _param_spec: glib::ffi::gpointer,
381             f: glib::ffi::gpointer,
382         ) {
383             let f: &F = &*(f as *const F);
384             f(Builder::from_glib_borrow(this).unsafe_cast_ref())
385         }
386         unsafe {
387             let f: Box_<F> = Box_::new(f);
388             connect_raw(
389                 self.as_ptr() as *mut _,
390                 b"notify::translation-domain\0".as_ptr() as *const _,
391                 Some(transmute::<_, unsafe extern "C" fn()>(
392                     notify_translation_domain_trampoline::<Self, F> as *const (),
393                 )),
394                 Box_::into_raw(f),
395             )
396         }
397     }
398 }
399 
400 impl fmt::Display for Builder {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result401     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
402         f.write_str("Builder")
403     }
404 }
405