bool CFilterEditDialog::Validate() { if (m_currentSelection == -1) return true; wxString error; if (!ValidateFilter(error)) { m_pFilterListCtrl->SetSelection(m_currentSelection); wxMessageBox(error, _("Filter validation failed"), wxICON_ERROR, this); return false; } wxString name = XRCCTRL(*this, "ID_NAME", wxTextCtrl)->GetValue(); if (name == _T("")) { m_pFilterListCtrl->SetSelection(m_currentSelection); XRCCTRL(*this, "ID_NAME", wxTextCtrl)->SetFocus(); wxMessageBox(_("Need to enter filter name"), _("Filter validation failed"), wxICON_ERROR, this); return false; } int pos = m_pFilterListCtrl->FindString(name); if (pos != wxNOT_FOUND && pos != m_currentSelection) { m_pFilterListCtrl->SetSelection(m_currentSelection); XRCCTRL(*this, "ID_NAME", wxTextCtrl)->SetFocus(); wxMessageBox(_("Filter name already exists"), _("Filter validation failed"), wxICON_ERROR, this); return false; } return true; }
void CSearchDialog::OnSearch(wxCommandEvent& event) { if (!m_pState->IsRemoteIdle()) { wxBell(); return; } CServerPath path; const CServer* pServer = m_pState->GetServer(); if (!pServer) { wxMessageBox(_("Connection to server lost."), _("Remote file search"), wxICON_EXCLAMATION); return; } path.SetType(pServer->GetType()); if (!path.SetPath(XRCCTRL(*this, "ID_PATH", wxTextCtrl)->GetValue()) || path.IsEmpty()) { wxMessageBox(_("Need to enter valid remote path"), _("Remote file search"), wxICON_EXCLAMATION); return; } m_search_root = path; // Prepare filter wxString error; if (!ValidateFilter(error, true)) { wxMessageBox(wxString::Format(_("Invalid search conditions: %s"), error.c_str()), _("Remote file search"), wxICON_EXCLAMATION); return; } m_search_filter = GetFilter(); if (!CFilterManager::CompileRegexes(m_search_filter)) { wxMessageBox(_("Invalid regular expression in search conditions."), _("Remote file search"), wxICON_EXCLAMATION); return; } m_search_filter.matchCase = XRCCTRL(*this, "ID_CASE", wxCheckBox)->GetValue(); // Delete old results m_results->ClearSelection(); m_results->m_indexMapping.clear(); m_results->m_fileData.clear(); m_results->SetItemCount(0); m_visited.clear(); m_results->RefreshListOnly(true); m_results->GetFilelistStatusBar()->Clear(); // Start m_searching = true; m_pState->GetRecursiveOperationHandler()->AddDirectoryToVisitRestricted(path, _T(""), true); std::list<CFilter> filters; // Empty, recurse into everything m_pState->GetRecursiveOperationHandler()->StartRecursiveOperation(CRecursiveOperation::recursive_list, path, filters, true); }