finally applied the helpbest patch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -262,6 +262,7 @@ dragimag.cpp MSW
|
||||
dropsrc.cpp MSW OLE
|
||||
droptgt.cpp MSW OLE
|
||||
enhmeta.cpp MSW Win32Only
|
||||
helpbest.cpp MSW Win32Only
|
||||
evtloop.cpp MSW LowLevel
|
||||
fdrepdlg.cpp MSW Win32Only
|
||||
filedlg.cpp MSW
|
||||
@@ -922,6 +923,7 @@ minifram.h MotifH
|
||||
msgdlg.h MotifH
|
||||
palette.h MotifH
|
||||
pen.h MotifH
|
||||
helpbest.h MSWH
|
||||
print.h MotifH
|
||||
printdlg.h MotifH
|
||||
private.h MotifH
|
||||
|
128
include/wx/msw/helpbest.h
Normal file
128
include/wx/msw/helpbest.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: helpbest.h
|
||||
// Purpose: Tries to load MS HTML Help, falls back to wxHTML upon failure
|
||||
// Author: Mattia Barbon
|
||||
// Modified by:
|
||||
// Created: 02/04/2001
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Mattia Barbon
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_HELPBEST_H_
|
||||
#define _WX_HELPBEST_H_
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface "helpbest.h"
|
||||
#endif
|
||||
|
||||
#include "wx/wx.h"
|
||||
|
||||
#if wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) && wxUSE_WXHTML_HELP
|
||||
|
||||
#include "wx/helpbase.h"
|
||||
|
||||
class WXDLLEXPORT wxBestHelpController: public wxHelpControllerBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxBestHelpController)
|
||||
|
||||
public:
|
||||
wxBestHelpController():m_helpControllerType( wxUseNone ),
|
||||
m_helpController( 0 ) {}
|
||||
~wxBestHelpController() { delete m_helpController; }
|
||||
|
||||
// Must call this to set the filename
|
||||
virtual bool Initialize(const wxString& file);
|
||||
|
||||
// If file is "", reloads file given in Initialize
|
||||
virtual bool LoadFile(const wxString& file = wxEmptyString)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->LoadFile( GetValidFilename( file ) );
|
||||
}
|
||||
|
||||
virtual bool DisplayContents()
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->DisplayContents();
|
||||
}
|
||||
|
||||
virtual bool DisplaySection(int sectionNo)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->DisplaySection( sectionNo );
|
||||
}
|
||||
|
||||
virtual bool DisplaySection(const wxString& section)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->DisplaySection( section );
|
||||
}
|
||||
|
||||
virtual bool DisplayBlock(long blockNo)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->DisplayBlock( blockNo );
|
||||
}
|
||||
|
||||
virtual bool DisplayContextPopup(int contextId)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->DisplayContextPopup( contextId );
|
||||
}
|
||||
|
||||
virtual bool DisplayTextPopup(const wxString& text, const wxPoint& pos)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->DisplayTextPopup( text, pos );
|
||||
}
|
||||
|
||||
virtual bool KeywordSearch(const wxString& k)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->KeywordSearch( k );
|
||||
}
|
||||
|
||||
virtual bool Quit()
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->Quit();
|
||||
}
|
||||
|
||||
/// Allows one to override the default settings for the help frame.
|
||||
virtual void SetFrameParameters(const wxString& title,
|
||||
const wxSize& size,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
bool newFrameEachTime = FALSE)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
m_helpController->SetFrameParameters( title, size, pos,
|
||||
newFrameEachTime );
|
||||
}
|
||||
|
||||
/// Obtains the latest settings used by the help frame and the help
|
||||
/// frame.
|
||||
virtual wxFrame *GetFrameParameters(wxSize *size = NULL,
|
||||
wxPoint *pos = NULL,
|
||||
bool *newFrameEachTime = NULL)
|
||||
{
|
||||
wxASSERT( m_helpController );
|
||||
return m_helpController->GetFrameParameters( size, pos,
|
||||
newFrameEachTime );
|
||||
}
|
||||
|
||||
protected:
|
||||
// Append/change extension if necessary.
|
||||
wxString GetValidFilename(const wxString& file) const;
|
||||
|
||||
protected:
|
||||
enum HelpControllerType { wxUseNone, wxUseHtmlHelp, wxUseChmHelp };
|
||||
|
||||
HelpControllerType m_helpControllerType;
|
||||
wxHelpControllerBase* m_helpController;
|
||||
};
|
||||
|
||||
#endif // wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) && wxUSE_WXHTML_HELP
|
||||
|
||||
#endif
|
||||
// _WX_HELPBEST_H_
|
@@ -67,6 +67,10 @@
|
||||
#include "wx/msw/helpchm.h"
|
||||
#endif
|
||||
|
||||
#if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP
|
||||
#include "wx/msw/helpbest.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ressources
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -113,6 +117,9 @@ public:
|
||||
#if wxUSE_MS_HTML_HELP
|
||||
wxCHMHelpController& GetMSHtmlHelpController() { return m_msHtmlHelp; }
|
||||
#endif
|
||||
#if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP
|
||||
wxBestHelpController& GetBestHelpController() { return m_bestHelp; }
|
||||
#endif
|
||||
|
||||
// event handlers (these functions should _not_ be virtual)
|
||||
void OnQuit(wxCommandEvent& event);
|
||||
@@ -120,6 +127,7 @@ public:
|
||||
void OnHtmlHelp(wxCommandEvent& event);
|
||||
void OnAdvancedHtmlHelp(wxCommandEvent& event);
|
||||
void OnMSHtmlHelp(wxCommandEvent& event);
|
||||
void OnBestHelp(wxCommandEvent& event);
|
||||
|
||||
void OnShowContextHelp(wxCommandEvent& event);
|
||||
void OnShowDialogContextHelp(wxCommandEvent& event);
|
||||
@@ -140,6 +148,10 @@ private:
|
||||
wxCHMHelpController m_msHtmlHelp;
|
||||
#endif
|
||||
|
||||
#if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP
|
||||
wxBestHelpController m_bestHelp;
|
||||
#endif
|
||||
|
||||
// any class wishing to process wxWindows events must use this macro
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
@@ -190,6 +202,12 @@ enum
|
||||
HelpDemo_MS_Html_Help_Help,
|
||||
HelpDemo_MS_Html_Help_Search,
|
||||
|
||||
HelpDemo_Best_Help_Index,
|
||||
HelpDemo_Best_Help_Classes,
|
||||
HelpDemo_Best_Help_Functions,
|
||||
HelpDemo_Best_Help_Help,
|
||||
HelpDemo_Best_Help_Search,
|
||||
|
||||
HelpDemo_Help_KDE,
|
||||
HelpDemo_Help_GNOME,
|
||||
HelpDemo_Help_Netscape,
|
||||
@@ -232,6 +250,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(HelpDemo_MS_Html_Help_Help, MyFrame::OnMSHtmlHelp)
|
||||
EVT_MENU(HelpDemo_MS_Html_Help_Search, MyFrame::OnMSHtmlHelp)
|
||||
|
||||
EVT_MENU(HelpDemo_Best_Help_Index, MyFrame::OnBestHelp)
|
||||
|
||||
EVT_MENU(HelpDemo_Help_KDE, MyFrame::OnHelp)
|
||||
EVT_MENU(HelpDemo_Help_GNOME, MyFrame::OnHelp)
|
||||
EVT_MENU(HelpDemo_Help_Netscape, MyFrame::OnHelp)
|
||||
@@ -297,6 +317,21 @@ bool MyApp::OnInit()
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if wxUSE_MS_HTML_HELP
|
||||
if( !frame->GetMSHtmlHelpController().Initialize("doc") )
|
||||
{
|
||||
wxLogError("Cannot initialize the MS HTML Help system.");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP
|
||||
// you need to call Initialize in order to use wxBestHelpController
|
||||
if( !frame->GetBestHelpController().Initialize("doc") )
|
||||
{
|
||||
wxLogError("Cannot initialize the best help system, aborting.");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if USE_HTML_HELP
|
||||
// initialise the standard HTML help system: this means that the HTML docs are in the
|
||||
// subdirectory doc for platforms using HTML help
|
||||
@@ -319,7 +354,8 @@ bool MyApp::OnInit()
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__WXMSW__) && wxUSE_MS_HTML_HELP
|
||||
#if 0
|
||||
// defined(__WXMSW__) && wxUSE_MS_HTML_HELP
|
||||
wxString path(wxGetCwd());
|
||||
if ( !frame->GetMSHtmlHelpController().Initialize(path + "\\doc.chm") )
|
||||
{
|
||||
@@ -387,6 +423,11 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
||||
menuFile->Append(HelpDemo_MS_Html_Help_Search, "MS HTML &Search help...");
|
||||
#endif
|
||||
|
||||
#if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP
|
||||
menuFile->AppendSeparator();
|
||||
menuFile->Append(HelpDemo_Best_Help_Index, "Best &Help Index...");
|
||||
#endif
|
||||
|
||||
#ifndef __WXMSW__
|
||||
#if !wxUSE_HTML
|
||||
menuFile->AppendSeparator();
|
||||
@@ -470,6 +511,13 @@ void MyFrame::OnMSHtmlHelp(wxCommandEvent& event)
|
||||
#endif
|
||||
}
|
||||
|
||||
void MyFrame::OnBestHelp(wxCommandEvent& event)
|
||||
{
|
||||
#if wxUSE_MS_HTML_HELP && wxUSE_HTML
|
||||
ShowHelp(event.GetId(), m_bestHelp);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
Notes: ShowHelp uses section ids for displaying particular topics,
|
||||
but you might want to use a unique keyword to display a topic, instead.
|
||||
@@ -545,6 +593,7 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController)
|
||||
case HelpDemo_Html_Help_Classes:
|
||||
case HelpDemo_Advanced_Html_Help_Classes:
|
||||
case HelpDemo_MS_Html_Help_Classes:
|
||||
case HelpDemo_Best_Help_Classes:
|
||||
helpController.DisplaySection(2);
|
||||
//helpController.DisplaySection("Classes"); // An alternative form for most controllers
|
||||
|
||||
@@ -560,6 +609,7 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController)
|
||||
case HelpDemo_Html_Help_Help:
|
||||
case HelpDemo_Advanced_Html_Help_Help:
|
||||
case HelpDemo_MS_Html_Help_Help:
|
||||
case HelpDemo_Best_Help_Help:
|
||||
helpController.DisplaySection(3);
|
||||
//helpController.DisplaySection("About"); // An alternative form for most controllers
|
||||
break;
|
||||
@@ -568,6 +618,7 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController)
|
||||
case HelpDemo_Html_Help_Search:
|
||||
case HelpDemo_Advanced_Html_Help_Search:
|
||||
case HelpDemo_MS_Html_Help_Search:
|
||||
case HelpDemo_Best_Help_Search:
|
||||
{
|
||||
wxString key = wxGetTextFromUser("Search for?",
|
||||
"Search help for keyword",
|
||||
@@ -582,6 +633,7 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController)
|
||||
case HelpDemo_Html_Help_Index:
|
||||
case HelpDemo_Advanced_Html_Help_Index:
|
||||
case HelpDemo_MS_Html_Help_Index:
|
||||
case HelpDemo_Best_Help_Index:
|
||||
helpController.DisplayContents();
|
||||
break;
|
||||
|
||||
|
102
src/msw/helpbest.cpp
Normal file
102
src/msw/helpbest.cpp
Normal file
@@ -0,0 +1,102 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: helpbest.cpp
|
||||
// Purpose: Tries to load MS HTML Help, falls back to wxHTML upon failure
|
||||
// Author: Mattia Barbon
|
||||
// Modified by:
|
||||
// Created: 02/04/2001
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Mattia Barbon
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "helpbest.h"
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/defs.h"
|
||||
#endif
|
||||
|
||||
#include "wx/filefn.h"
|
||||
|
||||
#if wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) && wxUSE_WXHTML_HELP
|
||||
#include "wx/msw/helpchm.h"
|
||||
#include "wx/html/helpctrl.h"
|
||||
#include "wx/msw/helpbest.h"
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxBestHelpController, wxHelpControllerBase );
|
||||
|
||||
bool wxBestHelpController::Initialize( const wxString& filename )
|
||||
{
|
||||
// try wxCHMHelpController
|
||||
wxCHMHelpController* chm = new wxCHMHelpController;
|
||||
|
||||
m_helpControllerType = wxUseChmHelp;
|
||||
// do not warn upon failure
|
||||
wxLogNull dontWarnOnFailure;
|
||||
|
||||
if( chm->Initialize( GetValidFilename( filename ) ) )
|
||||
{
|
||||
m_helpController = chm;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// failed
|
||||
delete chm;
|
||||
|
||||
// try wxHtmlHelpController
|
||||
wxHtmlHelpController* html = new wxHtmlHelpController;
|
||||
|
||||
m_helpControllerType = wxUseHtmlHelp;
|
||||
if( html->Initialize( GetValidFilename( filename ) ) )
|
||||
{
|
||||
m_helpController = html;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// failed
|
||||
delete html;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
wxString wxBestHelpController::GetValidFilename( const wxString& filename ) const
|
||||
{
|
||||
wxString tmp = filename;
|
||||
::wxStripExtension( tmp );
|
||||
|
||||
switch( m_helpControllerType )
|
||||
{
|
||||
case wxUseChmHelp:
|
||||
if( ::wxFileExists( tmp + ".chm" ) )
|
||||
return tmp + ".chm";
|
||||
|
||||
return filename;
|
||||
break;
|
||||
case wxUseHtmlHelp:
|
||||
if( ::wxFileExists( tmp + ".htb" ) )
|
||||
return tmp + ".htb";
|
||||
if( ::wxFileExists( tmp + ".zip" ) )
|
||||
return tmp + ".zip";
|
||||
if( ::wxFileExists( tmp + ".hhp" ) )
|
||||
return tmp + ".hhp";
|
||||
|
||||
return filename;
|
||||
break;
|
||||
default:
|
||||
// we CAN'T get here
|
||||
wxFAIL_MSG( "wxBestHelpController: Must call Initialize, first!" );
|
||||
return wxEmptyString;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
// wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) && wxUSE_WXHTML_HELP
|
Reference in New Issue
Block a user