X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7618e3746558bfba2885ec7c3320332205318df0..57e3f9d9cc8be13a9794ed84f55650b6a7940518:/src/html/helpfrm.cpp?ds=inline diff --git a/src/html/helpfrm.cpp b/src/html/helpfrm.cpp index 16707531d4..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; @@ -140,7 +144,6 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data) m_NormalFonts = m_FixedFonts = NULL; m_FontSize = 1; m_NormalFace = m_FixedFace = wxEmptyString; - m_NormalItalic = m_FixedItalic = wxSLANT; } // Create: builds the GUI components. @@ -160,7 +163,7 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& ti if (m_Config) ReadCustomization(m_Config, m_ConfigRoot); - wxFrame::Create(parent, id, _("Help"), wxPoint(m_Cfg.x, m_Cfg.y), wxSize(m_Cfg.w, m_Cfg.h)); + wxFrame::Create(parent, id, _("Help"), wxPoint(m_Cfg.x, m_Cfg.y), wxSize(m_Cfg.w, m_Cfg.h), wxDEFAULT_FRAME_STYLE, "wxHtmlHelp"); GetPosition(&m_Cfg.x, &m_Cfg.y); @@ -270,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); @@ -280,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); @@ -322,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); @@ -425,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; @@ -442,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); @@ -543,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; @@ -596,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; @@ -609,8 +644,6 @@ void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path) m_FixedFace = cfg -> Read("hcFixedFace", m_FixedFace); m_NormalFace = cfg -> Read("hcNormalFace", m_NormalFace); m_FontSize = cfg -> Read("hcFontSize", m_FontSize); - m_NormalItalic = cfg -> Read("hcNormalItalic", m_NormalItalic); - m_FixedItalic = cfg -> Read("hcFixedItalic", m_FixedItalic); { int i; @@ -627,11 +660,11 @@ void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path) } for (i = 0; i < cnt; i++) { - val.Printf("hcBookmark_%i", i); + val.Printf(wxT("hcBookmark_%i"), i); s = cfg -> Read(val); m_BookmarksNames.Add(s); if (m_Bookmarks) m_Bookmarks -> Append(s); - val.Printf("hcBookmark_%i_url", i); + val.Printf(wxT("hcBookmark_%i_url"), i); s = cfg -> Read(val); m_BookmarksPages.Add(s); } @@ -639,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); @@ -652,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); @@ -664,8 +697,6 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path cfg -> Write("hcFixedFace", m_FixedFace); cfg -> Write("hcNormalFace", m_NormalFace); cfg -> Write("hcFontSize", (long)m_FontSize); - cfg -> Write("hcNormalItalic", (long)m_NormalItalic); - cfg -> Write("hcFixedItalic", (long)m_FixedItalic); if (m_Bookmarks) { int i; @@ -674,15 +705,15 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path cfg -> Write("hcBookmarksCnt", (long)cnt); for (i = 0; i < cnt; i++) { - val.Printf("hcBookmark_%i", i); + val.Printf(wxT("hcBookmark_%i"), i); cfg -> Write(val, m_BookmarksNames[i]); - val.Printf("hcBookmark_%i_url", i); + val.Printf(wxT("hcBookmark_%i_url"), i); cfg -> Write(val, m_BookmarksPages[i]); } } if (m_HtmlWin) - m_HtmlWin->WriteCustomization(cfg, path); + m_HtmlWin->WriteCustomization(cfg); if (path != wxEmptyString) cfg -> SetPath(oldpath); @@ -692,7 +723,7 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path -static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, int scalit, wxString fixf, int fixit, int size) +static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, wxString fixf, int size) { static int f_sizes[3][7] = { @@ -701,7 +732,7 @@ static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, int scalit, wxS {14, 16, 18, 24, 32, 38, 45} }; - win -> SetFonts(scalf, scalit, fixf, fixit, f_sizes[size]); + win -> SetFonts(scalf, fixf, f_sizes[size]); } @@ -709,15 +740,13 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog { public: wxComboBox *NormalFont, *FixedFont; - wxRadioButton *SFI_i, *SFI_s, *FFI_i, *FFI_s; wxRadioBox *RadioBox; wxHtmlWindow *TestWin; wxHtmlHelpFrameOptionsDialog(wxWindow *parent) : wxDialog(parent, -1, wxString(_("Help Browser Options"))) { wxString choices[3] = {_("small"), _("medium"), _("large")}; - wxString choices2[2] = {_("italic"), _("slant")}; - wxBoxSizer *topsizer, *sizer, *sizer2, *sizer3; + wxBoxSizer *topsizer, *sizer, *sizer2; topsizer = new wxBoxSizer(wxVERTICAL); @@ -729,13 +758,6 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog 0, NULL, wxCB_DROPDOWN | wxCB_READONLY), 1, wxEXPAND | wxLEFT | wxRIGHT, 10); - sizer3 = new wxBoxSizer(wxHORIZONTAL); - sizer3 -> Add(SFI_i = new wxRadioButton(this, -1, _("use italic"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP), - 1, wxEXPAND, 0); - sizer3 -> Add(SFI_s = new wxRadioButton(this, -1, _("use slant"), wxDefaultPosition, wxDefaultSize, 0), - 1, wxEXPAND, 0); - sizer2 -> Add(sizer3, 0, wxEXPAND | wxLEFT | wxRIGHT, 10); - sizer -> Add(sizer2, 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10); sizer2 = new wxStaticBoxSizer( new wxStaticBox(this, -1, _("Fixed font:")), wxVERTICAL); @@ -744,13 +766,6 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog 0, NULL, wxCB_DROPDOWN | wxCB_READONLY), 1, wxEXPAND | wxLEFT | wxRIGHT, 10); - sizer3 = new wxBoxSizer(wxHORIZONTAL); - sizer3 -> Add(FFI_i = new wxRadioButton(this, -1, _("use italic"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP), - 1, wxEXPAND, 0); - sizer3 -> Add(FFI_s = new wxRadioButton(this, -1, _("use slant"), wxDefaultPosition, wxDefaultSize, 0), - 1, wxEXPAND, 0); - sizer2 -> Add(sizer3, 0, wxEXPAND | wxLEFT | wxRIGHT, 10); - sizer -> Add(sizer2, 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10); topsizer -> Add(sizer); @@ -780,8 +795,8 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog { wxBusyCursor bcur; SetFontsToHtmlWin(TestWin, - NormalFont -> GetStringSelection(), SFI_i -> GetValue() ? wxITALIC : wxSLANT, - FixedFont -> GetStringSelection(), FFI_i -> GetValue() ? wxITALIC : wxSLANT, + NormalFont -> GetStringSelection(), + FixedFont -> GetStringSelection(), RadioBox -> GetSelection()); TestWin -> SetPage(_("" "Normal face
(and underlined. Italic face. " @@ -817,7 +832,6 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog BEGIN_EVENT_TABLE(wxHtmlHelpFrameOptionsDialog, wxDialog) EVT_COMBOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) EVT_RADIOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) - EVT_RADIOBUTTON(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) END_EVENT_TABLE() @@ -850,19 +864,13 @@ void wxHtmlHelpFrame::OptionsDialog() if (!m_FixedFace.IsEmpty()) dlg.FixedFont -> SetStringSelection(m_FixedFace); else dlg.FixedFont -> SetSelection(0); dlg.RadioBox -> SetSelection(m_FontSize); - dlg.SFI_i -> SetValue(m_NormalItalic == wxITALIC); - dlg.SFI_s -> SetValue(m_NormalItalic == wxSLANT); - dlg.FFI_i -> SetValue(m_FixedItalic == wxITALIC); - dlg.FFI_s -> SetValue(m_FixedItalic == wxSLANT); dlg.UpdateTestWin(); if (dlg.ShowModal() == wxID_OK) { m_NormalFace = dlg.NormalFont -> GetStringSelection(); m_FixedFace = dlg.FixedFont -> GetStringSelection(); m_FontSize = dlg.RadioBox -> GetSelection(); - m_NormalItalic = dlg.SFI_i -> GetValue() ? wxITALIC : wxSLANT; - m_FixedItalic = dlg.FFI_i -> GetValue() ? wxITALIC : wxSLANT; - SetFontsToHtmlWin(m_HtmlWin, m_NormalFace, m_NormalItalic, m_FixedFace, m_FixedItalic, m_FontSize); + SetFontsToHtmlWin(m_HtmlWin, m_NormalFace, m_FixedFace, m_FontSize); } } @@ -961,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(); @@ -1003,6 +1025,10 @@ void wxHtmlHelpFrame::OnIndexAll(wxCommandEvent& WXUNUSED(event)) first = FALSE; } } + + wxString cnttext; + cnttext.Printf(_("%i of %i"), cnt, cnt); + m_IndexCountInfo -> SetLabel(cnttext); }