From bffcb720f811623015ed4795032e5c57d1064c8a Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Fri, 18 Aug 2017 21:56:48 +0100 Subject: Fixed the Rename and Delete --- .../OS/Win95/Win95Apps/Win95WindowsExplorer.cs | 132 +++++++++++++++++---- .../WinClassicWindowsExplorer.Designer.cs | 10 +- .../Win98/Win98Apps/WinClassicWindowsExplorer.cs | 131 ++++++++++++++------ 3 files changed, 209 insertions(+), 64 deletions(-) diff --git a/TimeHACK.Main/OS/Win95/Win95Apps/Win95WindowsExplorer.cs b/TimeHACK.Main/OS/Win95/Win95Apps/Win95WindowsExplorer.cs index 151dfd5..80f48dd 100644 --- a/TimeHACK.Main/OS/Win95/Win95Apps/Win95WindowsExplorer.cs +++ b/TimeHACK.Main/OS/Win95/Win95Apps/Win95WindowsExplorer.cs @@ -124,7 +124,8 @@ namespace TimeHACK.OS.Win95.Win95Apps private void RefreshAll() { - //try { + //try + //{ this.mainView.Items.Clear(); foreach (string str in Directory.GetDirectories(CurrentDirectory)) @@ -631,9 +632,7 @@ namespace TimeHACK.OS.Win95.Win95Apps OpenFile(mainView.FocusedItem.Tag.ToString()); } } - } catch (Exception ex) { - MessageBox.Show(ex.Message); - } + } catch { /* TODO: Illegal operation */ } } void diskView_AfterSelect(object sender, EventArgs e) @@ -738,10 +737,50 @@ namespace TimeHACK.OS.Win95.Win95Apps } else { - if (Directory.Exists(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) Directory.Delete(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text), true); - else File.Delete(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text)); + if (Directory.Exists(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) + { + Directory.Delete(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text), true); + + // Remove the directory now from the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THDirInfo dir in fsfi.SubDirs) + { + if (dir.Name == mainView.FocusedItem.Text) + { + // Delete it + + fsfi.SubDirs.Remove(dir); + } + } + + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi)); + } + else + { + File.Delete(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text)); + + // Remove the file now from the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THFileInfo file in fsfi.Files) + { + if (file.Name == mainView.FocusedItem.Text) + { + // Delete it + + fsfi.Files.Remove(file); + } + } + + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi)); + + } RefreshAll(); + RefreshTreeNode(); } } catch { @@ -782,37 +821,80 @@ namespace TimeHACK.OS.Win95.Win95Apps private void mainView_AfterLabelEdit(object sender, LabelEditEventArgs e) { - string setText = e.Label; - if (setText == "") wm.StartInfobox95("Rename", "You must type a filename.", InfoboxType.Error, InfoboxButtons.OK); - else + try { - if (Directory.Exists(setText)) wm.StartInfobox95("Error Renaming File", $"Cannot rename {new DirectoryInfo(setText).Name}: A file with the name you specified already exists. Specify a different filename.", InfoboxType.Error, InfoboxButtons.OK); + string setText = e.Label; + if (setText == "") wm.StartInfobox95("Rename", "You must type a filename.", InfoboxType.Error, InfoboxButtons.OK); else { - if (File.Exists(setText)) wm.StartInfobox95("Error Renaming File", $"Cannot rename {new FileInfo(setText).Name}: A file with the name you specified already exists. Specify a different filename.", InfoboxType.Error, InfoboxButtons.OK); + if (Directory.Exists(setText)) wm.StartInfobox95("Error Renaming File", $"Cannot rename {new DirectoryInfo(setText).Name}: A file with the name you specified already exists. Specify a different filename.", InfoboxType.Error, InfoboxButtons.OK); else { - if (Directory.Exists((string)mainView.FocusedItem.Tag)) + if (File.Exists(setText)) wm.StartInfobox95("Error Renaming File", $"Cannot rename {new FileInfo(setText).Name}: A file with the name you specified already exists. Specify a different filename.", InfoboxType.Error, InfoboxButtons.OK); + else { - // It was a directory + if (Directory.Exists(Path.Combine(CurrentDirectory, OldLabelText))) + { + // It was a directory - Directory.Move((string)mainView.FocusedItem.Tag, Path.Combine(CurrentDirectory, setText)); + Directory.Move(Path.Combine(CurrentDirectory, OldLabelText), Path.Combine(CurrentDirectory, setText)); - File.Delete(Path.Combine(CurrentDirectory, setText, "_data.info")); - SaveDirectoryInfo(CurrentDirectory, setText, false, setText, true); - } - else - { - // It was a file + File.Delete(Path.Combine(CurrentDirectory, setText, "_data.info")); + SaveDirectoryInfo(CurrentDirectory, setText, false, setText, true); + + // Rename the directory now in the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THDirInfo dir in fsfi.SubDirs) + { + if (dir.Name == mainView.FocusedItem.Tag.ToString()) + { + // Rename it + THDirInfo oldDirInfo = dir; + oldDirInfo.Name = Path.Combine(CurrentDirectory, setText); + + fsfi.SubDirs.Remove(dir); + fsfi.SubDirs.Add(oldDirInfo); + } + } + + File.Delete(Path.Combine(CurrentDirectory, "_data.info")); + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi)); + } + else + { + // It was a file + + File.Copy(Path.Combine(CurrentDirectory, OldLabelText), Path.Combine(CurrentDirectory, setText)); + File.Delete(Path.Combine(CurrentDirectory, OldLabelText)); + + // Rename the file now in the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THFileInfo file in fsfi.Files) + { + if (file.Name == mainView.FocusedItem.Tag.ToString()) + { + // Rename it + THFileInfo oldFileInfo = file; + oldFileInfo.Name = Path.Combine(CurrentDirectory, setText); - File.Copy((string)mainView.FocusedItem.Tag, Path.Combine(CurrentDirectory, setText)); - File.Delete((string)mainView.FocusedItem.Tag); + fsfi.Files.Remove(file); + fsfi.Files.Add(oldFileInfo); + } + } + + File.Delete(Path.Combine(CurrentDirectory, "_data.info")); + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi)); + } } } } - } - RefreshAll(); - RefreshTreeNode(); + RefreshAll(); + RefreshTreeNode(); + } catch { } } private TreeNode[] createSubDirNodes(DirectoryInfo folder) diff --git a/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.Designer.cs b/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.Designer.cs index 5914b60..20304ff 100644 --- a/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.Designer.cs +++ b/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.Designer.cs @@ -397,7 +397,7 @@ this.TextDocumentToolStripMenuItem, this.BitmapImageToolStripMenuItem}); this.CreateShortcutToolStripMenuItem.Name = "CreateShortcutToolStripMenuItem"; - this.CreateShortcutToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.CreateShortcutToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.CreateShortcutToolStripMenuItem.Text = "New"; // // FolderToolStripMenuItem @@ -422,21 +422,21 @@ // DeleteToolStripMenuItem // this.DeleteToolStripMenuItem.Name = "DeleteToolStripMenuItem"; - this.DeleteToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.DeleteToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.DeleteToolStripMenuItem.Text = "Delete"; this.DeleteToolStripMenuItem.Click += new System.EventHandler(this.DeleteToolStripMenuItem_Click); // // RenameToolStripMenuItem // this.RenameToolStripMenuItem.Name = "RenameToolStripMenuItem"; - this.RenameToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.RenameToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.RenameToolStripMenuItem.Text = "Rename"; this.RenameToolStripMenuItem.Click += new System.EventHandler(this.RenameToolStripMenuItem_Click); // // CloseToolStripMenuItem // this.CloseToolStripMenuItem.Name = "CloseToolStripMenuItem"; - this.CloseToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.CloseToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.CloseToolStripMenuItem.Text = "Close"; this.CloseToolStripMenuItem.Click += new System.EventHandler(this.CloseToolStripMenuItem_Click); // @@ -529,7 +529,7 @@ // refresh // this.refresh.Enabled = true; - this.refresh.Interval = 15000; + this.refresh.Interval = 4000; this.refresh.Tick += new System.EventHandler(this.refresh_Tick); // // WinClassicWindowsExplorer diff --git a/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs b/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs index 04f0405..c5bf384 100644 --- a/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs +++ b/TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs @@ -664,11 +664,7 @@ namespace TimeHACK.OS.Win95.Win95Apps OpenFile(mainView.FocusedItem.Tag.ToString()); } } - } - catch (Exception ex) - { - MessageBox.Show(ex.Message); - } + } catch { /* TODO: Illegal operation */ } } void diskView_AfterSelect(object sender, EventArgs e) @@ -770,23 +766,62 @@ namespace TimeHACK.OS.Win95.Win95Apps { try { - if (!FileOrDirectoryExists(mainView.FocusedItem.ImageKey)) + if (!FileOrDirectoryExists(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) { wm.StartInfobox95("Windows Explorer", "This directory doesn't exist", InfoboxType.Info, InfoboxButtons.OK); } else { - if (Directory.Exists(mainView.FocusedItem.ImageKey)) Directory.Delete(mainView.FocusedItem.ImageKey, true); - else File.Delete(mainView.FocusedItem.ImageKey); + if (Directory.Exists(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) + { + Directory.Delete(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text), true); + + // Remove the directory now from the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THDirInfo dir in fsfi.SubDirs) + { + if (dir.Name == mainView.FocusedItem.Text) + { + // Delete it + + fsfi.SubDirs.Remove(dir); + } + } + + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi, Formatting.Indented)); + } + else + { + File.Delete(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text)); + + // Remove the file now from the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THFileInfo file in fsfi.Files) + { + if (file.Name == mainView.FocusedItem.Text) + { + // Delete it + + fsfi.Files.Remove(file); + } + } + + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi, Formatting.Indented)); + + } RefreshAll(); RefreshTreeNode(); } - } catch + } + catch { RefreshAll(); } - } internal static bool FileOrDirectoryExists(string path) @@ -820,53 +855,81 @@ namespace TimeHACK.OS.Win95.Win95Apps private void mainView_AfterLabelEdit(object sender, LabelEditEventArgs e) { - try { - string setText; - setText = e.Label; - if (setText == "") - { - wm.StartInfobox95("Windows Explorer", "Please enter a new directory name", InfoboxType.Info, InfoboxButtons.OK); - } + try + { + string setText = e.Label; + if (setText == "") wm.StartInfobox95("Rename", "You must type a filename.", InfoboxType.Error, InfoboxButtons.OK); else { - if (Directory.Exists(setText)) - { - wm.StartInfobox95("Windows Explorer", "That directory already exists.", InfoboxType.Info, InfoboxButtons.OK); - } + if (Directory.Exists(setText)) wm.StartInfobox95("Error Renaming File", $"Cannot rename {new DirectoryInfo(setText).Name}: A file with the name you specified already exists. Specify a different filename.", InfoboxType.Error, InfoboxButtons.OK); else { - if (File.Exists(setText)) - { - wm.StartInfobox95("Windows Explorer", "That file already exists.", InfoboxType.Info, InfoboxButtons.OK); - } + if (File.Exists(setText)) wm.StartInfobox95("Error Renaming File", $"Cannot rename {new FileInfo(setText).Name}: A file with the name you specified already exists. Specify a different filename.", InfoboxType.Error, InfoboxButtons.OK); else { - if (Directory.Exists(mainView.FocusedItem.ImageKey)) + if (Directory.Exists(Path.Combine(CurrentDirectory, OldLabelText))) { // It was a directory - Directory.Move(mainView.FocusedItem.ImageKey, Path.Combine(CurrentDirectory, setText)); + Directory.Move(Path.Combine(CurrentDirectory, OldLabelText), Path.Combine(CurrentDirectory, setText)); File.Delete(Path.Combine(CurrentDirectory, setText, "_data.info")); + SaveDirectoryInfo(CurrentDirectory, setText, false, setText, true); - SaveDirectoryInfo(CurrentDirectory, setText, false, $"{setText}", true); + // Rename the directory now in the _data.info + + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THDirInfo dir in fsfi.SubDirs) + { + if (dir.Name == mainView.FocusedItem.Tag.ToString()) + { + // Rename it + THDirInfo oldDirInfo = dir; + oldDirInfo.Name = Path.Combine(CurrentDirectory, setText); + + fsfi.SubDirs.Remove(dir); + fsfi.SubDirs.Add(oldDirInfo); + } + } + + File.Delete(Path.Combine(CurrentDirectory, "_data.info")); + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi, Formatting.Indented)); } else { - // It was a file + // It was a file + + File.Copy(Path.Combine(CurrentDirectory, OldLabelText), Path.Combine(CurrentDirectory, setText)); + File.Delete(Path.Combine(CurrentDirectory, OldLabelText)); + + // Rename the file now in the _data.info - File.Copy(mainView.FocusedItem.ImageKey, Path.Combine(CurrentDirectory, setText)); - File.Delete(mainView.FocusedItem.ImageKey); + FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(CurrentDirectory, "_data.info"))); + + foreach (THFileInfo file in fsfi.Files) + { + if (file.Name == mainView.FocusedItem.Tag.ToString()) + { + // Rename it + THFileInfo oldFileInfo = file; + oldFileInfo.Name = Path.Combine(CurrentDirectory, setText); + + fsfi.Files.Remove(file); + fsfi.Files.Add(oldFileInfo); + } + } + + File.Delete(Path.Combine(CurrentDirectory, "_data.info")); + File.WriteAllText(Path.Combine(CurrentDirectory, "_data.info"), JsonConvert.SerializeObject(fsfi, Formatting.Indented)); } } - } } RefreshAll(); RefreshTreeNode(); - } catch { } - + catch { } } private TreeNode[] createSubDirNodes(DirectoryInfo folder) -- cgit v1.2.3