bool clCxxWorkspace::RemoveFile(const wxString& vdFullPath, const wxString& fileName, wxString& errMsg) { wxStringTokenizer tkz(vdFullPath, wxT(":")); wxString projName = tkz.GetNextToken(); wxString fixedPath; // Construct new path excluding the first token size_t count = tkz.CountTokens(); if(!count) { errMsg = _("Malformed project name"); return false; } for(size_t i = 0; i < count - 1; i++) { fixedPath += tkz.GetNextToken(); fixedPath += wxT(":"); } fixedPath += tkz.GetNextToken(); ProjectPtr proj = FindProjectByName(projName, errMsg); if(!proj) { errMsg = _("No such project"); return false; } bool result = proj->RemoveFile(fileName, fixedPath); if(!result) { errMsg = _("File removal failed"); } return result; }
wxArrayString ReconcileProjectDlg::RemoveStaleFiles(const wxArrayString& StaleFiles) const { wxArrayString removals; ProjectPtr proj = ManagerST::Get()->GetProject(m_projname); wxCHECK_MSG(proj, removals, "Can't find a Project with the supplied name"); for (size_t n = 0; n < StaleFiles.GetCount(); ++n) { // Reconstruct the VD path in projectname:foo:bar format int index = StaleFiles[n].Find(": "); wxCHECK_MSG(index != wxNOT_FOUND, removals, "Badly-formed stalefile string"); wxString vdPath = StaleFiles[n].Left(index); wxString filepath = StaleFiles[n].Mid(index+2); if (proj->RemoveFile(filepath, vdPath)) { removals.Add(StaleFiles[n]); } } return removals; }
void ReconcileProjectDlg::OnDeleteStaleFiles(wxCommandEvent& event) { ProjectPtr proj = ManagerST::Get()->GetProject(m_projname); wxCHECK_RET(proj, "Can't find a Project with the supplied name"); wxDataViewItemArray items; if (event.GetId() == wxID_DELETE) { m_dataviewStaleFiles->GetSelections( items ); } else { m_dataviewStaleFilesModel->GetChildren(wxDataViewItem(0), items); } proj->BeginTranscation(); for(size_t i=0; i<items.GetCount(); ++i) { ReconcileFileItemData* data = dynamic_cast<ReconcileFileItemData*>(m_dataviewStaleFilesModel->GetClientObject(items.Item(i))); if ( data ) { proj->RemoveFile( data->GetFilename(), data->GetVirtualFolder() ); } m_projectModified = true; } proj->CommitTranscation(); m_dataviewStaleFilesModel->DeleteItems(wxDataViewItem(0), items); }