]>
Commit | Line | Data |
---|---|---|
23324ae1 FM |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: cshelp.h | |
e54c96f1 | 3 | // Purpose: interface of wxHelpProvider |
23324ae1 FM |
4 | // Author: wxWidgets team |
5 | // RCS-ID: $Id$ | |
6 | // Licence: wxWindows license | |
7 | ///////////////////////////////////////////////////////////////////////////// | |
8 | ||
9 | /** | |
10 | @class wxHelpProvider | |
11 | @wxheader{cshelp.h} | |
7c913512 | 12 | |
23324ae1 | 13 | wxHelpProvider is an abstract class used by a program implementing |
d155b6f4 | 14 | context-sensitive help to show the help text for the given window. |
7c913512 | 15 | |
23324ae1 | 16 | The current help provider must be explicitly set by the application using |
dc215c81 | 17 | Set(). |
7c913512 | 18 | |
23324ae1 FM |
19 | @library{wxcore} |
20 | @category{help} | |
7c913512 | 21 | |
e54c96f1 | 22 | @see wxContextHelp, wxContextHelpButton, wxSimpleHelpProvider, |
d155b6f4 VS |
23 | wxHelpControllerHelpProvider, wxWindow::SetHelpText(), |
24 | wxWindow::GetHelpTextAtPoint() | |
23324ae1 | 25 | */ |
7c913512 | 26 | class wxHelpProvider |
23324ae1 FM |
27 | { |
28 | public: | |
29 | /** | |
30 | Virtual destructor for any base class. | |
31 | */ | |
dc215c81 | 32 | virtual ~wxHelpProvider(); |
23324ae1 FM |
33 | |
34 | /** | |
d155b6f4 VS |
35 | Associates the text with the given window. |
36 | ||
37 | @remarks | |
38 | Although all help providers have these functions to allow making | |
39 | wxWindow::SetHelpText() work, not all of them implement the functions. | |
23324ae1 | 40 | */ |
d155b6f4 | 41 | virtual void AddHelp(wxWindowBase* window, const wxString& text); |
23324ae1 FM |
42 | |
43 | /** | |
d155b6f4 VS |
44 | Associates the text with the given ID. |
45 | ||
46 | This help text will be shown for all windows with ID @a id, unless they | |
47 | have more specific help text associated using the other AddHelp() | |
48 | prototype. May be used to set the same help string for all Cancel | |
49 | buttons in the application, for example. | |
50 | ||
51 | @remarks | |
52 | Although all help providers have these functions to allow making | |
53 | wxWindow::SetHelpText() work, not all of them implement the functions. | |
54 | */ | |
55 | virtual void AddHelp(wxWindowID id, const wxString& text); | |
56 | ||
57 | /** | |
58 | Returns pointer to help provider instance. | |
59 | ||
23324ae1 | 60 | Unlike some other classes, the help provider is not created on demand. |
d155b6f4 | 61 | This must be explicitly done by the application using Set(). |
23324ae1 | 62 | */ |
d155b6f4 | 63 | static wxHelpProvider* Get(); |
23324ae1 | 64 | |
23324ae1 FM |
65 | /** |
66 | This version associates the given text with all windows with this id. | |
67 | May be used to set the same help string for all Cancel buttons in | |
68 | the application, for example. | |
69 | */ | |
d155b6f4 VS |
70 | virtual wxString GetHelp(const wxWindowBase* window); |
71 | ||
23324ae1 | 72 | /** |
d155b6f4 VS |
73 | Removes the association between the window pointer and the help text. |
74 | This is called by the wxWindow destructor. Without this, the table of | |
75 | help strings will fill up and when window pointers are reused, the | |
76 | wrong help string will be found. | |
23324ae1 | 77 | */ |
d155b6f4 | 78 | virtual void RemoveHelp(wxWindowBase* window); |
23324ae1 FM |
79 | |
80 | /** | |
d155b6f4 VS |
81 | Set the current, application-wide help provider. |
82 | ||
83 | @return Pointer to previous help provider or @NULL if there wasn't any. | |
23324ae1 | 84 | */ |
d155b6f4 | 85 | static wxHelpProvider* Set(wxHelpProvider* helpProvider); |
23324ae1 FM |
86 | |
87 | /** | |
d155b6f4 VS |
88 | Shows help for the given window. |
89 | ||
90 | Override this function if the help doesn't depend on the exact position | |
91 | inside the window, otherwise you need to override ShowHelpAtPoint(). | |
92 | Returns @true if help was shown, or @false if no help was available for | |
93 | this window. | |
23324ae1 | 94 | */ |
d155b6f4 | 95 | virtual bool ShowHelp(wxWindowBase* window); |
23324ae1 FM |
96 | |
97 | /** | |
d155b6f4 VS |
98 | This function may be overridden to show help for the window when it |
99 | should depend on the position inside the window, By default this method | |
100 | forwards to ShowHelp(), so it is enough to only implement the latter if | |
dc215c81 | 101 | the help doesn't depend on the position. |
3c4f71cc | 102 | |
7c913512 | 103 | @param window |
4cc4bfaf | 104 | Window to show help text for. |
7c913512 | 105 | @param point |
4cc4bfaf | 106 | Coordinates of the mouse at the moment of help event emission. |
7c913512 | 107 | @param origin |
4cc4bfaf | 108 | Help event origin, see wxHelpEvent::GetOrigin. |
dc215c81 | 109 | |
d29a9a8a BP |
110 | @return @true if help was shown, or @false if no help was available |
111 | for this window. | |
dc215c81 | 112 | |
1e24c2af | 113 | @since 2.7.0 |
23324ae1 | 114 | */ |
d155b6f4 | 115 | virtual bool ShowHelpAtPoint(wxWindowBase* window, const wxPoint point, |
dc215c81 | 116 | wxHelpEvent::Origin origin); |
23324ae1 FM |
117 | }; |
118 | ||
119 | ||
e54c96f1 | 120 | |
23324ae1 FM |
121 | /** |
122 | @class wxHelpControllerHelpProvider | |
123 | @wxheader{cshelp.h} | |
7c913512 | 124 | |
23324ae1 | 125 | wxHelpControllerHelpProvider is an implementation of wxHelpProvider which |
d155b6f4 | 126 | supports both context identifiers and plain text help strings. If the help |
dc215c81 | 127 | text is an integer, it is passed to wxHelpController::DisplayContextPopup(). |
d155b6f4 VS |
128 | Otherwise, it shows the string in a tooltip as per wxSimpleHelpProvider. If |
129 | you use this with a wxCHMHelpController instance on windows, it will use | |
130 | the native style of tip window instead of wxTipWindow. | |
131 | ||
132 | You can use the convenience function wxContextId() to convert an integer | |
133 | context id to a string for passing to wxWindow::SetHelpText(). | |
7c913512 | 134 | |
23324ae1 FM |
135 | @library{wxcore} |
136 | @category{help} | |
7c913512 | 137 | |
e54c96f1 | 138 | @see wxHelpProvider, wxSimpleHelpProvider, wxContextHelp, |
d155b6f4 | 139 | wxWindow::SetHelpText(), wxWindow::GetHelpTextAtPoint() |
23324ae1 FM |
140 | */ |
141 | class wxHelpControllerHelpProvider : public wxSimpleHelpProvider | |
142 | { | |
143 | public: | |
144 | /** | |
d155b6f4 VS |
145 | Note that the instance doesn't own the help controller. The help |
146 | controller should be deleted separately. | |
23324ae1 | 147 | */ |
4cc4bfaf | 148 | wxHelpControllerHelpProvider(wxHelpControllerBase* hc = NULL); |
23324ae1 FM |
149 | |
150 | /** | |
151 | Returns the help controller associated with this help provider. | |
152 | */ | |
328f5751 | 153 | wxHelpControllerBase* GetHelpController() const; |
23324ae1 FM |
154 | |
155 | /** | |
156 | Sets the help controller associated with this help provider. | |
157 | */ | |
158 | void SetHelpController(wxHelpControllerBase* hc); | |
159 | }; | |
160 | ||
161 | ||
e54c96f1 | 162 | |
23324ae1 FM |
163 | /** |
164 | @class wxContextHelp | |
165 | @wxheader{cshelp.h} | |
7c913512 | 166 | |
23324ae1 | 167 | This class changes the cursor to a query and puts the application into a |
d155b6f4 VS |
168 | 'context-sensitive help mode'. When the user left-clicks on a window |
169 | within the specified window, a wxEVT_HELP event is sent to that control, | |
170 | and the application may respond to it by popping up some help. | |
7c913512 | 171 | |
23324ae1 | 172 | For example: |
23324ae1 FM |
173 | @code |
174 | wxContextHelp contextHelp(myWindow); | |
175 | @endcode | |
7c913512 | 176 | |
23324ae1 | 177 | There are a couple of ways to invoke this behaviour implicitly: |
7c913512 | 178 | |
dd634f27 | 179 | - Use the wxDIALOG_EX_CONTEXTHELP style for a dialog (Windows only). This |
d155b6f4 VS |
180 | will put a question mark in the titlebar, and Windows will put the |
181 | application into context-sensitive help mode automatically, with further | |
182 | programming. | |
183 | ||
dd634f27 | 184 | - Create a wxContextHelpButton, whose predefined behaviour is |
d155b6f4 VS |
185 | to create a context help object. Normally you will write your application |
186 | so that this button is only added to a dialog for non-Windows platforms | |
187 | (use wxDIALOG_EX_CONTEXTHELP on Windows). | |
7c913512 | 188 | |
23324ae1 FM |
189 | Note that on Mac OS X, the cursor does not change when in context-sensitive |
190 | help mode. | |
7c913512 | 191 | |
23324ae1 FM |
192 | @library{wxcore} |
193 | @category{help} | |
7c913512 | 194 | |
e54c96f1 | 195 | @see wxHelpEvent, wxHelpController, wxContextHelpButton |
23324ae1 FM |
196 | */ |
197 | class wxContextHelp : public wxObject | |
198 | { | |
199 | public: | |
200 | /** | |
201 | Constructs a context help object, calling BeginContextHelp() if | |
4cc4bfaf | 202 | @a doNow is @true (the default). |
dc215c81 | 203 | |
4cc4bfaf | 204 | If @a window is @NULL, the top window is used. |
23324ae1 | 205 | */ |
4cc4bfaf | 206 | wxContextHelp(wxWindow* window = NULL, bool doNow = true); |
23324ae1 FM |
207 | |
208 | /** | |
209 | Destroys the context help object. | |
210 | */ | |
211 | ~wxContextHelp(); | |
212 | ||
213 | /** | |
d155b6f4 VS |
214 | Puts the application into context-sensitive help mode. @a window is the |
215 | window which will be used to catch events; if @NULL, the top window | |
216 | will be used. Returns @true if the application was successfully put | |
217 | into context-sensitive help mode. This function only returns when the | |
218 | event loop has finished. | |
23324ae1 | 219 | */ |
4cc4bfaf | 220 | bool BeginContextHelp(wxWindow* window = NULL); |
23324ae1 FM |
221 | |
222 | /** | |
d155b6f4 VS |
223 | Ends context-sensitive help mode. Not normally called by the |
224 | application. | |
23324ae1 FM |
225 | */ |
226 | bool EndContextHelp(); | |
227 | }; | |
228 | ||
229 | ||
e54c96f1 | 230 | |
23324ae1 FM |
231 | /** |
232 | @class wxContextHelpButton | |
233 | @wxheader{cshelp.h} | |
7c913512 | 234 | |
23324ae1 | 235 | Instances of this class may be used to add a question mark button that when |
d155b6f4 VS |
236 | pressed, puts the application into context-help mode. It does this by |
237 | creating a wxContextHelp object which itself generates a wxEVT_HELP event | |
238 | when the user clicks on a window. | |
7c913512 | 239 | |
23324ae1 | 240 | On Windows, you may add a question-mark icon to a dialog by use of the |
d155b6f4 VS |
241 | wxDIALOG_EX_CONTEXTHELP extra style, but on other platforms you will have |
242 | to add a button explicitly, usually next to OK, Cancel or similar buttons. | |
7c913512 | 243 | |
23324ae1 FM |
244 | @library{wxcore} |
245 | @category{help} | |
7c913512 | 246 | |
e54c96f1 | 247 | @see wxBitmapButton, wxContextHelp |
23324ae1 FM |
248 | */ |
249 | class wxContextHelpButton : public wxBitmapButton | |
250 | { | |
251 | public: | |
d155b6f4 VS |
252 | /// Default constructor. |
253 | wxContextHelpButton(); | |
254 | ||
23324ae1 FM |
255 | /** |
256 | Constructor, creating and showing a context help button. | |
3c4f71cc | 257 | |
7c913512 | 258 | @param parent |
4cc4bfaf | 259 | Parent window. Must not be @NULL. |
7c913512 | 260 | @param id |
4cc4bfaf | 261 | Button identifier. Defaults to wxID_CONTEXT_HELP. |
7c913512 | 262 | @param pos |
4cc4bfaf | 263 | Button position. |
7c913512 | 264 | @param size |
dc215c81 | 265 | Button size. If wxDefaultSize is specified then the button is sized |
4cc4bfaf | 266 | appropriately for the question mark bitmap. |
7c913512 | 267 | @param style |
4cc4bfaf | 268 | Window style. |
dc215c81 BP |
269 | |
270 | @remarks | |
271 | Normally you only need pass the parent window to the constructor, and | |
272 | use the defaults for the remaining parameters. | |
23324ae1 | 273 | */ |
7c913512 FM |
274 | wxContextHelpButton(wxWindow* parent, |
275 | wxWindowID id = wxID_CONTEXT_HELP, | |
276 | const wxPoint& pos = wxDefaultPosition, | |
277 | const wxSize& size = wxDefaultSize, | |
278 | long style = wxBU_AUTODRAW); | |
23324ae1 FM |
279 | }; |
280 | ||
281 | ||
282 | /** | |
283 | @class wxSimpleHelpProvider | |
284 | @wxheader{cshelp.h} | |
7c913512 | 285 | |
23324ae1 FM |
286 | wxSimpleHelpProvider is an implementation of wxHelpProvider which supports |
287 | only plain text help strings, and shows the string associated with the | |
288 | control (if any) in a tooltip. | |
7c913512 | 289 | |
23324ae1 FM |
290 | @library{wxcore} |
291 | @category{help} | |
7c913512 | 292 | |
e54c96f1 | 293 | @see wxHelpProvider, wxHelpControllerHelpProvider, wxContextHelp, |
d155b6f4 | 294 | wxWindow::SetHelpText()(, wxWindow::GetHelpTextAtPoint() |
23324ae1 FM |
295 | */ |
296 | class wxSimpleHelpProvider : public wxHelpProvider | |
297 | { | |
298 | public: | |
7c913512 | 299 | |
23324ae1 | 300 | }; |
e54c96f1 | 301 |