bool ICmdProcTextEntryStc::DoExecId(ICmdParam& cmd) { switch(cmd.param1) { case CP_DIRTY: Target.MarkDirty(); break; case CP_SAVE_TEMP: return true; case CP_SAVE_FILE: return false; case CP_FIND: if(data.text_old=="") return false; Target.SetSearchFlags(data.flags.val()); return DoFind(cmd); case CP_REPLACE: if(data.text_old=="") return false; Target.SetSearchFlags(data.flags.val()); return DoReplace(cmd); case CP_REPLACEALL: if(data.text_old=="") return false; Target.SetSearchFlags(data.flags.val()); return DoReplaceAll(cmd); default: return basetype::DoExecId(cmd); } return true; }
void SavvyEditor::AppFrame::OnFindDialog(wxFindDialogEvent& a_Event) { wxEventType type = a_Event.GetEventType(); if (type == wxEVT_FIND || type == wxEVT_FIND_NEXT) { if (!DoFind(a_Event.GetFindString(), a_Event.GetFlags())) { wxMessageBox(wxT("No more matches."), DEFAULT_FRAME_TITLE); } } else if (type == wxEVT_FIND_REPLACE) { if (!DoReplace(a_Event.GetFindString(), a_Event.GetReplaceString(), a_Event.GetFlags())) { wxMessageBox(wxT("Nothing to replace."), DEFAULT_FRAME_TITLE); } } else if (type == wxEVT_FIND_REPLACE_ALL) { int numReplaced = DoReplaceAll(a_Event.GetFindString(), a_Event.GetReplaceString(), a_Event.GetFlags()); if (numReplaced > 0) { wxString numString = wxString::Format(wxT("%i"), numReplaced); numString.Append(" occurrences replaced."); wxMessageBox(numString, DEFAULT_FRAME_TITLE); } else { wxMessageBox(wxT("Nothing to replace."), DEFAULT_FRAME_TITLE); } } else if (type == wxEVT_FIND_CLOSE) { wxFindReplaceDialog *dlg = a_Event.GetDialog(); int idMenu; const wxChar *txt; if (dlg == m_FindDialog) { txt = wxT("Find"); idMenu = ID_FindDialog; m_FindDialog = NULL; } else if (dlg == m_ReplaceDialog) { txt = wxT("Replace"); idMenu = ID_ReplaceDialog; m_ReplaceDialog = NULL; } else { txt = wxT("Unknown"); idMenu = wxID_ANY; wxFAIL_MSG(wxT("unexpected event")); } if (idMenu != wxID_ANY) { GetMenuBar()->Check(idMenu, false); } dlg->Destroy(); } else { wxLogError(wxT("Unknown find dialog event!")); } }