void CLocalTreeView::SetDir(wxString localDir) { if (m_currentDir == localDir) { Refresh(); return; } if (localDir.Left(2) == _T("\\\\")) { // TODO: UNC path, don't display it yet m_currentDir = _T(""); SafeSelectItem(wxTreeItemId()); return; } m_currentDir = localDir; #ifdef __WXMSW__ if (localDir == _T("\\")) { SafeSelectItem(m_drives); return; } #endif wxString subDirs = localDir; wxTreeItemId parent = GetNearestParent(subDirs); if (!parent) { SafeSelectItem(wxTreeItemId()); return; } if (subDirs == _T("")) { SafeSelectItem(parent); return; } wxTreeItemId item = MakeSubdirs(parent, localDir.Left(localDir.Length() - subDirs.Length()), subDirs); if (!item) return; SafeSelectItem(item); }
void CLocalTreeView::SetDir(wxString localDir) { if (m_currentDir == localDir) { Refresh(); return; } if (localDir.Left(2) == _T("\\\\")) { // TODO: UNC path, don't display it yet m_currentDir = _T(""); m_setSelection = true; SelectItem(wxTreeItemId()); m_setSelection = false; return; } m_currentDir = localDir; #ifdef __WXMSW__ if (localDir == _T("\\")) { m_setSelection = true; SelectItem(m_drives); m_setSelection = false; return; } #endif wxString subDirs = localDir; wxTreeItemId parent = GetNearestParent(subDirs); if (!parent) { m_setSelection = true; SelectItem(wxTreeItemId()); m_setSelection = false; return; } if (subDirs == _T("")) { wxTreeItemIdValue value; wxTreeItemId child = GetFirstChild(parent, value); //Not needed, item stays unexpanded //if (child && GetItemText(child) == _T("")) // DisplayDir(parent, localDir); m_setSelection = true; SelectItem(parent); m_setSelection = false; if (parent != GetRootItem()) Expand(GetItemParent(parent)); return; } wxTreeItemId item = MakeSubdirs(parent, localDir.Left(localDir.Length() - subDirs.Length()), subDirs); if (!item) return; m_setSelection = true; SelectItem(item); m_setSelection = false; if (item != GetRootItem()) Expand(GetItemParent(item)); }