void PHPWorkspaceView::DoAddFolder(const wxTreeItemId& parent, PHPFolder::Ptr_t folder, PHPProject::Ptr_t project) { // add the folder itself ItemData* itemData = new ItemData(ItemData::Kind_Folder); itemData->SetFolderPath(folder->GetPathRelativeToProject()); itemData->SetProjectName(project->GetName()); itemData->SetFolderName(folder->GetName()); // display name wxTreeItemId folderItem = EnsureFolderExists( DoGetProjectItem(project->GetName()), folder->GetPathRelativeToProject(), project->GetName()); // Get list of folders const PHPFolder::List_t& children = folder->GetChildren(); PHPFolder::List_t::const_iterator iter = children.begin(); for(; iter != children.end(); ++iter) { DoAddFolder(folderItem, *iter, project); } wxArrayString folderFiles; folder->GetFiles(folderFiles, project->GetFilename().GetPath(), 0); // Add the files for(size_t i = 0; i < folderFiles.GetCount(); ++i) { ItemData* itemData = new ItemData(ItemData::Kind_File); itemData->SetFile(folderFiles.Item(i)); itemData->SetProjectName(project->GetName()); itemData->SetFolderPath(folder->GetPathRelativeToProject()); int imgId = DoGetItemImgIdx(folderFiles.Item(i)); m_treeCtrlView->AppendItem(folderItem, wxFileName(folderFiles.Item(i)).GetFullName(), imgId, imgId, itemData); } }
void PHPWorkspaceView::DoAddFolderFiles(const wxString& project, const wxString& folder, const wxTreeItemId& folderTreeItemId, wxStringSet_t* filesAdded) { PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(project); CHECK_PTR_RET(pProject); PHPFolder::Ptr_t pFolder = pProject->Folder(folder); CHECK_PTR_RET(pFolder); wxArrayString files; pFolder->GetFiles(files, pProject->GetFilename().GetPath()); files.Sort(); for(size_t i = 0; i < files.GetCount(); ++i) { wxFileName fn(files.Item(i)); // create the user data ItemData* itemData = new ItemData(ItemData::Kind_File); itemData->SetFile(fn.GetFullPath()); itemData->SetFolderPath(folder); itemData->SetProjectName(project); int imgId = DoGetItemImgIdx(fn.GetFullName()); m_treeCtrlView->AppendItem(folderTreeItemId, fn.GetFullName(), imgId, imgId, itemData); if(filesAdded) { filesAdded->insert(fn.GetFullPath()); } } }
wxTreeItemId PHPWorkspaceView::EnsureFolderExists(const wxTreeItemId& projectItem, const wxString& path, const wxString& project) { PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(project); wxASSERT_MSG(pProject, wxString::Format("Could not locate project %s", project)); int imgId = m_mgr->GetStdIcons()->GetMimeImageId(FileExtManager::TypeFolder); wxString curpath; wxTreeItemId parent = projectItem; wxArrayString parts = ::wxStringTokenize(path, "/", wxTOKEN_STRTOK); for(size_t i = 0; i < parts.GetCount(); ++i) { if(!curpath.IsEmpty()) { curpath << "/"; } curpath << parts.Item(i); if(!HasFolderWithName(parent, parts.Item(i), parent)) { ItemData* itemData = new ItemData(ItemData::Kind_Folder); itemData->SetFolderPath(curpath); itemData->SetProjectName(project); itemData->SetFolderName(parts.Item(i)); parent = m_treeCtrlView->AppendItem(parent, parts.Item(i) == "." ? pProject->GetFilename().GetPath() : parts.Item(i), imgId, imgId, itemData); } } m_treeCtrlView->SortChildren(projectItem); return parent; }
void PHPWorkspaceView::DoAddFilesToTreeView(const wxTreeItemId& folderId, PHPProject::Ptr_t pProject, PHPFolder::Ptr_t pFolder, const wxArrayString& files) { for(size_t i=0; i<files.GetCount(); ++i) { ItemData *itemData = new ItemData(ItemData::Kind_File); itemData->SetFile( files.Item(i) ); itemData->SetProjectName( pProject->GetName() ); itemData->SetFolderPath( pFolder->GetPathRelativeToProject() ); int imgId = DoGetItemImgIdx(files.Item(i)); m_treeCtrlView->AppendItem(folderId, wxFileName(files.Item(i)).GetFullName(), imgId, imgId, itemData); } m_treeCtrlView->SortChildren( folderId ); }
void PHPWorkspaceView::LoadWorkspace() { wxString workspaceName; workspaceName << PHPWorkspace::Get()->GetFilename().GetName(); wxWindowUpdateLocker locker(m_treeCtrlView); m_treeCtrlView->DeleteAllItems(); // Add the root item BitmapLoader* bl = m_mgr->GetStdIcons(); wxTreeItemId root = m_treeCtrlView->AddRoot(workspaceName, bl->GetMimeImageId(PHPWorkspace::Get()->GetFilename().GetFullName()), bl->GetMimeImageId(PHPWorkspace::Get()->GetFilename().GetFullName()), new ItemData(ItemData::Kind_Workspace)); const PHPProject::Map_t& projects = PHPWorkspace::Get()->GetProjects(); // add projects wxStringSet_t files; PHPProject::Map_t::const_iterator iter_project = projects.begin(); for(; iter_project != projects.end(); ++iter_project) { ItemData* data = new ItemData(ItemData::Kind_Project); data->SetProjectName(iter_project->first); data->SetActive(iter_project->second->IsActive()); wxTreeItemId projectItemId = m_treeCtrlView->AppendItem(root, iter_project->second->GetName(), bl->GetMimeImageId(FileExtManager::TypeProject), bl->GetMimeImageId(FileExtManager::TypeProject), data); if(data->IsActive()) { m_treeCtrlView->SetItemBold(projectItemId, true); } DoBuildProjectNode(projectItemId, iter_project->second); } if(m_treeCtrlView->HasChildren(root)) { m_treeCtrlView->Expand(root); } }