2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: help.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxHelpController
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxHelpController
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
This is a family of classes by which
|
|
|
|
applications may invoke a help viewer to provide on-line help.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
A help controller allows an application to display help, at the contents
|
|
|
|
or at a particular topic, and shut the help program down on termination.
|
|
|
|
This avoids proliferation of many instances of the help viewer whenever the
|
|
|
|
user requests a different topic via the application's menus or buttons.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Typically, an application will create a help controller instance
|
|
|
|
when it starts, and immediately call @b Initialize
|
|
|
|
to associate a filename with it. The help viewer will only get run, however,
|
|
|
|
just before the first call to display something.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Most help controller classes actually derive from wxHelpControllerBase and have
|
|
|
|
names of the form wxXXXHelpController or wxHelpControllerXXX. An
|
|
|
|
appropriate class is aliased to the name wxHelpController for each platform, as
|
|
|
|
follows:
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
On desktop Windows, wxCHMHelpController is used (MS HTML Help).
|
|
|
|
On Windows CE, wxWinceHelpController is used.
|
|
|
|
On all other platforms, wxHtmlHelpController is used if wxHTML is
|
|
|
|
compiled into wxWidgets; otherwise wxExtHelpController is used (for invoking an
|
|
|
|
external
|
|
|
|
browser).
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
The remaining help controller classes need to be named
|
|
|
|
explicitly by an application that wishes to make use of them.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
There are currently the following help controller classes defined:
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
wxWinHelpController, for controlling Windows Help.
|
|
|
|
wxCHMHelpController, for controlling MS HTML Help. To use this, you need to
|
|
|
|
set wxUSE_MS_HTML_HELP
|
|
|
|
to 1 in setup.h and have htmlhelp.h header from Microsoft's HTML Help kit (you
|
|
|
|
don't need
|
|
|
|
VC++ specific htmlhelp.lib because wxWidgets loads necessary DLL at runtime and
|
|
|
|
so it
|
|
|
|
works with all compilers).
|
|
|
|
wxBestHelpController, for controlling MS HTML Help or, if Microsoft's runtime
|
|
|
|
is
|
|
|
|
not available, wxHtmlHelpController. You need to provide
|
|
|
|
@b both CHM and HTB versions of the help file. For 32bit Windows only.
|
|
|
|
wxExtHelpController, for controlling external browsers under Unix.
|
|
|
|
The default browser is Netscape Navigator. The 'help' sample shows its use.
|
|
|
|
wxWinceHelpController, for controlling a simple @c .htm help controller for
|
|
|
|
Windows CE applications.
|
2008-03-10 11:24:38 -04:00
|
|
|
wxHtmlHelpController, a sophisticated help controller using wxHTML(), in
|
2008-03-08 08:52:38 -05:00
|
|
|
a similar style to the Microsoft HTML Help viewer and using some of the same
|
|
|
|
files.
|
|
|
|
Although it has an API compatible with other help controllers, it has more
|
|
|
|
advanced features, so it is
|
|
|
|
recommended that you use the specific API for this class instead. Note that if
|
|
|
|
you
|
|
|
|
use .zip or .htb formats for your books, you
|
|
|
|
must add this line to your application initialization: @c
|
|
|
|
wxFileSystem::AddHandler(new wxArchiveFSHandler);
|
|
|
|
or nothing will be shown in your help window.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxbase}
|
|
|
|
@category{help}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxHtmlHelpController, wxHTML()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxHelpController : public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Constructs a help instance object, but does not invoke the help viewer.
|
|
|
|
If you provide a window, it will be used by some help controller classes, such
|
|
|
|
as
|
|
|
|
wxCHMHelpController, wxWinHelpController and wxHtmlHelpController, as the
|
|
|
|
parent for the help window instead of the value of wxApp::GetTopWindow. You can
|
2008-03-08 09:43:31 -05:00
|
|
|
also change the parent window later with
|
2008-03-08 08:52:38 -05:00
|
|
|
SetParentWindow().
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
wxHelpController(wxWindow* parentWindow = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Destroys the help instance, closing down the viewer if it is running.
|
|
|
|
*/
|
|
|
|
~wxHelpController();
|
|
|
|
|
|
|
|
/**
|
|
|
|
If the help viewer is not running, runs it and displays the file at the given
|
|
|
|
block number.
|
|
|
|
@e WinHelp: Refers to the context number.
|
|
|
|
@e MS HTML Help: Refers to the context number.
|
|
|
|
@e External HTML help: the same as for DisplaySection().
|
|
|
|
@e wxHtmlHelpController: @e sectionNo is an identifier as specified in the @c
|
|
|
|
.hhc file. See @ref overview_helpformat "Help files format".
|
|
|
|
This function is for backward compatibility only, and applications should use
|
|
|
|
@ref displaysection() wxHelpController instead.
|
|
|
|
*/
|
|
|
|
virtual bool DisplayBlock(long blockNo);
|
|
|
|
|
|
|
|
/**
|
|
|
|
If the help viewer is not running, runs it and displays the
|
|
|
|
contents.
|
|
|
|
*/
|
|
|
|
virtual bool DisplayContents();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Displays the section as a popup window using a context id.
|
|
|
|
Returns @false if unsuccessful or not implemented.
|
|
|
|
*/
|
|
|
|
virtual bool DisplayContextPopup(int contextId);
|
|
|
|
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
If the help viewer is not running, runs it and displays the given section.
|
2008-03-09 08:33:59 -04:00
|
|
|
@e WinHelp, MS HTML Help @a sectionNo is a context id.
|
|
|
|
@e External HTML help: wxExtHelpController implements @a sectionNo as an id in
|
2008-03-08 08:52:38 -05:00
|
|
|
a map file, which is of the form:
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@e wxHtmlHelpController: @a sectionNo is an identifier as specified in the @c
|
|
|
|
.hhc file. See @ref overview_helpformat "Help files format".
|
2008-03-08 08:52:38 -05:00
|
|
|
See also the help sample for notes on how to specify section numbers for
|
|
|
|
various help file formats.
|
|
|
|
*/
|
|
|
|
virtual bool DisplaySection(const wxString& section);
|
2008-03-08 09:43:31 -05:00
|
|
|
virtual bool DisplaySection(int sectionNo);
|
2008-03-08 08:52:38 -05:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Displays the text in a popup window, if possible.
|
|
|
|
Returns @false if unsuccessful or not implemented.
|
|
|
|
*/
|
|
|
|
virtual bool DisplayTextPopup(const wxString& text,
|
|
|
|
const wxPoint& pos);
|
|
|
|
|
|
|
|
/**
|
|
|
|
wxHtmlHelpController returns the frame, size and position.
|
|
|
|
For all other help controllers, this function does nothing
|
|
|
|
and just returns @NULL.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param viewer
|
2008-03-09 08:33:59 -04:00
|
|
|
This defaults to "netscape" for wxExtHelpController.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param flags
|
2008-03-09 08:33:59 -04:00
|
|
|
This defaults to wxHELP_NETSCAPE for wxExtHelpController, indicating
|
|
|
|
that the viewer is a variant of Netscape Navigator.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
virtual wxFrame* GetFrameParameters(const wxSize* size = NULL,
|
|
|
|
const wxPoint* pos = NULL,
|
|
|
|
bool* newFrameEachTime = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the window to be used as the parent for the help window. This window is
|
|
|
|
used
|
|
|
|
by wxCHMHelpController, wxWinHelpController and wxHtmlHelpController.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
virtual wxWindow* GetParentWindow() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
Initializes the help instance with a help filename, and optionally a server
|
|
|
|
socket
|
|
|
|
number if using wxHelp (now obsolete). Does not invoke the help viewer.
|
|
|
|
This must be called directly after the help instance object is created and
|
|
|
|
before
|
|
|
|
any attempts to communicate with the viewer.
|
|
|
|
You may omit the file extension and a suitable one will be chosen. For
|
|
|
|
wxHtmlHelpController, the extensions zip, htb and hhp will be appended while
|
|
|
|
searching for
|
|
|
|
a suitable file. For WinHelp, the hlp extension is appended.
|
|
|
|
*/
|
|
|
|
virtual bool Initialize(const wxString& file);
|
2008-03-08 09:43:31 -05:00
|
|
|
virtual bool Initialize(const wxString& file, int server);
|
2008-03-08 08:52:38 -05:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
If the help viewer is not running, runs it, and searches for sections matching
|
|
|
|
the given keyword. If one match is found, the file is displayed at this
|
|
|
|
section. The optional parameter allows the search the index
|
|
|
|
(wxHELP_SEARCH_INDEX) but this currently only supported by the
|
|
|
|
wxHtmlHelpController.
|
2008-03-08 09:43:31 -05:00
|
|
|
@e WinHelp, MS HTML Help: If more than one match is found,
|
2008-03-08 08:52:38 -05:00
|
|
|
the first topic is displayed.
|
2008-03-08 09:43:31 -05:00
|
|
|
@e External HTML help, simple wxHTML help: If more than one match is found,
|
2008-03-08 08:52:38 -05:00
|
|
|
a choice of topics is displayed.
|
|
|
|
@e wxHtmlHelpController: see wxHtmlHelpController::KeywordSearch.
|
|
|
|
*/
|
|
|
|
virtual bool KeywordSearch(const wxString& keyWord,
|
|
|
|
wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
|
|
|
|
|
|
|
|
/**
|
|
|
|
If the help viewer is not running, runs it and loads the given file.
|
|
|
|
If the filename is not supplied or is
|
|
|
|
empty, the file specified in @b Initialize is used. If the viewer is
|
|
|
|
already displaying the specified file, it will not be reloaded. This
|
|
|
|
member function may be used before each display call in case the user
|
|
|
|
has opened another file.
|
|
|
|
wxHtmlHelpController ignores this call.
|
|
|
|
*/
|
|
|
|
virtual bool LoadFile(const wxString& file = "");
|
|
|
|
|
|
|
|
/**
|
|
|
|
Overridable member called when this application's viewer is quit by the user.
|
|
|
|
This does not work for all help controllers.
|
|
|
|
*/
|
|
|
|
virtual bool OnQuit();
|
|
|
|
|
|
|
|
/**
|
|
|
|
If the viewer is running, quits it by disconnecting.
|
|
|
|
For Windows Help, the viewer will only close if no other application is using
|
|
|
|
it.
|
|
|
|
*/
|
|
|
|
virtual bool Quit();
|
|
|
|
|
|
|
|
/**
|
|
|
|
For wxHtmlHelpController, the title is set (again with %s indicating the
|
|
|
|
page title) and also the size and position of the frame if the frame is already
|
2008-03-09 08:33:59 -04:00
|
|
|
open. @a newFrameEachTime is ignored.
|
2008-03-08 08:52:38 -05:00
|
|
|
For all other help controllers this function has no effect.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
virtual void SetFrameParameters(const wxString& title,
|
|
|
|
const wxSize& size,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
bool newFrameEachTime = false);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the window to be used as the parent for the help window. This is used
|
|
|
|
by wxCHMHelpController, wxWinHelpController and wxHtmlHelpController.
|
|
|
|
*/
|
|
|
|
virtual void SetParentWindow(wxWindow* parentWindow);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets detailed viewer information. So far this is only relevant to
|
|
|
|
wxExtHelpController.
|
|
|
|
Some examples of usage:
|
|
|
|
*/
|
|
|
|
virtual void SetViewer(const wxString& viewer, long flags);
|
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|