X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..d929eddf3a3dbb04f37624d255f4e24e07595ca1:/include/wx/html/helpctrl.h?ds=sidebyside diff --git a/include/wx/html/helpctrl.h b/include/wx/html/helpctrl.h index e71db3db4c..856c9d2c35 100644 --- a/include/wx/html/helpctrl.h +++ b/include/wx/html/helpctrl.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: helpctrl.h +// Name: wx/html/helpctrl.h // Purpose: wxHtmlHelpController // Notes: Based on htmlhelp.cpp, implementing a monolithic // HTML Help controller class, by Vaclav Slavik @@ -14,36 +14,63 @@ #include "wx/defs.h" -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "helpctrl.h" -#endif - #if wxUSE_WXHTML_HELP -#include "wx/html/helpfrm.h" #include "wx/helpbase.h" +#include "wx/html/helpfrm.h" #define wxID_HTML_HELPFRAME (wxID_HIGHEST + 1) -class WXDLLEXPORT wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler +// This style indicates that the window is +// embedded in the application and must not be +// destroyed by the help controller. +#define wxHF_EMBEDDED 0x00008000 + +// Create a dialog for the help window. +#define wxHF_DIALOG 0x00010000 + +// Create a frame for the help window. +#define wxHF_FRAME 0x00020000 + +// Make the dialog modal when displaying help. +#define wxHF_MODAL 0x00040000 + +class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog; +class WXDLLIMPEXP_FWD_HTML wxHtmlHelpWindow; +class WXDLLIMPEXP_FWD_HTML wxHtmlHelpFrame; +class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog; + +class WXDLLIMPEXP_HTML wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler { DECLARE_DYNAMIC_CLASS(wxHtmlHelpController) public: - wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE); + wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, wxWindow* parentWindow = NULL); + wxHtmlHelpController(wxWindow* parentWindow, int style = wxHF_DEFAULT_STYLE); + virtual ~wxHtmlHelpController(); + void SetShouldPreventAppExit(bool enable); + void SetTitleFormat(const wxString& format); void SetTempDir(const wxString& path) { m_helpData.SetTempDir(path); } - bool AddBook(const wxString& book, bool show_wait_msg = FALSE); + bool AddBook(const wxString& book_url, bool show_wait_msg = false); + bool AddBook(const wxFileName& book_file, bool show_wait_msg = false); bool Display(const wxString& x); bool Display(int id); bool DisplayContents(); bool DisplayIndex(); - bool KeywordSearch(const wxString& keyword); + bool KeywordSearch(const wxString& keyword, + wxHelpSearchMode mode = wxHELP_SEARCH_ALL); + + wxHtmlHelpWindow* GetHelpWindow() { return m_helpWindow; } + void SetHelpWindow(wxHtmlHelpWindow* helpWindow); wxHtmlHelpFrame* GetFrame() { return m_helpFrame; } + wxHtmlHelpDialog* GetDialog() { return m_helpDialog; } + +#if wxUSE_CONFIG void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString); // Assigns config object to the Ctrl. This config is then @@ -51,6 +78,7 @@ public: // Ctrl and it's wxHtmlWindow virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString); virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString); +#endif // wxUSE_CONFIG //// Backward compatibility with wxHelpController API @@ -63,10 +91,10 @@ public: virtual bool DisplayBlock(long blockNo) { return DisplaySection(blockNo); } virtual bool DisplayTextPopup(const wxString& text, const wxPoint& pos); - virtual void SetFrameParameters(const wxString& title, + virtual void SetFrameParameters(const wxString& titleFormat, const wxSize& size, const wxPoint& pos = wxDefaultPosition, - bool newFrameEachTime = FALSE); + bool newFrameEachTime = false); /// Obtains the latest settings used by the help frame and the help /// frame. virtual wxFrame *GetFrameParameters(wxSize *size = NULL, @@ -77,27 +105,59 @@ public: wxHtmlHelpData *GetHelpData() { return &m_helpData; } virtual bool Quit() ; - virtual void OnQuit() {}; + virtual void OnQuit() {} void OnCloseFrame(wxCloseEvent& evt); // Make the help controller's frame 'modal' if // needed - void AddGrabIfNeeded(); + void MakeModalIfNeeded(); + + // Find the top-most parent window + wxWindow* FindTopLevelWindow(); protected: + void Init(int style); + + virtual wxWindow* CreateHelpWindow(); virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData *data); - - virtual void CreateHelpWindow(); + virtual wxHtmlHelpDialog* CreateHelpDialog(wxHtmlHelpData *data); virtual void DestroyHelpWindow(); wxHtmlHelpData m_helpData; - wxHtmlHelpFrame* m_helpFrame; + wxHtmlHelpWindow* m_helpWindow; +#if wxUSE_CONFIG wxConfigBase * m_Config; wxString m_ConfigRoot; +#endif // wxUSE_CONFIG wxString m_titleFormat; int m_FrameStyle; - // DECLARE_EVENT_TABLE() + wxHtmlHelpFrame* m_helpFrame; + wxHtmlHelpDialog* m_helpDialog; + + bool m_shouldPreventAppExit; + + wxDECLARE_NO_COPY_CLASS(wxHtmlHelpController); +}; + +/* + * wxHtmlModalHelp + * A convenience class particularly for use on wxMac, + * where you can only show modal dialogs from a modal + * dialog. + * + * Use like this: + * + * wxHtmlModalHelp help(parent, filename, topic); + * + * If topic is empty, the help contents is displayed. + */ + +class WXDLLIMPEXP_HTML wxHtmlModalHelp +{ +public: + wxHtmlModalHelp(wxWindow* parent, const wxString& helpFile, const wxString& topic = wxEmptyString, + int style = wxHF_DEFAULT_STYLE | wxHF_DIALOG | wxHF_MODAL); }; #endif // wxUSE_WXHTML_HELP