1use gdk;
6use glib::object::IsA;
7use glib::translate::*;
8use gtk_sys;
9use std::mem;
10use TextBuffer;
11
12glib_wrapper! {
13 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
14 pub struct TargetList(Shared<gtk_sys::GtkTargetList>);
15
16 match fn {
17 ref => |ptr| gtk_sys::gtk_target_list_ref(ptr),
18 unref => |ptr| gtk_sys::gtk_target_list_unref(ptr),
19 get_type => || gtk_sys::gtk_target_list_get_type(),
20 }
21}
22
23impl TargetList {
24 pub fn add(&self, target: &gdk::Atom, flags: u32, info: u32) {
25 unsafe {
26 gtk_sys::gtk_target_list_add(
27 self.to_glib_none().0,
28 target.to_glib_none().0,
29 flags,
30 info,
31 );
32 }
33 }
34
35 pub fn add_image_targets(&self, info: u32, writable: bool) {
36 unsafe {
37 gtk_sys::gtk_target_list_add_image_targets(
38 self.to_glib_none().0,
39 info,
40 writable.to_glib(),
41 );
42 }
43 }
44
45 pub fn add_rich_text_targets<P: IsA<TextBuffer>>(
46 &self,
47 info: u32,
48 deserializable: bool,
49 buffer: &P,
50 ) {
51 unsafe {
52 gtk_sys::gtk_target_list_add_rich_text_targets(
53 self.to_glib_none().0,
54 info,
55 deserializable.to_glib(),
56 buffer.as_ref().to_glib_none().0,
57 );
58 }
59 }
60
61 pub fn add_text_targets(&self, info: u32) {
62 unsafe {
63 gtk_sys::gtk_target_list_add_text_targets(self.to_glib_none().0, info);
64 }
65 }
66
67 pub fn add_uri_targets(&self, info: u32) {
68 unsafe {
69 gtk_sys::gtk_target_list_add_uri_targets(self.to_glib_none().0, info);
70 }
71 }
72
73 pub fn find(&self, target: &gdk::Atom) -> Option<u32> {
74 unsafe {
75 let mut info = mem::uninitialized();
76 let ret = from_glib(gtk_sys::gtk_target_list_find(
77 self.to_glib_none().0,
78 target.to_glib_none().0,
79 &mut info,
80 ));
81 if ret {
82 Some(info)
83 } else {
84 None
85 }
86 }
87 }
88
89 pub fn remove(&self, target: &gdk::Atom) {
90 unsafe {
91 gtk_sys::gtk_target_list_remove(self.to_glib_none().0, target.to_glib_none().0);
92 }
93 }
94}