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::GString; 11 use glib::StaticType; 12 use glib::ToValue; 13 use glib::Value; 14 use glib_sys; 15 use gobject_sys; 16 use gtk_sys; 17 use std::boxed::Box as Box_; 18 use std::fmt; 19 use std::mem::transmute; 20 use FileChooser; 21 #[cfg(any(feature = "v3_20", feature = "dox"))] 22 use FileChooserAction; 23 use NativeDialog; 24 #[cfg(any(feature = "v3_20", feature = "dox"))] 25 use Window; 26 27 glib_wrapper! { 28 pub struct FileChooserNative(Object<gtk_sys::GtkFileChooserNative, gtk_sys::GtkFileChooserNativeClass, FileChooserNativeClass>) @extends NativeDialog, @implements FileChooser; 29 30 match fn { 31 get_type => || gtk_sys::gtk_file_chooser_native_get_type(), 32 } 33 } 34 35 impl FileChooserNative { 36 #[cfg(any(feature = "v3_20", feature = "dox"))] new<P: IsA<Window>>( title: Option<&str>, parent: Option<&P>, action: FileChooserAction, accept_label: Option<&str>, cancel_label: Option<&str>, ) -> FileChooserNative37 pub fn new<P: IsA<Window>>( 38 title: Option<&str>, 39 parent: Option<&P>, 40 action: FileChooserAction, 41 accept_label: Option<&str>, 42 cancel_label: Option<&str>, 43 ) -> FileChooserNative { 44 assert_initialized_main_thread!(); 45 unsafe { 46 from_glib_full(gtk_sys::gtk_file_chooser_native_new( 47 title.to_glib_none().0, 48 parent.map(|p| p.as_ref()).to_glib_none().0, 49 action.to_glib(), 50 accept_label.to_glib_none().0, 51 cancel_label.to_glib_none().0, 52 )) 53 } 54 } 55 } 56 57 pub struct FileChooserNativeBuilder { 58 accept_label: Option<String>, 59 cancel_label: Option<String>, 60 #[cfg(any(feature = "v3_20", feature = "dox"))] 61 modal: Option<bool>, 62 #[cfg(any(feature = "v3_20", feature = "dox"))] 63 title: Option<String>, 64 #[cfg(any(feature = "v3_20", feature = "dox"))] 65 transient_for: Option<Window>, 66 #[cfg(any(feature = "v3_20", feature = "dox"))] 67 visible: Option<bool>, 68 } 69 70 impl FileChooserNativeBuilder { new() -> Self71 pub fn new() -> Self { 72 Self { 73 accept_label: None, 74 cancel_label: None, 75 #[cfg(any(feature = "v3_20", feature = "dox"))] 76 modal: None, 77 #[cfg(any(feature = "v3_20", feature = "dox"))] 78 title: None, 79 #[cfg(any(feature = "v3_20", feature = "dox"))] 80 transient_for: None, 81 #[cfg(any(feature = "v3_20", feature = "dox"))] 82 visible: None, 83 } 84 } 85 build(self) -> FileChooserNative86 pub fn build(self) -> FileChooserNative { 87 let mut properties: Vec<(&str, &dyn ToValue)> = vec![]; 88 if let Some(ref accept_label) = self.accept_label { 89 properties.push(("accept-label", accept_label)); 90 } 91 if let Some(ref cancel_label) = self.cancel_label { 92 properties.push(("cancel-label", cancel_label)); 93 } 94 #[cfg(any(feature = "v3_20", feature = "dox"))] 95 { 96 if let Some(ref modal) = self.modal { 97 properties.push(("modal", modal)); 98 } 99 } 100 #[cfg(any(feature = "v3_20", feature = "dox"))] 101 { 102 if let Some(ref title) = self.title { 103 properties.push(("title", title)); 104 } 105 } 106 #[cfg(any(feature = "v3_20", feature = "dox"))] 107 { 108 if let Some(ref transient_for) = self.transient_for { 109 properties.push(("transient-for", transient_for)); 110 } 111 } 112 #[cfg(any(feature = "v3_20", feature = "dox"))] 113 { 114 if let Some(ref visible) = self.visible { 115 properties.push(("visible", visible)); 116 } 117 } 118 glib::Object::new(FileChooserNative::static_type(), &properties) 119 .expect("object new") 120 .downcast() 121 .expect("downcast") 122 } 123 accept_label(mut self, accept_label: &str) -> Self124 pub fn accept_label(mut self, accept_label: &str) -> Self { 125 self.accept_label = Some(accept_label.to_string()); 126 self 127 } 128 cancel_label(mut self, cancel_label: &str) -> Self129 pub fn cancel_label(mut self, cancel_label: &str) -> Self { 130 self.cancel_label = Some(cancel_label.to_string()); 131 self 132 } 133 134 #[cfg(any(feature = "v3_20", feature = "dox"))] modal(mut self, modal: bool) -> Self135 pub fn modal(mut self, modal: bool) -> Self { 136 self.modal = Some(modal); 137 self 138 } 139 140 #[cfg(any(feature = "v3_20", feature = "dox"))] title(mut self, title: &str) -> Self141 pub fn title(mut self, title: &str) -> Self { 142 self.title = Some(title.to_string()); 143 self 144 } 145 146 #[cfg(any(feature = "v3_20", feature = "dox"))] transient_for(mut self, transient_for: &Window) -> Self147 pub fn transient_for(mut self, transient_for: &Window) -> Self { 148 self.transient_for = Some(transient_for.clone()); 149 self 150 } 151 152 #[cfg(any(feature = "v3_20", feature = "dox"))] visible(mut self, visible: bool) -> Self153 pub fn visible(mut self, visible: bool) -> Self { 154 self.visible = Some(visible); 155 self 156 } 157 } 158 159 pub const NONE_FILE_CHOOSER_NATIVE: Option<&FileChooserNative> = None; 160 161 pub trait FileChooserNativeExt: 'static { 162 #[cfg(any(feature = "v3_20", feature = "dox"))] get_accept_label(&self) -> Option<GString>163 fn get_accept_label(&self) -> Option<GString>; 164 165 #[cfg(any(feature = "v3_20", feature = "dox"))] get_cancel_label(&self) -> Option<GString>166 fn get_cancel_label(&self) -> Option<GString>; 167 168 #[cfg(any(feature = "v3_20", feature = "dox"))] set_accept_label(&self, accept_label: Option<&str>)169 fn set_accept_label(&self, accept_label: Option<&str>); 170 171 #[cfg(any(feature = "v3_20", feature = "dox"))] set_cancel_label(&self, cancel_label: Option<&str>)172 fn set_cancel_label(&self, cancel_label: Option<&str>); 173 get_property_accept_label(&self) -> Option<GString>174 fn get_property_accept_label(&self) -> Option<GString>; 175 set_property_accept_label(&self, accept_label: Option<&str>)176 fn set_property_accept_label(&self, accept_label: Option<&str>); 177 get_property_cancel_label(&self) -> Option<GString>178 fn get_property_cancel_label(&self) -> Option<GString>; 179 set_property_cancel_label(&self, cancel_label: Option<&str>)180 fn set_property_cancel_label(&self, cancel_label: Option<&str>); 181 connect_property_accept_label_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId182 fn connect_property_accept_label_notify<F: Fn(&Self) + 'static>(&self, f: F) 183 -> SignalHandlerId; 184 connect_property_cancel_label_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId185 fn connect_property_cancel_label_notify<F: Fn(&Self) + 'static>(&self, f: F) 186 -> SignalHandlerId; 187 } 188 189 impl<O: IsA<FileChooserNative>> FileChooserNativeExt for O { 190 #[cfg(any(feature = "v3_20", feature = "dox"))] get_accept_label(&self) -> Option<GString>191 fn get_accept_label(&self) -> Option<GString> { 192 unsafe { 193 from_glib_none(gtk_sys::gtk_file_chooser_native_get_accept_label( 194 self.as_ref().to_glib_none().0, 195 )) 196 } 197 } 198 199 #[cfg(any(feature = "v3_20", feature = "dox"))] get_cancel_label(&self) -> Option<GString>200 fn get_cancel_label(&self) -> Option<GString> { 201 unsafe { 202 from_glib_none(gtk_sys::gtk_file_chooser_native_get_cancel_label( 203 self.as_ref().to_glib_none().0, 204 )) 205 } 206 } 207 208 #[cfg(any(feature = "v3_20", feature = "dox"))] set_accept_label(&self, accept_label: Option<&str>)209 fn set_accept_label(&self, accept_label: Option<&str>) { 210 unsafe { 211 gtk_sys::gtk_file_chooser_native_set_accept_label( 212 self.as_ref().to_glib_none().0, 213 accept_label.to_glib_none().0, 214 ); 215 } 216 } 217 218 #[cfg(any(feature = "v3_20", feature = "dox"))] set_cancel_label(&self, cancel_label: Option<&str>)219 fn set_cancel_label(&self, cancel_label: Option<&str>) { 220 unsafe { 221 gtk_sys::gtk_file_chooser_native_set_cancel_label( 222 self.as_ref().to_glib_none().0, 223 cancel_label.to_glib_none().0, 224 ); 225 } 226 } 227 get_property_accept_label(&self) -> Option<GString>228 fn get_property_accept_label(&self) -> Option<GString> { 229 unsafe { 230 let mut value = Value::from_type(<GString as StaticType>::static_type()); 231 gobject_sys::g_object_get_property( 232 self.to_glib_none().0 as *mut gobject_sys::GObject, 233 b"accept-label\0".as_ptr() as *const _, 234 value.to_glib_none_mut().0, 235 ); 236 value.get() 237 } 238 } 239 set_property_accept_label(&self, accept_label: Option<&str>)240 fn set_property_accept_label(&self, accept_label: Option<&str>) { 241 unsafe { 242 gobject_sys::g_object_set_property( 243 self.to_glib_none().0 as *mut gobject_sys::GObject, 244 b"accept-label\0".as_ptr() as *const _, 245 Value::from(accept_label).to_glib_none().0, 246 ); 247 } 248 } 249 get_property_cancel_label(&self) -> Option<GString>250 fn get_property_cancel_label(&self) -> Option<GString> { 251 unsafe { 252 let mut value = Value::from_type(<GString as StaticType>::static_type()); 253 gobject_sys::g_object_get_property( 254 self.to_glib_none().0 as *mut gobject_sys::GObject, 255 b"cancel-label\0".as_ptr() as *const _, 256 value.to_glib_none_mut().0, 257 ); 258 value.get() 259 } 260 } 261 set_property_cancel_label(&self, cancel_label: Option<&str>)262 fn set_property_cancel_label(&self, cancel_label: Option<&str>) { 263 unsafe { 264 gobject_sys::g_object_set_property( 265 self.to_glib_none().0 as *mut gobject_sys::GObject, 266 b"cancel-label\0".as_ptr() as *const _, 267 Value::from(cancel_label).to_glib_none().0, 268 ); 269 } 270 } 271 connect_property_accept_label_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId272 fn connect_property_accept_label_notify<F: Fn(&Self) + 'static>( 273 &self, 274 f: F, 275 ) -> SignalHandlerId { 276 unsafe extern "C" fn notify_accept_label_trampoline<P, F: Fn(&P) + 'static>( 277 this: *mut gtk_sys::GtkFileChooserNative, 278 _param_spec: glib_sys::gpointer, 279 f: glib_sys::gpointer, 280 ) where 281 P: IsA<FileChooserNative>, 282 { 283 let f: &F = &*(f as *const F); 284 f(&FileChooserNative::from_glib_borrow(this).unsafe_cast()) 285 } 286 unsafe { 287 let f: Box_<F> = Box_::new(f); 288 connect_raw( 289 self.as_ptr() as *mut _, 290 b"notify::accept-label\0".as_ptr() as *const _, 291 Some(transmute( 292 notify_accept_label_trampoline::<Self, F> as usize, 293 )), 294 Box_::into_raw(f), 295 ) 296 } 297 } 298 connect_property_cancel_label_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId299 fn connect_property_cancel_label_notify<F: Fn(&Self) + 'static>( 300 &self, 301 f: F, 302 ) -> SignalHandlerId { 303 unsafe extern "C" fn notify_cancel_label_trampoline<P, F: Fn(&P) + 'static>( 304 this: *mut gtk_sys::GtkFileChooserNative, 305 _param_spec: glib_sys::gpointer, 306 f: glib_sys::gpointer, 307 ) where 308 P: IsA<FileChooserNative>, 309 { 310 let f: &F = &*(f as *const F); 311 f(&FileChooserNative::from_glib_borrow(this).unsafe_cast()) 312 } 313 unsafe { 314 let f: Box_<F> = Box_::new(f); 315 connect_raw( 316 self.as_ptr() as *mut _, 317 b"notify::cancel-label\0".as_ptr() as *const _, 318 Some(transmute( 319 notify_cancel_label_trampoline::<Self, F> as usize, 320 )), 321 Box_::into_raw(f), 322 ) 323 } 324 } 325 } 326 327 impl fmt::Display for FileChooserNative { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result328 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 329 write!(f, "FileChooserNative") 330 } 331 } 332