X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0413cec5271566470f4c852608a35800b49056cd..57e3f9d9cc8be13a9794ed84f55650b6a7940518:/src/html/helpfrm.cpp diff --git a/src/html/helpfrm.cpp b/src/html/helpfrm.cpp index aa742ebb45..49fee0bbf4 100644 --- a/src/html/helpfrm.cpp +++ b/src/html/helpfrm.cpp @@ -124,10 +124,14 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data) m_SearchButton = NULL; m_SearchText = NULL; m_SearchChoice = NULL; + m_IndexCountInfo = NULL; m_Splitter = NULL; m_NavigPan = NULL; m_HtmlWin = NULL; m_Bookmarks = NULL; + m_SearchCaseSensitive = NULL; + m_SearchWholeWords = NULL; + m_Config = NULL; m_ConfigRoot = wxEmptyString; @@ -269,9 +273,18 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& ti b2 -> height.AsIs(); m_IndexButton -> SetConstraints(b2); + wxLayoutConstraints *b5 = new wxLayoutConstraints; + m_IndexCountInfo = new wxStaticText(dummy, wxID_HTML_COUNTINFO, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT | wxST_NO_AUTORESIZE); + + b5 -> top.Below (m_IndexButton, 5); + b5 -> right.SameAs (dummy, wxRight, 10); + b5 -> left.SameAs (dummy, wxLeft, 10); + b5 -> height.AsIs(); + m_IndexCountInfo -> SetConstraints(b5); + wxLayoutConstraints *b3 = new wxLayoutConstraints; m_IndexList = new wxListBox(dummy, wxID_HTML_INDEXLIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE | wxLB_ALWAYS_SB); - b3 -> top.Below (m_IndexButton, 10); + b3 -> top.Below (m_IndexCountInfo, 5); b3 -> left.SameAs (dummy, wxLeft, 0); b3 -> right.SameAs (dummy, wxRight, 0); b3 -> bottom.SameAs (dummy, wxBottom, 0); @@ -279,7 +292,7 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& ti #if wxUSE_TOOLTIPS m_IndexButtonAll -> SetToolTip(_("Show all items in index")); - m_IndexButton -> SetToolTip(_("Display all index items that contain given substring. Note that this is case sensitive, so 'window' and 'Window' is something else!")); + m_IndexButton -> SetToolTip(_("Display all index items that contain given substring. Search is case insensitive.")); #endif //wxUSE_TOOLTIPS dummy -> SetAutoLayout(TRUE); @@ -321,9 +334,25 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& ti b4 -> height.AsIs(); m_SearchChoice -> SetConstraints(b4); + wxLayoutConstraints *b5 = new wxLayoutConstraints; + m_SearchCaseSensitive = new wxCheckBox(dummy, -1, _("Case sensitive")); + b5 -> top.Below (m_SearchButton, 10); + b5 -> left.SameAs (dummy, wxLeft, 10); + b5 -> right.SameAs (dummy, wxRight, 10); + b5 -> height.AsIs (); + m_SearchCaseSensitive -> SetConstraints(b5); + + wxLayoutConstraints *b6 = new wxLayoutConstraints; + m_SearchWholeWords = new wxCheckBox(dummy, -1, _("Whole words only")); + b6 -> top.Below (m_SearchCaseSensitive, 0); + b6 -> left.SameAs (dummy, wxLeft, 10); + b6 -> right.SameAs (dummy, wxRight, 10); + b6 -> height.AsIs (); + m_SearchWholeWords -> SetConstraints(b6); + wxLayoutConstraints *b3 = new wxLayoutConstraints; m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE | wxLB_ALWAYS_SB); - b3 -> top.Below (m_SearchButton, 10); + b3 -> top.Below (m_SearchWholeWords, 10); b3 -> left.SameAs (dummy, wxLeft, 0); b3 -> right.SameAs (dummy, wxRight, 0); b3 -> bottom.SameAs (dummy, wxBottom, 0); @@ -424,7 +453,7 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword) if (! (m_SearchList && m_SearchButton && m_SearchText && m_SearchChoice)) return FALSE; - int foundcnt = 0; + int foundcnt = 0, curi; wxString foundstr; wxString book = wxEmptyString; @@ -441,14 +470,17 @@ bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword) if (m_SearchChoice->GetSelection() != 0) book = m_SearchChoice->GetStringSelection(); - wxHtmlSearchStatus status(m_Data, keyword, book); + 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); + wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE | wxGA_SMOOTH); while (status.IsActive()) { - if (progress.Update(status.GetCurIndex()) == FALSE) + curi = status.GetCurIndex(); + if (curi % 10 == 0 && progress.Update(curi) == FALSE) break; if (status.Search()) { foundstr.Printf(_("Found %i matches"), ++foundcnt); @@ -542,6 +574,10 @@ void wxHtmlHelpFrame::CreateIndex(bool show_progress) int cnt = m_Data->GetIndexCnt(); + wxString cnttext; + if (cnt > INDEX_IS_SMALL) cnttext.Printf(_("%i of %i"), 0, cnt); + else cnttext.Printf(_("%i of %i"), cnt, cnt); + m_IndexCountInfo -> SetLabel(cnttext); if (cnt > INDEX_IS_SMALL) return; int div = (cnt / PROGRESS_STEP) + 1; @@ -595,7 +631,7 @@ void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path) if (path != wxEmptyString) { oldpath = cfg -> GetPath(); - cfg -> SetPath(path); + cfg -> SetPath(_T("/") + path); } m_Cfg.navig_on = cfg -> Read("hcNavigPanel", m_Cfg.navig_on) != 0; @@ -636,7 +672,7 @@ void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path) } if (m_HtmlWin) - m_HtmlWin->ReadCustomization(cfg, path); + m_HtmlWin->ReadCustomization(cfg); if (path != wxEmptyString) cfg -> SetPath(oldpath); @@ -649,7 +685,7 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path if (path != wxEmptyString) { oldpath = cfg -> GetPath(); - cfg -> SetPath(path); + cfg -> SetPath(_T("/") + path); } cfg -> Write("hcNavigPanel", m_Cfg.navig_on); @@ -677,7 +713,7 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path } if (m_HtmlWin) - m_HtmlWin->WriteCustomization(cfg, path); + m_HtmlWin->WriteCustomization(cfg); if (path != wxEmptyString) cfg -> SetPath(oldpath); @@ -933,26 +969,40 @@ void wxHtmlHelpFrame::OnIndexSel(wxCommandEvent& WXUNUSED(event)) void wxHtmlHelpFrame::OnIndexFind(wxCommandEvent& event) { wxString sr = m_IndexText -> GetLineText(0); + sr.MakeLower(); if (sr == wxEmptyString) OnIndexAll(event); else { wxBusyCursor bcur; const wxChar *cstr = sr.c_str(); + wxChar mybuff[512], *ptr; bool first = TRUE; m_IndexList->Clear(); int cnt = m_Data->GetIndexCnt(); wxHtmlContentsItem* index = m_Data->GetIndex(); + int displ = 0; for (int i = 0; i < cnt; i++) - if (wxStrstr(index[i].m_Name, cstr) != NULL) { + { + wxStrncpy(mybuff, index[i].m_Name, 512); + mybuff[511] = 0; + for (ptr = mybuff; *ptr != 0; ptr++) + if (*ptr >= 'A' && *ptr <= 'Z') *ptr -= 'A' - 'a'; + if (wxStrstr(mybuff, cstr) != NULL) { m_IndexList -> Append(index[i].m_Name, (char*)(index + i)); + displ++; if (first) { m_HtmlWin -> LoadPage(index[i].m_Book -> GetBasePath() + index[i].m_Page); first = FALSE; } } + } + + wxString cnttext; + cnttext.Printf(_("%i of %i"), displ, cnt); + m_IndexCountInfo -> SetLabel(cnttext); m_IndexText -> SetSelection(0, sr.Length()); m_IndexText -> SetFocus(); @@ -975,6 +1025,10 @@ void wxHtmlHelpFrame::OnIndexAll(wxCommandEvent& WXUNUSED(event)) first = FALSE; } } + + wxString cnttext; + cnttext.Printf(_("%i of %i"), cnt, cnt); + m_IndexCountInfo -> SetLabel(cnttext); }