From 5518ea598d865bbd8ea641b16c9663db518dd137 Mon Sep 17 00:00:00 2001 From: KillzXGaming Date: Mon, 18 Nov 2019 21:10:54 -0500 Subject: [PATCH] Archive editing improvements. Add file/folder clearing on folders and archive. Add folder replacing. --- .../Interfaces/FileFormatting/IArchiveFile.cs | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs b/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs index aa086a3f..7ffb4e5b 100644 --- a/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs +++ b/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs @@ -308,6 +308,7 @@ namespace Toolbox.Library new STToolStripSeparator(), new STToolStripItem("Add Folder", AddFolderAction) { Enabled = ArchiveFile.CanAddFiles}, new STToolStripItem("Add File", AddFileAction) { Enabled = ArchiveFile.CanAddFiles}, + new STToolStripItem("Clear Files", ClearAction) { Enabled = ArchiveFile.CanDeleteFiles}, }; var toolStripList = ToolStrips.ToList(); @@ -319,6 +320,16 @@ namespace Toolbox.Library return toolStripList.ToArray(); } + private void ClearAction(object sender, EventArgs args) + { + //Clear all nodes + for (int i = 0; i < FileNodes.Count; i++) + ArchiveFile.DeleteFile(FileNodes[i].Item1); + + Nodes.Clear(); + FileNodes.Clear(); + } + private void AddFolderAction(object sender, EventArgs args) { Nodes.Add(new ArchiveFolderNodeWrapper("NewFolder", ArchiveFile, this)); @@ -669,6 +680,7 @@ namespace Toolbox.Library new STToolStripSeparator(), new STToolStripItem("Add Folder", AddFolderAction) { Enabled = ArchiveFile.CanAddFiles }, new STToolStripItem("Add File", AddFileAction) { Enabled = ArchiveFile.CanAddFiles }, + new STToolStripItem("Clear Files", ClearAction) { Enabled = ArchiveFile.CanDeleteFiles }, }; } @@ -688,6 +700,17 @@ namespace Toolbox.Library } } + private void ClearAction(object sender, EventArgs args) + { + foreach (var node in TreeViewExtensions.Collect(Nodes)) + { + if (node is ArchiveFileWrapper) + ArchiveFile.DeleteFile(((ArchiveFileWrapper)node).ArchiveFileInfo); + } + + Nodes.Clear(); + } + public override void OnClick(TreeView treeView) { STPropertyGrid editor = (STPropertyGrid)LibraryGUI.GetActiveContent(typeof(STPropertyGrid)); @@ -733,8 +756,21 @@ namespace Toolbox.Library } } - private void ReplaceAction(object sender, EventArgs args) - { + private void ReplaceAction(object sender, EventArgs args) { + //Add folders and files from selected path + FolderSelectDialog ofd = new FolderSelectDialog(); + if (ofd.ShowDialog() == DialogResult.OK) { + //Clear all nodes + foreach (var node in TreeViewExtensions.Collect(Nodes)) + { + if (node is ArchiveFileWrapper) + ArchiveFile.DeleteFile(((ArchiveFileWrapper)node).ArchiveFileInfo); + } + + Nodes.Clear(); + + TreeHelper.AddFiles(this, RootNode, Directory.GetFiles(ofd.SelectedPath)); + } } private void DeleteAction(object sender, EventArgs args) {