Add wxHtmlHelpController::SetShouldPreventAppExit().

Add a method which can be used to indicate that the help window should prevent
the application from exiting and use it in the help sample to prevent it from
closing prematurely.

Closes #13046.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-03-18 09:16:14 +00:00
parent fbe7473406
commit bd45b3e176
6 changed files with 40 additions and 1 deletions

View File

@@ -48,6 +48,8 @@ public:
wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, wxWindow* parentWindow = NULL); wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, wxWindow* parentWindow = NULL);
virtual ~wxHtmlHelpController(); virtual ~wxHtmlHelpController();
void SetShouldPreventAppExit(bool enable);
void SetTitleFormat(const wxString& format); void SetTitleFormat(const wxString& format);
void SetTempDir(const wxString& path) { m_helpData.SetTempDir(path); } void SetTempDir(const wxString& path) { m_helpData.SetTempDir(path); }
bool AddBook(const wxString& book_url, bool show_wait_msg = false); bool AddBook(const wxString& book_url, bool show_wait_msg = false);
@@ -129,6 +131,8 @@ protected:
wxHtmlHelpFrame* m_helpFrame; wxHtmlHelpFrame* m_helpFrame;
wxHtmlHelpDialog* m_helpDialog; wxHtmlHelpDialog* m_helpDialog;
bool m_shouldPreventAppExit;
wxDECLARE_NO_COPY_CLASS(wxHtmlHelpController); wxDECLARE_NO_COPY_CLASS(wxHtmlHelpController);
}; };

View File

@@ -115,9 +115,11 @@ public:
// Override to add custom buttons to the toolbar // Override to add custom buttons to the toolbar
virtual void AddToolbarButtons(wxToolBar* WXUNUSED(toolBar), int WXUNUSED(style)) {} virtual void AddToolbarButtons(wxToolBar* WXUNUSED(toolBar), int WXUNUSED(style)) {}
void SetShouldPreventAppExit(bool enable);
// we don't want to prevent the app from closing just because a help window // we don't want to prevent the app from closing just because a help window
// remains opened // remains opened
virtual bool ShouldPreventAppExit() const { return false; } virtual bool ShouldPreventAppExit() const { return m_shouldPreventAppExit; }
protected: protected:
void Init(wxHtmlHelpData* data = NULL); void Init(wxHtmlHelpData* data = NULL);
@@ -143,6 +145,7 @@ protected:
wxString m_TitleFormat; // title of the help frame wxString m_TitleFormat; // title of the help frame
wxHtmlHelpWindow *m_HtmlHelpWin; wxHtmlHelpWindow *m_HtmlHelpWin;
wxHtmlHelpController* m_helpController; wxHtmlHelpController* m_helpController;
bool m_shouldPreventAppExit;
private: private:

View File

@@ -171,6 +171,21 @@ public:
virtual void ReadCustomization(wxConfigBase* cfg, virtual void ReadCustomization(wxConfigBase* cfg,
const wxString& path = wxEmptyString); const wxString& path = wxEmptyString);
/**
Sets whether the help frame should prevent application from exiting
if it's the only remaining top level window.
@enable
If @true, the application will not quit unless the help frame is
closed. Default is @false, i.e. the application does exit if only
the help window remains opened.
@see wxApp::SetExitOnFrameDelete()
@since 2.9.2
*/
void SetShouldPreventAppExit(bool enable);
/** /**
Sets the path for storing temporary files - cached binary versions of index and Sets the path for storing temporary files - cached binary versions of index and
contents files. contents files.

View File

@@ -86,6 +86,8 @@ bool MyApp::OnInit()
delete wxLog::SetActiveTarget(new wxLogGui); delete wxLog::SetActiveTarget(new wxLogGui);
#endif #endif
help->SetShouldPreventAppExit(true);
help -> DisplayContents(); help -> DisplayContents();
return true; return true;

View File

@@ -52,6 +52,7 @@ wxHtmlHelpController::wxHtmlHelpController(int style, wxWindow* parentWindow):
#endif // wxUSE_CONFIG #endif // wxUSE_CONFIG
m_titleFormat = _("Help: %s"); m_titleFormat = _("Help: %s");
m_FrameStyle = style; m_FrameStyle = style;
m_shouldPreventAppExit = false;
} }
wxHtmlHelpController::~wxHtmlHelpController() wxHtmlHelpController::~wxHtmlHelpController()
@@ -105,6 +106,13 @@ void wxHtmlHelpController::OnCloseFrame(wxCloseEvent& evt)
m_helpFrame = 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) void wxHtmlHelpController::SetTitleFormat(const wxString& title)
{ {
m_titleFormat = title; m_titleFormat = title;
@@ -163,6 +171,7 @@ wxHtmlHelpFrame* wxHtmlHelpController::CreateHelpFrame(wxHtmlHelpData *data)
#endif // wxUSE_CONFIG #endif // wxUSE_CONFIG
); );
frame->SetTitleFormat(m_titleFormat); frame->SetTitleFormat(m_titleFormat);
frame->SetShouldPreventAppExit(m_shouldPreventAppExit);
m_helpFrame = frame; m_helpFrame = frame;
return frame; return frame;
} }

View File

@@ -89,6 +89,7 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data)
m_Data = data; m_Data = data;
m_HtmlHelpWin = NULL; m_HtmlHelpWin = NULL;
m_helpController = NULL; m_helpController = NULL;
m_shouldPreventAppExit = false;
} }
void wxHtmlHelpFrame::SetController(wxHtmlHelpController* controller) void wxHtmlHelpFrame::SetController(wxHtmlHelpController* controller)
@@ -246,6 +247,11 @@ void wxHtmlHelpFrame::UseConfig(wxConfigBase *config, const wxString& rootPath)
} }
#endif // wxUSE_CONFIG #endif // wxUSE_CONFIG
void wxHtmlHelpFrame::SetShouldPreventAppExit(bool enable)
{
m_shouldPreventAppExit = enable;
}
#ifdef __WXMAC__ #ifdef __WXMAC__
void wxHtmlHelpFrame::OnClose(wxCommandEvent& WXUNUSED(event)) void wxHtmlHelpFrame::OnClose(wxCommandEvent& WXUNUSED(event))
{ {