2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: cshelp.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxHelpProvider
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxHelpProvider
|
|
|
|
@wxheader{cshelp.h}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
wxHelpProvider is an abstract class used by a program implementing
|
|
|
|
context-sensitive help to
|
|
|
|
show the help text for the given window.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
The current help provider must be explicitly set by the application using
|
|
|
|
wxHelpProvider::Set().
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{help}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxContextHelp, wxContextHelpButton, wxSimpleHelpProvider,
|
2008-03-08 08:52:38 -05:00
|
|
|
wxHelpControllerHelpProvider, wxWindow::SetHelpText, wxWindow::GetHelpTextAtPoint
|
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
class wxHelpProvider
|
2008-03-08 08:52:38 -05:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Virtual destructor for any base class.
|
|
|
|
*/
|
|
|
|
~wxHelpProvider();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Associates the text with the given window or id. Although all help
|
2008-03-08 09:43:31 -05:00
|
|
|
providers have these functions to allow making wxWindow::SetHelpText
|
2008-03-08 08:52:38 -05:00
|
|
|
work, not all of them implement the functions.
|
|
|
|
*/
|
|
|
|
void AddHelp(wxWindowBase* window, const wxString& text);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Unlike some other classes, the help provider is not created on demand.
|
|
|
|
This must be explicitly done by the application.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
wxHelpProvider* Get();
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
This version associates the given text with all windows with this id.
|
|
|
|
May be used to set the same help string for all Cancel buttons in
|
|
|
|
the application, for example.
|
|
|
|
*/
|
|
|
|
wxString GetHelp(const wxWindowBase* window);
|
2008-03-08 09:43:31 -05:00
|
|
|
void AddHelp(wxWindowID id, const wxString& text);
|
2008-03-08 08:52:38 -05:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Removes the association between the window pointer and the help text. This is
|
|
|
|
called by the wxWindow destructor. Without this, the table of help strings will
|
|
|
|
fill up
|
|
|
|
and when window pointers are reused, the wrong help string will be found.
|
|
|
|
*/
|
|
|
|
void RemoveHelp(wxWindowBase* window);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Get/set the current, application-wide help provider. Returns
|
|
|
|
the previous one.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
wxHelpProvider* Set(wxHelpProvider* helpProvider);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Shows help for the given window. Override this function if the help doesn't
|
2008-03-08 09:43:31 -05:00
|
|
|
depend on the exact position inside the window, otherwise you need to override
|
2008-03-08 08:52:38 -05:00
|
|
|
ShowHelpAtPoint().
|
|
|
|
Returns @true if help was shown, or @false if no help was available for this
|
|
|
|
window.
|
|
|
|
*/
|
|
|
|
bool ShowHelp(wxWindowBase* window);
|
|
|
|
|
|
|
|
/**
|
|
|
|
This function may be overridden to show help for the window when it should
|
2008-03-08 09:43:31 -05:00
|
|
|
depend on the position inside the window, By default this method forwards to
|
2008-03-08 08:52:38 -05:00
|
|
|
ShowHelp(), so it is enough to only implement
|
|
|
|
the latter if the help doesn't depend on the position.
|
|
|
|
Returns @true if help was shown, or @false if no help was available for this
|
|
|
|
window.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param window
|
2008-03-09 08:33:59 -04:00
|
|
|
Window to show help text for.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param point
|
2008-03-09 08:33:59 -04:00
|
|
|
Coordinates of the mouse at the moment of help event emission.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param origin
|
2008-03-09 08:33:59 -04:00
|
|
|
Help event origin, see wxHelpEvent::GetOrigin.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
bool ShowHelpAtPoint(wxWindowBase* window, const wxPoint point,
|
|
|
|
wxHelpEvent::Origin origin);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxHelpControllerHelpProvider
|
|
|
|
@wxheader{cshelp.h}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
wxHelpControllerHelpProvider is an implementation of wxHelpProvider which
|
|
|
|
supports
|
|
|
|
both context identifiers and plain text help strings. If the help text is an
|
|
|
|
integer,
|
|
|
|
it is passed to wxHelpController::DisplayContextPopup. Otherwise, it shows the
|
|
|
|
string
|
|
|
|
in a tooltip as per wxSimpleHelpProvider. If you use this with a
|
|
|
|
wxCHMHelpController instance
|
|
|
|
on windows, it will use the native style of tip window instead of wxTipWindow.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
You can use the convenience function @b wxContextId to convert an integer
|
|
|
|
context
|
|
|
|
id to a string for passing to wxWindow::SetHelpText.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{help}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxHelpProvider, wxSimpleHelpProvider, wxContextHelp,
|
|
|
|
wxWindow::SetHelpText, wxWindow::GetHelpTextAtPoint
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxHelpControllerHelpProvider : public wxSimpleHelpProvider
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Note that the instance doesn't own the help controller. The help controller
|
|
|
|
should be deleted separately.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
wxHelpControllerHelpProvider(wxHelpControllerBase* hc = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the help controller associated with this help provider.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxHelpControllerBase* GetHelpController() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the help controller associated with this help provider.
|
|
|
|
*/
|
|
|
|
void SetHelpController(wxHelpControllerBase* hc);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxContextHelp
|
|
|
|
@wxheader{cshelp.h}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
This class changes the cursor to a query and puts the application into a
|
|
|
|
'context-sensitive help mode'.
|
|
|
|
When the user left-clicks on a window within the specified window, a wxEVT_HELP
|
|
|
|
event is
|
|
|
|
sent to that control, and the application may respond to it by popping up some
|
|
|
|
help.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
For example:
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@code
|
|
|
|
wxContextHelp contextHelp(myWindow);
|
|
|
|
@endcode
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
There are a couple of ways to invoke this behaviour implicitly:
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Use the wxDIALOG_EX_CONTEXTHELP style for a dialog (Windows only). This will
|
|
|
|
put a question mark
|
|
|
|
in the titlebar, and Windows will put the application into context-sensitive
|
|
|
|
help mode automatically,
|
|
|
|
with further programming.
|
|
|
|
Create a wxContextHelpButton, whose predefined behaviour is to create a
|
|
|
|
context help object.
|
|
|
|
Normally you will write your application so that this button is only added to a
|
|
|
|
dialog for non-Windows platforms
|
|
|
|
(use wxDIALOG_EX_CONTEXTHELP on Windows).
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Note that on Mac OS X, the cursor does not change when in context-sensitive
|
|
|
|
help mode.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{help}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxHelpEvent, wxHelpController, wxContextHelpButton
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxContextHelp : public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Constructs a context help object, calling BeginContextHelp() if
|
2008-03-09 08:33:59 -04:00
|
|
|
@a doNow is @true (the default).
|
|
|
|
If @a window is @NULL, the top window is used.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
wxContextHelp(wxWindow* window = NULL, bool doNow = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Destroys the context help object.
|
|
|
|
*/
|
|
|
|
~wxContextHelp();
|
|
|
|
|
|
|
|
/**
|
2008-03-09 08:33:59 -04:00
|
|
|
Puts the application into context-sensitive help mode. @a window is the window
|
2008-03-08 08:52:38 -05:00
|
|
|
which will be used to catch events; if @NULL, the top window will be used.
|
|
|
|
Returns @true if the application was successfully put into context-sensitive
|
|
|
|
help mode.
|
|
|
|
This function only returns when the event loop has finished.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
bool BeginContextHelp(wxWindow* window = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Ends context-sensitive help mode. Not normally called by the application.
|
|
|
|
*/
|
|
|
|
bool EndContextHelp();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxContextHelpButton
|
|
|
|
@wxheader{cshelp.h}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Instances of this class may be used to add a question mark button that when
|
|
|
|
pressed, puts the
|
|
|
|
application into context-help mode. It does this by creating a wxContextHelp
|
|
|
|
object which itself
|
|
|
|
generates a wxEVT_HELP event when the user clicks on a window.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
On Windows, you may add a question-mark icon to a dialog by use of the
|
|
|
|
wxDIALOG_EX_CONTEXTHELP extra style, but
|
|
|
|
on other platforms you will have to add a button explicitly, usually next to
|
|
|
|
OK, Cancel or similar buttons.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{help}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxBitmapButton, wxContextHelp
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxContextHelpButton : public wxBitmapButton
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
Constructor, creating and showing a context help button.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param parent
|
2008-03-09 08:33:59 -04:00
|
|
|
Parent window. Must not be @NULL.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param id
|
2008-03-09 08:33:59 -04:00
|
|
|
Button identifier. Defaults to wxID_CONTEXT_HELP.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param pos
|
2008-03-09 08:33:59 -04:00
|
|
|
Button position.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param size
|
2008-03-09 08:33:59 -04:00
|
|
|
Button size. If wxDefaultSize is specified then the button is
|
|
|
|
sized
|
|
|
|
appropriately for the question mark bitmap.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param style
|
2008-03-09 08:33:59 -04:00
|
|
|
Window style.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxContextHelpButton();
|
2008-03-08 09:43:31 -05:00
|
|
|
wxContextHelpButton(wxWindow* parent,
|
|
|
|
wxWindowID id = wxID_CONTEXT_HELP,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxBU_AUTODRAW);
|
2008-03-08 08:52:38 -05:00
|
|
|
//@}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxSimpleHelpProvider
|
|
|
|
@wxheader{cshelp.h}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
wxSimpleHelpProvider is an implementation of wxHelpProvider which supports
|
|
|
|
only plain text help strings, and shows the string associated with the
|
|
|
|
control (if any) in a tooltip.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{help}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxHelpProvider, wxHelpControllerHelpProvider, wxContextHelp,
|
2008-03-08 08:52:38 -05:00
|
|
|
wxWindow::SetHelpText, wxWindow::GetHelpTextAtPoint
|
|
|
|
*/
|
|
|
|
class wxSimpleHelpProvider : public wxHelpProvider
|
|
|
|
{
|
|
|
|
public:
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|