X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/18fc605924327cb4e9b3beb994c607cf28a08560..fb8d7eb7a880f1f2e32d8830f9c5e12b2536e05f:/src/html/helpctrl.cpp?ds=inline diff --git a/src/html/helpctrl.cpp b/src/html/helpctrl.cpp index a0c120aa75..af46650fa4 100644 --- a/src/html/helpctrl.cpp +++ b/src/html/helpctrl.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: helpctrl.cpp +// Name: src/html/helpctrl.cpp // Purpose: wxHtmlHelpController // Notes: Based on htmlhelp.cpp, implementing a monolithic // HTML Help controller class, by Vaclav Slavik @@ -42,20 +42,37 @@ IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase) wxHtmlHelpController::wxHtmlHelpController(int style, wxWindow* parentWindow): wxHelpControllerBase(parentWindow) +{ + Init(style); +} + +wxHtmlHelpController::wxHtmlHelpController(wxWindow* parentWindow, int style): + wxHelpControllerBase(parentWindow) +{ + Init(style); +} + +void wxHtmlHelpController::Init(int style) { m_helpWindow = NULL; m_helpFrame = NULL; m_helpDialog = NULL; +#if wxUSE_CONFIG m_Config = NULL; m_ConfigRoot = wxEmptyString; +#endif // wxUSE_CONFIG m_titleFormat = _("Help: %s"); m_FrameStyle = style; + m_shouldPreventAppExit = false; } + wxHtmlHelpController::~wxHtmlHelpController() { +#if wxUSE_CONFIG if (m_Config) WriteCustomization(m_Config, m_ConfigRoot); +#endif // wxUSE_CONFIG if (m_helpWindow) DestroyHelpWindow(); } @@ -85,19 +102,29 @@ void wxHtmlHelpController::DestroyHelpWindow() void wxHtmlHelpController::OnCloseFrame(wxCloseEvent& evt) { +#if wxUSE_CONFIG if (m_Config) WriteCustomization(m_Config, m_ConfigRoot); - +#endif // wxUSE_CONFIG + evt.Skip(); OnQuit(); - m_helpWindow->SetController(NULL); + if ( m_helpWindow ) + m_helpWindow->SetController(NULL); m_helpWindow = NULL; m_helpDialog = NULL; m_helpFrame = NULL; } +void wxHtmlHelpController::SetShouldPreventAppExit(bool enable) +{ + m_shouldPreventAppExit = enable; + if ( m_helpFrame ) + m_helpFrame->SetShouldPreventAppExit(enable); +} + void wxHtmlHelpController::SetTitleFormat(const wxString& title) { m_titleFormat = title; @@ -114,12 +141,7 @@ void wxHtmlHelpController::SetTitleFormat(const wxString& title) // Find the top-most parent window wxWindow* wxHtmlHelpController::FindTopLevelWindow() { - wxWindow* parent = m_helpWindow; - while (parent && !parent->IsTopLevel()) - { - parent = parent->GetParent(); - } - return parent; + return wxGetTopLevelParent(m_helpWindow); } bool wxHtmlHelpController::AddBook(const wxFileName& book_file, bool show_wait_msg) @@ -155,8 +177,13 @@ wxHtmlHelpFrame* wxHtmlHelpController::CreateHelpFrame(wxHtmlHelpData *data) { wxHtmlHelpFrame* frame = new wxHtmlHelpFrame(data); frame->SetController(this); - frame->Create(m_parentWindow, -1, wxEmptyString, m_FrameStyle, m_Config, m_ConfigRoot); - frame->SetTitleFormat(m_titleFormat); + frame->Create(m_parentWindow, -1, wxEmptyString, m_FrameStyle +#if wxUSE_CONFIG + , m_Config, m_ConfigRoot +#endif // wxUSE_CONFIG + ); + frame->SetTitleFormat(m_titleFormat); + frame->SetShouldPreventAppExit(m_shouldPreventAppExit); m_helpFrame = frame; return frame; } @@ -165,7 +192,7 @@ wxHtmlHelpDialog* wxHtmlHelpController::CreateHelpDialog(wxHtmlHelpData *data) { wxHtmlHelpDialog* dialog = new wxHtmlHelpDialog(data); dialog->SetController(this); - dialog->SetTitleFormat(m_titleFormat); + dialog->SetTitleFormat(m_titleFormat); dialog->Create(m_parentWindow, -1, wxEmptyString, m_FrameStyle); m_helpDialog = dialog; return dialog; @@ -184,12 +211,14 @@ wxWindow* wxHtmlHelpController::CreateHelpWindow() return m_helpWindow; } +#if wxUSE_CONFIG if (m_Config == NULL) { m_Config = wxConfigBase::Get(false); if (m_Config != NULL) - m_ConfigRoot = _T("wxWindows/wxHtmlHelpController"); + m_ConfigRoot = wxT("wxWindows/wxHtmlHelpController"); } +#endif // wxUSE_CONFIG if (m_FrameStyle & wxHF_DIALOG) { @@ -211,6 +240,7 @@ wxWindow* wxHtmlHelpController::CreateHelpWindow() return m_helpWindow; } +#if wxUSE_CONFIG void wxHtmlHelpController::ReadCustomization(wxConfigBase* cfg, const wxString& path) { /* should not be called by the user; call UseConfig, and the controller @@ -233,13 +263,14 @@ void wxHtmlHelpController::UseConfig(wxConfigBase *config, const wxString& rootp if (m_helpWindow) m_helpWindow->UseConfig(config, rootpath); ReadCustomization(config, rootpath); } +#endif // wxUSE_CONFIG //// Backward compatibility with wxHelpController API bool wxHtmlHelpController::Initialize(const wxString& file) { wxString dir, filename, ext; - wxSplitPath(file, & dir, & filename, & ext); + wxFileName::SplitPath(file, & dir, & filename, & ext); if (!dir.empty()) dir = dir + wxFILE_SEP_PATH; @@ -310,12 +341,12 @@ void wxHtmlHelpController::SetHelpWindow(wxHtmlHelpWindow* helpWindow) helpWindow->SetController(this); } -void wxHtmlHelpController::SetFrameParameters(const wxString& title, +void wxHtmlHelpController::SetFrameParameters(const wxString& titleFormat, const wxSize& size, const wxPoint& pos, bool WXUNUSED(newFrameEachTime)) { - SetTitleFormat(title); + SetTitleFormat(titleFormat); wxHtmlHelpFrame* frame = wxDynamicCast(FindTopLevelWindow(), wxHtmlHelpFrame); wxHtmlHelpDialog* dialog = wxDynamicCast(FindTopLevelWindow(), wxHtmlHelpDialog); if (frame)