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