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 gdk; 6 use gdk_pixbuf; 7 use glib; 8 use glib::object::IsA; 9 use glib::translate::*; 10 use glib::GString; 11 use gtk_sys; 12 use std::boxed::Box as Box_; 13 use std::fmt; 14 use std::mem; 15 use std::ptr; 16 use SelectionData; 17 use TextBuffer; 18 19 glib_wrapper! { 20 pub struct Clipboard(Object<gtk_sys::GtkClipboard, ClipboardClass>); 21 22 match fn { 23 get_type => || gtk_sys::gtk_clipboard_get_type(), 24 } 25 } 26 27 impl Clipboard { clear(&self)28 pub fn clear(&self) { 29 unsafe { 30 gtk_sys::gtk_clipboard_clear(self.to_glib_none().0); 31 } 32 } 33 get_display(&self) -> Option<gdk::Display>34 pub fn get_display(&self) -> Option<gdk::Display> { 35 unsafe { from_glib_none(gtk_sys::gtk_clipboard_get_display(self.to_glib_none().0)) } 36 } 37 get_owner(&self) -> Option<glib::Object>38 pub fn get_owner(&self) -> Option<glib::Object> { 39 unsafe { from_glib_none(gtk_sys::gtk_clipboard_get_owner(self.to_glib_none().0)) } 40 } 41 42 #[cfg(any(feature = "v3_22", feature = "dox"))] get_selection(&self) -> Option<gdk::Atom>43 pub fn get_selection(&self) -> Option<gdk::Atom> { 44 unsafe { from_glib_none(gtk_sys::gtk_clipboard_get_selection(self.to_glib_none().0)) } 45 } 46 request_contents<P: FnOnce(&Clipboard, &SelectionData) + 'static>( &self, target: &gdk::Atom, callback: P, )47 pub fn request_contents<P: FnOnce(&Clipboard, &SelectionData) + 'static>( 48 &self, 49 target: &gdk::Atom, 50 callback: P, 51 ) { 52 let callback_data: Box_<P> = Box::new(callback); 53 unsafe extern "C" fn callback_func<P: FnOnce(&Clipboard, &SelectionData) + 'static>( 54 clipboard: *mut gtk_sys::GtkClipboard, 55 selection_data: *mut gtk_sys::GtkSelectionData, 56 data: glib_sys::gpointer, 57 ) { 58 let clipboard = from_glib_borrow(clipboard); 59 let selection_data = from_glib_borrow(selection_data); 60 let callback: Box_<P> = Box_::from_raw(data as *mut _); 61 (*callback)(&clipboard, &selection_data); 62 } 63 let callback = Some(callback_func::<P> as _); 64 let super_callback0: Box_<P> = callback_data; 65 unsafe { 66 gtk_sys::gtk_clipboard_request_contents( 67 self.to_glib_none().0, 68 target.to_glib_none().0, 69 callback, 70 Box::into_raw(super_callback0) as *mut _, 71 ); 72 } 73 } 74 request_image<P: FnOnce(&Clipboard, &gdk_pixbuf::Pixbuf) + 'static>(&self, callback: P)75 pub fn request_image<P: FnOnce(&Clipboard, &gdk_pixbuf::Pixbuf) + 'static>(&self, callback: P) { 76 let callback_data: Box_<P> = Box::new(callback); 77 unsafe extern "C" fn callback_func<P: FnOnce(&Clipboard, &gdk_pixbuf::Pixbuf) + 'static>( 78 clipboard: *mut gtk_sys::GtkClipboard, 79 pixbuf: *mut gdk_pixbuf_sys::GdkPixbuf, 80 data: glib_sys::gpointer, 81 ) { 82 let clipboard = from_glib_borrow(clipboard); 83 let pixbuf = from_glib_borrow(pixbuf); 84 let callback: Box_<P> = Box_::from_raw(data as *mut _); 85 (*callback)(&clipboard, &pixbuf); 86 } 87 let callback = Some(callback_func::<P> as _); 88 let super_callback0: Box_<P> = callback_data; 89 unsafe { 90 gtk_sys::gtk_clipboard_request_image( 91 self.to_glib_none().0, 92 callback, 93 Box::into_raw(super_callback0) as *mut _, 94 ); 95 } 96 } 97 request_rich_text< P: IsA<TextBuffer>, Q: FnOnce(&Clipboard, &gdk::Atom, Option<&str>, usize) + 'static, >( &self, buffer: &P, callback: Q, )98 pub fn request_rich_text< 99 P: IsA<TextBuffer>, 100 Q: FnOnce(&Clipboard, &gdk::Atom, Option<&str>, usize) + 'static, 101 >( 102 &self, 103 buffer: &P, 104 callback: Q, 105 ) { 106 let callback_data: Box_<Q> = Box::new(callback); 107 unsafe extern "C" fn callback_func< 108 P: IsA<TextBuffer>, 109 Q: FnOnce(&Clipboard, &gdk::Atom, Option<&str>, usize) + 'static, 110 >( 111 clipboard: *mut gtk_sys::GtkClipboard, 112 format: gdk_sys::GdkAtom, 113 text: *const libc::c_char, 114 length: libc::size_t, 115 data: glib_sys::gpointer, 116 ) { 117 let clipboard = from_glib_borrow(clipboard); 118 let format = from_glib_borrow(format); 119 let text: Option<GString> = from_glib_borrow(text); 120 let text = text.as_ref(); 121 let callback: Box_<Q> = Box_::from_raw(data as *mut _); 122 (*callback)(&clipboard, &format, text.map(|x| x.as_str()), length); 123 } 124 let callback = Some(callback_func::<P, Q> as _); 125 let super_callback0: Box_<Q> = callback_data; 126 unsafe { 127 gtk_sys::gtk_clipboard_request_rich_text( 128 self.to_glib_none().0, 129 buffer.as_ref().to_glib_none().0, 130 callback, 131 Box::into_raw(super_callback0) as *mut _, 132 ); 133 } 134 } 135 request_text<P: FnOnce(&Clipboard, Option<&str>) + 'static>(&self, callback: P)136 pub fn request_text<P: FnOnce(&Clipboard, Option<&str>) + 'static>(&self, callback: P) { 137 let callback_data: Box_<P> = Box::new(callback); 138 unsafe extern "C" fn callback_func<P: FnOnce(&Clipboard, Option<&str>) + 'static>( 139 clipboard: *mut gtk_sys::GtkClipboard, 140 text: *const libc::c_char, 141 data: glib_sys::gpointer, 142 ) { 143 let clipboard = from_glib_borrow(clipboard); 144 let text: Option<GString> = from_glib_borrow(text); 145 let text = text.as_ref(); 146 let callback: Box_<P> = Box_::from_raw(data as *mut _); 147 (*callback)(&clipboard, text.map(|x| x.as_str())); 148 } 149 let callback = Some(callback_func::<P> as _); 150 let super_callback0: Box_<P> = callback_data; 151 unsafe { 152 gtk_sys::gtk_clipboard_request_text( 153 self.to_glib_none().0, 154 callback, 155 Box::into_raw(super_callback0) as *mut _, 156 ); 157 } 158 } 159 set_image(&self, pixbuf: &gdk_pixbuf::Pixbuf)160 pub fn set_image(&self, pixbuf: &gdk_pixbuf::Pixbuf) { 161 unsafe { 162 gtk_sys::gtk_clipboard_set_image(self.to_glib_none().0, pixbuf.to_glib_none().0); 163 } 164 } 165 set_text(&self, text: &str)166 pub fn set_text(&self, text: &str) { 167 let len = text.len() as i32; 168 unsafe { 169 gtk_sys::gtk_clipboard_set_text(self.to_glib_none().0, text.to_glib_none().0, len); 170 } 171 } 172 store(&self)173 pub fn store(&self) { 174 unsafe { 175 gtk_sys::gtk_clipboard_store(self.to_glib_none().0); 176 } 177 } 178 wait_for_contents(&self, target: &gdk::Atom) -> Option<SelectionData>179 pub fn wait_for_contents(&self, target: &gdk::Atom) -> Option<SelectionData> { 180 unsafe { 181 from_glib_full(gtk_sys::gtk_clipboard_wait_for_contents( 182 self.to_glib_none().0, 183 target.to_glib_none().0, 184 )) 185 } 186 } 187 wait_for_image(&self) -> Option<gdk_pixbuf::Pixbuf>188 pub fn wait_for_image(&self) -> Option<gdk_pixbuf::Pixbuf> { 189 unsafe { from_glib_full(gtk_sys::gtk_clipboard_wait_for_image(self.to_glib_none().0)) } 190 } 191 wait_for_rich_text<P: IsA<TextBuffer>>(&self, buffer: &P) -> (Vec<u8>, gdk::Atom)192 pub fn wait_for_rich_text<P: IsA<TextBuffer>>(&self, buffer: &P) -> (Vec<u8>, gdk::Atom) { 193 unsafe { 194 let mut format = gdk::Atom::uninitialized(); 195 let mut length = mem::uninitialized(); 196 let ret = FromGlibContainer::from_glib_full_num( 197 gtk_sys::gtk_clipboard_wait_for_rich_text( 198 self.to_glib_none().0, 199 buffer.as_ref().to_glib_none().0, 200 format.to_glib_none_mut().0, 201 &mut length, 202 ), 203 length as usize, 204 ); 205 (ret, format) 206 } 207 } 208 wait_for_targets(&self) -> Option<Vec<gdk::Atom>>209 pub fn wait_for_targets(&self) -> Option<Vec<gdk::Atom>> { 210 unsafe { 211 let mut targets = ptr::null_mut(); 212 let mut n_targets = mem::uninitialized(); 213 let ret = from_glib(gtk_sys::gtk_clipboard_wait_for_targets( 214 self.to_glib_none().0, 215 &mut targets, 216 &mut n_targets, 217 )); 218 if ret { 219 Some(FromGlibContainer::from_glib_container_num( 220 targets, 221 n_targets as usize, 222 )) 223 } else { 224 None 225 } 226 } 227 } 228 wait_for_text(&self) -> Option<GString>229 pub fn wait_for_text(&self) -> Option<GString> { 230 unsafe { from_glib_full(gtk_sys::gtk_clipboard_wait_for_text(self.to_glib_none().0)) } 231 } 232 wait_for_uris(&self) -> Vec<GString>233 pub fn wait_for_uris(&self) -> Vec<GString> { 234 unsafe { 235 FromGlibPtrContainer::from_glib_full(gtk_sys::gtk_clipboard_wait_for_uris( 236 self.to_glib_none().0, 237 )) 238 } 239 } 240 wait_is_image_available(&self) -> bool241 pub fn wait_is_image_available(&self) -> bool { 242 unsafe { 243 from_glib(gtk_sys::gtk_clipboard_wait_is_image_available( 244 self.to_glib_none().0, 245 )) 246 } 247 } 248 wait_is_rich_text_available<P: IsA<TextBuffer>>(&self, buffer: &P) -> bool249 pub fn wait_is_rich_text_available<P: IsA<TextBuffer>>(&self, buffer: &P) -> bool { 250 unsafe { 251 from_glib(gtk_sys::gtk_clipboard_wait_is_rich_text_available( 252 self.to_glib_none().0, 253 buffer.as_ref().to_glib_none().0, 254 )) 255 } 256 } 257 wait_is_target_available(&self, target: &gdk::Atom) -> bool258 pub fn wait_is_target_available(&self, target: &gdk::Atom) -> bool { 259 unsafe { 260 from_glib(gtk_sys::gtk_clipboard_wait_is_target_available( 261 self.to_glib_none().0, 262 target.to_glib_none().0, 263 )) 264 } 265 } 266 wait_is_text_available(&self) -> bool267 pub fn wait_is_text_available(&self) -> bool { 268 unsafe { 269 from_glib(gtk_sys::gtk_clipboard_wait_is_text_available( 270 self.to_glib_none().0, 271 )) 272 } 273 } 274 wait_is_uris_available(&self) -> bool275 pub fn wait_is_uris_available(&self) -> bool { 276 unsafe { 277 from_glib(gtk_sys::gtk_clipboard_wait_is_uris_available( 278 self.to_glib_none().0, 279 )) 280 } 281 } 282 get(selection: &gdk::Atom) -> Clipboard283 pub fn get(selection: &gdk::Atom) -> Clipboard { 284 assert_initialized_main_thread!(); 285 unsafe { from_glib_none(gtk_sys::gtk_clipboard_get(selection.to_glib_none().0)) } 286 } 287 288 #[cfg(any(feature = "v3_16", feature = "dox"))] get_default(display: &gdk::Display) -> Option<Clipboard>289 pub fn get_default(display: &gdk::Display) -> Option<Clipboard> { 290 assert_initialized_main_thread!(); 291 unsafe { from_glib_none(gtk_sys::gtk_clipboard_get_default(display.to_glib_none().0)) } 292 } 293 get_for_display(display: &gdk::Display, selection: &gdk::Atom) -> Clipboard294 pub fn get_for_display(display: &gdk::Display, selection: &gdk::Atom) -> Clipboard { 295 assert_initialized_main_thread!(); 296 unsafe { 297 from_glib_none(gtk_sys::gtk_clipboard_get_for_display( 298 display.to_glib_none().0, 299 selection.to_glib_none().0, 300 )) 301 } 302 } 303 304 //pub fn connect_owner_change<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId { 305 // Ignored event: Gdk.EventOwnerChange 306 //} 307 } 308 309 impl fmt::Display for Clipboard { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result310 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 311 write!(f, "Clipboard") 312 } 313 } 314