void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col) { m_canvas->SetTextFont(font); if ( col.IsOk() ) m_canvas->SetColour(col); m_canvas->Refresh(); m_textctrl->SetFont(font); if ( col.IsOk() ) m_textctrl->SetForegroundColour(col); m_textctrl->Refresh(); // update the state of the bold/italic/underlined menu items wxMenuBar *mbar = GetMenuBar(); if ( mbar ) { mbar->Check(Font_Light, font.GetWeight() == wxFONTWEIGHT_LIGHT); mbar->Check(Font_Bold, font.GetWeight() == wxFONTWEIGHT_BOLD); mbar->Check(Font_Italic, font.GetStyle() == wxFONTSTYLE_ITALIC); #ifndef __WXMSW__ mbar->Check(Font_Slant, font.GetStyle() == wxFONTSTYLE_SLANT); #endif mbar->Check(Font_Underlined, font.GetUnderlined()); mbar->Check(Font_Strikethrough, font.GetStrikethrough()); } }
MainFrame(const wxString& title) { wxXmlResource::Get()->LoadFrame(this, NULL, "Frame1"); m_buttonFindAll = XRCCTRL(*this, "m_buttonFindAll", wxButton); m_textCtrlRegex = XRCCTRL(*this, "m_textCtrlRegex", wxTextCtrl); m_textCtrlString = XRCCTRL(*this, "m_textCtrlString", wxTextCtrl); m_textCtrlFindAll = XRCCTRL(*this, "m_textCtrlFindAll", wxTextCtrl); m_textCtrlRegex->Bind(wxEVT_TEXT, [=](wxCommandEvent &event){ std::wstring a = m_textCtrlRegex->GetValue(); auto R = re::compile(a); if (R){ m_textCtrlRegex->SetBackgroundColour(wxColor(0,255,0)); m_textCtrlRegex->Refresh(); m_textCtrlFindAll->Clear(); m_textCtrlFindAll->Refresh(); } else{ m_textCtrlRegex->SetBackgroundColour(wxColor(255, 0, 0)); m_textCtrlRegex->Refresh(); m_textCtrlFindAll->Clear(); m_textCtrlFindAll->AppendText(std::to_string(re::getlasterror())); m_textCtrlFindAll->AppendText("\n"); m_textCtrlFindAll->AppendText(re::getlasterrorstr()); m_textCtrlFindAll->Refresh(); } } ); //------------------------------------------------------------------------------ m_buttonFindAll->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [=](wxCommandEvent &event){ m_textCtrlFindAll->Clear(); std::wstring a = m_textCtrlRegex->GetValue(); auto R = re::compile(a); if (R){ std::wstring s = m_textCtrlString->GetValue(); auto v = R->findall(s); for (auto i = v.begin(); i < v.end(); i++){ m_textCtrlFindAll->AppendText(*i); m_textCtrlFindAll->AppendText("\n"); } } m_textCtrlFindAll->Refresh(); }); //------------------------------------------------------------------------------ }
void WebFrame::OnFindText(wxCommandEvent& evt) { int flags = 0; if(m_find_toolbar_wrap->IsChecked()) flags |= wxWEBVIEW_FIND_WRAP; if(m_find_toolbar_wholeword->IsChecked()) flags |= wxWEBVIEW_FIND_ENTIRE_WORD; if(m_find_toolbar_matchcase->IsChecked()) flags |= wxWEBVIEW_FIND_MATCH_CASE; if(m_find_toolbar_highlight->IsChecked()) flags |= wxWEBVIEW_FIND_HIGHLIGHT_RESULT; if(m_find_toolbar_previous->GetId() == evt.GetId()) flags |= wxWEBVIEW_FIND_BACKWARDS; wxString find_text = m_find_ctrl->GetValue(); long count = m_browser->Find(find_text, flags); if(m_findText != find_text) { m_findCount = count; m_findText = find_text; } if(count != wxNOT_FOUND || find_text.IsEmpty()) { m_find_ctrl->SetBackgroundColour(*wxWHITE); } else { m_find_ctrl->SetBackgroundColour(wxColour(255, 101, 101)); } m_find_ctrl->Refresh(); //Log the result, note that count is zero indexed. if(count != m_findCount) { count++; } wxLogMessage("Searching for:%s current match:%i/%i", m_findText.c_str(), count, m_findCount); }