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