]> git.saurik.com Git - wxWidgets.git/blame - interface/cshelp.h
Finished initial review of the rest of the [c*] interface headers.
[wxWidgets.git] / interface / cshelp.h
CommitLineData
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 26class wxHelpProvider
23324ae1
FM
27{
28public:
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
BP
109
110 @returns @true if help was shown, or @false if no help was available
111 for this window.
112
113 @wxsince{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*/
141class wxHelpControllerHelpProvider : public wxSimpleHelpProvider
142{
143public:
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*/
197class wxContextHelp : public wxObject
198{
199public:
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*/
249class wxContextHelpButton : public wxBitmapButton
250{
251public:
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*/
296class wxSimpleHelpProvider : public wxHelpProvider
297{
298public:
7c913512 299
23324ae1 300};
e54c96f1 301