]>
Commit | Line | Data |
---|---|---|
e520c3f7 VZ |
1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // Name: interface/wx/richtooltip.h | |
3 | // Purpose: wxRichToolTip class documentation | |
4 | // Author: Vadim Zeitlin | |
5 | // Created: 2011-10-18 | |
6 | // RCS-ID: $Id$ | |
7 | // Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org> | |
8 | // Licence: wxWindows licence | |
9 | /////////////////////////////////////////////////////////////////////////////// | |
10 | ||
11 | /** | |
12 | Support tip kinds for wxRichToolTip. | |
13 | ||
14 | This enum describes the kind of the tip shown which combines both the tip | |
15 | position and appearance because the two are related (when the tip is | |
16 | positioned asymmetrically, a right handed triangle is used but an | |
17 | equilateral one when it's in the middle of a side). | |
18 | ||
19 | Automatic selects the tip appearance best suited for the current platform | |
20 | and the position best suited for the window the tooltip is shown for, i.e. | |
21 | chosen in such a way that the tooltip is always fully on screen. | |
22 | ||
23 | Other values describe the position of the tooltip itself, not the window it | |
24 | relates to. E.g. wxTipKind_Top places the tip on the top of the tooltip and | |
25 | so the tooltip itself is located beneath its associated window. | |
26 | */ | |
27 | enum wxTipKind | |
28 | { | |
29 | /// Don't show any tip, the tooltip will be (roughly) rectangular. | |
30 | wxTipKind_None, | |
31 | /// Show a right triangle tip in the top left corner of the tooltip. | |
32 | wxTipKind_TopLeft, | |
33 | /// Show an equilateral triangle tip in the middle of the tooltip top side. | |
34 | wxTipKind_Top, | |
35 | /// Show a right triangle tip in the top right corner of the tooltip. | |
36 | wxTipKind_TopRight, | |
37 | /// Show a right triangle tip in the bottom left corner of the tooltip. | |
38 | wxTipKind_BottomLeft, | |
39 | /// Show an equilateral triangle tip in the middle of the tooltip bottom side. | |
40 | wxTipKind_Bottom, | |
41 | /// Show a right triangle tip in the bottom right corner of the tooltip. | |
42 | wxTipKind_BottomRight, | |
43 | /** | |
44 | Choose the appropriate tip shape and position automatically. | |
45 | ||
46 | This is the default and shouldn't normally need to be changed. | |
47 | ||
48 | Notice that currently wxTipKind_Top or wxTipKind_Bottom are used under | |
49 | Mac while one of the other four values is selected for the other | |
50 | platforms. | |
51 | */ | |
52 | wxTipKind_Auto | |
53 | }; | |
54 | /** | |
55 | Allows to show a tool tip with more customizations than wxToolTip. | |
56 | ||
57 | Using this class is very simple, to give a standard warning for a password | |
58 | text control if the password was entered correctly you could simply do: | |
59 | @code | |
60 | wxTextCtrl* password = new wxTextCtrl(..., wxTE_PASSWORD); | |
61 | ... | |
62 | wxRichToolTip tip("Caps Lock is on", | |
63 | "You might have made an error in your password\n" | |
64 | "entry because Caps Lock is turned on.\n" | |
65 | "\n" | |
66 | "Press Caps Lock key to turn it off."); | |
67 | tip.SetIcon(wxICON_WARNING); | |
68 | tip.ShowFor(password); | |
69 | @endcode | |
70 | ||
71 | Currently this class has generic implementation that can be used with any | |
72 | window and implements all the functionality but doesn't exactly match the | |
73 | appearance of the native tooltips (even though it makes some efforts to | |
74 | use the style most appropriate for the current platform) and a native MSW | |
75 | version which can be only used with text controls and doesn't provide as | |
76 | much in the way of customization. Because of this, it's inadvisable to | |
77 | customize the tooltips unnecessarily as doing this turns off auto-detection | |
78 | of the native style in the generic version and may prevent the native MSW | |
79 | version from being used at all. | |
80 | ||
81 | Notice that this class is not derived from wxWindow and hence doesn't | |
82 | represent a window, even if its ShowFor() method does create one internally | |
83 | to show the tooltip. | |
84 | ||
85 | The images below show some examples of rich tooltips on different | |
86 | platforms, with various customizations applied. | |
87 | ||
88 | @library{wxadv} | |
89 | @category{miscwnd} | |
ce154616 | 90 | @appearance{richtooltip} |
e520c3f7 VZ |
91 | |
92 | @since 2.9.3 | |
93 | */ | |
94 | class wxRichToolTip | |
95 | { | |
96 | public: | |
97 | /** | |
98 | Constructor must specify the tooltip title and main message. | |
99 | ||
100 | The main message can contain embedded new lines. Both the title and | |
101 | message must be non-empty. | |
102 | ||
103 | Additional attributes can be set later. | |
104 | */ | |
105 | wxRichToolTip(const wxString& title, const wxString& message); | |
106 | ||
107 | /** | |
108 | Set the background colour. | |
109 | ||
110 | If two colours are specified, the background is drawn using a gradient | |
111 | from top to bottom, otherwise a single solid colour is used. | |
112 | ||
113 | By default the colour or colours most appropriate for the current | |
114 | platform are used. If a colour is explicitly set, native MSW version | |
115 | won't be used as it doesn't support setting the colour. | |
116 | */ | |
117 | void SetBackgroundColour(const wxColour& col, | |
118 | const wxColour& colEnd = wxColour()); | |
119 | ||
120 | /** | |
121 | Set the small icon to show. | |
122 | ||
123 | The icon can be either one of the standard information/warning/error | |
124 | ones, i.e. wxICON_INFORMATION, wxICON_WARNING or wxICON_ERROR | |
125 | respectively (the question icon doesn't make sense for a tooltip so | |
126 | wxICON_QUESTION can't be used here) or a custom icon. The latter is | |
127 | unsupported by the native MSW implementation of this class so the use | |
128 | of a standard icon is preferred. | |
129 | */ | |
130 | //@{ | |
131 | void SetIcon(int icon = wxICON_INFORMATION); | |
132 | void SetIcon(const wxIcon& icon); | |
133 | //@} | |
134 | ||
135 | /** | |
3c3b6f60 VZ |
136 | Set timeout after which the tooltip should disappear and |
137 | optionally set a delay before the tooltip is shown, in milliseconds. | |
e520c3f7 | 138 | |
3c3b6f60 VZ |
139 | By default the tooltip is shown immediately and hidden after a |
140 | system-dependent interval of time elapses. This method can be used to | |
141 | change this or also disable hiding the tooltip automatically entirely | |
142 | by passing 0 in this parameter (but doing this will prevent the native | |
143 | MSW version from being used). | |
e520c3f7 VZ |
144 | |
145 | Notice that the tooltip will always be hidden if the user presses a key | |
146 | or clicks a mouse button. | |
3c3b6f60 VZ |
147 | |
148 | Parameter @a millisecondsDelay is new since wxWidgets 2.9.5. | |
e520c3f7 | 149 | */ |
3c3b6f60 | 150 | void SetTimeout(unsigned millisecondsTimeout, unsigned millisecondsDelay = 0); |
e520c3f7 VZ |
151 | |
152 | /** | |
153 | Choose the tip kind, possibly none. | |
154 | ||
155 | See wxTipKind documentation for the possible choices here. | |
156 | ||
157 | By default the tip is positioned automatically, as if wxTipKind_Auto | |
158 | was used. Native MSW implementation doesn't support setting the tip | |
159 | kind explicitly and won't be used if this method is called with any | |
160 | value other than wxTipKind_Auto. | |
161 | ||
162 | Notice that using non automatic tooltip kind may result in the tooltip | |
163 | being positioned partially off screen and it's the callers | |
164 | responsibility to ensure that this doesn't happen in this case. | |
165 | */ | |
166 | void SetTipKind(wxTipKind tipKind); | |
167 | ||
168 | /** | |
169 | Set the title text font. | |
170 | ||
171 | By default it's emphasized using the font style or colour appropriate | |
172 | for the current platform. Calling this method prevents the native MSW | |
173 | implementation from being used as it doesn't support changing the font. | |
174 | */ | |
175 | void SetTitleFont(const wxFont& font); | |
176 | ||
177 | /** | |
d3feb55c VZ |
178 | Show the tooltip for the given window and optionally specify where to |
179 | show the tooltip. | |
e520c3f7 | 180 | |
d3feb55c VZ |
181 | By default the tooltip tip points to the (middle of the) specified |
182 | window which must be non-@NULL or, if @a rect is non-@NULL, the middle | |
183 | of the specified wxRect. | |
e520c3f7 | 184 | |
4efbeff4 VZ |
185 | The coordinates of the @a rect parameter are relative to the given window. |
186 | ||
e520c3f7 | 187 | Currently the native MSW implementation is used only if @a win is a |
d3feb55c VZ |
188 | wxTextCtrl and @a rect is @NULL. This limitation may be removed in the |
189 | future. | |
190 | ||
191 | Parameter @a rect is new since wxWidgets 2.9.5. | |
e520c3f7 | 192 | */ |
f6268c15 | 193 | void ShowFor(wxWindow* win, const wxRect* rect = NULL); |
e520c3f7 VZ |
194 | |
195 | /** | |
196 | Destructor. | |
197 | ||
198 | Notice that destroying this object does not hide the tooltip if it's | |
199 | currently shown, it will be hidden and destroyed when the user | |
200 | dismisses it or the timeout expires. | |
201 | ||
202 | The destructor is non-virtual as this class is not supposed to be | |
203 | derived from. | |
204 | */ | |
205 | ~wxRichToolTip(); | |
206 | }; |