1use gdk;
6use gdk_pixbuf;
7use gio;
8use glib::object::IsA;
9use glib::translate::*;
10use gtk_sys;
11use std::fmt;
12use IconSize;
13use Widget;
14
15glib_wrapper! {
16 pub struct Tooltip(Object<gtk_sys::GtkTooltip, TooltipClass>);
17
18 match fn {
19 get_type => || gtk_sys::gtk_tooltip_get_type(),
20 }
21}
22
23impl Tooltip {
24 pub fn set_custom<P: IsA<Widget>>(&self, custom_widget: Option<&P>) {
25 unsafe {
26 gtk_sys::gtk_tooltip_set_custom(
27 self.to_glib_none().0,
28 custom_widget.map(|p| p.as_ref()).to_glib_none().0,
29 );
30 }
31 }
32
33 pub fn set_icon(&self, pixbuf: Option<&gdk_pixbuf::Pixbuf>) {
34 unsafe {
35 gtk_sys::gtk_tooltip_set_icon(self.to_glib_none().0, pixbuf.to_glib_none().0);
36 }
37 }
38
39 pub fn set_icon_from_gicon<P: IsA<gio::Icon>>(&self, gicon: Option<&P>, size: IconSize) {
40 unsafe {
41 gtk_sys::gtk_tooltip_set_icon_from_gicon(
42 self.to_glib_none().0,
43 gicon.map(|p| p.as_ref()).to_glib_none().0,
44 size.to_glib(),
45 );
46 }
47 }
48
49 pub fn set_icon_from_icon_name(&self, icon_name: Option<&str>, size: IconSize) {
50 unsafe {
51 gtk_sys::gtk_tooltip_set_icon_from_icon_name(
52 self.to_glib_none().0,
53 icon_name.to_glib_none().0,
54 size.to_glib(),
55 );
56 }
57 }
58
59 pub fn set_markup(&self, markup: Option<&str>) {
60 unsafe {
61 gtk_sys::gtk_tooltip_set_markup(self.to_glib_none().0, markup.to_glib_none().0);
62 }
63 }
64
65 pub fn set_text(&self, text: Option<&str>) {
66 unsafe {
67 gtk_sys::gtk_tooltip_set_text(self.to_glib_none().0, text.to_glib_none().0);
68 }
69 }
70
71 pub fn set_tip_area(&self, rect: &gdk::Rectangle) {
72 unsafe {
73 gtk_sys::gtk_tooltip_set_tip_area(self.to_glib_none().0, rect.to_glib_none().0);
74 }
75 }
76
77 pub fn trigger_tooltip_query(display: &gdk::Display) {
78 assert_initialized_main_thread!();
79 unsafe {
80 gtk_sys::gtk_tooltip_trigger_tooltip_query(display.to_glib_none().0);
81 }
82 }
83}
84
85impl fmt::Display for Tooltip {
86 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
87 write!(f, "Tooltip")
88 }
89}