X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b854b7b82e033d1dbd9d300402df50ec5e1e8b74..80a24267cbc17d85e278e1f10cdfdaea12199639:/src/html/helpctrl.cpp diff --git a/src/html/helpctrl.cpp b/src/html/helpctrl.cpp index 5e68f95352..c8287af50e 100644 --- a/src/html/helpctrl.cpp +++ b/src/html/helpctrl.cpp @@ -22,17 +22,13 @@ #include "wx/defs.h" -#if wxUSE_HTML +#if wxUSE_HTML && wxUSE_STREAMS #include "wx/html/helpctrl.h" #include "wx/wx.h" #include "wx/busyinfo.h" -IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler) -EVT_CLOSE(wxHtmlHelpController::OnCloseFrame) -END_EVENT_TABLE() +IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase) wxHtmlHelpController::wxHtmlHelpController(int style) { @@ -45,7 +41,8 @@ wxHtmlHelpController::wxHtmlHelpController(int style) wxHtmlHelpController::~wxHtmlHelpController() { - WriteCustomization(m_Config, m_ConfigRoot); + if (m_Config) + WriteCustomization(m_Config, m_ConfigRoot); if (m_helpFrame) DestroyHelpWindow(); } @@ -58,13 +55,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 +115,7 @@ void wxHtmlHelpController::CreateHelpWindow() } m_helpFrame = CreateHelpFrame(&m_helpData); - m_helpFrame->PushEventHandler(this); + m_helpFrame->SetController(this); if (m_Config) m_helpFrame->UseConfig(m_Config, m_ConfigRoot); @@ -130,15 +129,92 @@ void wxHtmlHelpController::ReadCustomization(wxConfigBase* cfg, const wxString& { /* should not be called by the user; call UseConfig, and the controller * will do the rest */ - if (m_helpFrame) + if (m_helpFrame && cfg) m_helpFrame->ReadCustomization(cfg, path); } void wxHtmlHelpController::WriteCustomization(wxConfigBase* cfg, const wxString& path) { /* typically called by the controllers OnCloseFrame handler */ - if (m_helpFrame) + if (m_helpFrame && cfg) m_helpFrame->WriteCustomization(cfg, path); } +void wxHtmlHelpController::UseConfig(wxConfigBase *config, const wxString& rootpath) +{ + m_Config = config; + m_ConfigRoot = rootpath; + if (m_helpFrame) m_helpFrame -> UseConfig(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(wxT("/")); + + // Try to find a suitable file + wxString actualFilename = dir + filename + wxString(wxT(".zip")); + if (!wxFileExists(actualFilename)) + { + actualFilename = dir + filename + wxString(wxT(".htb")); + if (!wxFileExists(actualFilename)) + { + actualFilename = dir + filename + wxString(wxT(".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