]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/helpinst.tex
Fixed crash-on-exit bug due to status bar being deleted twice (MDI apps);
[wxWidgets.git] / docs / latex / wx / helpinst.tex
CommitLineData
6fb26ea3 1\section{\class{wxHelpController}}\label{wxhelpcontroller}
a660d684 2
6fb26ea3 3This is a family of classes by which
fe604ccd 4applications may invoke a help viewer to provide on-line help.
a660d684 5
fe604ccd
JS
6A help controller allows an application to display help, at the contents
7or at a particular topic, and shut the help program down on termination.
8This avoids proliferation of many instances of the help viewer whenever the
9user requests a different topic via the application's menus or buttons.
a660d684 10
fe604ccd
JS
11Typically, an application will create a help controller instance
12when it starts, and immediately call {\bf Initialize}\rtfsp
13to associate a filename with it. The help viewer will only get run, however,
14just before the first call to display something.
a660d684 15
154f22b3
JS
16Most help controller classes actually derive from wxHelpControllerBase and have
17names of the form wxXXXHelpController or wxHelpControllerXXX. An
18appropriate class is aliased to the name wxHelpController for each platform, as follows:
19
20\begin{itemize}\itemsep=0pt
21\item On Windows, wxWinHelpController is used.
22\item On all other platforms, wxHelpControllerHtml is used if wxHTML is
23compiled into wxWindows; otherwise wxExtHelpController is used (for invoking an external
24browser).
25\end{itemize}
26
27The remaining help controller classess need to be named
28explicitly by an application that wishes to make use of them.
a660d684 29
6fb26ea3 30There are currently the following help controller classes defined:
a660d684 31
2432b92d 32\begin{itemize}\itemsep=0pt
6fb26ea3
JS
33\item wxWinHelpController, for controlling Windows Help.
34\item wxExtHelpController, for controlling external browsers under Unix.
154f22b3
JS
35The default browser is Netscape Navigator. The 'help' sample shows its use.
36\item wxHelpControllerHtml, using \helpref{wxHTML}{wxhtml} to display help. The API for this class
37is reasonably close to the wxWindows help controller API; see {\tt wx/helpwxht.h} for
38details of use.
39\item \helpref{wxHtmlHelpController}{wxhtmlhelpcontroller}, a more sophisticated help controller using \helpref{wxHTML}{wxhtml}, in
40a similar style to the Windows HTML Help viewer and using some of the same files.
0d3a69ec
JS
41Although it has an API compatible with other help controllers, it has more advanced features, so it is
42recommended that you use the specific API for this class instead.
6fb26ea3 43\end{itemize}
a660d684 44
954b8ae6 45\wxheading{Derived from}
a660d684 46
6fb26ea3
JS
47wxHelpControllerBase\\
48\helpref{wxObject}{wxobject}
fe604ccd 49
954b8ae6 50\wxheading{Include files}
a660d684 51
dbdb39b2
JS
52<wx/help.h> (wxWindows chooses the appropriate help controller class)\\
53<wx/helpbase.h> (wxHelpControllerBase class)\\
54<wx/helpwin.h> (Windows Help controller)\\
0d3a69ec
JS
55<wx/generic/helpext.h> (external HTML browser controller)\\
56<wx/generic/helpwxht.h> (simple wxHTML-based help controller)\\
57<wx/html/helpctrl.h> (advanced wxHTML based help controller: wxHtmlHelpController)
a660d684 58
154f22b3
JS
59\wxheading{See also}
60
61\helpref{wxHtmlHelpController}{wxhtmlhelpcontroller}, \helpref{wxHTML}{wxhtml}
62
a660d684
KB
63\latexignore{\rtfignore{\wxheading{Members}}}
64
6fb26ea3 65\membersection{wxHelpController::wxHelpController}
a660d684 66
6fb26ea3 67\func{}{wxHelpController}{\void}
a660d684 68
fe604ccd 69Constructs a help instance object, but does not invoke the help viewer.
a660d684 70
6fb26ea3 71\membersection{wxHelpController::\destruct{wxHelpController}}
a660d684 72
6fb26ea3 73\func{}{\destruct{wxHelpController}}{\void}
a660d684 74
fe604ccd 75Destroys the help instance, closing down the viewer if it is running.
a660d684 76
6fb26ea3 77\membersection{wxHelpController::Initialize}\label{wxhelpcontrollerinitialize}
a660d684 78
fe604ccd
JS
79\func{virtual void}{Initialize}{\param{const wxString\& }{file}}
80
81\func{virtual void}{Initialize}{\param{const wxString\& }{file}, \param{int}{ server}}
a660d684
KB
82
83Initializes the help instance with a help filename, and optionally a server (socket)
33b64e6f 84number if using wxHelp. Does not invoke the help viewer.
a660d684 85This must be called directly after the help instance object is created and before
fe604ccd
JS
86any attempts to communicate with the viewer.
87
7b28757f
JS
88You may omit the file extension and a suitable one will be chosen. For
89wxHtmlHelpController, the extensions zip, htb and hhp will be appended while searching for
90a suitable file. For WinHelp, the hlp extension is appended. For wxHelpControllerHtml (the
91standard HTML help controller), the filename is assumed to be a directory containing
92the HTML files.
a660d684 93
6fb26ea3 94\membersection{wxHelpController::DisplayBlock}\label{wxhelpcontrollerdisplayblock}
a660d684 95
fe604ccd 96\func{virtual bool}{DisplayBlock}{\param{long}{ blockNo}}
a660d684 97
fe604ccd 98If the help viewer is not running, runs it and displays the file at the given block number.
33b64e6f 99
33b64e6f
JS
100{\it WinHelp:} Refers to the context number.
101
102{\it External HTML help:} the same as for \helpref{wxHelpController::DisplaySection}{wxhelpcontrollerdisplaysection}.
a660d684 103
7b28757f
JS
104{\it wxHtmlHelpController:} {\it sectionNo} is an identifier as specified in the {\tt .hhc} file. See \helpref{Help files format}{helpformat}.
105
6fb26ea3 106\membersection{wxHelpController::DisplayContents}\label{wxhelpcontrollerdisplaycontents}
a660d684 107
fe604ccd 108\func{virtual bool}{DisplayContents}{\void}
a660d684 109
fe604ccd
JS
110If the help viewer is not running, runs it and displays the
111contents.
a660d684 112
6fb26ea3 113\membersection{wxHelpController::DisplaySection}\label{wxhelpcontrollerdisplaysection}
a660d684 114
fe604ccd 115\func{virtual bool}{DisplaySection}{\param{int}{ sectionNo}}
a660d684 116
fe604ccd 117If the help viewer is not running, runs it and displays the given section.
a660d684 118
33b64e6f 119{\it WinHelp:} {\it sectionNo} is a context id.
a660d684 120
db8db70a 121{\it External HTML help/wxHTML based help:} wxExtHelpController and wxHelpControllerHtml implement {\it sectionNo} as an id in a map file, which is of the form:
33b64e6f
JS
122
123\begin{verbatim}
1240 wx.html ; Index
1251 wx34.html#classref ; Class reference
1262 wx204.html ; Function reference
127\end{verbatim}
a660d684 128
7b28757f
JS
129{\it wxHtmlHelpController:} {\it sectionNo} is an identifier as specified in the {\tt .hhc} file. See \helpref{Help files format}{helpformat}.
130
131\membersection{wxHelpController::GetFrameParameters}\label{wxhelpcontrollergetframeparameters}
132
133\func{virtual wxFrame *}{GetFrameParameters}{\param{const wxSize * }{size = NULL}, \param{const wxPoint * }{pos = NULL},
134 \param{bool *}{newFrameEachTime = NULL}}
135
136This reads the current settings for the help frame in the case of the
137wxHelpControllerHtml, setting the frame size, position and
138the newFrameEachTime parameters to the last values used. It also
139returns the pointer to the last opened help frame. This can be used
140for example, to automatically close the help frame on program
141shutdown.
142
143wxHtmlHelpController returns the frame,
144size and position.
145
146For all other help controllers, this function does nothing
147and just returns NULL.
148
149\wxheading{Parameters}
150
151\docparam{viewer}{This defaults to "netscape" for wxExtHelpController.}
152
153\docparam{flags}{This defaults to wxHELP\_NETSCAPE for wxExtHelpController, indicating
154that the viewer is a variant of Netscape Navigator.}
155
6fb26ea3 156\membersection{wxHelpController::KeywordSearch}\label{wxhelpcontrollerkeywordsearch}
a660d684 157
fe604ccd
JS
158\func{virtual bool}{KeywordSearch}{\param{const wxString\& }{keyWord}}
159
160If the help viewer is not running, runs it, and searches for sections matching the given keyword. If one
33b64e6f
JS
161match is found, the file is displayed at this section.
162
33b64e6f
JS
163{\it WinHelp:} If more than one match is found,
164the first topic is displayed.
165
166{\it External HTML help:} If more than one match is found,
167a choice of topics is displayed.
a660d684 168
7b28757f
JS
169{\it wxHtmlHelpController:} see \helpref{wxHtmlHelpController::KeywordSearch}{wxhtmlhelpcontrollerkeywordsearch}.
170
6fb26ea3 171\membersection{wxHelpController::LoadFile}\label{wxhelpcontrollerloadfile}
a660d684 172
33b64e6f 173\func{virtual bool}{LoadFile}{\param{const wxString\& }{file = ""}}
a660d684 174
fe604ccd
JS
175If the help viewer is not running, runs it and loads the given file.
176If the filename is not supplied or is
7b28757f 177empty, the file specified in {\bf Initialize} is used. If the viewer is
a660d684
KB
178already displaying the specified file, it will not be reloaded. This
179member function may be used before each display call in case the user
180has opened another file.
181
7b28757f 182wxHtmlHelpController ignores this call.
33b64e6f 183
7b28757f 184\membersection{wxHelpController::OnQuit}\label{wxhelpcontrolleronquit}
33b64e6f 185
7b28757f
JS
186\func{virtual bool}{OnQuit}{\void}
187
188Overridable member called when this application's viewer is quit by the user.
189
190This does not work for all help controllers.
33b64e6f 191
db8db70a 192\membersection{wxHelpController::SetFrameParameters}\label{wxhelpcontrollersetframeparameters}
7b28757f
JS
193
194\func{virtual void}{SetFrameParameters}{\param{const wxString \& }{title},
db8db70a
KB
195 \param{const wxSize \& }{size}, \param{const wxPoint \& }{pos = wxDefaultPosition},
196 \param{bool }{newFrameEachTime = FALSE}}
197
7b28757f 198For wxHelpControllerHtml, this allows the application to set the
db8db70a
KB
199default frame title, size and position for the frame. If the title
200contains \%s, this will be replaced with the page title. If the
7b28757f
JS
201parameter newFrameEachTime is set, the controller will open a new
202help frame each time it is called.
db8db70a 203
7b28757f
JS
204For wxHtmlHelpController, the title is set (again with \%s indicating the
205page title) and also the size and position of the frame if the frame is already
206open. {\it newFrameEachTime} is ignored.
db8db70a 207
7b28757f 208For all other help controllers this function has no effect.
33b64e6f 209
7b28757f 210\membersection{wxHelpController::SetViewer}\label{wxhelpcontrollersetviewer}
33b64e6f 211
7b28757f 212\func{virtual void}{SetViewer}{\param{const wxString\& }{viewer}, \param{long}{ flags}}
fe604ccd 213
7b28757f 214Sets detailed viewer information. So far this is only relevant to wxExtHelpController.
a660d684 215
7b28757f 216Some examples of usage:
a660d684 217
7b28757f
JS
218\begin{verbatim}
219 m_help.SetViewer("kdehelp");
220 m_help.SetViewer("gnome-help-browser");
221 m_help.SetViewer("netscape", wxHELP_NETSCAPE);
222\end{verbatim}
a660d684 223
6fb26ea3 224\membersection{wxHelpController::Quit}\label{wxhelpcontrollerquit}
a660d684 225
fe604ccd 226\func{virtual bool}{Quit}{\void}
a660d684 227
fe604ccd 228If the viewer is running, quits it by disconnecting.
a660d684 229
fe604ccd 230For Windows Help, the viewer will only close if no other application is using it.
a660d684 231