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:
@@ -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
|
||||||
|
@@ -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()
|
||||||
};
|
};
|
||||||
|
@@ -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
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user