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