public static void ImportFiles(DirectoryEntry entry) { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Multiselect = true; if (fileDialog.ShowDialog() == DialogResult.OK) { foreach (String file in fileDialog.FileNames) { if (entry.GetEntries().Any(e => e.Name == Path.GetFileName(file))) { // TODO: Ask for overwrite MessageBox.Show(String.Format("Error: file {0} already exists.", Path.GetFileName(file))); return; } } foreach (String file in fileDialog.FileNames) { // TODO: add resources, decide if to compress or not, all by extentions. // Right now all regular files compressed by default RegularFileEntry addedFile = new RegularFileEntry(Path.GetFileName(file), new ExternalFileStreamCreator(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)), true); entry.AddEntry(addedFile); if (entry.FilesListView != null) { entry.FilesListView.Items.Add(new EntryListViewItem(addedFile)); } } } }
public static void ExportFolder(DirectoryEntry entry) { string selectedFolder = GUI.FolderSelection(); if (selectedFolder != null) { entry.Export(selectedFolder); } }
public static void DeleteFolder(DirectoryEntry entry, bool force = true) { if (force || MessageBox.Show(String.Format("Are you sure you want to delete the folder '{0}'?", entry.Name), "Delete Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { entry.Parent.RemoveEntry(entry); entry.Node.Remove(); } }
public static void SelectAll(DirectoryEntry entry) { if (entry.FilesListView != null) { foreach (ListViewItem item in entry.FilesListView.Items) { item.Selected = true; } } }
public static EntryTreeNode GetTreeNodes(DirectoryEntry entry) { List<EntryTreeNode> children = new List<EntryTreeNode>(); foreach (Entry childEntry in entry.GetEntries()) { if (childEntry is DirectoryEntry) { children.Add(GetTreeNodes(childEntry as DirectoryEntry)); } } return new EntryTreeNode(entry, children.ToArray()); }
public static void NewFolder(DirectoryEntry entry) { string name = "New Folder"; int i = 1; for (; entry.GetEntries().Any(e => e.Name == name); ++i, name = String.Format("New Folder ({0})", i)) ; DirectoryEntry addedFolder = new DirectoryEntry(name, new List<Entry>()); entry.AddEntry(addedFolder); entry.Node.Nodes.Add(new EntryTreeNode(addedFolder, new EntryTreeNode[]{})); if (!entry.Node.IsExpanded) { entry.Node.Expand(); } addedFolder.Node.TreeView.SelectedNode = addedFolder.Node; addedFolder.Node.TreeView.LabelEdit = true; addedFolder.Node.BeginEdit(); }
public static void ForceDeleteFolder(DirectoryEntry entry) { DeleteFolder(entry); }
public static void AskDeleteFolder(DirectoryEntry entry) { DeleteFolder(entry, false); }
public EntryTreeNode(DirectoryEntry entry, EntryTreeNode[] children) : base(entry.Filename, children) { this.Entry = entry; }
public static void ImportFolder(DirectoryEntry entry) { string folder = GUI.FolderSelection(); }
private void UpdateFilesList(bool clear = true) { DirectoryEntry dirEntry = (filesTree.SelectedNode == null) ? null : (filesTree.SelectedNode as EntryTreeNode).Entry; if (LastSelectedEntry != dirEntry) { if (LastSelectedEntry != null) { LastSelectedEntry.FilesListView = filesList; } if (dirEntry != null) { dirEntry.FilesListView = filesList; } LastSelectedEntry = dirEntry; } if (clear) { filesList.Items.Clear(); if (filesTree.SelectedNode != null) { foreach (Entry entry in (filesTree.SelectedNode as EntryTreeNode).Entry.GetEntries()) { if (entry is FileEntry) { filesList.Items.Add(new EntryListViewItem(entry as FileEntry)); } } } } else if (filesTree.SelectedNode == null) { filesList.Items.Clear(); } else { HashSet<string> seenItems = new HashSet<string>(); // find the changes foreach (EntryListViewItem item in filesList.Items) { if (!(filesTree.SelectedNode as EntryTreeNode).Entry.GetEntries().Any(entry => entry == item.Entry)) { filesList.Items.Remove(item); } else { item.Update(); seenItems.Add(item.Entry.Name); } } foreach (Entry entry in (filesTree.SelectedNode as EntryTreeNode).Entry.GetEntries()) { if (entry is FileEntry) { if (!seenItems.Any(name => name == entry.Name)) { filesList.Items.Add(new EntryListViewItem(entry as FileEntry)); } } } } }
public EntryTreeNode(DirectoryEntry entry, EntryTreeNode[] children) : base(entry.Name, children) { this.Entry = entry; entry.Node = this; }
public static void RenameFolder(DirectoryEntry entry) { entry.Node.TreeView.LabelEdit = true; entry.Node.BeginEdit(); }