From 3b5caff621567332cbf2e956c562c329a1a793d6 Mon Sep 17 00:00:00 2001 From: Fierelier Date: Sat, 11 Jun 2022 00:20:04 +0200 Subject: [PATCH] Allow replacing multiple files in a folder --- RPFTool/mainForm.cs | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/RPFTool/mainForm.cs b/RPFTool/mainForm.cs index b37b938..e1b4273 100644 --- a/RPFTool/mainForm.cs +++ b/RPFTool/mainForm.cs @@ -596,30 +596,53 @@ namespace RPFTool private void btn_replace_Click(object sender, EventArgs e) { - if (filelistview.SelectedObjects.Count < 1 || filelistview.SelectedObjects.Count > 1) + /*if (filelistview.SelectedObjects.Count < 1 || filelistview.SelectedObjects.Count > 1) { MessageBox.Show("Only 1 file can be selected for replacing", "Replace", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + if (filelistview.SelectedObject is RPFLib.Common.Directory) { MessageBox.Show("Cannot replace directories", "Replace", MessageBoxButtons.OK, MessageBoxIcon.Information); return; - } + }*/ + try { - var file = filelistview.SelectedObject as RPFLib.Common.File; using (var ofrm = new OpenFileDialog()) { + ofrm.Multiselect = true; + var files = 0; if (ofrm.ShowDialog(this) == DialogResult.OK) { - byte[] filebytes = System.IO.File.ReadAllBytes(ofrm.FileName); - file.SetData(filebytes); + foreach (String file in ofrm.FileNames) + { + var index = 0; + foreach (Object obj in filelistview.Objects) + { + if ((obj is RPFLib.Common.Directory) == false) + { + var listItem = filelistview.Items[index]; + if (listItem.Text == Path.GetFileName(file)) + { + var rpfFile = obj as RPFLib.Common.File; + byte[] filebytes = System.IO.File.ReadAllBytes(file); + rpfFile.SetData(filebytes); + ++files; + } + } + index++; + } + } } + + MessageBox.Show("Replaced " + files as string + " files."); + + filelistview.RefreshSelectedObjects(); + if (!this.Text.Contains("*")) + this.Text += this.Text + "*"; } - filelistview.RefreshSelectedObjects(); - if (!this.Text.Contains("*")) - this.Text += this.Text + "*"; } catch (Exception ex) {