void clTreeCtrlPanel::AddFolder(const wxString& path) { wxTreeItemId itemFolder = DoAddFolder(GetTreeCtrl()->GetRootItem(), path); DoExpandItem(itemFolder, false); ToggleView(); GetTreeCtrl()->SortChildren(GetTreeCtrl()->GetRootItem()); }
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::OnNewFolder(wxCommandEvent& e) { wxUnusedVar(e); wxString name = wxGetTextFromUser(_("New Folder Name:"), _("New Folder")); if(name.IsEmpty()) return; wxString project = DoGetSelectedProject(); if(project.IsEmpty()) return; wxTreeItemId parent = m_treeCtrlView->GetSelection(); CHECK_ITEM_RET(parent); ItemData* itemData = DoGetItemData(parent); CHECK_PTR_RET(itemData); if(!itemData->IsFolder() && !itemData->IsProject()) return; PHPProject::Ptr_t proj = PHPWorkspace::Get()->GetProject(project); CHECK_PTR_RET(proj); wxString folder; if(itemData->IsFolder()) { folder << itemData->GetFolderPath() << "/" << name; } else { folder << name; } PHPFolder::Ptr_t pFolder = proj->AddFolder(folder); proj->Save(); // Update the UI DoAddFolder(parent, pFolder, proj); }
void clTreeCtrlPanel::DoExpandItem(const wxTreeItemId& parent, bool expand) { clTreeCtrlData* cd = GetItemData(parent); CHECK_PTR_RET(cd); // we only know how to expand folders... if(!cd->IsFolder()) return; wxString folderPath = cd->GetPath(); if(!m_treeCtrl->ItemHasChildren(parent)) return; // Test the first item for dummy wxTreeItemIdValue cookie; wxTreeItemId child = m_treeCtrl->GetFirstChild(parent, cookie); CHECK_ITEM_RET(child); cd = GetItemData(child); CHECK_PTR_RET(cd); // If not dummy - already expanded do nothing here if(!cd->IsDummy()) return; m_treeCtrl->Delete(child); cd = NULL; // Get the top level folders wxDir dir(folderPath); if(!dir.IsOpened()) return; wxBusyCursor bc; wxString filename; bool cont = dir.GetFirst(&filename, wxEmptyString); while(cont) { wxFileName fullpath(folderPath, filename); if(wxFileName::DirExists(fullpath.GetFullPath())) { // a folder if(!(m_options & kShowHiddenFolders) && FileUtils::IsHidden(fullpath)) { cont = dir.GetNext(&filename); continue; } DoAddFolder(parent, fullpath.GetFullPath()); } else { if(!(m_options & kShowHiddenFiles) && FileUtils::IsHidden(fullpath)) { cont = dir.GetNext(&filename); continue; } DoAddFile(parent, fullpath.GetFullPath()); } cont = dir.GetNext(&filename); } // Sort the parent if(GetTreeCtrl()->ItemHasChildren(parent)) { GetTreeCtrl()->SortChildren(parent); if(expand) { GetTreeCtrl()->Expand(parent); } SelectItem(parent); } }
void PHPWorkspaceView::DoBuildProjectNode(const wxTreeItemId& projectItem, PHPProject::Ptr_t project) { // Get the top level folders and add them const PHPFolder::Map_t& folders = project->GetFolders(); PHPFolder::Map_t::const_iterator iter = folders.begin(); for(; iter != folders.end(); ++iter) { DoAddFolder(projectItem, iter->second, project); } }
void SFTPTreeView::OnMenuNew(wxCommandEvent& event) { wxArrayTreeItemIds items; m_treeCtrl->GetSelections(items); if(items.size() != 1) return; MyClientData* cd = GetItemData(items.Item(0)); CHECK_PTR_RET(cd); if(!cd->IsFolder()) { return; } wxString new_name = ::wxGetTextFromUser(_("Enter the new directory name:"), _("New Directory")); if(!new_name.IsEmpty()) { wxString fullpath = cd->GetFullPath(); fullpath << "/" << new_name; DoAddFolder(items.Item(0), fullpath); } }
void clTreeCtrlPanel::OnNewFolder(wxCommandEvent& event) { wxTreeItemId item = GetTreeCtrl()->GetFocusedItem(); clTreeCtrlData* cd = GetItemData(item); CHECK_PTR_RET(cd); CHECK_COND_RET(cd->IsFolder()); wxString foldername = ::clGetTextFromUser(_("New Folder"), _("Set the folder name:"), "New Folder"); if(foldername.IsEmpty()) return; // user cancelled wxFileName file(cd->GetPath(), ""); file.AppendDir(foldername); // Create the folder wxFileName::Mkdir(file.GetPath(), wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); // Add it to the tree view wxTreeItemId newFile = DoAddFolder(item, file.GetPath()); GetTreeCtrl()->SortChildren(item); CallAfter(&clTreeCtrlPanel::SelectItem, newFile); }
void clTreeCtrlPanel::OnRefresh(wxCommandEvent& event) { wxArrayString paths, files; wxArrayTreeItemIds items, fileItems; GetSelections(paths, items, files, fileItems); if(items.IsEmpty()) return; // Close the selected folders std::vector<std::pair<wxString, bool> > topFolders; for(size_t i = 0; i < items.GetCount(); ++i) { topFolders.push_back(std::make_pair(paths.Item(i), GetTreeCtrl()->IsExpanded(items.Item(i)))); DoCloseFolder(items.Item(i)); } // Re-add them for(size_t i = 0; i < topFolders.size(); ++i) { wxTreeItemId itemFolder = DoAddFolder(GetTreeCtrl()->GetRootItem(), topFolders.at(i).first); DoExpandItem(itemFolder, topFolders.at(i).second); } GetTreeCtrl()->SortChildren(GetTreeCtrl()->GetRootItem()); ToggleView(); }
void clTreeCtrlPanel::AddFolder(const wxString& path) { wxTreeItemId itemFolder = DoAddFolder(GetTreeCtrl()->GetRootItem(), path); DoExpandItem(itemFolder, false); }