]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/html/helpfrm.h
Make wxChoice and wxComboBox behaviour same as in native controls in wxMSW.
[wxWidgets.git] / include / wx / html / helpfrm.h
index 8ab577fee1d9c70240ae4faad7ee908f32eb2a9f..bac1a1a778ebc05d4c340db9075260ce53e8f31b 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        helpfrm.h
+// Name:        wx/html/helpfrm.h
 // Purpose:     wxHtmlHelpFrame
 // Notes:       Based on htmlhelp.cpp, implementing a monolithic
 //              HTML Help controller class,  by Vaclav Slavik
 #ifndef _WX_HELPFRM_H_
 #define _WX_HELPFRM_H_
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "helpfrm.h"
-#endif
-
 #include "wx/defs.h"
 
 #if wxUSE_WXHTML_HELP
 #include "wx/checkbox.h"
 #include "wx/stattext.h"
 #include "wx/html/htmlwin.h"
+#include "wx/html/helpwnd.h"
 #include "wx/html/htmprint.h"
 
-class WXDLLIMPEXP_CORE wxButton;
-class WXDLLIMPEXP_CORE wxTextCtrl;
-class WXDLLIMPEXP_CORE wxTreeEvent;
-class WXDLLIMPEXP_CORE wxTreeCtrl;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
+class WXDLLIMPEXP_FWD_CORE wxTreeCtrl;
 
 
 // style flags for the Help Frame
@@ -62,18 +59,12 @@ class WXDLLIMPEXP_CORE wxTreeCtrl;
 #define wxHF_FLATTOOLBAR             wxHF_FLAT_TOOLBAR
 #define wxHF_DEFAULTSTYLE            wxHF_DEFAULT_STYLE
 
-
-struct wxHtmlHelpFrameCfg
-{
-    int x, y, w, h;
-    long sashpos;
-    bool navig_on;
-};
-
 struct wxHtmlHelpMergedIndexItem;
 class wxHtmlHelpMergedIndex;
 
-class WXDLLIMPEXP_CORE wxHelpControllerBase;
+class WXDLLIMPEXP_FWD_CORE wxHelpControllerBase;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpController;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpWindow;
 
 class WXDLLIMPEXP_HTML wxHtmlHelpFrame : public wxFrame
 {
@@ -83,98 +74,56 @@ public:
     wxHtmlHelpFrame(wxHtmlHelpData* data = NULL) { Init(data); }
     wxHtmlHelpFrame(wxWindow* parent, wxWindowID wxWindowID,
                     const wxString& title = wxEmptyString,
-                    int style = wxHF_DEFAULT_STYLE, wxHtmlHelpData* data = NULL);
+                    int style = wxHF_DEFAULT_STYLE, wxHtmlHelpData* data = NULL
+#if wxUSE_CONFIG
+                    , wxConfigBase *config=NULL, const wxString& rootpath = wxEmptyString
+#endif // wxUSE_CONFIG
+                    );
     bool Create(wxWindow* parent, wxWindowID id, const wxString& title = wxEmptyString,
-                int style = wxHF_DEFAULT_STYLE);
-    ~wxHtmlHelpFrame();
-
+                int style = wxHF_DEFAULT_STYLE
+#if wxUSE_CONFIG
+                , wxConfigBase *config=NULL, const wxString& rootpath = wxEmptyString
+#endif // wxUSE_CONFIG
+                );
+    virtual ~wxHtmlHelpFrame();
+
+    /// Returns the data associated with the window.
     wxHtmlHelpData* GetData() { return m_Data; }
-    wxHelpControllerBase* GetController() const { return m_helpController; }
-    void SetController(wxHelpControllerBase* controller) { m_helpController = controller; }
+
+    /// Returns the help controller associated with the window.
+    wxHtmlHelpController* GetController() const { return m_helpController; }
+
+    /// Sets the help controller associated with the window.
+    void SetController(wxHtmlHelpController* controller);
+
+    /// Returns the help window.
+    wxHtmlHelpWindow* GetHelpWindow() const { return m_HtmlHelpWin; }
 
     // Sets format of title of the frame. Must contain exactly one "%s"
     // (for title of displayed HTML page)
     void SetTitleFormat(const wxString& format);
 
-    // Displays page x. If not found it will offect the user a choice of
-    // searching books.
-    // Looking for the page runs in these steps:
-    // 1. try to locate file named x (if x is for example "doc/howto.htm")
-    // 2. try to open starting page of book x
-    // 3. try to find x in contents (if x is for example "How To ...")
-    // 4. try to find x in index (if x is for example "How To ...")
-    bool Display(const wxString& x);
-
-    // Alternative version that works with numeric ID.
-    // (uses extension to MS format, <param name="ID" value=id>, see docs)
-    bool Display(const int id);
-
-    // Displays help window and focuses contents.
-    bool DisplayContents();
-
-    // Displays help window and focuses index.
-    bool DisplayIndex();
-
-    // Searches for keyword. Returns true and display page if found, return
-    // false otherwise
-    // Syntax of keyword is Altavista-like:
-    // * words are separated by spaces
-    //   (but "\"hello world\"" is only one world "hello world")
-    // * word may be pretended by + or -
-    //   (+ : page must contain the word ; - : page can't contain the word)
-    // * if there is no + or - before the word, + is default
-    bool KeywordSearch(const wxString& keyword,
-                       wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
-
-    void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString)
-        {
-            m_Config = config;
-            m_ConfigRoot = rootpath;
-            ReadCustomization(config, rootpath);
-        }
-
-    // Saves custom settings into cfg config. it will use the path 'path'
-    // if given, otherwise it will save info into currently selected path.
-    // saved values : things set by SetFonts, SetBorders.
-    void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
-    void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
-
-    // call this to let wxHtmlHelpFrame know page changed
-    void NotifyPageChanged();
-
-    // Refreshes Contents and Index tabs
-    void RefreshLists();
+#if wxUSE_CONFIG
+    // For compatibility
+    void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString);
+#endif // wxUSE_CONFIG
 
-protected:
-    void Init(wxHtmlHelpData* data = NULL);
-
-    // Adds items to m_Contents tree control
-    void CreateContents();
+    // Make the help controller's frame 'modal' if
+    // needed
+    void AddGrabIfNeeded();
 
-    // Adds items to m_IndexList
-    void CreateIndex();
+    // Override to add custom buttons to the toolbar
+    virtual void AddToolbarButtons(wxToolBar* WXUNUSED(toolBar), int WXUNUSED(style)) {}
 
-    // Add books to search choice panel
-    void CreateSearch();
+    void SetShouldPreventAppExit(bool enable);
 
-    // Updates "merged index" structure that combines indexes of all books
-    // into better searchable structure
-    void UpdateMergedIndex();
+    // we don't want to prevent the app from closing just because a help window
+    // remains opened
+    virtual bool ShouldPreventAppExit() const { return m_shouldPreventAppExit; }
 
-    // Add custom buttons to toolbar
-    virtual void AddToolbarButtons(wxToolBar *toolBar, int style);
-
-    // Displays options dialog (fonts etc.)
-    virtual void OptionsDialog();
+protected:
+    void Init(wxHtmlHelpData* data = NULL);
 
-    void OnToolbar(wxCommandEvent& event);
-    void OnContentsSel(wxTreeEvent& event);
-    void OnIndexSel(wxCommandEvent& event);
-    void OnIndexFind(wxCommandEvent& event);
-    void OnIndexAll(wxCommandEvent& event);
-    void OnSearchSel(wxCommandEvent& event);
-    void OnSearch(wxCommandEvent& event);
-    void OnBookmarksSel(wxCommandEvent& event);
     void OnCloseWindow(wxCloseEvent& event);
     void OnActivate(wxActivateEvent& event);
 
@@ -194,58 +143,14 @@ protected:
     wxHtmlHelpData* m_Data;
     bool m_DataCreated;  // m_Data created by frame, or supplied?
     wxString m_TitleFormat;  // title of the help frame
-    // below are various pointers to GUI components
-    wxHtmlWindow *m_HtmlWin;
-    wxSplitterWindow *m_Splitter;
-    wxPanel *m_NavigPan;
-    wxNotebook *m_NavigNotebook;
-    wxTreeCtrl *m_ContentsBox;
-    wxTextCtrl *m_IndexText;
-    wxButton *m_IndexButton;
-    wxButton *m_IndexButtonAll;
-    wxListBox *m_IndexList;
-    wxTextCtrl *m_SearchText;
-    wxButton *m_SearchButton;
-    wxListBox *m_SearchList;
-    wxChoice *m_SearchChoice;
-    wxStaticText *m_IndexCountInfo;
-    wxCheckBox *m_SearchCaseSensitive;
-    wxCheckBox *m_SearchWholeWords;
-
-    wxComboBox *m_Bookmarks;
-    wxArrayString m_BookmarksNames, m_BookmarksPages;
-
-    wxHtmlHelpFrameCfg m_Cfg;
-
-    wxConfigBase *m_Config;
-    wxString m_ConfigRoot;
-
-    // pagenumbers of controls in notebook (usually 0,1,2)
-    int m_ContentsPage;
-    int m_IndexPage;
-    int m_SearchPage;
-
-    // lists of available fonts (used in options dialog)
-    wxArrayString *m_NormalFonts, *m_FixedFonts;
-    int m_FontSize; // 0,1,2 = small,medium,big
-    wxString m_NormalFace, m_FixedFace;
-
-    bool m_UpdateContents;
-
-#if wxUSE_PRINTING_ARCHITECTURE
-    wxHtmlEasyPrinting *m_Printer;
-#endif
-    wxHashTable *m_PagesHash;
-    wxHelpControllerBase* m_helpController;
-
-    int m_hfStyle;
+    wxHtmlHelpWindow *m_HtmlHelpWin;
+    wxHtmlHelpController* m_helpController;
+    bool m_shouldPreventAppExit;
 
 private:
-    void DisplayIndexItem(const wxHtmlHelpMergedIndexItem *it);
-    wxHtmlHelpMergedIndex *m_mergedIndex;
-    
+
     DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxHtmlHelpFrame)
+    wxDECLARE_NO_COPY_CLASS(wxHtmlHelpFrame);
 };
 
 #endif // wxUSE_WXHTML_HELP