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