From b4414c1f3778c54fb0ddfd2eea63f940bbee6d0f Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Thu, 9 Mar 2000 20:05:52 +0000 Subject: [PATCH] wxHtmlHelpController made compatible with other controllers git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/html/helpctrl.h | 39 +++++++++++++---- include/wx/html/helpfrm.h | 4 ++ src/html/helpctrl.cpp | 85 +++++++++++++++++++++++++++++++++++--- src/html/helpfrm.cpp | 11 ++++- 4 files changed, 122 insertions(+), 17 deletions(-) diff --git a/include/wx/html/helpctrl.h b/include/wx/html/helpctrl.h index 9263ab6026..b052c83e94 100644 --- a/include/wx/html/helpctrl.h +++ b/include/wx/html/helpctrl.h @@ -21,8 +21,9 @@ #if wxUSE_HTML #include "wx/html/helpfrm.h" +#include "wx/helpbase.h" -class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler +class WXDLLEXPORT wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler { DECLARE_DYNAMIC_CLASS(wxHtmlHelpController) @@ -62,20 +63,40 @@ class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler virtual void ReadCustomization(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: virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData *data); virtual void CreateHelpWindow(); virtual void DestroyHelpWindow(); - void OnCloseFrame(wxCloseEvent& evt); - wxHtmlHelpData m_helpData; - wxHtmlHelpFrame* m_helpFrame; - wxConfigBase *m_Config; - wxString m_ConfigRoot; - wxString m_titleFormat; - int m_FrameStyle; - DECLARE_EVENT_TABLE() + wxHtmlHelpData m_helpData; + wxHtmlHelpFrame* m_helpFrame; + wxConfigBase * m_Config; + wxString m_ConfigRoot; + wxString m_titleFormat; + int m_FrameStyle; + // DECLARE_EVENT_TABLE() }; #endif diff --git a/include/wx/html/helpfrm.h b/include/wx/html/helpfrm.h index 053f1c90df..5ac3a97957 100644 --- a/include/wx/html/helpfrm.h +++ b/include/wx/html/helpfrm.h @@ -88,6 +88,7 @@ typedef struct wxHtmlHelpFrameCfg; +class WXDLLEXPORT wxHelpControllerBase; class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame { @@ -103,6 +104,8 @@ class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame ~wxHtmlHelpFrame(); wxHtmlHelpData* GetData() { return m_Data; } + wxHelpControllerBase* GetController() const { return m_helpController; } + void SetController(wxHelpControllerBase* controller) { m_helpController = controller; } void SetTitleFormat(const wxString& format); // Sets format of title of the frame. Must contain exactly one "%s" @@ -238,6 +241,7 @@ class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame wxHtmlEasyPrinting *m_Printer; #endif wxHashTable *m_PagesHash; + wxHelpControllerBase* m_helpController; DECLARE_EVENT_TABLE() }; diff --git a/src/html/helpctrl.cpp b/src/html/helpctrl.cpp index d51344199c..6d6583db50 100644 --- a/src/html/helpctrl.cpp +++ b/src/html/helpctrl.cpp @@ -28,11 +28,13 @@ #include "wx/wx.h" #include "wx/busyinfo.h" -IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxEvtHandler) +IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase) +#if 0 BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler) EVT_CLOSE(wxHtmlHelpController::OnCloseFrame) END_EVENT_TABLE() +#endif wxHtmlHelpController::wxHtmlHelpController(int style) { @@ -58,13 +60,15 @@ void wxHtmlHelpController::DestroyHelpWindow() 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) { @@ -116,7 +120,8 @@ void wxHtmlHelpController::CreateHelpWindow() } m_helpFrame = CreateHelpFrame(&m_helpData); - m_helpFrame->PushEventHandler(this); + m_helpFrame->SetController(this); +// m_helpFrame->PushEventHandler(this); if (m_Config) m_helpFrame->UseConfig(m_Config, m_ConfigRoot); @@ -149,5 +154,73 @@ void wxHtmlHelpController::UseConfig(wxConfigBase *config, const wxString& rootp 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 diff --git a/src/html/helpfrm.cpp b/src/html/helpfrm.cpp index 5464a318fc..a2cc0a9803 100644 --- a/src/html/helpfrm.cpp +++ b/src/html/helpfrm.cpp @@ -29,6 +29,7 @@ #endif #include "wx/html/helpfrm.h" +#include "wx/html/helpctrl.h" #include "wx/notebook.h" #include "wx/imaglist.h" #include "wx/treectrl.h" @@ -183,6 +184,7 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data) m_PagesHash = NULL; m_UpdateContents = TRUE; + m_helpController = (wxHelpControllerBase*) NULL; } // Create: builds the GUI components. @@ -456,7 +458,7 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& ti wxHtmlHelpFrame::~wxHtmlHelpFrame() { - PopEventHandler(); // wxhtmlhelpcontroller + // PopEventHandler(); // wxhtmlhelpcontroller (not any more!) delete m_ContentsImageList; if (m_DataCreated) delete m_Data; @@ -604,7 +606,7 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword) wxProgressDialog progress(_("Searching..."), _("No matching page found yet"), 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()) { curi = status.GetCurIndex(); @@ -1309,6 +1311,11 @@ void wxHtmlHelpFrame::OnCloseWindow(wxCloseEvent& evt) if (m_Config) WriteCustomization(m_Config, m_ConfigRoot); + if (m_helpController && m_helpController->IsKindOf(CLASSINFO(wxHtmlHelpController))) + { + ((wxHtmlHelpController*) m_helpController)->OnCloseFrame(evt); + } + evt.Skip(); } -- 2.47.2