]> git.saurik.com Git - wxWidgets.git/commitdiff
applied Otto Wyss' patch to extend wxHelpController::KeywordSearch with mode argument...
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 9 Sep 2003 17:29:11 +0000 (17:29 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 9 Sep 2003 17:29:11 +0000 (17:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

18 files changed:
docs/latex/wx/helpinst.tex
docs/latex/wx/hthelpct.tex
docs/latex/wx/hthlpfrm.tex
include/wx/helpbase.h
include/wx/html/helpctrl.h
include/wx/html/helpfrm.h
include/wx/mac/helpxxxx.h
include/wx/msw/helpbest.h
include/wx/msw/helpchm.h
include/wx/msw/helpwin.h
include/wx/os2/helpwin.h
src/html/helpctrl.cpp
src/html/helpfrm.cpp
src/mac/carbon/helpxxxx.cpp
src/mac/helpxxxx.cpp
src/msw/helpchm.cpp
src/msw/helpwin.cpp
src/os2/helpwin.cpp

index d550dcad41526b0924aafc013236f688d178906f..758105130cce6f7341c5cf956a05b0d21d4ed7e5 100644 (file)
@@ -184,10 +184,13 @@ that the viewer is a variant of Netscape Navigator.}
 
 \membersection{wxHelpController::KeywordSearch}\label{wxhelpcontrollerkeywordsearch}
 
-\func{virtual bool}{KeywordSearch}{\param{const wxString\& }{keyWord}}
+\func{virtual bool}{KeywordSearch}{\param{const wxString\& }{keyWord}, \param{wxHelpSearchMode }{mode = wxHELP\_SEARCH\_ALL}}
 
-If the help viewer is not running, runs it, and searches for sections matching the given keyword. If one
-match is found, the file is displayed at this section.
+If the help viewer is not running, runs it, and searches for sections matching
+the given keyword. If one match is found, the file is displayed at this
+section. The optional parameter allows the search the index
+(wxHELP\_SEARCH\_INDEX) but this currently only supported by the
+wxHtmlHelpController.
 
 {\it WinHelp, MS HTML Help:} If more than one match is found, 
 the first topic is displayed.
index e7230bb8e237747159d0c0f0166152a9ad69d554..2ba72cebfb31b2239477bff91fb9b302a6e9df6f 100644 (file)
@@ -163,10 +163,11 @@ Displays help window and focuses index panel.
 
 \membersection{wxHtmlHelpController::KeywordSearch}\label{wxhtmlhelpcontrollerkeywordsearch}
 
-\func{bool}{KeywordSearch}{\param{const wxString\& }{keyword}}
+\func{bool}{KeywordSearch}{\param{const wxString\& }{keyword}, \param{wxHelpSearchMode }{mode = wxHELP\_SEARCH\_ALL}}
 
-Displays help window, focuses search panel and starts searching.
-Returns true if the keyword was found.
+Displays help window, focuses search panel and starts searching.  Returns true
+if the keyword was found. Optionally it searches through the index (mode =
+wxHELP\_SEARCH\_INDEX), default the content (mode = wxHELP\_SEARCH\_ALL).
 
 {\bf Important:} KeywordSearch searches only pages listed in .hhc file(s).
 You should list all pages in the contents file.
index 324264b8a8072c91ad3bbba145c07bc1ba228355..bdf512fed1a0cf4df22da9f60eade4f4804e0403 100644 (file)
@@ -121,9 +121,10 @@ Return wxHtmlHelpData object.
 
 \membersection{wxHtmlHelpFrame::KeywordSearch}\label{wxhtmlhelpframekeywordsearch}
 
-\func{bool}{KeywordSearch}{\param{const wxString\& }{keyword}}
+\func{bool}{KeywordSearch}{\param{const wxString\& }{keyword}, \param{wxHelpSearchMode }{mode = wxHELP\_SEARCH\_ALL}}
 
-Search for given keyword.
+Search for given keyword. Optionally it searches through the index (mode =
+wxHELP\_SEARCH\_INDEX), default the content (mode = wxHELP\_SEARCH\_ALL).
 
 \membersection{wxHtmlHelpFrame::ReadCustomization}\label{wxhtmlhelpframereadcustomization}
 
index 3d1d60965cb4652389fee602814a7b77175ac20c..dc7da84c074c5fe019f6d34737db1b5e0b363a43 100644 (file)
 // Flags for SetViewer
 #define wxHELP_NETSCAPE     1
 
+// Search modes:
+enum wxHelpSearchMode
+{
+    wxHELP_SEARCH_INDEX,
+    wxHELP_SEARCH_ALL
+};
+
 // Defines the API for help controllers
 class WXDLLEXPORT wxHelpControllerBase: public wxObject
 {
@@ -63,7 +70,8 @@ public:
     // may override this for more specific behaviour.
     virtual bool DisplaySection(const wxString& section) { return KeywordSearch(section); }
     virtual bool DisplayBlock(long blockNo) = 0;
-    virtual bool KeywordSearch(const wxString& k) = 0;
+    virtual bool KeywordSearch(const wxString& k,
+                               wxHelpSearchMode mode = wxHELP_SEARCH_ALL) = 0;
     /// Allows one to override the default settings for the help frame.
     virtual void SetFrameParameters(const wxString& WXUNUSED(title),
         const wxSize& WXUNUSED(size),
index d0b8691ca12c8e083ae6fd5e52abf613cd0e50dc..06e6bdc7ee8dee4e219f8cce28e8118856914213 100644 (file)
@@ -20,8 +20,8 @@
 
 #if wxUSE_WXHTML_HELP
 
-#include "wx/html/helpfrm.h"
 #include "wx/helpbase.h"
+#include "wx/html/helpfrm.h"
 
 #define wxID_HTML_HELPFRAME   (wxID_HIGHEST + 1)
 
@@ -42,7 +42,8 @@ public:
     bool Display(int id);
     bool DisplayContents();
     bool DisplayIndex();
-    bool KeywordSearch(const wxString& keyword);
+    bool KeywordSearch(const wxString& keyword,
+                       wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
 
     wxHtmlHelpFrame* GetFrame() { return m_helpFrame; }
     void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString);
index 7912e48af9e9c55dbb88e2ddf9b7235571470106..0b18da854efa628ecc8c11b38a6bbaeb10ee13e1 100644 (file)
@@ -20,6 +20,7 @@
 
 #if wxUSE_WXHTML_HELP
 
+#include "wx/helpbase.h"
 #include "wx/html/helpdata.h"
 #include "wx/window.h"
 #include "wx/frame.h"
@@ -120,7 +121,8 @@ public:
     // * 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)
         {
index 1511557c786350198715ff62bc61402824f0a1e9..a33c0737a5ea232bfa531c6e6220c73324b87afb 100644 (file)
@@ -37,7 +37,8 @@ class WXDLLEXPORT wxXXXXHelpController: public wxHelpControllerBase
   virtual bool DisplayContents();
   virtual bool DisplaySection(int sectionNo);
   virtual bool DisplayBlock(long blockNo);
-  virtual bool KeywordSearch(const wxString& k);
+  virtual bool KeywordSearch(const wxString& k,
+                             wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
 
   virtual bool Quit();
   virtual void OnQuit();
index c5a6d72f7e1f7caba6526b6fa3ea87aace17bd44..f176eaa893b74c3cc8ef7db2479857f43193e660 100644 (file)
@@ -70,9 +70,10 @@ public:
         return m_helpController->DisplayTextPopup( text, pos );
     }
 
-    virtual bool KeywordSearch(const wxString& k)
+    virtual bool KeywordSearch(const wxString& k,
+                               wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
     {
-        return m_helpController->KeywordSearch( k );
+        return m_helpController->KeywordSearch( k, mode );
     }
 
     virtual bool Quit()
index 6c3cb0374769e94fab3eff70627975a995c4bab1..f6dfebf704126c705534fc3e6d5d4353dff4952d 100644 (file)
@@ -37,7 +37,8 @@ public:
     virtual bool DisplayBlock(long blockNo);
     virtual bool DisplayContextPopup(int contextId);
     virtual bool DisplayTextPopup(const wxString& text, const wxPoint& pos);
-    virtual bool KeywordSearch(const wxString& k);
+    virtual bool KeywordSearch(const wxString& k,
+                               wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
     virtual bool Quit();
 
     wxString GetHelpFile() const { return m_helpFile; }
index d0203d57e6674a7931a60f7b147a4110a5ef2179..0e1a67541b5cfb6cf61a600d7de36248c71681c2 100644 (file)
@@ -39,7 +39,8 @@ public:
     virtual bool DisplaySection(int sectionNo);
     virtual bool DisplayBlock(long blockNo);
     virtual bool DisplayContextPopup(int contextId);
-    virtual bool KeywordSearch(const wxString& k);
+    virtual bool KeywordSearch(const wxString& k,
+                               wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
     virtual bool Quit();
 
     inline wxString GetHelpFile() const { return m_helpFile; }
index 974ec9c38cfbd5d4f5a0f82536aa3dabf8332254..c38ea9f657d5e03ca71dc30caa1c4a3c2d0168c3 100644 (file)
@@ -34,7 +34,8 @@ class WXDLLEXPORT wxWinHelpController: public wxHelpControllerBase
   virtual bool DisplayContents();
   virtual bool DisplaySection(int sectionNo);
   virtual bool DisplayBlock(long blockNo);
-  virtual bool KeywordSearch(const wxString& k);
+  virtual bool KeywordSearch(const wxString& k,
+                             wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
 
   virtual bool Quit();
   virtual void OnQuit();
index 1a7b41339b87214795b458c070b595dccfc7a365..9f1de8e4098bcf27f3ec3fc61ce76c958210b6b3 100644 (file)
@@ -319,10 +319,11 @@ bool wxHtmlHelpController::DisplayIndex()
     return success;
 }
 
-bool wxHtmlHelpController::KeywordSearch(const wxString& keyword)
+bool wxHtmlHelpController::KeywordSearch(const wxString& keyword,
+                                         wxHelpSearchMode mode)
 {
     CreateHelpWindow();
-    bool success = m_helpFrame->KeywordSearch(keyword);
+    bool success = m_helpFrame->KeywordSearch(keyword, mode);
     AddGrabIfNeeded();
     return success;
 }
index b2487b292873fc0242049186f6d98991b7abb04e..5c1dffd66e2375f703e846df82f8e01d6d7364e7 100644 (file)
@@ -657,12 +657,23 @@ bool wxHtmlHelpFrame::DisplayIndex()
 
 
 
-bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
+bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword,
+                                    wxHelpSearchMode mode)
 {
-    if (! (m_SearchList && m_SearchButton && m_SearchText && m_SearchChoice))
-        return FALSE;
+    if (mode == wxHELP_SEARCH_ALL)
+    {
+        if ( !(m_SearchList &&
+               m_SearchButton && m_SearchText && m_SearchChoice) )
+            return false;
+    }
+    else if (mode == wxHELP_SEARCH_INDEX)
+    {
+        if ( !(m_IndexList &&
+               m_IndexButton && m_IndexButtonAll && m_IndexText) )
+            return false;
+    }
 
-    int foundcnt = 0, curi;
+    int foundcnt = 0;
     wxString foundstr;
     wxString book = wxEmptyString;
 
@@ -672,41 +683,71 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword)
         m_HtmlWin->Show(TRUE);
         m_Splitter->SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
     }
-    m_NavigNotebook->SetSelection(m_SearchPage);
-    m_SearchList->Clear();
-    m_SearchText->SetValue(keyword);
-    m_SearchButton->Enable(FALSE);
-
-    if (m_SearchChoice->GetSelection() != 0)
-        book = m_SearchChoice->GetStringSelection();
-
-    wxHtmlSearchStatus status(m_Data, keyword,
-                              m_SearchCaseSensitive->GetValue(), m_SearchWholeWords->GetValue(),
-                              book);
 
-    wxProgressDialog progress(_("Searching..."), _("No matching page found yet"),
-                              status.GetMaxIndex(), this,
-                              wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE);
-
-    while (status.IsActive())
+    if (mode == wxHELP_SEARCH_ALL)
     {
-        curi = status.GetCurIndex();
-        if (curi % 32 == 0 && progress.Update(curi) == FALSE)
-            break;
-        if (status.Search())
+        m_NavigNotebook->SetSelection(m_SearchPage);
+        m_SearchList->Clear();
+        m_SearchText->SetValue(keyword);
+        m_SearchButton->Enable(false);
+
+        if (m_SearchChoice->GetSelection() != 0)
+            book = m_SearchChoice->GetStringSelection();
+
+        wxHtmlSearchStatus status(m_Data, keyword,
+                                  m_SearchCaseSensitive->GetValue(),
+                                  m_SearchWholeWords->GetValue(),
+                                  book);
+
+        wxProgressDialog progress(_("Searching..."),
+                                  _("No matching page found yet"),
+                                  status.GetMaxIndex(), this,
+                                  wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE);
+
+        int curi;
+        while (status.IsActive())
         {
-            foundstr.Printf(_("Found %i matches"), ++foundcnt);
-            progress.Update(status.GetCurIndex(), foundstr);
-            m_SearchList->Append(status.GetName(), status.GetContentsItem());
+            curi = status.GetCurIndex();
+            if (curi % 32 == 0 && progress.Update(curi) == FALSE)
+                break;
+            if (status.Search())
+            {
+                foundstr.Printf(_("Found %i matches"), ++foundcnt);
+                progress.Update(status.GetCurIndex(), foundstr);
+                m_SearchList->Append(status.GetName(), status.GetContentsItem());
+            }
         }
+
+        m_SearchButton->Enable(TRUE);
+        m_SearchText->SetSelection(0, keyword.Length());
+        m_SearchText->SetFocus();
+    }
+    else if (mode == wxHELP_SEARCH_INDEX)
+    {
+        m_NavigNotebook->SetSelection(m_IndexPage);
+        m_IndexList->Clear();
+        m_IndexButton->Enable(false);
+        m_IndexButtonAll->Enable(false);
+        m_IndexText->SetValue(keyword);
+
+        wxCommandEvent dummy;
+        OnIndexFind(dummy); // what a hack...
+        m_IndexButton->Enable(true);
+        m_IndexButtonAll->Enable(true);
+        foundcnt = m_IndexList->GetCount();
     }
 
-    m_SearchButton->Enable(TRUE);
-    m_SearchText->SetSelection(0, keyword.Length());
-    m_SearchText->SetFocus();
     if (foundcnt)
     {
-        wxHtmlContentsItem *it = (wxHtmlContentsItem*) m_SearchList->GetClientData(0);
+        wxHtmlContentsItem *it;
+        if (mode == wxHELP_SEARCH_ALL)
+        {
+            it = (wxHtmlContentsItem*) m_SearchList->GetClientData(0);
+        }
+        else if (mode == wxHELP_SEARCH_INDEX)
+        {
+            it = (wxHtmlContentsItem*) m_IndexList->GetClientData(0);
+        }
         if (it)
         {
             m_HtmlWin->LoadPage(it->GetFullPath());
@@ -1489,7 +1530,8 @@ void wxHtmlHelpFrame::OnSearch(wxCommandEvent& WXUNUSED(event))
 {
     wxString sr = m_SearchText->GetLineText(0);
 
-    if (sr != wxEmptyString) KeywordSearch(sr);
+    if (!sr.empty())
+        KeywordSearch(sr, wxHELP_SEARCH_ALL);
 }
 
 void wxHtmlHelpFrame::OnBookmarksSel(wxCommandEvent& WXUNUSED(event))
index f41727e61b661f78ece72e15c30a1fd960361ace..7d0e4d15314ef776d7949264d2adf578fb3d83ce 100644 (file)
@@ -62,7 +62,8 @@ bool wxXXXXHelpController::DisplayBlock(long block)
     return FALSE;
 }
 
-bool wxXXXXHelpController::KeywordSearch(const wxString& k)
+bool wxXXXXHelpController::KeywordSearch(const wxString& k,
+                                         wxHelpSearchMode WXUNUSED(mode))
 {
     if (m_helpFile == "") return FALSE;
 
index f41727e61b661f78ece72e15c30a1fd960361ace..7d0e4d15314ef776d7949264d2adf578fb3d83ce 100644 (file)
@@ -62,7 +62,8 @@ bool wxXXXXHelpController::DisplayBlock(long block)
     return FALSE;
 }
 
-bool wxXXXXHelpController::KeywordSearch(const wxString& k)
+bool wxXXXXHelpController::KeywordSearch(const wxString& k,
+                                         wxHelpSearchMode WXUNUSED(mode))
 {
     if (m_helpFile == "") return FALSE;
 
index 902829aca03321c310f11ab131f96dc961d1f637..7ad636774742bba39206a70e10912ec4e8d11584 100644 (file)
@@ -197,7 +197,8 @@ bool wxCHMHelpController::DisplayBlock(long block)
     return DisplaySection(block);
 }
 
-bool wxCHMHelpController::KeywordSearch(const wxString& k)
+bool wxCHMHelpController::KeywordSearch(const wxString& k,
+                                        wxHelpSearchMode WXUNUSED(mode))
 {
     if (m_helpFile.IsEmpty()) return FALSE;
 
index b2d56135569828ae6348cba1413b52dd7f4e625f..abaa425609b7dbfe36620e2a780214ca006ac20c 100644 (file)
@@ -98,7 +98,8 @@ bool wxWinHelpController::DisplayBlock(long block)
     return TRUE;
 }
 
-bool wxWinHelpController::KeywordSearch(const wxString& k)
+bool wxWinHelpController::KeywordSearch(const wxString& k,
+                                        wxHelpSearchMode WXUNUSED(mode))
 {
     if (m_helpFile.IsEmpty()) return FALSE;
     
index 9e84bbf12977bf000a3366a5c6fb944c70ae2e78..9c398cc1854e1eec7dfe6091577447538ad1d775 100644 (file)
@@ -108,7 +108,8 @@ bool wxWinHelpController::DisplayBlock(long block)
     return FALSE;
 }
 
-bool wxWinHelpController::KeywordSearch(const wxString& k)
+bool wxWinHelpController::KeywordSearch(const wxString& k,
+                                        wxHelpSearchMode WXUNUSED(mode))
 {
     if (m_helpFile == "") return FALSE;