wxTreeItemId CLocalTreeView::MakeSubdirs(wxTreeItemId parent, wxString dirname, wxString subDir) { const wxString& separator = wxFileName::GetPathSeparator(); while (subDir != _T("")) { int pos = subDir.Find(separator); wxString segment; if (pos == -1) { segment = subDir; subDir = _T(""); } else { segment = subDir.Left(pos); subDir = subDir.Mid(pos + 1); } DisplayDir(parent, dirname, segment); wxTreeItemId item = GetSubdir(parent, segment); if (!item) return wxTreeItemId(); parent = item; dirname += segment + separator; } DisplayDir(parent, dirname); return parent; }
void CLocalListView::OnMenuMkdir(wxCommandEvent& event) { CInputDialog dlg; if (!dlg.Create(this, _("Create directory"), _("Please enter the name of the directory which should be created:"))) return; if (dlg.ShowModal() != wxID_OK) return; if (dlg.GetValue() == _T("")) { wxBell(); return; } wxFileName fn(dlg.GetValue(), _T("")); fn.Normalize(wxPATH_NORM_ALL, m_dir); bool res; { wxLogNull log; res = fn.Mkdir(fn.GetPath(), 0777, wxPATH_MKDIR_FULL); } if (!res) wxBell(); DisplayDir(m_dir); }
void CLocalTreeView::OnItemExpanding(wxTreeEvent& event) { wxTreeItemId item = event.GetItem(); wxTreeItemIdValue value; wxTreeItemId child = GetFirstChild(item, value); if (child && GetItemText(child) == _T("")) DisplayDir(item, GetDirFromItem(item)); }
void CLocalListView::OnStateChange(unsigned int event, const wxString& data) { if (event == STATECHANGE_LOCAL_DIR) DisplayDir(m_pState->GetLocalDir()); else if (event == STATECHANGE_APPLYFILTER) ApplyCurrentFilter(); else if (event == STATECHANGE_LOCAL_REFRESH_FILE) RefreshFile(data); }
void CLocalListView::OnStateChange(CState* pState, enum t_statechange_notifications notification, const wxString& data, const void* data2) { if (notification == STATECHANGE_LOCAL_DIR) DisplayDir(m_pState->GetLocalDir().GetPath()); else if (notification == STATECHANGE_APPLYFILTER) ApplyCurrentFilter(); else { wxASSERT(notification == STATECHANGE_LOCAL_REFRESH_FILE); RefreshFile(data); } }
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); 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)); }