1///////////////////////////////////////////////////////////////////////////// 2// Name: helpctrl.h 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 7// RCS-ID: $Id: helpctrl.h 49563 2007-10-31 20:46:21Z VZ $ 8// Copyright: (c) Harm van der Heijden and Vaclav Slavik 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_HELPCTRL_H_ 13#define _WX_HELPCTRL_H_ 14 15#include "wx/defs.h" 16 17#if wxUSE_WXHTML_HELP 18 19#include "wx/helpbase.h" 20#include "wx/html/helpfrm.h" 21 22#define wxID_HTML_HELPFRAME (wxID_HIGHEST + 1) 23 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 28 29// Create a dialog for the help window. 30#define wxHF_DIALOG 0x00010000 31 32// Create a frame for the help window. 33#define wxHF_FRAME 0x00020000 34 35// Make the dialog modal when displaying help. 36#define wxHF_MODAL 0x00040000 37 38class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog; 39class WXDLLIMPEXP_FWD_HTML wxHtmlHelpWindow; 40class WXDLLIMPEXP_FWD_HTML wxHtmlHelpFrame; 41class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog; 42 43class WXDLLIMPEXP_HTML wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler 44{ 45 DECLARE_DYNAMIC_CLASS(wxHtmlHelpController) 46 47public: 48 wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, wxWindow* parentWindow = NULL); 49 virtual ~wxHtmlHelpController(); 50 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); 55 56 bool Display(const wxString& x); 57 bool Display(int id); 58 bool DisplayContents(); 59 bool DisplayIndex(); 60 bool KeywordSearch(const wxString& keyword, 61 wxHelpSearchMode mode = wxHELP_SEARCH_ALL); 62 63 wxHtmlHelpWindow* GetHelpWindow() { return m_helpWindow; } 64 void SetHelpWindow(wxHtmlHelpWindow* helpWindow); 65 66 wxHtmlHelpFrame* GetFrame() { return m_helpFrame; } 67 wxHtmlHelpDialog* GetDialog() { return m_helpDialog; } 68 69 void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString); 70 71 // Assigns config object to the Ctrl. This config is then 72 // used in subsequent calls to Read/WriteCustomization of both help 73 // Ctrl and it's wxHtmlWindow 74 virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString); 75 virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString); 76 77 //// Backward compatibility with wxHelpController API 78 79 virtual bool Initialize(const wxString& file, int WXUNUSED(server) ) { return Initialize(file); } 80 virtual bool Initialize(const wxString& file); 81 virtual void SetViewer(const wxString& WXUNUSED(viewer), long WXUNUSED(flags) = 0) {} 82 virtual bool LoadFile(const wxString& file = wxT("")); 83 virtual bool DisplaySection(int sectionNo); 84 virtual bool DisplaySection(const wxString& section) { return Display(section); } 85 virtual bool DisplayBlock(long blockNo) { return DisplaySection(blockNo); } 86 virtual bool DisplayTextPopup(const wxString& text, const wxPoint& pos); 87 88 virtual void SetFrameParameters(const wxString& title, 89 const wxSize& size, 90 const wxPoint& pos = wxDefaultPosition, 91 bool newFrameEachTime = false); 92 /// Obtains the latest settings used by the help frame and the help 93 /// frame. 94 virtual wxFrame *GetFrameParameters(wxSize *size = NULL, 95 wxPoint *pos = NULL, 96 bool *newFrameEachTime = NULL); 97 98 // Get direct access to help data: 99 wxHtmlHelpData *GetHelpData() { return &m_helpData; } 100 101 virtual bool Quit() ; 102 virtual void OnQuit() {} 103 104 void OnCloseFrame(wxCloseEvent& evt); 105 106 // Make the help controller's frame 'modal' if 107 // needed 108 void MakeModalIfNeeded(); 109 110 // Find the top-most parent window 111 wxWindow* FindTopLevelWindow(); 112 113protected: 114 virtual wxWindow* CreateHelpWindow(); 115 virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData *data); 116 virtual wxHtmlHelpDialog* CreateHelpDialog(wxHtmlHelpData *data); 117 virtual void DestroyHelpWindow(); 118 119 wxHtmlHelpData m_helpData; 120 wxHtmlHelpWindow* m_helpWindow; 121 wxConfigBase * m_Config; 122 wxString m_ConfigRoot; 123 wxString m_titleFormat; 124 int m_FrameStyle; 125 wxHtmlHelpFrame* m_helpFrame; 126 wxHtmlHelpDialog* m_helpDialog; 127 128 DECLARE_NO_COPY_CLASS(wxHtmlHelpController) 129}; 130 131/* 132 * wxHtmlModalHelp 133 * A convenience class particularly for use on wxMac, 134 * where you can only show modal dialogs from a modal 135 * dialog. 136 * 137 * Use like this: 138 * 139 * wxHtmlModalHelp help(parent, filename, topic); 140 * 141 * If topic is empty, the help contents is displayed. 142 */ 143 144class WXDLLIMPEXP_HTML wxHtmlModalHelp 145{ 146public: 147 wxHtmlModalHelp(wxWindow* parent, const wxString& helpFile, const wxString& topic = wxEmptyString, 148 int style = wxHF_DEFAULT_STYLE | wxHF_DIALOG | wxHF_MODAL); 149}; 150 151#endif // wxUSE_WXHTML_HELP 152 153#endif // _WX_HELPCTRL_H_ 154