private void OpenFile(string filename) { if (filename == CurrentPath || string.IsNullOrEmpty(filename)) { return; } try { if (File.Exists(filename)) { VFS.FullPath = new string[] { filename, "" } } ; else { VFS.FullPath = new string[] { filename } }; var vm = new DirectoryViewModel(VFS.FullPath, VFS.GetFiles(), VFS.IsVirtual); PushViewModel(vm); if (null != VFS.CurrentArchive) { SetStatusText(VFS.CurrentArchive.Description); } lv_SelectItem(0); } catch (OperationCanceledException X) { SetStatusText(X.Message); } catch (Exception X) { PopupError(string.Format("{0}:\n{1}", filename, X.Message), guiStrings.MsgErrorOpening); } }
private void OpenDirectoryEntry(DirectoryViewModel vm, EntryViewModel entry) { string old_dir = null == vm ? "" : vm.Path.Last(); string new_dir = entry.Source.Name; if (".." == new_dir) { if (null != vm && !vm.IsArchive) { new_dir = Path.Combine(old_dir, entry.Name); } if (vm.Path.Count > 1 && string.IsNullOrEmpty(old_dir)) { old_dir = vm.Path[vm.Path.Count - 2]; } } Trace.WriteLine(new_dir, "OpenDirectoryEntry"); int old_fs_count = VFS.Count; vm = TryCreateViewModel(new_dir); if (null == vm) { if (VFS.Count == old_fs_count) { return; } vm = new DirectoryViewModel(VFS.FullPath, new Entry[0], VFS.IsVirtual); PushViewModel(vm); } else { PushViewModel(vm); if (VFS.Count > old_fs_count && null != VFS.CurrentArchive) { SetStatusText(string.Format("{0}: {1}", VFS.CurrentArchive.Description, Localization.Format("MsgFiles", VFS.CurrentArchive.Dir.Count()))); } else { SetStatusText(""); } } if (".." == entry.Name) { lv_SelectItem(Path.GetFileName(old_dir)); } else { lv_SelectItem(0); } }
void WindowRendered() { DirectoryViewModel vm = null; try { vm = GetNewViewModel(m_app.InitPath); } catch (Exception X) { PopupError(X.Message, guiStrings.MsgErrorOpening); } if (null == vm) { vm = CreateViewModel(Directory.GetCurrentDirectory(), true); } ViewModel = vm; lv_SelectItem(0); if (!vm.IsArchive) { SetStatusText(guiStrings.MsgReady); } }
public DirectoryPosition(DirectoryViewModel vm, EntryViewModel item) { Path = vm.Path; Item = null != item ? item.Name : null; }
/// <summary> /// Save current position and update view model. /// </summary> void PushViewModel(DirectoryViewModel vm) { SaveCurrentPosition(); ViewModel = vm; }