1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxHtmlHelpController 
   4 // Notes:       Based on htmlhelp.cpp, implementing a monolithic 
   5 //              HTML Help controller class,  by Vaclav Slavik 
   6 // Author:      Harm van der Heijden and Vaclav Slavik 
   8 // Copyright:   (c) Harm van der Heijden and Vaclav Slavik 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_HELPCTRL_H_ 
  13 #define _WX_HELPCTRL_H_ 
  19 #include "wx/helpbase.h" 
  20 #include "wx/html/helpfrm.h" 
  22 #define wxID_HTML_HELPFRAME   (wxID_HIGHEST + 1) 
  24 // This style indicates that the window is 
  25 // embedded in the application and must not be 
  26 // destroyed by the help controller. 
  27 #define wxHF_EMBEDDED                0x00008000 
  29 // Create a dialog for the help window. 
  30 #define wxHF_DIALOG                  0x00010000 
  32 // Create a frame for the help window. 
  33 #define wxHF_FRAME                   0x00020000 
  35 // Make the dialog modal when displaying help. 
  36 #define wxHF_MODAL                   0x00040000 
  38 class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog
; 
  39 class WXDLLIMPEXP_FWD_HTML wxHtmlHelpWindow
; 
  40 class WXDLLIMPEXP_FWD_HTML wxHtmlHelpFrame
; 
  41 class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog
; 
  43 class WXDLLIMPEXP_HTML wxHtmlHelpController 
: public wxHelpControllerBase 
// wxEvtHandler 
  45     DECLARE_DYNAMIC_CLASS(wxHtmlHelpController
) 
  48     wxHtmlHelpController(int style 
= wxHF_DEFAULT_STYLE
, wxWindow
* parentWindow 
= NULL
); 
  49     virtual ~wxHtmlHelpController(); 
  51     void SetTitleFormat(const wxString
& format
); 
  52     void SetTempDir(const wxString
& path
) { m_helpData
.SetTempDir(path
); } 
  53     bool AddBook(const wxString
& book_url
, bool show_wait_msg 
= false); 
  54     bool AddBook(const wxFileName
& book_file
, bool show_wait_msg 
= false); 
  56     bool Display(const wxString
& x
); 
  58     bool DisplayContents(); 
  60     bool KeywordSearch(const wxString
& keyword
, 
  61                        wxHelpSearchMode mode 
= wxHELP_SEARCH_ALL
); 
  63     wxHtmlHelpWindow
* GetHelpWindow() { return m_helpWindow
; } 
  64     void SetHelpWindow(wxHtmlHelpWindow
* helpWindow
); 
  66     wxHtmlHelpFrame
* GetFrame() { return m_helpFrame
; } 
  67     wxHtmlHelpDialog
* GetDialog() { return m_helpDialog
; } 
  70     void UseConfig(wxConfigBase 
*config
, const wxString
& rootpath 
= wxEmptyString
); 
  72     // Assigns config object to the Ctrl. This config is then 
  73     // used in subsequent calls to Read/WriteCustomization of both help 
  74     // Ctrl and it's wxHtmlWindow 
  75     virtual void ReadCustomization(wxConfigBase 
*cfg
, const wxString
& path 
= wxEmptyString
); 
  76     virtual void WriteCustomization(wxConfigBase 
*cfg
, const wxString
& path 
= wxEmptyString
); 
  77 #endif // wxUSE_CONFIG 
  79     //// Backward compatibility with wxHelpController API 
  81     virtual bool Initialize(const wxString
& file
, int WXUNUSED(server
) ) { return Initialize(file
); } 
  82     virtual bool Initialize(const wxString
& file
); 
  83     virtual void SetViewer(const wxString
& WXUNUSED(viewer
), long WXUNUSED(flags
) = 0) {} 
  84     virtual bool LoadFile(const wxString
& file 
= wxT("")); 
  85     virtual bool DisplaySection(int sectionNo
); 
  86     virtual bool DisplaySection(const wxString
& section
) { return Display(section
); } 
  87     virtual bool DisplayBlock(long blockNo
) { return DisplaySection(blockNo
); } 
  88     virtual bool DisplayTextPopup(const wxString
& text
, const wxPoint
& pos
); 
  90     virtual void SetFrameParameters(const wxString
& title
, 
  92                                const wxPoint
& pos 
= wxDefaultPosition
, 
  93                                bool newFrameEachTime 
= false); 
  94     /// Obtains the latest settings used by the help frame and the help 
  96     virtual wxFrame 
*GetFrameParameters(wxSize 
*size 
= NULL
, 
  98                                bool *newFrameEachTime 
= NULL
); 
 100     // Get direct access to help data: 
 101     wxHtmlHelpData 
*GetHelpData() { return &m_helpData
; } 
 103     virtual bool Quit() ; 
 104     virtual void OnQuit() {} 
 106     void OnCloseFrame(wxCloseEvent
& evt
); 
 108     // Make the help controller's frame 'modal' if 
 110     void MakeModalIfNeeded(); 
 112     // Find the top-most parent window 
 113     wxWindow
* FindTopLevelWindow(); 
 116     virtual wxWindow
* CreateHelpWindow(); 
 117     virtual wxHtmlHelpFrame
* CreateHelpFrame(wxHtmlHelpData 
*data
); 
 118     virtual wxHtmlHelpDialog
* CreateHelpDialog(wxHtmlHelpData 
*data
); 
 119     virtual void DestroyHelpWindow(); 
 121     wxHtmlHelpData      m_helpData
; 
 122     wxHtmlHelpWindow
*   m_helpWindow
; 
 124     wxConfigBase 
*      m_Config
; 
 125     wxString            m_ConfigRoot
; 
 126 #endif // wxUSE_CONFIG 
 127     wxString            m_titleFormat
; 
 129     wxHtmlHelpFrame
*    m_helpFrame
; 
 130     wxHtmlHelpDialog
*   m_helpDialog
; 
 132     wxDECLARE_NO_COPY_CLASS(wxHtmlHelpController
); 
 137  * A convenience class particularly for use on wxMac, 
 138  * where you can only show modal dialogs from a modal 
 143  * wxHtmlModalHelp help(parent, filename, topic); 
 145  * If topic is empty, the help contents is displayed. 
 148 class WXDLLIMPEXP_HTML wxHtmlModalHelp
 
 151     wxHtmlModalHelp(wxWindow
* parent
, const wxString
& helpFile
, const wxString
& topic 
= wxEmptyString
, 
 152         int style 
= wxHF_DEFAULT_STYLE 
| wxHF_DIALOG 
| wxHF_MODAL
); 
 155 #endif // wxUSE_WXHTML_HELP 
 157 #endif // _WX_HELPCTRL_H_