Added wxCHMHelpController, updated help demo. Added DisplaySection(const wxString&)

to wxHelpControllerBase. Corrected some Dialog Editor bugs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2000-04-18 10:30:25 +00:00
parent 9d62ffe24a
commit 0a47db39df
31 changed files with 3232 additions and 2770 deletions

View File

@@ -48,7 +48,6 @@
#endif
#if USE_HTML_HELP
#include <wx/filesys.h>
#include <wx/fs_zip.h>
@@ -59,6 +58,10 @@
#include "wx/html/helpctrl.h"
#endif
#if wxUSE_MS_HTML_HELP
#include "wx/msw/helpchm.h"
#endif
// ----------------------------------------------------------------------------
// ressources
// ----------------------------------------------------------------------------
@@ -99,12 +102,16 @@ public:
#endif
wxHtmlHelpController& GetAdvancedHtmlHelpController() { return m_advancedHtmlHelp; }
#endif
#if wxUSE_MS_HTML_HELP
wxCHMHelpController& GetMSHtmlHelpController() { return m_msHtmlHelp; }
#endif
// event handlers (these functions should _not_ be virtual)
void OnQuit(wxCommandEvent& event);
void OnHelp(wxCommandEvent& event);
void OnHtmlHelp(wxCommandEvent& event);
void OnAdvancedHtmlHelp(wxCommandEvent& event);
void OnMSHtmlHelp(wxCommandEvent& event);
void ShowHelp(int commandId, wxHelpControllerBase& helpController);
@@ -118,6 +125,10 @@ private:
wxHtmlHelpController m_advancedHtmlHelp;
#endif
#if wxUSE_MS_HTML_HELP
wxCHMHelpController m_msHtmlHelp;
#endif
// any class wishing to process wxWindows events must use this macro
DECLARE_EVENT_TABLE()
};
@@ -149,6 +160,12 @@ enum
HelpDemo_Advanced_Html_Help_Help,
HelpDemo_Advanced_Html_Help_Search,
HelpDemo_MS_Html_Help_Index,
HelpDemo_MS_Html_Help_Classes,
HelpDemo_MS_Html_Help_Functions,
HelpDemo_MS_Html_Help_Help,
HelpDemo_MS_Html_Help_Search,
HelpDemo_Help_KDE,
HelpDemo_Help_GNOME,
HelpDemo_Help_Netscape,
@@ -183,6 +200,12 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(HelpDemo_Advanced_Html_Help_Help, MyFrame::OnAdvancedHtmlHelp)
EVT_MENU(HelpDemo_Advanced_Html_Help_Search, MyFrame::OnAdvancedHtmlHelp)
EVT_MENU(HelpDemo_MS_Html_Help_Index, MyFrame::OnMSHtmlHelp)
EVT_MENU(HelpDemo_MS_Html_Help_Classes, MyFrame::OnMSHtmlHelp)
EVT_MENU(HelpDemo_MS_Html_Help_Functions, MyFrame::OnMSHtmlHelp)
EVT_MENU(HelpDemo_MS_Html_Help_Help, MyFrame::OnMSHtmlHelp)
EVT_MENU(HelpDemo_MS_Html_Help_Search, MyFrame::OnMSHtmlHelp)
EVT_MENU(HelpDemo_Help_KDE, MyFrame::OnHelp)
EVT_MENU(HelpDemo_Help_GNOME, MyFrame::OnHelp)
EVT_MENU(HelpDemo_Help_Netscape, MyFrame::OnHelp)
@@ -237,9 +260,9 @@ bool MyApp::OnInit()
}
#if USE_HTML_HELP
#if USE_OLD_HTML_HELP
// initialise the standard HTML help system: this means that the HTML docs are in the
// subdirectory doc for platforms using HTML help
#if USE_OLD_HTML_HELP
if ( !frame->GetHtmlHelpController().Initialize("doc") )
{
wxLogError("Cannot initialize the HTML help system, aborting.");
@@ -258,6 +281,15 @@ bool MyApp::OnInit()
}
#endif
#if wxUSE_MS_HTML_HELP
if ( !frame->GetMSHtmlHelpController().Initialize("doc") )
{
wxLogError("Cannot initialize the MS HTML help system, aborting.");
return FALSE;
}
#endif
return TRUE;
}
@@ -297,6 +329,15 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
menuFile->Append(HelpDemo_Advanced_Html_Help_Search, "Advanced HTML &Search help...");
#endif
#if wxUSE_MS_HTML_HELP
menuFile->AppendSeparator();
menuFile->Append(HelpDemo_MS_Html_Help_Index, "MS HTML &Help Index...");
menuFile->Append(HelpDemo_MS_Html_Help_Classes, "MS HTML &Help on Classes...");
menuFile->Append(HelpDemo_MS_Html_Help_Functions, "MS HTML &Help on Functions...");
menuFile->Append(HelpDemo_MS_Html_Help_Help, "MS HTML &About Help Demo...");
menuFile->Append(HelpDemo_MS_Html_Help_Search, "MS HTML &Search help...");
#endif
#ifndef __WXMSW__
#if !wxUSE_HTML
menuFile->AppendSeparator();
@@ -357,38 +398,111 @@ void MyFrame::OnAdvancedHtmlHelp(wxCommandEvent& event)
#endif
}
void MyFrame::OnMSHtmlHelp(wxCommandEvent& event)
{
#if wxUSE_MS_HTML_HELP
ShowHelp(event.GetId(), m_msHtmlHelp);
#endif
}
/*
Notes: ShowHelp uses section ids for displaying particular topics,
but you might want to use a unique keyword to display a topic, instead.
Section ids are specified as follows for the different formats.
WinHelp
The [MAP] section specifies the topic to integer id mapping, e.g.
[MAP]
#define intro 100
#define functions 1
#define classes 2
#define about 3
The identifier name corresponds to the label used for that topic.
You could also put these in a .h file and #include it in both the MAP
section and your C++ source.
Note that Tex2RTF doesn't currently generate the MAP section automatically.
MS HTML Help
The [MAP] section specifies the HTML filename root to integer id mapping, e.g.
[MAP]
#define doc1 100
#define doc3 1
#define doc2 2
#define doc4 3
The identifier name corresponds to the HTML filename used for that topic.
You could also put these in a .h file and #include it in both the MAP
section and your C++ source.
Note that Tex2RTF doesn't currently generate the MAP section automatically.
Simple wxHTML Help and External HTML Help
A wxhelp.map file is used, for example:
0 wx.htm ; wxWindows: Help index; additional keywords like overview
1 wx204.htm ; wxWindows Function Reference
2 wx34.htm ; wxWindows Class Reference
Note that Tex2RTF doesn't currently generate the MAP section automatically.
Advanced HTML Help
An extension to the .hhc file format is used, specifying a new parameter
with name="ID":
<OBJECT type="text/sitemap">
<param name="Local" value="doc2.htm#classes">
<param name="Name" value="Classes">
<param name="ID" value=2>
</OBJECT>
Again, this is not generated automatically by Tex2RTF, though it could
be added quite easily.
Unfortunately adding the ID parameters appears to interfere with MS HTML Help,
so you should not try to compile a .chm file from a .hhc file with
this extension, or the contents will be messed up.
*/
void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController)
{
switch(commandId)
{
// Note: For WinHelp, these ids are specified in the map session, mapping
// topic names to numbers.
// For HTML and external help, a wxhelp.map file is used.
case HelpDemo_Help_Classes:
case HelpDemo_Html_Help_Classes:
case HelpDemo_Advanced_Html_Help_Classes:
case HelpDemo_MS_Html_Help_Classes:
helpController.DisplaySection(2);
// if (helpController.IsKindOf(CLASSINFO(wxHtmlHelpController)))
// ((wxHtmlHelpController&)helpController).Display("Classes"); // An alternative form for this controller
//helpController.DisplaySection("Classes"); // An alternative form for most controllers
break;
case HelpDemo_Help_Functions:
case HelpDemo_Html_Help_Functions:
case HelpDemo_Advanced_Html_Help_Functions:
case HelpDemo_MS_Html_Help_Functions:
helpController.DisplaySection(1);
//helpController.DisplaySection("Functions"); // An alternative form for most controllers
break;
case HelpDemo_Help_Help:
case HelpDemo_Html_Help_Help:
case HelpDemo_Advanced_Html_Help_Help:
case HelpDemo_MS_Html_Help_Help:
helpController.DisplaySection(3);
//helpController.DisplaySection("About"); // An alternative form for most controllers
break;
case HelpDemo_Help_Search:
case HelpDemo_Html_Help_Search:
case HelpDemo_Advanced_Html_Help_Search:
case HelpDemo_MS_Html_Help_Search:
{
wxString key = wxGetTextFromUser("Search for?",
"Search help for keyword",
@@ -402,6 +516,7 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController)
case HelpDemo_Help_Index:
case HelpDemo_Html_Help_Index:
case HelpDemo_Advanced_Html_Help_Index:
case HelpDemo_MS_Html_Help_Index:
helpController.DisplayContents();
break;