diff options
Diffstat (limited to 'TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs')
| -rw-r--r-- | TimeHACK.Main/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs | 131 |
1 files changed, 97 insertions, 34 deletions
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<FileSystemFolderInfo>(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<FileSystemFolderInfo>(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<FileSystemFolderInfo>(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<FileSystemFolderInfo>(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) |
