wxHtmlHelpController made compatible with other controllers

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2000-03-09 20:05:52 +00:00
parent 304e5625e5
commit b4414c1f37
4 changed files with 122 additions and 17 deletions

View File

@@ -21,8 +21,9 @@
#if wxUSE_HTML #if wxUSE_HTML
#include "wx/html/helpfrm.h" #include "wx/html/helpfrm.h"
#include "wx/helpbase.h"
class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler class WXDLLEXPORT wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler
{ {
DECLARE_DYNAMIC_CLASS(wxHtmlHelpController) DECLARE_DYNAMIC_CLASS(wxHtmlHelpController)
@@ -62,20 +63,40 @@ class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler
virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString); virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString); virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
//// Backward compatibility with wxHelpController API
virtual bool Initialize(const wxString& file, int WXUNUSED(server) ) { return Initialize(file); }
virtual bool Initialize(const wxString& file);
virtual void SetViewer(const wxString& WXUNUSED(viewer), long WXUNUSED(flags) = 0) {}
virtual bool LoadFile(const wxString& file = "");
virtual bool DisplaySection(int sectionNo);
virtual bool DisplayBlock(long blockNo) { return DisplaySection(blockNo); }
virtual void SetFrameParameters(const wxString& title,
const wxSize& size,
const wxPoint& pos = wxDefaultPosition,
bool newFrameEachTime = FALSE);
/// 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);
virtual bool Quit() ;
virtual void OnQuit() {};
void OnCloseFrame(wxCloseEvent& evt);
protected: protected:
virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData *data); virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData *data);
virtual void CreateHelpWindow(); virtual void CreateHelpWindow();
virtual void DestroyHelpWindow(); virtual void DestroyHelpWindow();
void OnCloseFrame(wxCloseEvent& evt); wxHtmlHelpData m_helpData;
wxHtmlHelpData m_helpData; wxHtmlHelpFrame* m_helpFrame;
wxHtmlHelpFrame* m_helpFrame; wxConfigBase * m_Config;
wxConfigBase *m_Config; wxString m_ConfigRoot;
wxString m_ConfigRoot; wxString m_titleFormat;
wxString m_titleFormat; int m_FrameStyle;
int m_FrameStyle; // DECLARE_EVENT_TABLE()
DECLARE_EVENT_TABLE()
}; };
#endif #endif

View File

@@ -88,6 +88,7 @@ typedef struct
wxHtmlHelpFrameCfg; wxHtmlHelpFrameCfg;
class WXDLLEXPORT wxHelpControllerBase;
class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
{ {
@@ -103,6 +104,8 @@ class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
~wxHtmlHelpFrame(); ~wxHtmlHelpFrame();
wxHtmlHelpData* GetData() { return m_Data; } wxHtmlHelpData* GetData() { return m_Data; }
wxHelpControllerBase* GetController() const { return m_helpController; }
void SetController(wxHelpControllerBase* controller) { m_helpController = controller; }
void SetTitleFormat(const wxString& format); void SetTitleFormat(const wxString& format);
// Sets format of title of the frame. Must contain exactly one "%s" // Sets format of title of the frame. Must contain exactly one "%s"
@@ -238,6 +241,7 @@ class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
wxHtmlEasyPrinting *m_Printer; wxHtmlEasyPrinting *m_Printer;
#endif #endif
wxHashTable *m_PagesHash; wxHashTable *m_PagesHash;
wxHelpControllerBase* m_helpController;
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };

View File

@@ -28,11 +28,13 @@
#include "wx/wx.h" #include "wx/wx.h"
#include "wx/busyinfo.h" #include "wx/busyinfo.h"
IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxEvtHandler) IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase)
#if 0
BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler) BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler)
EVT_CLOSE(wxHtmlHelpController::OnCloseFrame) EVT_CLOSE(wxHtmlHelpController::OnCloseFrame)
END_EVENT_TABLE() END_EVENT_TABLE()
#endif
wxHtmlHelpController::wxHtmlHelpController(int style) wxHtmlHelpController::wxHtmlHelpController(int style)
{ {
@@ -58,14 +60,16 @@ void wxHtmlHelpController::DestroyHelpWindow()
m_helpFrame->Destroy(); m_helpFrame->Destroy();
} }
void wxHtmlHelpController::OnCloseFrame(wxCloseEvent& evt) void wxHtmlHelpController::OnCloseFrame(wxCloseEvent& evt)
{ {
evt.Skip(); evt.Skip();
m_helpFrame = NULL; OnQuit();
m_helpFrame->SetController((wxHelpControllerBase*) NULL);
m_helpFrame = NULL;
} }
void wxHtmlHelpController::SetTitleFormat(const wxString& title) void wxHtmlHelpController::SetTitleFormat(const wxString& title)
{ {
m_titleFormat = title; m_titleFormat = title;
@@ -116,7 +120,8 @@ void wxHtmlHelpController::CreateHelpWindow()
} }
m_helpFrame = CreateHelpFrame(&m_helpData); m_helpFrame = CreateHelpFrame(&m_helpData);
m_helpFrame->PushEventHandler(this); m_helpFrame->SetController(this);
// m_helpFrame->PushEventHandler(this);
if (m_Config) if (m_Config)
m_helpFrame->UseConfig(m_Config, m_ConfigRoot); m_helpFrame->UseConfig(m_Config, m_ConfigRoot);
@@ -149,5 +154,73 @@ void wxHtmlHelpController::UseConfig(wxConfigBase *config, const wxString& rootp
ReadCustomization(config, rootpath); ReadCustomization(config, rootpath);
} }
//// Backward compatibility with wxHelpController API
bool wxHtmlHelpController::Initialize(const wxString& file)
{
wxString dir, filename, ext;
wxSplitPath(file, & dir, & filename, & ext);
if (!dir.IsEmpty())
dir = dir + wxString(_("/"));
// Try to find a suitable file
wxString actualFilename = dir + filename + wxString(_(".zip"));
if (!wxFileExists(actualFilename))
{
actualFilename = dir + filename + wxString(_(".htb"));
if (!wxFileExists(actualFilename))
{
actualFilename = dir + filename + wxString(_(".hhp"));
if (!wxFileExists(actualFilename))
return FALSE;
}
}
return AddBook(actualFilename);
}
bool wxHtmlHelpController::LoadFile(const wxString& WXUNUSED(file))
{
// Don't reload the file or we'll have it appear again, presumably.
return TRUE;
}
bool wxHtmlHelpController::DisplaySection(int sectionNo)
{
return Display(sectionNo);
}
void wxHtmlHelpController::SetFrameParameters(const wxString& title,
const wxSize& size,
const wxPoint& pos,
bool WXUNUSED(newFrameEachTime))
{
SetTitleFormat(title);
if (m_helpFrame)
{
m_helpFrame->SetSize(pos.x, pos.y, size.x, size.y);
}
}
wxFrame* wxHtmlHelpController::GetFrameParameters(wxSize *size,
wxPoint *pos,
bool *newFrameEachTime)
{
if (newFrameEachTime)
(* newFrameEachTime) = FALSE;
if (size && m_helpFrame)
(* size) = m_helpFrame->GetSize();
if (pos && m_helpFrame)
(* pos) = m_helpFrame->GetPosition();
return m_helpFrame;
}
bool wxHtmlHelpController::Quit()
{
DestroyHelpWindow();
return TRUE;
}
#endif #endif

View File

@@ -29,6 +29,7 @@
#endif #endif
#include "wx/html/helpfrm.h" #include "wx/html/helpfrm.h"
#include "wx/html/helpctrl.h"
#include "wx/notebook.h" #include "wx/notebook.h"
#include "wx/imaglist.h" #include "wx/imaglist.h"
#include "wx/treectrl.h" #include "wx/treectrl.h"
@@ -183,6 +184,7 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data)
m_PagesHash = NULL; m_PagesHash = NULL;
m_UpdateContents = TRUE; m_UpdateContents = TRUE;
m_helpController = (wxHelpControllerBase*) NULL;
} }
// Create: builds the GUI components. // Create: builds the GUI components.
@@ -456,7 +458,7 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& ti
wxHtmlHelpFrame::~wxHtmlHelpFrame() wxHtmlHelpFrame::~wxHtmlHelpFrame()
{ {
PopEventHandler(); // wxhtmlhelpcontroller // PopEventHandler(); // wxhtmlhelpcontroller (not any more!)
delete m_ContentsImageList; delete m_ContentsImageList;
if (m_DataCreated) if (m_DataCreated)
delete m_Data; delete m_Data;
@@ -604,7 +606,7 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
wxProgressDialog progress(_("Searching..."), _("No matching page found yet"), wxProgressDialog progress(_("Searching..."), _("No matching page found yet"),
status.GetMaxIndex(), this, status.GetMaxIndex(), this,
wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE | wxGA_SMOOTH); wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE);
while (status.IsActive()) { while (status.IsActive()) {
curi = status.GetCurIndex(); curi = status.GetCurIndex();
@@ -1309,6 +1311,11 @@ void wxHtmlHelpFrame::OnCloseWindow(wxCloseEvent& evt)
if (m_Config) if (m_Config)
WriteCustomization(m_Config, m_ConfigRoot); WriteCustomization(m_Config, m_ConfigRoot);
if (m_helpController && m_helpController->IsKindOf(CLASSINFO(wxHtmlHelpController)))
{
((wxHtmlHelpController*) m_helpController)->OnCloseFrame(evt);
}
evt.Skip(); evt.Skip();
} }