void clTreeCtrlPanel::AddFolder(const wxString& path) { wxTreeItemId itemFolder = DoAddFolder(GetTreeCtrl()->GetRootItem(), path); DoExpandItem(itemFolder, false); ToggleView(); GetTreeCtrl()->SortChildren(GetTreeCtrl()->GetRootItem()); }
void clTreeCtrlPanel::OnItemExpanding(wxTreeEvent& event) { event.Skip(); wxTreeItemId item = event.GetItem(); CHECK_ITEM_RET(item); DoExpandItem(item, true); }
bool clTreeCtrlPanel::ExpandToFile(const wxFileName& filename) { wxArrayString topFolders; wxArrayTreeItemIds topFoldersItems; GetTopLevelFolders(topFolders, topFoldersItems); int where = wxNOT_FOUND; wxString fullpath = filename.GetFullPath(); for(size_t i = 0; i < topFolders.size(); ++i) { if(fullpath.StartsWith(topFolders.Item(i))) { where = i; break; } } // Could not find a folder that matches the filename if(where == wxNOT_FOUND) return false; wxString topFolder = topFolders.Item(where); wxTreeItemId closestItem = topFoldersItems.Item(where); fullpath.Remove(0, topFolder.length()); wxFileName left(fullpath); wxArrayString parts = left.GetDirs(); parts.Add(filename.GetFullName()); clTreeCtrlData* d = GetItemData(closestItem); while(!parts.IsEmpty()) { if(!d->GetIndex()) return false; // ?? wxTreeItemId child = d->GetIndex()->Find(parts.Item(0)); if(!child.IsOk()) { // Probably the this folder was not expanded just yet... if(d->IsFolder()) { DoExpandItem(closestItem, true); // Try again child = d->GetIndex()->Find(parts.Item(0)); if(!child.IsOk()) { return false; } } } closestItem = child; d = GetItemData(closestItem); parts.RemoveAt(0); } if(parts.IsEmpty()) { // we found our file! SelectItem(closestItem); return true; } return false; }
void SFTPTreeView::DoBuildTree(const wxString& initialFolder) { m_treeCtrl->DeleteAllItems(); // add the root item MyClientData* cd = new MyClientData(initialFolder); cd->SetIsFolder(true); wxTreeItemId root = m_treeCtrl->AppendItem(m_treeCtrl->GetRootItem(), initialFolder, m_bmpLoader->GetMimeImageId(FileExtManager::TypeFolder), wxNOT_FOUND, cd); m_treeCtrl->AppendItem(root, "<dummy>"); DoExpandItem(root); }
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 SFTPTreeView::OnItemExpanding(wxTreeListEvent& event) { if(!DoExpandItem(event.GetItem())) { event.Veto(); } }
void clTreeCtrlPanel::AddFolder(const wxString& path) { wxTreeItemId itemFolder = DoAddFolder(GetTreeCtrl()->GetRootItem(), path); DoExpandItem(itemFolder, false); }