]> git.saurik.com Git - wxWidgets.git/commitdiff
cleaned Harm's new wxHTML help code
authorVáclav Slavík <vslavik@fastmail.fm>
Wed, 27 Oct 1999 23:26:24 +0000 (23:26 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Wed, 27 Oct 1999 23:26:24 +0000 (23:26 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/html/helpctrl.h
include/wx/html/helpdata.h
include/wx/html/helpfrm.h
samples/html/help/helpfiles/another.hhp
src/html/helpctrl.cpp
src/html/helpdata.cpp
src/html/helpfrm.cpp
src/html/search.cpp [deleted file]

index acb0b04d7fd8aaff77497bd9422aff36920917f0..30dcac00de22d9d4d19a5ae4d885353678635d76 100644 (file)
 
 class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler
 {
 
 class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler
 {
-    DECLARE_DYNAMIC_CLASS(wxHtmlHelpController)
+        DECLARE_DYNAMIC_CLASS(wxHtmlHelpController)
 
 
-public:
-    wxHtmlHelpController();
-    virtual ~wxHtmlHelpController();
+    public:
+        wxHtmlHelpController(int style = wxHF_DEFAULTSTYLE);
+        virtual ~wxHtmlHelpController();
 
 
-    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 Display(const wxString& x) {
-       CreateHelpWindow(); return m_helpFrame->Display(x);
-    }
-    bool Display(int id) {
-       CreateHelpWindow(); return m_helpFrame->Display(id);
-    }
-    bool DisplayContents() {
-       CreateHelpWindow(); return m_helpFrame->DisplayContents();
-    }
-    bool DisplayIndex() {
-       CreateHelpWindow(); return m_helpFrame->DisplayIndex();
-    }
-    bool KeywordSearch(const wxString& keyword) {
-       CreateHelpWindow(); return KeywordSearch(keyword);
-    }
-    wxHtmlHelpFrame* GetFrame() { return m_helpFrame; }
-    void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString) {
-       m_Config = config; m_ConfigRoot = rootpath;
-       ReadCustomization(config, rootpath);
-    }
-    // Assigns config object to the Ctrl. This config is then
-    // used in subsequent calls to Read/WriteCustomization of both help
-    // Ctrl and it's wxHtmlWindow
-    virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
-    virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
-    virtual void CreateHelpWindow(bool show_progress = FALSE);
-    virtual void DestroyHelpWindow() {
-       //if (m_Config) WriteCustomization(m_Config, m_ConfigRoot);
-       if (m_helpFrame) m_helpFrame->Destroy();
-    }
-protected:
-    void OnCloseFrame(wxCloseEvent& evt) { m_helpFrame = NULL; evt.Skip(); }
-    wxHtmlHelpData m_helpData;
-    wxHtmlHelpFrame* m_helpFrame;
-    wxConfigBase *m_Config;
-    wxString m_ConfigRoot;
-    wxString m_titleFormat;
-    DECLARE_EVENT_TABLE()
+        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 Display(const wxString& x)
+        {
+            CreateHelpWindow(); return m_helpFrame->Display(x);
+        }
+        bool Display(int id)
+        {
+            CreateHelpWindow(); return m_helpFrame->Display(id);
+        }
+        bool DisplayContents()
+        {
+            CreateHelpWindow(); return m_helpFrame->DisplayContents();
+        }
+        bool DisplayIndex()
+        {
+            CreateHelpWindow(); return m_helpFrame->DisplayIndex();
+        }
+        bool KeywordSearch(const wxString& keyword)
+        {
+            CreateHelpWindow(); return KeywordSearch(keyword);
+        }
+        wxHtmlHelpFrame* GetFrame() { return m_helpFrame; }
+        void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString)
+        {
+            m_Config = config;
+            m_ConfigRoot = rootpath;
+            ReadCustomization(config, rootpath);
+        }
+        // Assigns config object to the Ctrl. This config is then
+        // used in subsequent calls to Read/WriteCustomization of both help
+        // Ctrl and it's wxHtmlWindow
+        virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
+        virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
+        virtual void CreateHelpWindow(bool show_progress = FALSE);
+        virtual void DestroyHelpWindow()
+        {
+            //if (m_Config) WriteCustomization(m_Config, m_ConfigRoot);
+            if (m_helpFrame) m_helpFrame->Destroy();
+        }
+
+    protected:
+        void OnCloseFrame(wxCloseEvent& evt) { m_helpFrame = NULL; evt.Skip(); }
+        wxHtmlHelpData m_helpData;
+        wxHtmlHelpFrame* m_helpFrame;
+        wxConfigBase *m_Config;
+        wxString m_ConfigRoot;
+        wxString m_titleFormat;
+        int m_FrameStyle;
+        DECLARE_EVENT_TABLE()
 };
 
 #endif
 };
 
 #endif
index abc04b35edf980dcf61a3865d3b615b9fdf9ae8f..02214510c9070858e4847361d987140e5e1639be 100644 (file)
 
 class WXDLLEXPORT wxHtmlBookRecord : public wxObject
 {
 
 class WXDLLEXPORT wxHtmlBookRecord : public wxObject
 {
-public:
-    wxHtmlBookRecord(const wxString& basepath, const wxString& title,
-                    const wxString& start) {
-       m_BasePath = basepath; m_Title = title; m_Start = start;
-       // for debugging, give the contents index obvious default values
-       contents_start = contents_end = -1;
-    }
-    wxString GetTitle() const {return m_Title;}
-    wxString GetStart() const {return m_Start;}
-    wxString GetBasePath() const {return m_BasePath;}
-    /* SetContentsRange: store in the bookrecord where in the index/contents lists the
-     * book's records are stored. This to facilitate searching in a specific book.
-     * This code will have to be revised when loading/removing books becomes dynamic.
-     * (as opposed to appending only)
-     * Note that storing index range is pointless, because the index is alphab. sorted. */
-    void SetContentsRange(int start, int end) { contents_start = start; contents_end = end; }
-    int GetContentsStart() const { return contents_start; }
-    int GetContentsEnd() const { return contents_end; }
-protected:
-    wxString m_BasePath;
-    wxString m_Title;
-    wxString m_Start;
-    int contents_start;
-    int contents_end;
+    public:
+        wxHtmlBookRecord(const wxString& basepath, const wxString& title,
+                         const wxString& start)
+        {
+            m_BasePath = basepath;
+            m_Title = title;
+            m_Start = start;
+            // for debugging, give the contents index obvious default values
+            m_ContentsStart = m_ContentsEnd = -1;
+        }
+        wxString GetTitle() const { return m_Title; }
+        wxString GetStart() const { return m_Start; }
+        wxString GetBasePath() const { return m_BasePath; }
+        /* SetContentsRange: store in the bookrecord where in the index/contents lists the
+         * book's records are stored. This to facilitate searching in a specific book.
+         * This code will have to be revised when loading/removing books becomes dynamic.
+         * (as opposed to appending only)
+         * Note that storing index range is pointless, because the index is alphab. sorted. */
+        void SetContentsRange(int start, int end) { m_ContentsStart = start; m_ContentsEnd = end; }
+        int GetContentsStart() const { return m_ContentsStart; }
+        int GetContentsEnd() const { return m_ContentsEnd; }
+
+    protected:
+        wxString m_BasePath;
+        wxString m_Title;
+        wxString m_Start;
+        int m_ContentsStart;
+        int m_ContentsEnd;
 };
 
 
 };
 
 
@@ -68,7 +72,8 @@ typedef struct
     char* m_Name;
     char* m_Page;
     wxHtmlBookRecord *m_Book;
     char* m_Name;
     char* m_Page;
     wxHtmlBookRecord *m_Book;
-} wxHtmlContentsItem;
+}
+wxHtmlContentsItem;
 
 //------------------------------------------------------------------------------
 // wxSearchEngine
 
 //------------------------------------------------------------------------------
 // wxSearchEngine
@@ -77,20 +82,21 @@ typedef struct
 //------------------------------------------------------------------------------
 class WXDLLEXPORT wxSearchEngine : public wxObject
 {
 //------------------------------------------------------------------------------
 class WXDLLEXPORT wxSearchEngine : public wxObject
 {
-private:
-    char *m_Keyword;
+    private:
+        char *m_Keyword;
 
 
-public:
-    wxSearchEngine() : wxObject() {m_Keyword = NULL;}
-    ~wxSearchEngine() {if (m_Keyword) free(m_Keyword);}
+    public:
+        wxSearchEngine() : wxObject() {m_Keyword = NULL; }
+        ~wxSearchEngine() {if (m_Keyword) free(m_Keyword); }
 
 
-    virtual void LookFor(const wxString& keyword);
-    // Sets the keyword we will be searching for
+        virtual void LookFor(const wxString& keyword);
+        // Sets the keyword we will be searching for
 
 
-    virtual bool Scan(wxInputStream *stream);
-    // Scans the stream for the keyword.
-    // Returns TRUE if the stream contains keyword, fALSE otherwise
-};
+        virtual bool Scan(wxInputStream *stream);
+        // Scans the stream for the keyword.
+        // Returns TRUE if the stream contains keyword, fALSE otherwise
+}
+;
 
 class wxHtmlHelpData;
 
 
 class wxHtmlHelpData;
 
@@ -100,85 +106,89 @@ class wxHtmlHelpData;
 // wxHtmlHelpData::PrepareKeywordSearch(const wxString& key)
 class WXDLLEXPORT wxHtmlSearchStatus
 {
 // wxHtmlHelpData::PrepareKeywordSearch(const wxString& key)
 class WXDLLEXPORT wxHtmlSearchStatus
 {
-public:
-    // constructor; supply wxHtmlHelpData ptr, the keyword and (optionally) the
-    // title of the book to search. By default, all books are searched.
-    wxHtmlSearchStatus(wxHtmlHelpData* base, const wxString& keyword,
-                      const wxString& book = wxEmptyString);
-    bool Search(); // do the next iteration
-    bool IsActive() { return m_Active; }
-    int GetCurIndex() { return m_CurIndex; }
-    int GetMaxIndex() { return m_MaxIndex; }
-    const wxString& GetName() { return m_Name; }
-    wxHtmlContentsItem* GetContentsItem() { return m_ContentsItem; }
-private:
-    wxHtmlHelpData* m_Data;
-    wxSearchEngine m_Engine;
-    wxString m_Keyword, m_Name, m_LastPage;
-    wxHtmlContentsItem* m_ContentsItem;
-    bool m_Active; // search is not finished
-    int m_CurIndex; // where we are now
-    int m_MaxIndex; // number of files we search
-    // For progress bar: 100*curindex/maxindex = % complete
-};
+    public:
+        // constructor; supply wxHtmlHelpData ptr, the keyword and (optionally) the
+        // title of the book to search. By default, all books are searched.
+
+        wxHtmlSearchStatus(wxHtmlHelpData* base, const wxString& keyword,
+                           const wxString& book = wxEmptyString);
+        bool Search();  // do the next iteration
+        bool IsActive() { return m_Active; }
+        int GetCurIndex() { return m_CurIndex; }
+        int GetMaxIndex() { return m_MaxIndex; }
+        const wxString& GetName() { return m_Name; }
+        wxHtmlContentsItem* GetContentsItem() { return m_ContentsItem; }
+
+    private:
+        wxHtmlHelpData* m_Data;
+        wxSearchEngine m_Engine;
+        wxString m_Keyword, m_Name, m_LastPage;
+        wxHtmlContentsItem* m_ContentsItem;
+        bool m_Active;  // search is not finished
+        int m_CurIndex;  // where we are now
+        int m_MaxIndex;  // number of files we search
+        // For progress bar: 100*curindex/maxindex = % complete
+}
+;
 
 class WXDLLEXPORT wxHtmlHelpData : public wxObject
 {
 
 class WXDLLEXPORT wxHtmlHelpData : public wxObject
 {
-    DECLARE_DYNAMIC_CLASS(wxHtmlHelpData)
-
-    friend class wxHtmlSearchStatus;
-
-public:
-    wxHtmlHelpData();
-    ~wxHtmlHelpData();
-
-    void SetTempDir(const wxString& path);
-    // Sets directory where temporary files are stored.
-    // These temp files are index & contents file in binary (much faster to read)
-    // form. These files are NOT deleted on program's exit.
-
-    bool AddBook(const wxString& book);
-    // Adds new book. 'book' is location of .htb file (stands for "html book").
-    // See documentation for details on its format.
-    // Returns success.
-    bool AddBookParam(const wxString& title, const wxString& contfile,
-                     const wxString& indexfile=wxEmptyString,
-                     const wxString& deftopic=wxEmptyString,
-                     const wxString& path=wxEmptyString);
-
-    // Some accessing stuff
-    wxString FindPageByName(const wxString& page);
-    // returns URL of page on basis of (file)name
-    wxString FindPageById(int id);
-    // returns URL of page on basis of MS id
-
-    const wxHtmlBookRecArray& GetBookRecArray() { return m_BookRecords; }
-    wxHtmlContentsItem* GetContents() { return m_Contents; }
-    int GetContentsCnt() { return m_ContentsCnt; }
-    wxHtmlContentsItem* GetIndex() { return m_Index; }
-    int GetIndexCnt() { return m_IndexCnt; }
-
-protected:
-    wxString m_TempPath;
-
-    wxHtmlBookRecArray m_BookRecords;
-    // each book has one record in this array
-    wxHtmlContentsItem* m_Contents;
-    int m_ContentsCnt;
-    // list of all available books and pages.
-    wxHtmlContentsItem* m_Index;
-    int m_IndexCnt;
-    // list of index items
-
-protected:
-    bool LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys,
-                      const wxString& indexfile, const wxString& contentsfile);
-    // Imports .hhp files (MS HTML Help Workshop)
-    bool LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f);
-    // Reads binary book
-    bool SaveCachedBook(wxHtmlBookRecord *book, wxOutputStream *f);
-    // Writes binary book
-};
+        DECLARE_DYNAMIC_CLASS(wxHtmlHelpData)
+
+        friend class wxHtmlSearchStatus;
+
+    public:
+        wxHtmlHelpData();
+        ~wxHtmlHelpData();
+
+        void SetTempDir(const wxString& path);
+        // Sets directory where temporary files are stored.
+        // These temp files are index & contents file in binary (much faster to read)
+        // form. These files are NOT deleted on program's exit.
+
+        bool AddBook(const wxString& book);
+        // Adds new book. 'book' is location of .htb file (stands for "html book").
+        // See documentation for details on its format.
+        // Returns success.
+        bool AddBookParam(const wxString& title, const wxString& contfile,
+                          const wxString& indexfile = wxEmptyString,
+                          const wxString& deftopic = wxEmptyString,
+                          const wxString& path = wxEmptyString);
+
+        // Some accessing stuff
+        wxString FindPageByName(const wxString& page);
+        // returns URL of page on basis of (file)name
+        wxString FindPageById(int id);
+        // returns URL of page on basis of MS id
+
+        const wxHtmlBookRecArray& GetBookRecArray() { return m_BookRecords; }
+        wxHtmlContentsItem* GetContents() { return m_Contents; }
+        int GetContentsCnt() { return m_ContentsCnt; }
+        wxHtmlContentsItem* GetIndex() { return m_Index; }
+        int GetIndexCnt() { return m_IndexCnt; }
+
+    protected:
+        wxString m_TempPath;
+
+        wxHtmlBookRecArray m_BookRecords;
+        // each book has one record in this array
+        wxHtmlContentsItem* m_Contents;
+        int m_ContentsCnt;
+        // list of all available books and pages.
+        wxHtmlContentsItem* m_Index;
+        int m_IndexCnt;
+        // list of index items
+
+    protected:
+        bool LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys,
+                           const wxString& indexfile, const wxString& contentsfile);
+        // Imports .hhp files (MS HTML Help Workshop)
+        bool LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f);
+        // Reads binary book
+        bool SaveCachedBook(wxHtmlBookRecord *book, wxOutputStream *f);
+        // Writes binary book
+}
+;
 
 #endif
 
 
 #endif
 
index b523856ce91333d916fde83e83672c86bd38cae1..b227572e2b002d941a6d65b46b469d59ff5dfd5d 100644 (file)
 #include "wx/choice.h"
 #include "wx/html/htmlwin.h"
 
 #include "wx/choice.h"
 #include "wx/html/htmlwin.h"
 
+
 // style flags for the Help Frame
 // style flags for the Help Frame
-const int wxHF_TOOLBAR = 1;
-const int wxHF_CONTENTS = 2;
-const int wxHF_INDEX = 4;
-const int wxHF_SEARCH = 8;
-const int wxHF_DEFAULTSTYLE = -1;
+#define wxHF_TOOLBAR      0x0001
+#define wxHF_CONTENTS     0x0002
+#define wxHF_INDEX        0x0004
+#define wxHF_SEARCH       0x0008
+#define wxHF_DEFAULTSTYLE (wxHF_TOOLBAR | wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH)
+
 
 // Command IDs :
 
 // Command IDs :
-enum {
+enum
+{
     wxID_HTML_PANEL = wxID_HIGHEST + 1,
     wxID_HTML_BACK,
     wxID_HTML_FORWARD,
     wxID_HTML_PANEL = wxID_HIGHEST + 1,
     wxID_HTML_BACK,
     wxID_HTML_FORWARD,
@@ -52,130 +55,135 @@ enum {
     wxID_HTML_SEARCHBUTTON,
     wxID_HTML_SEARCHCHOICE,
     wxID_HTML_HELPFRAME // the id of wxHtmlHelpController's helpframe
     wxID_HTML_SEARCHBUTTON,
     wxID_HTML_SEARCHCHOICE,
     wxID_HTML_HELPFRAME // the id of wxHtmlHelpController's helpframe
-};
+}
+;
 
 
-class WXDLLEXPORT wxHtmlHelpFrameCfg
+
+typedef struct
 {
 {
-public:
-    wxHtmlHelpFrameCfg() {};
-       long x, y, w, h;
-       long sashpos;
-       bool navig_on;
-       int style; // flags given to wxHtmlHelpFrame ctor
-       wxString titleformat;
-};
+    long x, y, w, h;
+    long sashpos;
+    bool navig_on;
+}
+wxHtmlHelpFrameCfg;
+
+
 
 class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
 {
 
 class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
 {
-    DECLARE_DYNAMIC_CLASS(wxHtmlHelpFrame)
-
-public:
-    wxHtmlHelpFrame(wxHtmlHelpData* data = NULL) { Init(data); }
-    wxHtmlHelpFrame(wxWindow* parent, int wxWindowID,
-                   const wxString& title = wxEmptyString,
-                   int style = wxHF_DEFAULTSTYLE, wxHtmlHelpData* data = NULL);
-    bool Create(wxWindow* parent, wxWindowID id, const wxString& title = wxEmptyString,
-               int style = wxHF_DEFAULTSTYLE);
-    ~wxHtmlHelpFrame();
-
-    wxHtmlHelpData* GetData() { return m_Data; }
-
-    void SetTitleFormat(const wxString& format) {
-       if (m_HtmlWin)
-           m_HtmlWin->SetRelatedFrame(this, format);
-       m_TitleFormat = format;
-    }
-    // Sets format of title of the frame. Must contain exactly one "%s"
-    // (for title of displayed HTML page)
-
-    bool Display(const wxString& x);
-    // 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 int id);
-    // Alternative version that works with numeric ID.
-    // (uses extension to MS format, <param name="ID" value=id>, see docs)
-
-    bool DisplayContents();
-    // Displays help window and focuses contents.
-
-    bool DisplayIndex();
-    // Displays help window and focuses index.
-
-    bool KeywordSearch(const wxString& keyword);
-    // 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
-    void RefreshLists(bool show_progress = FALSE);
-    // Refreshes Contents and Index tabs
-    void CreateContents(bool show_progress = FALSE);
-    // Adds items to m_Contents tree control
-    void CreateIndex(bool show_progress = FALSE);
-    // Adds items to m_IndexList
-    void CreateSearch();
-    // Add books to search choice panel
-    void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString) {
-       m_Config = config; m_ConfigRoot = rootpath;
-       ReadCustomization(config, rootpath);
-    }
-    void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
-    // 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 WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
-    // ...
-    void OnToolbar(wxCommandEvent& event);
-    void OnContentsSel(wxTreeEvent& event);
-    void OnIndexSel(wxCommandEvent& event);
-    void OnSearchSel(wxCommandEvent& event);
-    void OnSearch(wxCommandEvent& event);
-    void OnCloseWindow(wxCloseEvent& event);
-
-    // Images:
-    enum {
-       IMG_Book = 0,
-       IMG_Folder,
-       IMG_Page
-    };
-
-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;
-    wxNotebook *m_NavigPan;
-    wxTreeCtrl *m_ContentsBox;
-    wxImageList *m_ContentsImageList;
-    wxListBox *m_IndexBox;
-    wxTextCtrl *m_SearchText;
-    wxButton *m_SearchButton;
-    wxListBox *m_SearchList;
-    wxChoice *m_SearchChoice;
-
-    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;
-
-protected:
-    void Init(wxHtmlHelpData* data = NULL);
-
-    DECLARE_EVENT_TABLE()
+        DECLARE_DYNAMIC_CLASS(wxHtmlHelpFrame)
+
+    public:
+        wxHtmlHelpFrame(wxHtmlHelpData* data = NULL) { Init(data); }
+        wxHtmlHelpFrame(wxWindow* parent, int wxWindowID,
+                        const wxString& title = wxEmptyString,
+                        int style = wxHF_DEFAULTSTYLE, wxHtmlHelpData* data = NULL);
+        bool Create(wxWindow* parent, wxWindowID id, const wxString& title = wxEmptyString,
+                    int style = wxHF_DEFAULTSTYLE);
+        ~wxHtmlHelpFrame();
+
+        wxHtmlHelpData* GetData() { return m_Data; }
+
+        void SetTitleFormat(const wxString& format)
+        {
+            if (m_HtmlWin)
+                m_HtmlWin->SetRelatedFrame(this, format);
+            m_TitleFormat = format;
+        }
+        // Sets format of title of the frame. Must contain exactly one "%s"
+        // (for title of displayed HTML page)
+
+        bool Display(const wxString& x);
+        // 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 int id);
+        // Alternative version that works with numeric ID.
+        // (uses extension to MS format, <param name="ID" value=id>, see docs)
+
+        bool DisplayContents();
+        // Displays help window and focuses contents.
+
+        bool DisplayIndex();
+        // Displays help window and focuses index.
+
+        bool KeywordSearch(const wxString& keyword);
+        // 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
+        void RefreshLists(bool show_progress = FALSE);
+        // Refreshes Contents and Index tabs
+        void CreateContents(bool show_progress = FALSE);
+        // Adds items to m_Contents tree control
+        void CreateIndex(bool show_progress = FALSE);
+        // Adds items to m_IndexList
+        void CreateSearch();
+        // Add books to search choice panel
+        void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString)
+        {
+            m_Config = config;
+            m_ConfigRoot = rootpath;
+            ReadCustomization(config, rootpath);
+        }
+        void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
+        // 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 WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
+        // ...
+        void OnToolbar(wxCommandEvent& event);
+        void OnContentsSel(wxTreeEvent& event);
+        void OnIndexSel(wxCommandEvent& event);
+        void OnSearchSel(wxCommandEvent& event);
+        void OnSearch(wxCommandEvent& event);
+        void OnCloseWindow(wxCloseEvent& event);
+
+        // Images:
+        enum {
+            IMG_Book = 0,
+            IMG_Folder,
+            IMG_Page
+        };
+
+    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;
+        wxNotebook *m_NavigPan;
+        wxTreeCtrl *m_ContentsBox;
+        wxImageList *m_ContentsImageList;
+        wxListBox *m_IndexBox;
+        wxTextCtrl *m_SearchText;
+        wxButton *m_SearchButton;
+        wxListBox *m_SearchList;
+        wxChoice *m_SearchChoice;
+
+        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;
+
+    protected:
+        void Init(wxHtmlHelpData* data = NULL);
+
+        DECLARE_EVENT_TABLE()
 };
 
 #endif
 };
 
 #endif
index 7f808a5ea20e1c97d1d79c7fa6b7337468815419..017ed2427cc96cf9ddb266fdec0ea002214fb1f9 100644 (file)
@@ -4,6 +4,3 @@ Contents file=another.hhc
 Display compile progress=No
 Title=Another book
 Default topic=another.htm
 Display compile progress=No
 Title=Another book
 Default topic=another.htm
-Embarassment=extra line because project parsing is slightly buggy
-
-
index e25e606060682667c12284f03d574a5438409b54..51de63e7713886e5d3d55b6265b9cea8d42e9b1e 100644 (file)
 IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxEvtHandler)
 
 BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler)
 IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxEvtHandler)
 
 BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler)
-    EVT_CLOSE(wxHtmlHelpController::OnCloseFrame)
+EVT_CLOSE(wxHtmlHelpController::OnCloseFrame)
 END_EVENT_TABLE()
 
 END_EVENT_TABLE()
 
-wxHtmlHelpController::wxHtmlHelpController()
+wxHtmlHelpController::wxHtmlHelpController(int style)
 {
     m_helpFrame = NULL;
     m_Config = NULL;
     m_ConfigRoot = wxEmptyString;
     m_titleFormat = _("Help: %s");
 {
     m_helpFrame = NULL;
     m_Config = NULL;
     m_ConfigRoot = wxEmptyString;
     m_titleFormat = _("Help: %s");
+    m_FrameStyle = style;
 }
 
 wxHtmlHelpController::~wxHtmlHelpController()
 {
     WriteCustomization(m_Config, m_ConfigRoot);
     if (m_helpFrame)
 }
 
 wxHtmlHelpController::~wxHtmlHelpController()
 {
     WriteCustomization(m_Config, m_ConfigRoot);
     if (m_helpFrame)
-       m_helpFrame->Close();
+        m_helpFrame->Close();
 }
 
 void wxHtmlHelpController::SetTitleFormat(const wxString& title)
 {
     m_titleFormat = title;
     if (m_helpFrame)
 }
 
 void wxHtmlHelpController::SetTitleFormat(const wxString& title)
 {
     m_titleFormat = title;
     if (m_helpFrame)
-       m_helpFrame->SetTitleFormat(title);
+        m_helpFrame->SetTitleFormat(title);
 }
 
 }
 
+
 bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg)
 {
     wxBusyCursor cur;
 bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg)
 {
     wxBusyCursor cur;
@@ -63,29 +65,30 @@ bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg)
     wxBusyInfo* busy = NULL;
     wxString info;
     if (show_wait_msg) {
     wxBusyInfo* busy = NULL;
     wxString info;
     if (show_wait_msg) {
-       info.Printf(_("Adding book %s"), book.c_str());
-       busy = new wxBusyInfo(info);
+        info.Printf(_("Adding book %s"), book.c_str());
+        busy = new wxBusyInfo(info);
     }
 #endif
     bool retval = m_helpData.AddBook(book);
 #if wxUSE_BUSYINFO
     if (show_wait_msg)
     }
 #endif
     bool retval = m_helpData.AddBook(book);
 #if wxUSE_BUSYINFO
     if (show_wait_msg)
-       delete busy;
-#endif
+        delete busy;
+#endif 
     return retval;
 }
 
 void wxHtmlHelpController::CreateHelpWindow(bool show_progress)
 {
     if (m_helpFrame) {
     return retval;
 }
 
 void wxHtmlHelpController::CreateHelpWindow(bool show_progress)
 {
     if (m_helpFrame) {
-       m_helpFrame->Raise();
-       return;
+        m_helpFrame->Raise();
+        return ;
     }
     m_helpFrame = new wxHtmlHelpFrame(&m_helpData);
     }
     m_helpFrame = new wxHtmlHelpFrame(&m_helpData);
+
     m_helpFrame->PushEventHandler(this);
     if (m_Config)
     m_helpFrame->PushEventHandler(this);
     if (m_Config)
-       m_helpFrame->UseConfig(m_Config, m_ConfigRoot);
-    m_helpFrame->Create(NULL, wxID_HTML_HELPFRAME);
+        m_helpFrame->UseConfig(m_Config, m_ConfigRoot);
+    m_helpFrame->Create(NULL, wxID_HTML_HELPFRAME, wxEmptyString, m_FrameStyle);
     m_helpFrame->RefreshLists(show_progress);
     m_helpFrame->SetTitleFormat(m_titleFormat);
     m_helpFrame->Show(TRUE);
     m_helpFrame->RefreshLists(show_progress);
     m_helpFrame->SetTitleFormat(m_titleFormat);
     m_helpFrame->Show(TRUE);
@@ -96,14 +99,14 @@ void wxHtmlHelpController::ReadCustomization(wxConfigBase* cfg, const wxString&
     /* should not be called by the user; call UseConfig, and the controller
      * will do the rest */
     if (m_helpFrame)
     /* should not be called by the user; call UseConfig, and the controller
      * will do the rest */
     if (m_helpFrame)
-       m_helpFrame->ReadCustomization(cfg, path);
+        m_helpFrame->ReadCustomization(cfg, path);
 }
 
 void wxHtmlHelpController::WriteCustomization(wxConfigBase* cfg, const wxString& path)
 {
     /* typically called by the controllers OnCloseFrame handler */
     if (m_helpFrame)
 }
 
 void wxHtmlHelpController::WriteCustomization(wxConfigBase* cfg, const wxString& path)
 {
     /* typically called by the controllers OnCloseFrame handler */
     if (m_helpFrame)
-       m_helpFrame->WriteCustomization(cfg, path);
+        m_helpFrame->WriteCustomization(cfg, path);
 }
 
 #endif
 }
 
 #endif
index 6c187b1327a406ac619af4e2e5ee6e542e4768c8..966786542ae4d429297b3af9204305c70473ba9b 100644 (file)
@@ -95,15 +95,15 @@ class HP_TagHandler : public wxHtmlTagHandler
     private:
         wxString m_Name, m_Page;
         int m_Level;
     private:
         wxString m_Name, m_Page;
         int m_Level;
-       int m_ID;
+        int m_ID;
         int m_Index;
         wxHtmlContentsItem *m_Items;
         int m_ItemsCnt;
         wxHtmlBookRecord *m_Book;
 
     public:
         int m_Index;
         wxHtmlContentsItem *m_Items;
         int m_ItemsCnt;
         wxHtmlBookRecord *m_Book;
 
     public:
-        HP_TagHandler(wxHtmlBookRecord *b) : wxHtmlTagHandler() {m_Book = b; m_Items = NULL; m_ItemsCnt = 0; m_Name = m_Page = wxEmptyString; m_Level = 0;}
-        wxString GetSupportedTags() {return "UL,OBJECT,PARAM";}
+        HP_TagHandler(wxHtmlBookRecord *b) : wxHtmlTagHandler() {m_Book = b; m_Items = NULL; m_ItemsCnt = 0; m_Name = m_Page = wxEmptyString; m_Level = 0; }
+        wxString GetSupportedTags() { return "UL,OBJECT,PARAM"; }
         bool HandleTag(const wxHtmlTag& tag);
         void WriteOut(wxHtmlContentsItem*& array, int& size);
         void ReadIn(wxHtmlContentsItem* array, int size);
         bool HandleTag(const wxHtmlTag& tag);
         void WriteOut(wxHtmlContentsItem*& array, int& size);
         void ReadIn(wxHtmlContentsItem* array, int size);
@@ -118,7 +118,6 @@ bool HP_TagHandler::HandleTag(const wxHtmlTag& tag)
         m_Level--;
         return TRUE;
     }
         m_Level--;
         return TRUE;
     }
-
     else if (tag.GetName() == "OBJECT") {
         m_Name = m_Page = wxEmptyString;
         ParseInner(tag);
     else if (tag.GetName() == "OBJECT") {
         m_Name = m_Page = wxEmptyString;
         ParseInner(tag);
@@ -136,7 +135,6 @@ bool HP_TagHandler::HandleTag(const wxHtmlTag& tag)
         }
         return TRUE;
     }
         }
         return TRUE;
     }
-
     else { // "PARAM"
         if (m_Name == wxEmptyString && tag.GetParam("NAME") == "Name") m_Name = tag.GetParam("VALUE");
         if (tag.GetParam("NAME") == "Local") m_Page = tag.GetParam("VALUE");
     else { // "PARAM"
         if (m_Name == wxEmptyString && tag.GetParam("NAME") == "Name") m_Name = tag.GetParam("VALUE");
         if (tag.GetParam("NAME") == "Local") m_Page = tag.GetParam("VALUE");
@@ -161,6 +159,9 @@ void HP_TagHandler::ReadIn(wxHtmlContentsItem* array, int size)
     m_ItemsCnt = size;
 }
 
     m_ItemsCnt = size;
 }
 
+
+
+
 //-----------------------------------------------------------------------------
 // wxHtmlHelpData
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // wxHtmlHelpData
 //-----------------------------------------------------------------------------
@@ -212,7 +213,7 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c
     f = ( contentsfile.IsEmpty() ? 0 : fsys.OpenFile(contentsfile) );
     if (f) {
         sz = f -> GetStream() -> GetSize();
     f = ( contentsfile.IsEmpty() ? 0 : fsys.OpenFile(contentsfile) );
     if (f) {
         sz = f -> GetStream() -> GetSize();
-        buf = new char[sz+1];
+        buf = new char[sz + 1];
         buf[sz] = 0;
         f -> GetStream() -> Read(buf, sz);
         delete f;
         buf[sz] = 0;
         f -> GetStream() -> Read(buf, sz);
         delete f;
@@ -225,7 +226,7 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c
     f = ( indexfile.IsEmpty() ? 0 : fsys.OpenFile(indexfile) );
     if (f) {
         sz = f -> GetStream() -> GetSize();
     f = ( indexfile.IsEmpty() ? 0 : fsys.OpenFile(indexfile) );
     if (f) {
         sz = f -> GetStream() -> GetSize();
-        buf = new  char[sz+1];
+        buf = new char[sz + 1];
         buf[sz] = 0;
         f -> GetStream() -> Read(buf, sz);
         delete f;
         buf[sz] = 0;
         f -> GetStream() -> Read(buf, sz);
         delete f;
@@ -328,18 +329,18 @@ void wxHtmlHelpData::SetTempDir(const wxString& path)
 {
     if (path == wxEmptyString) m_TempPath = path;
     else {
 {
     if (path == wxEmptyString) m_TempPath = path;
     else {
-       if (wxIsAbsolutePath(path)) m_TempPath = path;
-       else m_TempPath = wxGetCwd() + "/" + path;
+        if (wxIsAbsolutePath(path)) m_TempPath = path;
+        else m_TempPath = wxGetCwd() + "/" + path;
 
 
-       if (m_TempPath[m_TempPath.Length() - 1] != '/')
+        if (m_TempPath[m_TempPath.Length() - 1] != '/')
             m_TempPath << "/";
     }
 }
 
 
 bool wxHtmlHelpData::AddBookParam(const wxString& title, const wxString& contfile,
             m_TempPath << "/";
     }
 }
 
 
 bool wxHtmlHelpData::AddBookParam(const wxString& title, const wxString& contfile,
-                                 const wxString& indexfile, const wxString& deftopic,
-                                 const wxString& path)
+                                  const wxString& indexfile, const wxString& deftopic,
+                                  const wxString& path)
 {
     wxFileSystem fsys;
     wxFSFile *fi;
 {
     wxFileSystem fsys;
     wxFSFile *fi;
@@ -347,10 +348,9 @@ bool wxHtmlHelpData::AddBookParam(const wxString& title, const wxString& contfil
     wxString safetitle;
 
     if (! path.IsEmpty())
     wxString safetitle;
 
     if (! path.IsEmpty())
-           // workaround for bug in ChangePathTo(name, TRUE)
-           fsys.ChangePathTo(path+"/gaga");
+        fsys.ChangePathTo(path, TRUE);
 
 
-    bookr = new wxHtmlBookRecord(path+'/', title, deftopic);
+    bookr = new wxHtmlBookRecord(path + '/', title, deftopic);
 
     if (m_ContentsCnt % wxHTML_REALLOC_STEP == 0)
         m_Contents = (wxHtmlContentsItem*) realloc(m_Contents, (m_ContentsCnt + wxHTML_REALLOC_STEP) * sizeof(wxHtmlContentsItem));
 
     if (m_ContentsCnt % wxHTML_REALLOC_STEP == 0)
         m_Contents = (wxHtmlContentsItem*) realloc(m_Contents, (m_ContentsCnt + wxHTML_REALLOC_STEP) * sizeof(wxHtmlContentsItem));
@@ -372,12 +372,11 @@ bool wxHtmlHelpData::AddBookParam(const wxString& title, const wxString& contfil
     if ((fi == NULL) || (m_TempPath == wxEmptyString)) {
         LoadMSProject(bookr, fsys, indexfile, contfile);
         if (m_TempPath != wxEmptyString) {
     if ((fi == NULL) || (m_TempPath == wxEmptyString)) {
         LoadMSProject(bookr, fsys, indexfile, contfile);
         if (m_TempPath != wxEmptyString) {
-               wxFileOutputStream *outs = new wxFileOutputStream(m_TempPath + safetitle + ".cached");
+            wxFileOutputStream *outs = new wxFileOutputStream(m_TempPath + safetitle + ".cached");
             SaveCachedBook(bookr, outs);
             delete outs;
             SaveCachedBook(bookr, outs);
             delete outs;
-       }
-    }
-    else {
+        }
+    } else {
         LoadCachedBook(bookr, fi -> GetStream());
         delete fi;
     }
         LoadCachedBook(bookr, fi -> GetStream());
         delete fi;
     }
@@ -405,9 +404,9 @@ bool wxHtmlHelpData::AddBook(const wxString& book)
     char linebuf[300];
 
     wxString title = _("noname"),
     char linebuf[300];
 
     wxString title = _("noname"),
-             safetitle,
-             start = wxEmptyString,
-             contents = wxEmptyString, index = wxEmptyString;
+                     safetitle,
+                     start = wxEmptyString,
+                             contents = wxEmptyString, index = wxEmptyString;
 
     if (wxIsAbsolutePath(book)) bookFull = book;
     else bookFull = wxGetCwd() + "/" + book;
 
     if (wxIsAbsolutePath(book)) bookFull = book;
     else bookFull = wxGetCwd() + "/" + book;
@@ -417,13 +416,15 @@ bool wxHtmlHelpData::AddBook(const wxString& book)
     fsys.ChangePathTo(bookFull);
     s = fi -> GetStream();
     sz = s -> GetSize();
     fsys.ChangePathTo(bookFull);
     s = fi -> GetStream();
     sz = s -> GetSize();
-    buff = new char[sz+1];
+    buff = new char[sz + 1];
     buff[sz] = 0;
     s -> Read(buff, sz);
     lineptr = buff;
     delete fi;
 
     buff[sz] = 0;
     s -> Read(buff, sz);
     lineptr = buff;
     delete fi;
 
-    while ((lineptr = ReadLine(lineptr, linebuf)) != NULL) {
+    do {
+        lineptr = ReadLine(lineptr, linebuf);
+
         if (strstr(linebuf, "Title=") == linebuf)
             title = linebuf + strlen("Title=");
         if (strstr(linebuf, "Default topic=") == linebuf)
         if (strstr(linebuf, "Title=") == linebuf)
             title = linebuf + strlen("Title=");
         if (strstr(linebuf, "Default topic=") == linebuf)
@@ -432,7 +433,7 @@ bool wxHtmlHelpData::AddBook(const wxString& book)
             index = linebuf + strlen("Index file=");
         if (strstr(linebuf, "Contents file=") == linebuf)
             contents = linebuf + strlen("Contents file=");
             index = linebuf + strlen("Index file=");
         if (strstr(linebuf, "Contents file=") == linebuf)
             contents = linebuf + strlen("Contents file=");
-    }
+    } while (lineptr != NULL);
     delete[] buff;
 
     return AddBookParam(title, contents, index, start, fsys.GetPath());
     delete[] buff;
 
     return AddBookParam(title, contents, index, start, fsys.GetPath());
@@ -512,28 +513,28 @@ wxString wxHtmlHelpData::FindPageById(int id)
 //----------------------------------------------------------------------------------
 
 wxHtmlSearchStatus::wxHtmlSearchStatus(wxHtmlHelpData* data, const wxString& keyword,
 //----------------------------------------------------------------------------------
 
 wxHtmlSearchStatus::wxHtmlSearchStatus(wxHtmlHelpData* data, const wxString& keyword,
-                                      const wxString& book)
+                                       const wxString& book)
 {
     m_Data = data;
     m_Keyword = keyword;
     wxHtmlBookRecord* bookr = NULL;
     if (book != wxEmptyString) {
 {
     m_Data = data;
     m_Keyword = keyword;
     wxHtmlBookRecord* bookr = NULL;
     if (book != wxEmptyString) {
-       // we have to search in a specific book. Find it first
-       int i,cnt = data->m_BookRecords.GetCount();
-       for (i=0; i<cnt; i++)
-           if (data->m_BookRecords[i].GetTitle() == book) {
-               bookr = &(data->m_BookRecords[i]);
-               m_CurIndex = bookr->GetContentsStart();
-               m_MaxIndex = bookr->GetContentsEnd();
-               break;
-           }
-       // check; we won't crash if the book doesn't exist, but it's Bad Anyway.
-       wxASSERT(bookr);
+        // we have to search in a specific book. Find it first
+        int i, cnt = data->m_BookRecords.GetCount();
+        for (i = 0; i < cnt; i++)
+            if (data->m_BookRecords[i].GetTitle() == book) {
+                bookr = &(data->m_BookRecords[i]);
+                m_CurIndex = bookr->GetContentsStart();
+                m_MaxIndex = bookr->GetContentsEnd();
+                break;
+            }
+        // check; we won't crash if the book doesn't exist, but it's Bad Anyway.
+        wxASSERT(bookr);
     }
     if (! bookr) {
     }
     if (! bookr) {
-       // no book specified; search all books
-       m_CurIndex = 0;
-       m_MaxIndex = m_Data->m_ContentsCnt;
+        // no book specified; search all books
+        m_CurIndex = 0;
+        m_MaxIndex = m_Data->m_ContentsCnt;
     }
     m_Engine.LookFor(keyword);
     m_Active = (m_CurIndex < m_MaxIndex);
     }
     m_Engine.LookFor(keyword);
     m_Active = (m_CurIndex < m_MaxIndex);
@@ -544,7 +545,7 @@ bool wxHtmlSearchStatus::Search()
 {
     wxFileSystem fsys;
     wxFSFile *file;
 {
     wxFileSystem fsys;
     wxFSFile *file;
-    int i = m_CurIndex; // shortcut
+    int i = m_CurIndex;  // shortcut
     bool found = FALSE;
 
     if (! m_Active) {
     bool found = FALSE;
 
     if (! m_Active) {
@@ -561,20 +562,71 @@ wxASSERT(m_Active);
     m_Name = wxEmptyString;
 
     file = fsys.OpenFile(m_Data->m_Contents[i].m_Book -> GetBasePath() +
     m_Name = wxEmptyString;
 
     file = fsys.OpenFile(m_Data->m_Contents[i].m_Book -> GetBasePath() +
-                        m_Data->m_Contents[i].m_Page);
+                         m_Data->m_Contents[i].m_Page);
     if (file) {
     if (file) {
-       if (m_LastPage != file->GetLocation()) {
-           m_LastPage = file->GetLocation();
-           if (m_Engine.Scan(file -> GetStream())) {
-               m_Name = m_Data->m_Contents[i].m_Name;
-               m_ContentsItem = m_Data->m_Contents + i;
-               found = TRUE;
-           }
-       }
-       delete file;
+        if (m_LastPage != file->GetLocation()) {
+            m_LastPage = file->GetLocation();
+            if (m_Engine.Scan(file -> GetStream())) {
+                m_Name = m_Data->m_Contents[i].m_Name;
+                m_ContentsItem = m_Data->m_Contents + i;
+                found = TRUE;
+            }
+        }
+        delete file;
     }
     m_Active = (++m_CurIndex < m_MaxIndex);
     return found;
 }
 
     }
     m_Active = (++m_CurIndex < m_MaxIndex);
     return found;
 }
 
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------------
+// wxSearchEngine
+//--------------------------------------------------------------------------------
+
+void wxSearchEngine::LookFor(const wxString& keyword)
+{
+    if (m_Keyword) delete[] m_Keyword;
+    m_Keyword = new char[keyword.Length() + 1];
+    strcpy(m_Keyword, keyword.c_str());
+    for (int i = strlen(m_Keyword) - 1; i >= 0; i--)
+        if ((m_Keyword[i] >= 'A') && (m_Keyword[i] <= 'Z'))
+            m_Keyword[i] += 'a' - 'A';
+}
+
+
+
+bool wxSearchEngine::Scan(wxInputStream *stream)
+{
+    wxASSERT_MSG(m_Keyword != NULL, _("wxSearchEngine::LookFor must be called before scanning!"));
+
+    int i, j;
+    int lng = stream ->GetSize();
+    int wrd = strlen(m_Keyword);
+    bool found = FALSE;
+    char *buf = new char[lng + 1];
+    stream -> Read(buf, lng);
+    buf[lng] = 0;
+
+    for (i = 0; i < lng; i++)
+        if ((buf[i] >= 'A') && (buf[i] <= 'Z')) buf[i] += 'a' - 'A';
+
+    for (i = 0; i < lng - wrd; i++) {
+        j = 0;
+        while ((j < wrd) && (buf[i + j] == m_Keyword[j])) j++;
+    if (j == wrd) {found = TRUE; break; }
+    }
+
+    delete[] buf;
+    return found;
+}
+
+
+
+
 #endif
 #endif
index 4c69ea484e945bbf82ef498ebc93e803b320d18a..d99173552de0c4646469ac9dc1bcd02d0c53574b 100644 (file)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        helpfrm.cpp
 // Purpose:     wxHtmlHelpFrame
 /////////////////////////////////////////////////////////////////////////////
 // Name:        helpfrm.cpp
 // Purpose:     wxHtmlHelpFrame
-// Notes:       Based on htmlhelp.cpp, implementing a monolithic 
+// Notes:       Based on htmlhelp.cpp, implementing a monolithic
 //              HTML Help controller class,  by Vaclav Slavik
 // Author:      Harm van der Heijden and Vaclav Slavik
 // RCS-ID:      $Id$
 //              HTML Help controller class,  by Vaclav Slavik
 // Author:      Harm van der Heijden and Vaclav Slavik
 // RCS-ID:      $Id$
@@ -53,7 +53,7 @@
 
 // number of times that the contents/index creation progress dialog
 // is updated.
 
 // number of times that the contents/index creation progress dialog
 // is updated.
-static const int PROGRESS_STEP = 40;
+#define PROGRESS_STEP 40
 
 //--------------------------------------------------------------------------
 // wxHtmlHelpTreeItemData
 
 //--------------------------------------------------------------------------
 // wxHtmlHelpTreeItemData
@@ -65,11 +65,11 @@ class wxHtmlHelpTreeItemData : public wxTreeItemData
         wxString m_Page;
 
     public:
         wxString m_Page;
 
     public:
-        wxHtmlHelpTreeItemData(wxHtmlContentsItem *it) : wxTreeItemData() 
-       {
-           m_Page = it -> m_Book -> GetBasePath() + it -> m_Page;
-       }
-        const wxString& GetPage() {return m_Page;}
+        wxHtmlHelpTreeItemData(wxHtmlContentsItem *it) : wxTreeItemData()
+        {
+            m_Page = it -> m_Book -> GetBasePath() + it -> m_Page;
+        }
+        const wxString& GetPage() { return m_Page; }
 };
 
 //---------------------------------------------------------------------------
 };
 
 //---------------------------------------------------------------------------
@@ -79,21 +79,20 @@ class wxHtmlHelpTreeItemData : public wxTreeItemData
 IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpFrame, wxFrame)
 
 wxHtmlHelpFrame::wxHtmlHelpFrame(wxWindow* parent, wxWindowID id, const wxString& title,
 IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpFrame, wxFrame)
 
 wxHtmlHelpFrame::wxHtmlHelpFrame(wxWindow* parent, wxWindowID id, const wxString& title,
-                                int style, wxHtmlHelpData* data)
+                                 int style, wxHtmlHelpData* data)
 {
     Init(data);
     Create(parent, id, title, style);
 }
 {
     Init(data);
     Create(parent, id, title, style);
 }
+
 void wxHtmlHelpFrame::Init(wxHtmlHelpData* data)
 {
     if (data) {
 void wxHtmlHelpFrame::Init(wxHtmlHelpData* data)
 {
     if (data) {
-       m_Data = data;
-       m_DataCreated = FALSE;
-    }
-    else {
-       m_Data = new wxHtmlHelpData();
-       m_DataCreated = TRUE;
+        m_Data = data;
+        m_DataCreated = FALSE;
+    } else {
+        m_Data = new wxHtmlHelpData();
+        m_DataCreated = TRUE;
     }
 
     m_ContentsImageList = new wxImageList(12, 12);
     }
 
     m_ContentsImageList = new wxImageList(12, 12);
@@ -114,179 +113,171 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data)
     m_ConfigRoot = wxEmptyString;
 
     m_Cfg.x = m_Cfg.y = 0;
     m_ConfigRoot = wxEmptyString;
 
     m_Cfg.x = m_Cfg.y = 0;
-    m_Cfg.w = 700; m_Cfg.h = 480;
+    m_Cfg.w = 700;
+    m_Cfg.h = 480;
     m_Cfg.sashpos = 240;
     m_Cfg.navig_on = TRUE;
     m_Cfg.sashpos = 240;
     m_Cfg.navig_on = TRUE;
-    m_Cfg.titleformat = _("Help: %s");
-    m_Cfg.style = wxHF_TOOLBAR | wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH;
 }
 
 }
 
-/* Create: builds the GUI components.
- * with the style flag it's possible to toggle the toolbar, contents, index and search
- * controls. 
- * m_HtmlWin will *always* be created, but it's important to realize that
- * m_ContentsBox, m_IndexBox, m_SearchList, m_SearchButton, m_SearchText and 
- * m_SearchButton may be NULL.
- * moreover, if no contents, index or searchpage is needed, m_Splitter and 
- * m_NavigPan will be NULL too (with m_HtmlWin directly connected to the frame)
- */
+// Create: builds the GUI components.
+// with the style flag it's possible to toggle the toolbar, contents, index and search
+// controls.
+// m_HtmlWin will *always* be created, but it's important to realize that
+// m_ContentsBox, m_IndexBox, m_SearchList, m_SearchButton, m_SearchText and
+// m_SearchButton may be NULL.
+// moreover, if no contents, index or searchpage is needed, m_Splitter and
+// m_NavigPan will be NULL too (with m_HtmlWin directly connected to the frame)
+
 bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& title,
 bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& title,
-                           int style) 
+                             int style)
 {
     // Do the config in two steps. We read the HtmlWindow customization after we
     // create the window.
 {
     // Do the config in two steps. We read the HtmlWindow customization after we
     // create the window.
-    if (m_Config) 
-       ReadCustomization(m_Config, m_ConfigRoot);
+    if (m_Config)
+        ReadCustomization(m_Config, m_ConfigRoot);
 
     wxFrame::Create(parent, id, "", wxPoint(m_Cfg.x, m_Cfg.y), wxSize(m_Cfg.w, m_Cfg.h));
 
 
     wxFrame::Create(parent, id, "", wxPoint(m_Cfg.x, m_Cfg.y), wxSize(m_Cfg.w, m_Cfg.h));
 
-    if (style == wxHF_DEFAULTSTYLE)
-       style = m_Cfg.style;
-
-    if (! title.IsEmpty()) // overridden?
-       m_Cfg.titleformat = title;
-
     int notebook_page = 0;
 
     CreateStatusBar();
 
     // toolbar?
     if (style & wxHF_TOOLBAR) {
     int notebook_page = 0;
 
     CreateStatusBar();
 
     // toolbar?
     if (style & wxHF_TOOLBAR) {
-       wxToolBar *toolBar = CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL | wxTB_FLAT | 
-                                          wxTB_DOCKABLE);
-       toolBar -> SetMargins(2, 2);
-       wxBitmap* toolBarBitmaps[3];
+        wxToolBar *toolBar = CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL |  /*wxTB_FLAT | */
+                                           wxTB_DOCKABLE);
+        toolBar -> SetMargins(2, 2);
+        wxBitmap* toolBarBitmaps[3];
 
 #ifdef __WXMSW__
 
 #ifdef __WXMSW__
-       toolBarBitmaps[0] = new wxBitmap("panel");
-       toolBarBitmaps[1] = new wxBitmap("back");
-       toolBarBitmaps[2] = new wxBitmap("forward");
-       int width = 24;
+        toolBarBitmaps[0] = new wxBitmap("panel");
+        toolBarBitmaps[1] = new wxBitmap("back");
+        toolBarBitmaps[2] = new wxBitmap("forward");
+        int width = 24;
 #else
 #else
-       toolBarBitmaps[0] = new wxBitmap(panel_xpm);
-       toolBarBitmaps[1] = new wxBitmap(back_xpm);
-       toolBarBitmaps[2] = new wxBitmap(forward_xpm);
-       int width = 16;
+toolBarBitmaps[0] = new wxBitmap(panel_xpm);
+        toolBarBitmaps[1] = new wxBitmap(back_xpm);
+        toolBarBitmaps[2] = new wxBitmap(forward_xpm);
+        int width = 16;
 #endif
 
 #endif
 
-       int currentX = 5;
-
-       toolBar -> AddTool(wxID_HTML_PANEL, *(toolBarBitmaps[0]), wxNullBitmap, 
-                          FALSE, currentX, -1, (wxObject *) NULL, 
-                          _("Show/hide navigation panel"));
-       currentX += width + 5;
-       toolBar -> AddSeparator();
-       toolBar -> AddTool(wxID_HTML_BACK, *(toolBarBitmaps[1]), wxNullBitmap, 
-                          FALSE, currentX, -1, (wxObject *) NULL, 
-                          _("Go back to the previous HTML page"));
-       currentX += width + 5;
-       toolBar -> AddTool(wxID_HTML_FORWARD, *(toolBarBitmaps[2]), wxNullBitmap, 
-                          FALSE, currentX, -1, (wxObject *) NULL, 
-                          _("Go forward to the next HTML page"));
-       currentX += width + 5;
-
-       toolBar -> Realize();
-
-       // Can delete the bitmaps since they're reference counted
-       for (int i = 0; i < 3; i++) 
-           delete toolBarBitmaps[i];
+        int currentX = 5;
+
+        toolBar -> AddTool(wxID_HTML_PANEL, *(toolBarBitmaps[0]), wxNullBitmap,
+                           FALSE, currentX, -1, (wxObject *) NULL,
+                           _("Show/hide navigation panel"));
+        currentX += width + 5;
+        toolBar -> AddSeparator();
+        toolBar -> AddTool(wxID_HTML_BACK, *(toolBarBitmaps[1]), wxNullBitmap,
+                           FALSE, currentX, -1, (wxObject *) NULL,
+                           _("Go back to the previous HTML page"));
+        currentX += width + 5;
+        toolBar -> AddTool(wxID_HTML_FORWARD, *(toolBarBitmaps[2]), wxNullBitmap,
+                           FALSE, currentX, -1, (wxObject *) NULL,
+                           _("Go forward to the next HTML page"));
+        currentX += width + 5;
+
+        toolBar -> Realize();
+
+        // Can delete the bitmaps since they're reference counted
+        for (int i = 0; i < 3; i++)
+            delete toolBarBitmaps[i];
     }
     }
-    
+
     if (style & (wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH)) {
     if (style & (wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH)) {
-       // traditional help controller; splitter window with html page on the
-       // right and a notebook containing various pages on the left
-       m_Splitter = new wxSplitterWindow(this);
-    
-       m_HtmlWin = new wxHtmlWindow(m_Splitter);
-       m_NavigPan = new wxNotebook(m_Splitter, wxID_HTML_NOTEBOOK, 
-                                   wxDefaultPosition, wxDefaultSize);
-    }
-    else { // only html window, no notebook with index,contents etc
-       m_HtmlWin = new wxHtmlWindow(this);
+        // traditional help controller; splitter window with html page on the
+        // right and a notebook containing various pages on the left
+        m_Splitter = new wxSplitterWindow(this);
+
+        m_HtmlWin = new wxHtmlWindow(m_Splitter);
+        m_NavigPan = new wxNotebook(m_Splitter, wxID_HTML_NOTEBOOK,
+                                    wxDefaultPosition, wxDefaultSize);
+    } else { // only html window, no notebook with index,contents etc
+        m_HtmlWin = new wxHtmlWindow(this);
     }
 
     m_HtmlWin -> SetRelatedFrame(this, m_TitleFormat);
     m_HtmlWin -> SetRelatedStatusBar(0);
     }
 
     m_HtmlWin -> SetRelatedFrame(this, m_TitleFormat);
     m_HtmlWin -> SetRelatedStatusBar(0);
-    if (m_Config) 
-       m_HtmlWin -> ReadCustomization(m_Config, m_ConfigRoot);
+    if (m_Config)
+        m_HtmlWin -> ReadCustomization(m_Config, m_ConfigRoot);
 
     // contents tree panel?
     if (style & wxHF_CONTENTS) {
 
     // contents tree panel?
     if (style & wxHF_CONTENTS) {
-       m_ContentsBox = new wxTreeCtrl(m_NavigPan, wxID_HTML_TREECTRL, 
-                                      wxDefaultPosition, wxDefaultSize, 
-                                      wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
-       m_ContentsBox -> SetImageList(m_ContentsImageList);
-       m_NavigPan -> AddPage(m_ContentsBox, _("Contents"));
-       m_ContentsPage = notebook_page++;
+        m_ContentsBox = new wxTreeCtrl(m_NavigPan, wxID_HTML_TREECTRL,
+                                       wxDefaultPosition, wxDefaultSize,
+                                       wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
+        m_ContentsBox -> SetImageList(m_ContentsImageList);
+        m_NavigPan -> AddPage(m_ContentsBox, _("Contents"));
+        m_ContentsPage = notebook_page++;
     }
 
     // index listbox panel?
     if (style & wxHF_INDEX) {
     }
 
     // index listbox panel?
     if (style & wxHF_INDEX) {
-       wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_INDEXPAGE);
-       wxLayoutConstraints *b1 = new wxLayoutConstraints;
-       b1 -> top.SameAs        (dummy, wxTop, 0);
-       b1 -> left.SameAs       (dummy, wxLeft, 0);
-       b1 -> width.PercentOf   (dummy, wxWidth, 100);
-       b1 -> bottom.SameAs     (dummy, wxBottom, 0);
-       m_IndexBox = new wxListBox(dummy, wxID_HTML_INDEXLIST, wxDefaultPosition, 
-                                  wxDefaultSize, 0, NULL, wxLB_SINGLE |wxLB_ALWAYS_SB);
-       m_IndexBox -> SetConstraints(b1);
-       dummy -> SetAutoLayout(TRUE);
-       m_NavigPan -> AddPage(dummy, _("Index"));
-       m_IndexPage = notebook_page++;
+        wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_INDEXPAGE);
+        wxLayoutConstraints *b1 = new wxLayoutConstraints;
+        b1 -> top.SameAs (dummy, wxTop, 0);
+        b1 -> left.SameAs (dummy, wxLeft, 0);
+        b1 -> width.PercentOf (dummy, wxWidth, 100);
+        b1 -> bottom.SameAs (dummy, wxBottom, 0);
+        m_IndexBox = new wxListBox(dummy, wxID_HTML_INDEXLIST, wxDefaultPosition,
+                                   wxDefaultSize, 0, NULL, wxLB_SINGLE | wxLB_ALWAYS_SB);
+        m_IndexBox -> SetConstraints(b1);
+        dummy -> SetAutoLayout(TRUE);
+        m_NavigPan -> AddPage(dummy, _("Index"));
+        m_IndexPage = notebook_page++;
     }
 
     // search list panel?
     if (style & wxHF_SEARCH) {
     }
 
     // search list panel?
     if (style & wxHF_SEARCH) {
-       wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_SEARCHPAGE);
-    
-       wxLayoutConstraints *b1 = new wxLayoutConstraints;
-       m_SearchText = new wxTextCtrl(dummy, wxID_HTML_SEARCHTEXT);
-       b1 -> top.SameAs        (dummy, wxTop, 10);
-       b1 -> left.SameAs       (dummy, wxLeft, 10);
-       b1 -> right.SameAs      (dummy, wxRight, 10);
-       b1 -> height.AsIs();
-       m_SearchText -> SetConstraints(b1);
-    
-       wxLayoutConstraints *b2 = new wxLayoutConstraints;
-       m_SearchButton = new wxButton(dummy, wxID_HTML_SEARCHBUTTON, _("Search"));
-       b2 -> top.Below         (m_SearchText, 10);
-       b2 -> left.SameAs      (dummy, wxLeft, 10);
-       b2 -> width.AsIs();
-       b2 -> height.AsIs();
-       m_SearchButton -> SetConstraints(b2);
-
-       wxLayoutConstraints *b3 = new wxLayoutConstraints;
-       m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST, wxDefaultPosition, wxDefaultSize, 0);
-       b3 -> top.Below         (m_SearchButton, 10);
-       b3 -> left.SameAs       (dummy, wxLeft, 0);
-       b3 -> right.SameAs      (dummy, wxRight, 0);
-       b3 -> bottom.SameAs     (dummy, wxBottom, 0);
-       m_SearchList -> SetConstraints(b3);
-       
-       wxLayoutConstraints *b4 = new wxLayoutConstraints;
-       m_SearchChoice = new wxChoice(dummy, wxID_HTML_SEARCHCHOICE, wxDefaultPosition, 
-                                     wxDefaultSize);
-       b4 -> top.Below         (m_SearchText, 10);
-       b4 -> left.SameAs       (m_SearchButton, wxRight, 10);
-       b4 -> right.SameAs      (dummy, wxRight, 10);
-       b4 -> height.AsIs();
-       m_SearchChoice -> SetConstraints(b4);
-           
-       dummy -> SetAutoLayout(TRUE);
-       dummy -> Layout();
-       m_NavigPan -> AddPage(dummy, _("Search"));
-       m_SearchPage = notebook_page++;
+        wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_SEARCHPAGE);
+
+        wxLayoutConstraints *b1 = new wxLayoutConstraints;
+        m_SearchText = new wxTextCtrl(dummy, wxID_HTML_SEARCHTEXT);
+        b1 -> top.SameAs (dummy, wxTop, 10);
+        b1 -> left.SameAs (dummy, wxLeft, 10);
+        b1 -> right.SameAs (dummy, wxRight, 10);
+        b1 -> height.AsIs();
+        m_SearchText -> SetConstraints(b1);
+
+        wxLayoutConstraints *b2 = new wxLayoutConstraints;
+        m_SearchButton = new wxButton(dummy, wxID_HTML_SEARCHBUTTON, _("Search"));
+        b2 -> top.Below (m_SearchText, 10);
+        b2 -> left.SameAs (dummy, wxLeft, 10);
+        b2 -> width.AsIs();
+        b2 -> height.AsIs();
+        m_SearchButton -> SetConstraints(b2);
+
+        wxLayoutConstraints *b3 = new wxLayoutConstraints;
+        m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST, wxDefaultPosition, wxDefaultSize, 0);
+        b3 -> top.Below (m_SearchButton, 10);
+        b3 -> left.SameAs (dummy, wxLeft, 0);
+        b3 -> right.SameAs (dummy, wxRight, 0);
+        b3 -> bottom.SameAs (dummy, wxBottom, 0);
+        m_SearchList -> SetConstraints(b3);
+
+        wxLayoutConstraints *b4 = new wxLayoutConstraints;
+        m_SearchChoice = new wxChoice(dummy, wxID_HTML_SEARCHCHOICE, wxDefaultPosition,
+                                      wxDefaultSize);
+        b4 -> top.Below (m_SearchText, 10);
+        b4 -> left.SameAs (m_SearchButton, wxRight, 10);
+        b4 -> right.SameAs (dummy, wxRight, 10);
+        b4 -> height.AsIs();
+        m_SearchChoice -> SetConstraints(b4);
+
+        dummy -> SetAutoLayout(TRUE);
+        dummy -> Layout();
+        m_NavigPan -> AddPage(dummy, _("Search"));
+        m_SearchPage = notebook_page++;
     }
 
     //RefreshLists();
 
     // showtime
     if (m_NavigPan && m_Splitter) {
     }
 
     //RefreshLists();
 
     // showtime
     if (m_NavigPan && m_Splitter) {
-       m_NavigPan -> Show(TRUE);
-       m_Splitter -> SetMinimumPaneSize(20);
-       if (m_Cfg.navig_on) 
-           m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
+        m_NavigPan -> Show(TRUE);
+        m_Splitter -> SetMinimumPaneSize(20);
+        if (m_Cfg.navig_on)
+            m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
     }
     m_HtmlWin -> Show(TRUE);
     return TRUE;
     }
     m_HtmlWin -> Show(TRUE);
     return TRUE;
@@ -296,15 +287,15 @@ wxHtmlHelpFrame::~wxHtmlHelpFrame()
 {
     delete m_ContentsImageList;
     if (m_DataCreated)
 {
     delete m_ContentsImageList;
     if (m_DataCreated)
-       delete m_Data;
+        delete m_Data;
 }
 
 bool wxHtmlHelpFrame::Display(const wxString& x)
 {
     wxString url = m_Data->FindPageByName(x);
     if (! url.IsEmpty()) {
 }
 
 bool wxHtmlHelpFrame::Display(const wxString& x)
 {
     wxString url = m_Data->FindPageByName(x);
     if (! url.IsEmpty()) {
-       m_HtmlWin->LoadPage(url);
-       return TRUE;
+        m_HtmlWin->LoadPage(url);
+        return TRUE;
     }
     return FALSE;
 }
     }
     return FALSE;
 }
@@ -313,8 +304,8 @@ bool wxHtmlHelpFrame::Display(const int id)
 {
     wxString url = m_Data->FindPageById(id);
     if (! url.IsEmpty()) {
 {
     wxString url = m_Data->FindPageById(id);
     if (! url.IsEmpty()) {
-       m_HtmlWin->LoadPage(url);
-       return TRUE;
+        m_HtmlWin->LoadPage(url);
+        return TRUE;
     }
     return FALSE;
 }
     }
     return FALSE;
 }
@@ -324,11 +315,11 @@ bool wxHtmlHelpFrame::Display(const int id)
 bool wxHtmlHelpFrame::DisplayContents()
 {
     if (! m_ContentsBox)
 bool wxHtmlHelpFrame::DisplayContents()
 {
     if (! m_ContentsBox)
-       return FALSE;
+        return FALSE;
     if (!m_Splitter -> IsSplit()) {
     if (!m_Splitter -> IsSplit()) {
-       m_NavigPan -> Show(TRUE);
-       m_HtmlWin -> Show(TRUE);
-       m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
+        m_NavigPan -> Show(TRUE);
+        m_HtmlWin -> Show(TRUE);
+        m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
     }
     m_NavigPan -> SetSelection(0);
     return TRUE;
     }
     m_NavigPan -> SetSelection(0);
     return TRUE;
@@ -339,11 +330,11 @@ bool wxHtmlHelpFrame::DisplayContents()
 bool wxHtmlHelpFrame::DisplayIndex()
 {
     if (! m_IndexBox)
 bool wxHtmlHelpFrame::DisplayIndex()
 {
     if (! m_IndexBox)
-       return FALSE;
+        return FALSE;
     if (!m_Splitter -> IsSplit()) {
     if (!m_Splitter -> IsSplit()) {
-       m_NavigPan -> Show(TRUE);
-       m_HtmlWin -> Show(TRUE);
-       m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
+        m_NavigPan -> Show(TRUE);
+        m_HtmlWin -> Show(TRUE);
+        m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
     }
     m_NavigPan -> SetSelection(1);
     return TRUE;
     }
     m_NavigPan -> SetSelection(1);
     return TRUE;
@@ -352,16 +343,16 @@ bool wxHtmlHelpFrame::DisplayIndex()
 bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
 {
     if (! (m_SearchList && m_SearchButton && m_SearchText && m_SearchChoice))
 bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
 {
     if (! (m_SearchList && m_SearchButton && m_SearchText && m_SearchChoice))
-       return FALSE;
+        return FALSE;
 
     int foundcnt = 0;
     wxString foundstr;
     wxString book = wxEmptyString;
 
     if (!m_Splitter -> IsSplit()) {
 
     int foundcnt = 0;
     wxString foundstr;
     wxString book = wxEmptyString;
 
     if (!m_Splitter -> IsSplit()) {
-       m_NavigPan -> Show(TRUE);
-       m_HtmlWin -> Show(TRUE);
-       m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
+        m_NavigPan -> Show(TRUE);
+        m_HtmlWin -> Show(TRUE);
+        m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
     }
     m_NavigPan -> SetSelection(m_SearchPage);
     m_SearchList -> Clear();
     }
     m_NavigPan -> SetSelection(m_SearchPage);
     m_SearchList -> Clear();
@@ -369,23 +360,23 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
     m_SearchButton -> Enable(FALSE);
 
     if (m_SearchChoice->GetSelection() != 0)
     m_SearchButton -> Enable(FALSE);
 
     if (m_SearchChoice->GetSelection() != 0)
-       book = m_SearchChoice->GetStringSelection();
+        book = m_SearchChoice->GetStringSelection();
 
     wxHtmlSearchStatus status(m_Data, keyword, book);
 
 
     wxHtmlSearchStatus status(m_Data, keyword, book);
 
-    wxProgressDialog progress(_("Searching..."), _("No matching page found yet"), 
-                             status.GetMaxIndex(), this, 
-                             wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE);
+    wxProgressDialog progress(_("Searching..."), _("No matching page found yet"),
+                              status.GetMaxIndex(), this,
+                              wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE);
 
     while (status.IsActive()) {
 
     while (status.IsActive()) {
-       if (progress.Update(status.GetCurIndex()) == FALSE) 
-           break;
-       if (status.Search()) {
-           foundstr.Printf(_("Found %i matches"), ++foundcnt);
-           progress.Update(status.GetCurIndex(), foundstr);
-           m_SearchList -> Append(status.GetName(), status.GetContentsItem());
-       }
-       wxYield();
+        if (progress.Update(status.GetCurIndex()) == FALSE)
+            break;
+        if (status.Search()) {
+            foundstr.Printf(_("Found %i matches"), ++foundcnt);
+            progress.Update(status.GetCurIndex(), foundstr);
+            m_SearchList -> Append(status.GetName(), status.GetContentsItem());
+        }
+        wxYield();
     }
 
     m_SearchButton -> Enable(TRUE);
     }
 
     m_SearchButton -> Enable(TRUE);
@@ -403,7 +394,7 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
 void wxHtmlHelpFrame::CreateContents(bool show_progress)
 {
     if (! m_ContentsBox)
 void wxHtmlHelpFrame::CreateContents(bool show_progress)
 {
     if (! m_ContentsBox)
-       return;
+        return ;
 
     wxProgressDialog *progress;
     wxString proginfo;
 
     wxProgressDialog *progress;
     wxString proginfo;
@@ -415,12 +406,12 @@ void wxHtmlHelpFrame::CreateContents(bool show_progress)
     int i;
 
     wxHtmlContentsItem *it = m_Data->GetContents();
     int i;
 
     wxHtmlContentsItem *it = m_Data->GetContents();
-    
-    if (show_progress) 
-       progress = new wxProgressDialog(_("Building contents tree..."), wxEmptyString,
-                                       cnt, this, wxPD_APP_MODAL | wxPD_CAN_ABORT | 
-                                       wxPD_AUTO_HIDE);
-    
+
+    if (show_progress)
+        progress = new wxProgressDialog(_("Building contents tree..."), wxEmptyString,
+                                        cnt, this, wxPD_APP_MODAL | wxPD_CAN_ABORT |
+                                        wxPD_AUTO_HIDE);
+
     wxTreeItemId roots[MAX_ROOTS];
     bool imaged[MAX_ROOTS];
 
     wxTreeItemId roots[MAX_ROOTS];
     bool imaged[MAX_ROOTS];
 
@@ -429,23 +420,22 @@ void wxHtmlHelpFrame::CreateContents(bool show_progress)
     imaged[0] = TRUE;
 
     for (i = 0; i < cnt; i++, it++) {
     imaged[0] = TRUE;
 
     for (i = 0; i < cnt; i++, it++) {
-       if (show_progress && ((i % div) == 0)) {
-           proginfo.Printf("Added %d/%d items", i, cnt);
-           if (! progress->Update(i, proginfo))
-               break;
-           wxYield();
-       }
+        if (show_progress && ((i % div) == 0)) {
+            proginfo.Printf(_("Added %d/%d items"), i, cnt);
+            if (! progress->Update(i, proginfo))
+                break;
+            wxYield();
+        }
         roots[it -> m_Level + 1] = m_ContentsBox -> AppendItem(
         roots[it -> m_Level + 1] = m_ContentsBox -> AppendItem(
-           roots[it -> m_Level], it -> m_Name, IMG_Page, -1, 
-           new wxHtmlHelpTreeItemData(it));
+                                       roots[it -> m_Level], it -> m_Name, IMG_Page, -1,
+                                       new wxHtmlHelpTreeItemData(it));
 
         if (it -> m_Level == 0) {
             m_ContentsBox -> SetItemBold(roots[1], TRUE);
             m_ContentsBox -> SetItemImage(roots[1], IMG_Book);
             m_ContentsBox -> SetItemSelectedImage(roots[1], IMG_Book);
             imaged[1] = TRUE;
 
         if (it -> m_Level == 0) {
             m_ContentsBox -> SetItemBold(roots[1], TRUE);
             m_ContentsBox -> SetItemImage(roots[1], IMG_Book);
             m_ContentsBox -> SetItemSelectedImage(roots[1], IMG_Book);
             imaged[1] = TRUE;
-        }
-        else imaged[it -> m_Level + 1] = FALSE;
+        } else imaged[it -> m_Level + 1] = FALSE;
 
         if (!imaged[it -> m_Level]) {
             m_ContentsBox -> SetItemImage(roots[it -> m_Level], IMG_Folder);
 
         if (!imaged[it -> m_Level]) {
             m_ContentsBox -> SetItemImage(roots[it -> m_Level], IMG_Folder);
@@ -454,7 +444,7 @@ void wxHtmlHelpFrame::CreateContents(bool show_progress)
         }
     }
     if (show_progress)
         }
     }
     if (show_progress)
-       delete progress;
+        delete progress;
     m_ContentsBox -> Expand(roots[0]);
 }
 
     m_ContentsBox -> Expand(roots[0]);
 }
 
@@ -462,7 +452,7 @@ void wxHtmlHelpFrame::CreateContents(bool show_progress)
 void wxHtmlHelpFrame::CreateIndex(bool show_progress)
 {
     if (! m_IndexBox)
 void wxHtmlHelpFrame::CreateIndex(bool show_progress)
 {
     if (! m_IndexBox)
-       return;
+        return ;
 
     wxProgressDialog *progress;
     wxString proginfo;
 
     wxProgressDialog *progress;
     wxString proginfo;
@@ -474,35 +464,35 @@ void wxHtmlHelpFrame::CreateIndex(bool show_progress)
 
     wxHtmlContentsItem* index = m_Data->GetIndex();
 
 
     wxHtmlContentsItem* index = m_Data->GetIndex();
 
-    if (show_progress) 
-       progress = new wxProgressDialog(_("Building index list..."), wxEmptyString,
-                                       cnt, this, wxPD_APP_MODAL | wxPD_CAN_ABORT | 
-                                       wxPD_AUTO_HIDE);
+    if (show_progress)
+        progress = new wxProgressDialog(_("Building index list..."), wxEmptyString,
+                                        cnt, this, wxPD_APP_MODAL | wxPD_CAN_ABORT |
+                                        wxPD_AUTO_HIDE);
     for (int i = 0; i < cnt; i++) {
     for (int i = 0; i < cnt; i++) {
-       if (show_progress && ((i % div) == 0)) {
-           proginfo.Printf("Added %d/%d items", i, cnt);
-           if (! progress->Update(i, proginfo))
-               break;
-           wxYield();
-       }
+        if (show_progress && ((i % div) == 0)) {
+            proginfo.Printf(_("Added %d/%d items"), i, cnt);
+            if (! progress->Update(i, proginfo))
+                break;
+            wxYield();
+        }
         m_IndexBox -> Append(index[i].m_Name, (char*)(index + i));
     }
 
     if (show_progress)
         m_IndexBox -> Append(index[i].m_Name, (char*)(index + i));
     }
 
     if (show_progress)
-       delete progress;
+        delete progress;
 }
 
 void wxHtmlHelpFrame::CreateSearch()
 {
     if (! (m_SearchList && m_SearchChoice))
 }
 
 void wxHtmlHelpFrame::CreateSearch()
 {
     if (! (m_SearchList && m_SearchChoice))
-       return;
+        return ;
     m_SearchList -> Clear();
     m_SearchChoice -> Clear();
     m_SearchChoice -> Append(_("all books"));
     const wxHtmlBookRecArray& bookrec = m_Data->GetBookRecArray();
     int i, cnt = bookrec.GetCount();
     m_SearchList -> Clear();
     m_SearchChoice -> Clear();
     m_SearchChoice -> Append(_("all books"));
     const wxHtmlBookRecArray& bookrec = m_Data->GetBookRecArray();
     int i, cnt = bookrec.GetCount();
-    for (i=0; i<cnt; i++)
-       m_SearchChoice->Append(bookrec[i].GetTitle());
+    for (i = 0; i < cnt; i++)
+        m_SearchChoice->Append(bookrec[i].GetTitle());
     m_SearchChoice->SetSelection(0);
 }
 
     m_SearchChoice->SetSelection(0);
 }
 
@@ -530,11 +520,9 @@ void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path)
     m_Cfg.y = cfg -> Read("hcY", m_Cfg.y);
     m_Cfg.w = cfg -> Read("hcW", m_Cfg.w);
     m_Cfg.h = cfg -> Read("hcH", m_Cfg.h);
     m_Cfg.y = cfg -> Read("hcY", m_Cfg.y);
     m_Cfg.w = cfg -> Read("hcW", m_Cfg.w);
     m_Cfg.h = cfg -> Read("hcH", m_Cfg.h);
-    m_Cfg.titleformat = cfg -> Read("hcTitleFormat", m_Cfg.titleformat);
-    m_Cfg.style = (int)cfg -> Read("hcStyle", (long)m_Cfg.style);
 
     if (m_HtmlWin)
 
     if (m_HtmlWin)
-       m_HtmlWin->ReadCustomization(cfg, path);
+        m_HtmlWin->ReadCustomization(cfg, path);
 
     if (path != wxEmptyString)
         cfg -> SetPath(oldpath);
 
     if (path != wxEmptyString)
         cfg -> SetPath(oldpath);
@@ -544,7 +532,6 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path
 {
     wxString oldpath;
     wxString tmp;
 {
     wxString oldpath;
     wxString tmp;
-    //printf("wxHtmlHelpFrame. Writing config to %s\n", (const char*)path);
 
     if (path != wxEmptyString) {
         oldpath = cfg -> GetPath();
 
     if (path != wxEmptyString) {
         oldpath = cfg -> GetPath();
@@ -557,11 +544,9 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path
     cfg -> Write("hcY", (long)m_Cfg.y);
     cfg -> Write("hcW", (long)m_Cfg.w);
     cfg -> Write("hcH", (long)m_Cfg.h);
     cfg -> Write("hcY", (long)m_Cfg.y);
     cfg -> Write("hcW", (long)m_Cfg.w);
     cfg -> Write("hcH", (long)m_Cfg.h);
-    cfg -> Write("hcTitleFormat", m_Cfg.titleformat);
-    cfg -> Write("hcStyle", (long)m_Cfg.style);
 
     if (m_HtmlWin)
 
     if (m_HtmlWin)
-       m_HtmlWin->WriteCustomization(cfg, path);
+        m_HtmlWin->WriteCustomization(cfg, path);
 
     if (path != wxEmptyString)
         cfg -> SetPath(oldpath);
 
     if (path != wxEmptyString)
         cfg -> SetPath(oldpath);
@@ -583,13 +568,12 @@ void wxHtmlHelpFrame::OnToolbar(wxCommandEvent& event)
             m_HtmlWin -> HistoryForward();
             break;
         case wxID_HTML_PANEL :
             m_HtmlWin -> HistoryForward();
             break;
         case wxID_HTML_PANEL :
-           if (! (m_Splitter && m_NavigPan))
-               return;
+            if (! (m_Splitter && m_NavigPan))
+                return ;
             if (m_Splitter -> IsSplit()) {
                 m_Cfg.sashpos = m_Splitter -> GetSashPosition();
                 m_Splitter -> Unsplit(m_NavigPan);
             if (m_Splitter -> IsSplit()) {
                 m_Cfg.sashpos = m_Splitter -> GetSashPosition();
                 m_Splitter -> Unsplit(m_NavigPan);
-            }
-            else {
+            } else {
                 m_NavigPan -> Show(TRUE);
                 m_HtmlWin -> Show(TRUE);
                 m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
                 m_NavigPan -> Show(TRUE);
                 m_HtmlWin -> Show(TRUE);
                 m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
@@ -633,8 +617,8 @@ void wxHtmlHelpFrame::OnSearch(wxCommandEvent& WXUNUSED(event))
 
 void wxHtmlHelpFrame::OnCloseWindow(wxCloseEvent& evt)
 {
 
 void wxHtmlHelpFrame::OnCloseWindow(wxCloseEvent& evt)
 {
-    if (m_Config) 
-       WriteCustomization(m_Config, m_ConfigRoot);
+    if (m_Config)
+        WriteCustomization(m_Config, m_ConfigRoot);
     evt.Skip();
 }
 
     evt.Skip();
 }
 
diff --git a/src/html/search.cpp b/src/html/search.cpp
deleted file mode 100644 (file)
index 78df71a..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name:        search.cpp
-// Purpose:     search engine
-// Author:      Vaclav Slavik
-// RCS-ID:      $Id$
-// Copyright:   (c) 1999 Vaclav Slavik
-// Licence:     wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "wx/wxprec.h"
-
-#include "wx/defs.h"
-#if wxUSE_HTML
-
-#ifdef __BORDLANDC__
-#pragma hdrstop
-#endif
-
-#ifndef WXPRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "wx/html/helpdata.h"
-
-
-
-//--------------------------------------------------------------------------------
-// wxSearchEngine
-//--------------------------------------------------------------------------------
-
-void wxSearchEngine::LookFor(const wxString& keyword)
-{
-    if (m_Keyword) delete[] m_Keyword;
-    m_Keyword = new char[keyword.Length() + 1];
-    strcpy(m_Keyword, keyword.c_str());
-    for (int i = strlen(m_Keyword) - 1; i >= 0; i--)
-        if ((m_Keyword[i] >= 'A') && (m_Keyword[i] <= 'Z'))
-            m_Keyword[i] += 'a' - 'A';
-}
-
-
-
-bool wxSearchEngine::Scan(wxInputStream *stream)
-{
-    wxASSERT_MSG(m_Keyword != NULL, _("wxSearchEngine::LookFor must be called before scanning!"));
-
-    int i, j;
-    int lng = stream ->GetSize();
-    int wrd = strlen(m_Keyword);
-    bool found = FALSE;
-    char *buf = new char[lng + 1];
-    stream -> Read(buf, lng);
-    buf[lng] = 0;
-
-    for (i = 0; i < lng; i++)
-        if ((buf[i] >= 'A') && (buf[i] <= 'Z')) buf[i] += 'a' - 'A';
-
-    for (i = 0; i < lng - wrd; i++) {
-        j = 0;
-        while ((j < wrd) && (buf[i + j] == m_Keyword[j])) j++;
-        if (j == wrd) {found = TRUE; break;}
-    }
-
-    delete[] buf;
-    return found;
-}
-
-#endif