]>
Commit | Line | Data |
---|---|---|
1 | ///////////////////////////////////////////////////////////////////////////// | |
2 | // Name: html/helpctrl.h | |
3 | // Purpose: interface of wxHtmlHelpController | |
4 | // Author: wxWidgets team | |
5 | // RCS-ID: $Id$ | |
6 | // Licence: wxWindows licence | |
7 | ///////////////////////////////////////////////////////////////////////////// | |
8 | ||
9 | /** | |
10 | @class wxHtmlHelpController | |
11 | ||
12 | This help controller provides an easy way of displaying HTML help in your | |
13 | application (see @sample{html}, test example). | |
14 | ||
15 | The help system is based on @b books (see wxHtmlHelpController::AddBook). | |
16 | A book is a logical section of documentation (for example "User's Guide" or | |
17 | "Programmer's Guide" or "C++ Reference" or "wxWidgets Reference"). | |
18 | The help controller can handle as many books as you want. | |
19 | ||
20 | Although this class has an API compatible with other wxWidgets help controllers | |
21 | as documented by wxHelpController, it is recommended that you use the enhanced | |
22 | capabilities of wxHtmlHelpController's API. | |
23 | ||
24 | wxHTML uses Microsoft's HTML Help Workshop project files (.hhp, .hhk, .hhc) as | |
25 | its native format. The file format is described in @ref overview_html_helpformats. | |
26 | The directory @c helpfiles in the @sample{html} contains sample project files. | |
27 | ||
28 | Note that the Microsoft's HTML Help Workshop | |
29 | (http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc) | |
30 | also runs on other platforms using WINE (http://www.winehq.org/) and it can | |
31 | be used to create the .hpp, .hhk and .hhc files through a friendly GUI. | |
32 | The commercial tool HelpBlocks (http://www.helpblocks.com) can also create these files. | |
33 | ||
34 | @library{wxhtml} | |
35 | @category{help,html} | |
36 | ||
37 | @see wxBestHelpController, wxHtmlHelpFrame, wxHtmlHelpDialog, | |
38 | wxHtmlHelpWindow, wxHtmlModalHelp | |
39 | */ | |
40 | class wxHtmlHelpController | |
41 | { | |
42 | public: | |
43 | /** | |
44 | Constructor. | |
45 | ||
46 | @param style | |
47 | This is a combination of these flags: | |
48 | - wxHF_TOOLBAR: The help window has a toolbar. | |
49 | - wxHF_FLAT_TOOLBAR: The help window has a toolbar with flat buttons (aka coolbar). | |
50 | - wxHF_CONTENTS: The help window has a contents panel. | |
51 | - wxHF_INDEX: The help window has an index panel. | |
52 | - wxHF_SEARCH: The help window has a search panel. | |
53 | - wxHF_BOOKMARKS: The help window has bookmarks controls. | |
54 | - wxHF_OPEN_FILES: Allows user to open arbitrary HTML document. | |
55 | - wxHF_PRINT: The toolbar contains "print" button. | |
56 | - wxHF_MERGE_BOOKS: The contents pane does not show book nodes. | |
57 | All books are merged together and appear as single book to the user. | |
58 | - wxHF_ICONS_BOOK: All nodes in contents pane have a book icon. | |
59 | This is how Microsoft's HTML help viewer behaves. | |
60 | - wxHF_ICONS_FOLDER: Book nodes in contents pane have a book icon, book's | |
61 | sections have a folder icon. This is the default. | |
62 | - wxHF_ICONS_BOOK_CHAPTER: Both book nodes and nodes of top-level | |
63 | sections of a book (i.e. chapters) have a book icon, all other sections | |
64 | (sections, subsections, ...) have a folder icon. | |
65 | - wxHF_EMBEDDED: Specifies that the help controller controls an embedded | |
66 | window of class wxHtmlHelpWindow that should not be destroyed when | |
67 | the controller is destroyed. | |
68 | - wxHF_DIALOG: Specifies that the help controller should create a | |
69 | dialog containing the help window. | |
70 | - wxHF_FRAME: Specifies that the help controller should create a frame | |
71 | containing the help window. | |
72 | This is the default if neither wxHF_DIALOG nor wxHF_EMBEDDED is specified. | |
73 | - wxHF_MODAL: Specifies that the help controller should create a modal | |
74 | dialog containing the help window (used with the wxHF_DIALOG style). | |
75 | - wxHF_DEFAULT_STYLE: wxHF_TOOLBAR | wxHF_CONTENTS | wxHF_INDEX | | |
76 | wxHF_SEARCH | wxHF_BOOKMARKS | wxHF_PRINT | |
77 | @param parentWindow | |
78 | This is an optional window to be used as the parent for the help window. | |
79 | */ | |
80 | wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, | |
81 | wxWindow* parentWindow = NULL); | |
82 | ||
83 | /** | |
84 | Adds a book (i.e. a @ref overview_html_helpformats ".hhp file"; an HTML Help | |
85 | Workshop project file) into the list of loaded books. | |
86 | ||
87 | This must be called at least once before displaying any help. | |
88 | @a bookFile or @a bookUrl may be either @c ".hhp" file or a ZIP archive | |
89 | that contains an arbitrary number of @c ".hhp" files in its top-level | |
90 | directory. | |
91 | This ZIP archive must have @c ".zip" or @c ".htb" extension (the latter | |
92 | stands for "HTML book"). In other words, | |
93 | @code | |
94 | AddBook(wxFileName("help.zip")) | |
95 | @endcode | |
96 | is possible and is the recommended way. | |
97 | ||
98 | @param bookFile | |
99 | Help book filename. It is recommended to use this prototype | |
100 | instead of the one taking URL, because it is less error-prone. | |
101 | @param showWaitMsg | |
102 | If @true then a decoration-less window with progress message is displayed. | |
103 | */ | |
104 | bool AddBook(const wxFileName& bookFile, bool showWaitMsg = false); | |
105 | ||
106 | /** | |
107 | Adds a book (i.e. a @ref overview_html_helpformats ".hhp file"; an HTML Help | |
108 | Workshop project file) into the list of loaded books. | |
109 | ||
110 | See the other overload for additional info. | |
111 | ||
112 | @param bookUrl | |
113 | Help book URL (note that syntax of filename and URL is | |
114 | different on most platforms). | |
115 | @param showWaitMsg | |
116 | If @true then a decoration-less window with progress message is displayed. | |
117 | */ | |
118 | bool AddBook(const wxString& bookUrl, bool showWaitMsg = false); | |
119 | ||
120 | /** | |
121 | Displays page @a x. | |
122 | This is THE important function - it is used to display the help in application. | |
123 | You can specify the page in many ways: | |
124 | - as direct filename of HTML document | |
125 | - as chapter name (from contents) or as a book name | |
126 | - as some word from index | |
127 | - even as any word (will be searched) | |
128 | ||
129 | Looking for the page runs in these steps: | |
130 | -# try to locate file named x (if x is for example "doc/howto.htm") | |
131 | -# try to open starting page of book named x | |
132 | -# try to find x in contents (if x is for example "How To ...") | |
133 | -# try to find x in index (if x is for example "How To ...") | |
134 | -# switch to Search panel and start searching | |
135 | */ | |
136 | bool Display(const wxString& x); | |
137 | ||
138 | /** | |
139 | @overload | |
140 | ||
141 | This alternative form is used to search help contents by numeric IDs. | |
142 | */ | |
143 | bool Display(int id); | |
144 | ||
145 | /** | |
146 | Displays help window and focuses contents panel. | |
147 | */ | |
148 | virtual bool DisplayContents(); | |
149 | ||
150 | /** | |
151 | Displays help window and focuses index panel. | |
152 | */ | |
153 | bool DisplayIndex(); | |
154 | ||
155 | /** | |
156 | Displays the help window, focuses search panel and starts searching. | |
157 | Returns @true if the keyword was found. Optionally it searches through the | |
158 | index (mode = @c wxHELP_SEARCH_INDEX), default the content | |
159 | (mode = @c wxHELP_SEARCH_ALL). | |
160 | ||
161 | @note | |
162 | KeywordSearch() searches only pages listed in @c ".hhc" file(s). | |
163 | You should list all pages in the contents file. | |
164 | */ | |
165 | virtual bool KeywordSearch(const wxString& keyword, | |
166 | wxHelpSearchMode mode = wxHELP_SEARCH_ALL); | |
167 | ||
168 | /** | |
169 | Reads the controller's setting (position of window, etc.) | |
170 | */ | |
171 | virtual void ReadCustomization(wxConfigBase* cfg, | |
172 | const wxString& path = wxEmptyString); | |
173 | ||
174 | /** | |
175 | Sets the path for storing temporary files - cached binary versions of index and | |
176 | contents files. | |
177 | ||
178 | These binary forms are much faster to read. Default value is empty string | |
179 | (empty string means that no cached data are stored). Note that these files | |
180 | are @e not deleted when program exits. | |
181 | ||
182 | Once created these cached files will be used in all subsequent executions | |
183 | of your application. If cached files become older than corresponding @c ".hhp" | |
184 | file (e.g. if you regenerate documentation) it will be refreshed. | |
185 | */ | |
186 | void SetTempDir(const wxString& path); | |
187 | ||
188 | /** | |
189 | Sets format of title of the frame. | |
190 | Must contain exactly one "%s" (for title of displayed HTML page). | |
191 | */ | |
192 | void SetTitleFormat(const wxString& format); | |
193 | ||
194 | /** | |
195 | Associates the @a config object with the controller. | |
196 | ||
197 | If there is associated config object, wxHtmlHelpController automatically | |
198 | reads and writes settings (including wxHtmlWindow's settings) when needed. | |
199 | The only thing you must do is create wxConfig object and call UseConfig(). | |
200 | ||
201 | If you do not use UseConfig(), wxHtmlHelpController will use the default | |
202 | wxConfig object if available (for details see wxConfigBase::Get and | |
203 | wxConfigBase::Set). | |
204 | */ | |
205 | void UseConfig(wxConfigBase* config, | |
206 | const wxString& rootpath = wxEmptyString); | |
207 | ||
208 | /** | |
209 | Stores controllers setting (position of window etc.) | |
210 | */ | |
211 | virtual void WriteCustomization(wxConfigBase* cfg, | |
212 | const wxString& path = wxEmptyString); | |
213 | ||
214 | protected: | |
215 | ||
216 | /** | |
217 | This protected virtual method may be overridden so that when specifying the | |
218 | @c wxHF_DIALOG style, the controller uses a different dialog. | |
219 | */ | |
220 | virtual wxHtmlHelpDialog* CreateHelpDialog(wxHtmlHelpData* data); | |
221 | ||
222 | /** | |
223 | This protected virtual method may be overridden so that the controller | |
224 | uses a different frame. | |
225 | */ | |
226 | virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData* data); | |
227 | }; | |
228 | ||
229 | ||
230 | ||
231 | /** | |
232 | @class wxHtmlModalHelp | |
233 | ||
234 | This class uses wxHtmlHelpController to display help in a modal dialog. | |
235 | This is useful on platforms such as wxMac where if you display help from a | |
236 | modal dialog, the help window must itself be a modal dialog. | |
237 | ||
238 | Create objects of this class on the stack, for example: | |
239 | ||
240 | @code | |
241 | // The help can be browsed during the lifetime of this object; when the | |
242 | // user quits the help, program execution will continue. | |
243 | wxHtmlModalHelp help(parent, "help", "My topic"); | |
244 | @endcode | |
245 | ||
246 | @library{wxhtml} | |
247 | @category{help,html} | |
248 | */ | |
249 | class wxHtmlModalHelp | |
250 | { | |
251 | public: | |
252 | /** | |
253 | The ctor. | |
254 | ||
255 | @param parent | |
256 | is the parent of the dialog. | |
257 | @param helpFile | |
258 | is the HTML help file to show. | |
259 | @param topic | |
260 | is an optional topic. If this is empty, the help contents will be shown. | |
261 | @param style | |
262 | is a combination of the flags described in the wxHtmlHelpController | |
263 | documentation. | |
264 | */ | |
265 | wxHtmlModalHelp(wxWindow* parent, const wxString& helpFile, | |
266 | const wxString& topic = wxEmptyString, | |
267 | int style = wxHF_DEFAULT_STYLE | wxHF_DIALOG | wxHF_MODAL); | |
268 | }; | |
269 |