]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/html/helpfrm.h
don't pass NULL pointer to printf(), this crashes Solaris printf
[wxWidgets.git] / include / wx / html / helpfrm.h
index a15cd0419c7b0e7d67623b9c6d9a1d2890132776..255739841bd3a660296dc983b31637045f5033c0 100644 (file)
 #ifndef _WX_HELPFRM_H_
 #define _WX_HELPFRM_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma interface "helpfrm.h"
 #endif
 
 #include "wx/defs.h"
 
-#if wxUSE_HTML
+#if wxUSE_WXHTML_HELP
 
+#include "wx/helpbase.h"
 #include "wx/html/helpdata.h"
 #include "wx/window.h"
 #include "wx/frame.h"
 #include "wx/html/htmlwin.h"
 #include "wx/html/htmprint.h"
 
+class WXDLLIMPEXP_CORE wxButton;
+class WXDLLIMPEXP_CORE wxTextCtrl;
+class WXDLLIMPEXP_CORE wxTreeEvent;
+class WXDLLIMPEXP_CORE wxTreeCtrl;
+
 
 // style flags for the Help Frame
-#define wxHF_TOOLBAR      0x0001
-#define wxHF_CONTENTS     0x0002
-#define wxHF_INDEX        0x0004
-#define wxHF_SEARCH       0x0008
-#define wxHF_BOOKMARKS    0x0010
-#define wxHF_OPENFILES    0x0020
-#define wxHF_PRINT        0x0040
-#define wxHF_FLATTOOLBAR  0x0080
-#define wxHF_DEFAULTSTYLE (wxHF_TOOLBAR | wxHF_CONTENTS | wxHF_INDEX | \
-                           wxHF_SEARCH | wxHF_BOOKMARKS | wxHF_PRINT)
-
-
-// Command IDs :
-enum
-{
-    wxID_HTML_PANEL = wxID_HIGHEST + 1,
-    wxID_HTML_BACK,
-    wxID_HTML_FORWARD,
-    wxID_HTML_UPNODE,
-    wxID_HTML_UP,
-    wxID_HTML_DOWN,
-    wxID_HTML_PRINT,
-    wxID_HTML_OPENFILE,
-    wxID_HTML_OPTIONS,
-    wxID_HTML_BOOKMARKSLIST,
-    wxID_HTML_BOOKMARKSADD,
-    wxID_HTML_BOOKMARKSREMOVE,
-    wxID_HTML_TREECTRL,
-    wxID_HTML_INDEXPAGE,
-    wxID_HTML_INDEXLIST,
-    wxID_HTML_INDEXTEXT,
-    wxID_HTML_INDEXBUTTON,
-    wxID_HTML_INDEXBUTTONALL,
-    wxID_HTML_NOTEBOOK,
-    wxID_HTML_SEARCHPAGE,
-    wxID_HTML_SEARCHTEXT,
-    wxID_HTML_SEARCHLIST,
-    wxID_HTML_SEARCHBUTTON,
-    wxID_HTML_SEARCHCHOICE,
-    wxID_HTML_COUNTINFO,
-    wxID_HTML_HELPFRAME // the id of wxHtmlHelpController's helpframe
-};
+#define wxHF_TOOLBAR                0x0001
+#define wxHF_CONTENTS               0x0002
+#define wxHF_INDEX                  0x0004
+#define wxHF_SEARCH                 0x0008
+#define wxHF_BOOKMARKS              0x0010
+#define wxHF_OPEN_FILES             0x0020
+#define wxHF_PRINT                  0x0040
+#define wxHF_FLAT_TOOLBAR           0x0080
+#define wxHF_MERGE_BOOKS            0x0100
+#define wxHF_ICONS_BOOK             0x0200
+#define wxHF_ICONS_BOOK_CHAPTER     0x0400
+#define wxHF_ICONS_FOLDER           0x0000 // this is 0 since it is default
+#define wxHF_DEFAULT_STYLE          (wxHF_TOOLBAR | wxHF_CONTENTS | \
+                                     wxHF_INDEX | wxHF_SEARCH | \
+                                     wxHF_BOOKMARKS | wxHF_PRINT)
+//compatibility:
+#define wxHF_OPENFILES               wxHF_OPEN_FILES
+#define wxHF_FLATTOOLBAR             wxHF_FLAT_TOOLBAR
+#define wxHF_DEFAULTSTYLE            wxHF_DEFAULT_STYLE
 
 
 struct wxHtmlHelpFrameCfg
@@ -87,10 +70,12 @@ struct wxHtmlHelpFrameCfg
     bool navig_on;
 };
 
+struct wxHtmlHelpMergedIndexItem;
+class wxHtmlHelpMergedIndex;
 
-class WXDLLEXPORT wxHelpControllerBase;
+class WXDLLIMPEXP_CORE wxHelpControllerBase;
 
-class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
+class WXDLLIMPEXP_HTML wxHtmlHelpFrame : public wxFrame
 {
     DECLARE_DYNAMIC_CLASS(wxHtmlHelpFrame)
 
@@ -98,9 +83,9 @@ public:
     wxHtmlHelpFrame(wxHtmlHelpData* data = NULL) { Init(data); }
     wxHtmlHelpFrame(wxWindow* parent, wxWindowID wxWindowID,
                     const wxString& title = wxEmptyString,
-                    int style = wxHF_DEFAULTSTYLE, wxHtmlHelpData* data = NULL);
+                    int style = wxHF_DEFAULT_STYLE, wxHtmlHelpData* data = NULL);
     bool Create(wxWindow* parent, wxWindowID id, const wxString& title = wxEmptyString,
-                int style = wxHF_DEFAULTSTYLE);
+                int style = wxHF_DEFAULT_STYLE);
     ~wxHtmlHelpFrame();
 
     wxHtmlHelpData* GetData() { return m_Data; }
@@ -130,15 +115,16 @@ public:
     // Displays help window and focuses index.
     bool DisplayIndex();
 
-    // Searches for keyword. Returns TRUE and display page if found, return
-    // FALSE otherwise
+    // 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);
+    bool KeywordSearch(const wxString& keyword,
+                       wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
 
     void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString)
         {
@@ -156,12 +142,12 @@ public:
     // call this to let wxHtmlHelpFrame know page changed
     void NotifyPageChanged();
 
-protected:
-    void Init(wxHtmlHelpData* data = NULL);
-
     // Refreshes Contents and Index tabs
     void RefreshLists();
 
+protected:
+    void Init(wxHtmlHelpData* data = NULL);
+
     // Adds items to m_Contents tree control
     void CreateContents();
 
@@ -171,6 +157,10 @@ protected:
     // Add books to search choice panel
     void CreateSearch();
 
+    // Updates "merged index" structure that combines indexes of all books
+    // into better searchable structure
+    void UpdateMergedIndex();
+
     // Add custom buttons to toolbar
     virtual void AddToolbarButtons(wxToolBar *toolBar, int style);
 
@@ -186,13 +176,18 @@ protected:
     void OnSearch(wxCommandEvent& event);
     void OnBookmarksSel(wxCommandEvent& event);
     void OnCloseWindow(wxCloseEvent& event);
+    void OnActivate(wxActivateEvent& event);
+
+#ifdef __WXMAC__
+    void OnClose(wxCommandEvent& event);
+    void OnAbout(wxCommandEvent& event);
+#endif
 
     // Images:
     enum {
         IMG_Book = 0,
         IMG_Folder,
-        IMG_Page,
-        IMG_RootFolder
+        IMG_Page
     };
 
 protected:
@@ -202,7 +197,8 @@ protected:
     // below are various pointers to GUI components
     wxHtmlWindow *m_HtmlWin;
     wxSplitterWindow *m_Splitter;
-    wxNotebook *m_NavigPan;
+    wxPanel *m_NavigPan;
+    wxNotebook *m_NavigNotebook;
     wxTreeCtrl *m_ContentsBox;
     wxTextCtrl *m_IndexText;
     wxButton *m_IndexButton;
@@ -242,9 +238,16 @@ protected:
     wxHashTable *m_PagesHash;
     wxHelpControllerBase* m_helpController;
 
+    int m_hfStyle;
+
+private:
+    void DisplayIndexItem(const wxHtmlHelpMergedIndexItem *it);
+    wxHtmlHelpMergedIndex *m_mergedIndex;
+
     DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxHtmlHelpFrame)
 };
 
-#endif // wxUSE_HTML
+#endif // wxUSE_WXHTML_HELP
 
 #endif