diff options
| author | lempamo <[email protected]> | 2017-08-23 13:38:40 -0400 |
|---|---|---|
| committer | lempamo <[email protected]> | 2017-08-23 13:38:40 -0400 |
| commit | 3306d36ecbc024775972e5cf7971b2a7a70671d0 (patch) | |
| tree | 0a79e67b6723a8c75ffd66c7828bdd0ebb1bf74d /Histacom2/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs | |
| parent | 99fef5c57360f07259fc86f433bed8a9ab59c48e (diff) | |
| download | histacom2-3306d36ecbc024775972e5cf7971b2a7a70671d0.tar.gz histacom2-3306d36ecbc024775972e5cf7971b2a7a70671d0.tar.bz2 histacom2-3306d36ecbc024775972e5cf7971b2a7a70671d0.zip | |
Renaming the game!
Diffstat (limited to 'Histacom2/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs')
| -rw-r--r-- | Histacom2/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs | 1083 |
1 files changed, 1083 insertions, 0 deletions
diff --git a/Histacom2/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs b/Histacom2/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs new file mode 100644 index 0000000..2d82f75 --- /dev/null +++ b/Histacom2/OS/Win98/Win98Apps/WinClassicWindowsExplorer.cs @@ -0,0 +1,1083 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static Histacom2.Engine.SaveSystem; +using System.IO; +using Histacom2.Engine; +using Newtonsoft.Json; +using Histacom2.Engine.Template; + +namespace Histacom2.OS.Win95.Win95Apps +{ + public partial class WinClassicWindowsExplorer : UserControl + { + public bool IsFileOpenDialog = false; + public bool IsFileSaveDialog = false; + public string onlyViewExtension = ""; + + string ToReplaceWith = ProfileDirectory; + public string CurrentDirectory = ProfileMyComputerDirectory; + string OldLabelText; + string CurrentCopyFile; + int fileType = 6; + //string attemptedDirectory = ""; + WindowManager wm = new WindowManager(); + + public WinClassicWindowsExplorer() + { + InitializeComponent(); + } + + void WinClassicWindowsExplorer_Load(object sender, EventArgs e) + { + if (SaveSystem.CurrentSave.CurrentOS == "2000") + { + pnlInfo.Width = 200; + txtInfoTitle.Font = new Font(TitleScreen.pfc.Families[0], 16F, FontStyle.Regular, GraphicsUnit.Point, ((0))); + } + + diskView.ImageList = new ImageList(); + + diskView.ImageList.Images.Add(Properties.Resources.Win95DesktopIcon); + diskView.ImageList.Images.Add(Properties.Resources.Win95HardDiskIcon); + diskView.ImageList.Images.Add(Properties.Resources.WinClassicFolderSmall); + diskView.ImageList.Images.Add(Properties.Resources.WinClassicOpenFolderSmall); + diskView.ImageList.Images.Add(Properties.Resources.Win95ControlPanelIcon); + diskView.ImageList.Images.Add(Properties.Resources.Win95PrintersFolder); + diskView.ImageList.Images.Add(Properties.Resources.Win95ComputerIcon); + diskView.ImageList.Images.Add(Properties.Resources.Win95NetworkIcon); + diskView.ImageList.Images.Add(Properties.Resources.Win95RecycleIcon); + + program.BringToFront(); + + //diskView.Items.Add("My Computer", 0); + Application.DoEvents(); + + RefreshAll(); + RefreshTreeNode(); + + if (FileDialogBoxManager.IsInOpenDialog) + { + IsFileOpenDialog = true; + } + else if (FileDialogBoxManager.IsInSaveDialog) + { + IsFileSaveDialog = true; + } + + if (IsFileOpenDialog == true) + { + pnlSave.Show(); + Button1.Text = "Open"; + } + else + { + if (IsFileSaveDialog == true) + { + pnlSave.Show(); + Button1.Text = "Save"; + } + } + + onlyViewExtension = FileDialogBoxManager.OnlyViewExtension; + } + + //'Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) + //' mainView.Items.Clear() + //' Dim childamount As TreeNodeCollection + //' childamount = TreeView1.SelectedNode.Nodes + //' lblamountofobjects.Text = (childamount.Count & " objects(s)") + //' For Each TreeNode In TreeView1.SelectedNode.Nodes + //' If TreeNode.tag = "file" Then + //' TreeNode.forecolor = TreeView1.BackColor + //' End If + //' mainView.Items.Add(TreeNode.text) + //' Next + //'End Sub + + string ReadDataFile(string reqDirectory, bool returnYesIfProtected = false) { + string Val = ""; + string directoryFileInfo; + directoryFileInfo = File.ReadAllText(Path.Combine(reqDirectory, "_data.info")); + FileSystemFolderInfo toRead = new FileSystemFolderInfo(); + toRead = JsonConvert.DeserializeObject<FileSystemFolderInfo>(directoryFileInfo); + + if (returnYesIfProtected == true) + { + if (toRead.IsProtected == true) + { + return "yes"; + } + } + else + { + return toRead.Label; + } + return Val; + } + + void RefreshAll() { + try { + + this.mainView.Items.Clear(); + + // Update the WebView + + if (CurrentDirectory == SaveSystem.ProfileMyComputerDirectory) + { + pictureBox1.Image = Properties.Resources.Win95HardDiskIcon; + } else if (CurrentDirectory == SaveSystem.ProfileFileSystemDirectory) { + pictureBox1.Image = Properties.Resources.Win95Computer; + } else { + pictureBox1.Image = Properties.Resources.WinClassicFolder; + } + + txtInfoTip.Show(); + InfoDesc.Hide(); + + string weblabel = ReadDataFile(CurrentDirectory, false); + + txtInfoTitle.Text = weblabel ?? new FileInfo(CurrentDirectory).Name; + foreach (string str in Directory.GetDirectories(CurrentDirectory)) + { + string label = ReadDataFile(str, false); + ListViewItem itm = this.mainView.Items.Add(label ?? Path.GetFileName(str)); + itm.ImageKey = str; + } + foreach (string str in Directory.GetFiles(CurrentDirectory)) + { + // Get the app Icon + + //int AppIcon = 2; + + //switch (new FileInfo(str).Extension) + //{ + // case ".exe": + // string contents; + + // contents = File.ReadAllText(str); + + // switch (contents.ToLower()) + // { + // case "calc": + // AppIcon = 3; + // break; + // case "explorer": + // AppIcon = 4; + // break; + // } + // break; + //} + + + + if (IsFileOpenDialog == true || IsFileSaveDialog == true) + { + if (!(Path.GetFileName(str) == "_data.info")) + { + if (new FileInfo(str).Extension == onlyViewExtension) + { + ListViewItem itm = this.mainView.Items.Add(Path.GetFileName(str)); + itm.Tag = str; + } + } + } else { + if (!(Path.GetFileName(str) == "_data.info")) { + ListViewItem itm = this.mainView.Items.Add(Path.GetFileName(str)); + itm.Tag = str; + } + } + } + } catch (Exception ex) { + //wm.StartInfobox95("Exploring - C:", "Error with the file explorer \n" + ex.Message, Properties.Resources.Win95Info); add illegal operation dialog here later + ((Form)this.TopLevelControl).Close(); + } + } + + void RefreshTreeNode() + { + // Refresh the TreeView + + diskView.Nodes.Clear(); + + int loc = 0; + TreeNode[] folders = new TreeNode[new DirectoryInfo(ProfileMyComputerDirectory).GetDirectories().Length]; + foreach (DirectoryInfo folder in new DirectoryInfo(ProfileMyComputerDirectory).GetDirectories()) + { + if (folder.GetDirectories().Length > 0) + { + string label = ReadDataFile(folder.FullName, false); + TreeNode[] tn = createSubDirNodes(folder); + folders[loc] = new TreeNode(label ?? folder.Name, 2, 3, tn); + folders[loc].Tag = folder.FullName; + } + else + { + string label = ReadDataFile(folder.FullName, false); + folders[loc] = new TreeNode(label ?? folder.Name, 2, 3); + folders[loc].Tag = folder.FullName; + } + loc++; + } + TreeNode[] mypcarray = new TreeNode[3]; + mypcarray[0] = new TreeNode("(C:)", 1, 1, folders); + mypcarray[1] = new TreeNode("Control Panel", 4, 4); + mypcarray[2] = new TreeNode("Printers", 5, 5); + TreeNode[] desktoparray = new TreeNode[3]; + desktoparray[0] = new TreeNode("My Computer", 6, 6, mypcarray); + desktoparray[1] = new TreeNode("Network Neighborhood", 7, 7); + desktoparray[2] = new TreeNode("Recycle Bin", 8, 8); + diskView.Nodes.Add(new TreeNode("Desktop", 0, 0, desktoparray)); + } + + public void OpenFile(string fileDir) + { + try + { + ReturnType(new FileInfo(fileDir).Extension); + switch (fileType) + { + case 1: + WinClassicNotepad np = new WinClassicNotepad(); + np.mainText.Text = FileDialogBoxManager.ReadTextFile(fileDir); + WinClassic app = wm.StartWin95(np, "Notepad", Properties.Resources.Win95IconNotepad, true, true); + + Program.AddTaskbarItem(app, app.Tag.ToString(), "Notepad", Properties.Resources.Win95IconNotepad); + + break; + case 12: + OpenApplication(FileDialogBoxManager.ReadTextFile(fileDir)); + break; + } + } catch { + } + + } + + void OpenApplication(string appname) + { + switch (appname.ToLower()) + { + case "explorer": + Engine.Template.WinClassic app = wm.StartWin95(new Win95WindowsExplorer(), "Windows Explorer", Properties.Resources.WinClassicFileExplorer, true, true); + Program.AddTaskbarItem(app, app.Tag.ToString(), "Windows Explorer", Properties.Resources.WinClassicFileExplorer); + break; + case "calc": + Engine.Template.WinClassic appCalc = wm.StartWin95(new WinClassicCalculator(), "Calculator", Properties.Resources.WinClassicCalc, true, true); + Program.AddTaskbarItem(appCalc, appCalc.Tag.ToString(), "Calculator", Properties.Resources.WinClassicCalc); + + Program.nonimportantapps.Add(appCalc); + Program.nonimportantapps[Program.nonimportantapps.Count - 1].BringToFront(); + Program.nonimportantapps[Program.nonimportantapps.Count - 1].FormClosing += new FormClosingEventHandler(Program.NonImportantApp_Closing); + + break; + case "wordpad": + Engine.Template.WinClassic appWP = wm.StartWin95(new WinClassicWordPad(), "Wordpad", Properties.Resources.WinClassicWordpad, true, true); + Program.AddTaskbarItem(appWP, appWP.Tag.ToString(), "Wordpad", Properties.Resources.WinClassicWordpad); + + Program.nonimportantapps.Add(appWP); + Program.nonimportantapps[Program.nonimportantapps.Count - 1].BringToFront(); + Program.nonimportantapps[Program.nonimportantapps.Count - 1].FormClosing += new FormClosingEventHandler(Program.NonImportantApp_Closing); + + break; + case "iebrokeninstaller": + wm.StartInfobox95("Internet Explorer Installer", "Installation Failed: The INF file was not found", InfoboxType.Error, InfoboxButtons.OK); + + break; + case "addressbook": + WinClassic appAdBk = wm.StartWin95(new WinClassicAddressBook(), "Address Book", Properties.Resources.WinClassicAddressBook, true, true); + Program.AddTaskbarItem(appAdBk, appAdBk.Tag.ToString(), "Address Book", Properties.Resources.WinClassicAddressBook); + + Program.nonimportantapps.Add(appAdBk); + Program.nonimportantapps[Program.nonimportantapps.Count - 1].BringToFront(); + Program.nonimportantapps[Program.nonimportantapps.Count - 1].FormClosing += new FormClosingEventHandler(Program.NonImportantApp_Closing); + + break; + } + } + + string ReturnType(string extension) { + string returnVal = ""; + fileType = 1; + switch (extension) { + case ".txt": + fileType = 1; + returnVal = "Text Document \n createtext"; + break; + case ".dat": + fileType = 1; + returnVal = "Text Document \n createtext"; + break; + case ".rtf": + fileType = 2; + returnVal = "Rich Text Document \n createtext"; + break; + case ".cfg": + fileType = 1; + returnVal = "Config file \n createtext"; + break; + case ".log": + fileType = 1; + returnVal = "log text file \n createtext"; + break; + case ".properties": + fileType = 1; + returnVal = "Config file \n createtext"; + break; + case ".json": + fileType = 1; + returnVal = "Config file \n createtext"; + break; + case ".doc": + fileType = 3; + returnVal = "Word Document (Old) \n word"; + break; + case ".docx": + fileType = 3; + returnVal = "Word Document \n word"; + break; + case ".docm": + fileType = 3; + returnVal = "Macro-Enabled Word Document \n word"; + break; + case ".xls": + fileType = 4; + returnVal = "Excel Spreadsheets (Old) \n excel"; + break; + case ".xlsx": + fileType = 4; + returnVal = "Excel Spreadsheets \n excel"; + break; + case ".ppt": + fileType = 5; + returnVal = "Powerpoint Presentation (Old) \n powerpoint"; + break; + case ".pptx": + fileType = 5; + returnVal = "Powerpoint Presentation \n powerpoint"; + break; + case ".pub": + fileType = 7; + returnVal = "Publisher Document \n powerpoint"; + break; + case ".xps": + fileType = 8; + returnVal = "XPS Document \n xpsview"; + break; + case ".htm": + fileType = 9; + returnVal = "HTML web page \n html"; + break; + case ".html": + fileType = 9; + returnVal = "HTML web page \n html"; + break; + case ".wps": + fileType = 10; + returnVal = "Works document \n works"; + break; + case ".wmf": + fileType = 11; + returnVal = "Windows Metafile (A picture) \n createart"; + break; + case ".emf": + fileType = 11; + returnVal = "Enhanced Metafile (A picture) \n createart"; + break; + case ".png": + fileType = 11; + returnVal = "Picture file (Portable Network Graphics) \n createart"; + break; + case ".jpg": + fileType = 11; + returnVal = "Picture file \n createart"; + break; + case ".jpeg": + fileType = 11; + returnVal = "Picture file \n createart"; + break; + case ".gif": + fileType = 12; + returnVal = "Picture file \n gifman"; + break; + case ".tif": + fileType = 11; + returnVal = "Picture file \n createart"; + break; + case ".bmp": + fileType = 11; + returnVal = "Picture file \n createart"; + break; + case ".zip": + fileType = 11; + returnVal = "Compressed ZIP file \n winrar"; + break; + case ".rar": + fileType = 11; + returnVal = "WINRAR Compressed file \n winrar"; + break; + case ".gz": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".7z": + fileType = 11; + returnVal = "7ZIP file \n 7z"; + break; + case ".ace": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".arj": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".bz2": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".gzip": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".lzh": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".tar": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".uue": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".xz": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".z": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".001": + fileType = 11; + returnVal = "WINRAR file \n winrar"; + break; + case ".exe": + fileType = 12; + returnVal = "Program \n exe"; + break; + case ".jar": + fileType = 13; + returnVal = "Java file \n java"; + break; + case ".iso": + fileType = 14; + returnVal = "CD Image file \n iso"; + break; + case ".avi": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".m4v": + fileType = 15; + returnVal = "Video (MPEG-4) \n video"; + break; + case ".mp4": + fileType = 15; + returnVal = "Video (MPEG-4) \n video"; + break; + case ".wmv": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".m2v": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".m3u": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mts": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".dv": + fileType = 15; + returnVal = "Video (Digital Video) \n video"; + break; + case ".flv": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".m1v": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".m2ts": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mkv": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mov": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mpeg4": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mpeg": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mpg": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".3gp": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".m4p": + fileType = 15; + returnVal = "Video \n video"; + break; + case ".mp2": + fileType = 21; + returnVal = "Audio \n video"; + break; + case ".mp3": + fileType = 21; + returnVal = "Audio \n video"; + break; + case ".wav": + fileType = 21; + returnVal = "Audio \n video"; + break; + case ".nls": + fileType = 16; + returnVal = "Font file \n font"; + break; + case ".dll": + fileType = 17; + returnVal = "System File \n sys"; + break; + case ".bat": + fileType = 18; + returnVal = "MS-DOS Batch file \n winterm"; + break; + case ".url": + fileType = 19; + returnVal = "Shortcut \n short"; + break; + case ".sh": + fileType = 20; + returnVal = "BASH file \n winterm"; + break; + case ".win": + fileType = 17; + returnVal = "System file \n sys"; + break; + } + return returnVal; + } + + //Private Sub windows_explorer_Closed(sender As Object, e As EventArgs) Handles Me.Closed + // IsFileDialog = False + //End Sub + + void mainView_DoubleClick(object sender, EventArgs e) + { + try + { + if (mainView.FocusedItem.Tag == null) + { // If it isn't a file + GoToDir(Path.Combine(CurrentDirectory, mainView.FocusedItem.ImageKey.ToString())); + } + else + { // If it is a file + if (IsFileOpenDialog == true || IsFileSaveDialog == true) + { + if (new FileInfo(Path.Combine(CurrentDirectory, txtSave.Text)).Extension == onlyViewExtension) + { + Program.WindowsExplorerReturnPath = Path.Combine(CurrentDirectory, txtSave.Text); + } + + + FileDialogBoxManager.IsInOpenDialog = false; + FileDialogBoxManager.IsInSaveDialog = false; + + ((Form)this.TopLevelControl).Close(); + } + else + { + OpenFile(mainView.FocusedItem.Tag.ToString()); + } + } + } catch (Exception ex) { + MessageBox.Show(ex.Message); + } + } + + void diskView_AfterSelect(object sender, EventArgs e) + { + try + { + if (diskView.SelectedNode != null) + { + if (diskView.SelectedNode.Text == "My Computer") + { + GoToDir(ProfileFileSystemDirectory); + } + else if (diskView.SelectedNode.Text == "(C:)") + { + GoToDir(ProfileMyComputerDirectory); + } + else + { + if (diskView.SelectedNode.Tag != null) + { + // It is a directory: + + try + { + GoToDir(diskView.SelectedNode.Tag.ToString()); + } + catch { } + } + } + } + } catch { + } + } + + void GoToDir(string dir) + { + mainView.Show(); + mainView.BringToFront(); + CurrentDirectory = dir; + RefreshAll(); + } + + private void FolderToolStripMenuItem_Click(object sender, EventArgs e) + { + if (File.Exists(CurrentDirectory + "\\New Folder")) { + wm.StartInfobox95("Windows Explorer", "This directory already exists", InfoboxType.Info, InfoboxButtons.OK); + } else { + Directory.CreateDirectory(Path.Combine(CurrentDirectory, "New Folder")); + SaveDirectoryInfo(CurrentDirectory, "New Folder", false, "New Folder", true); + + RefreshAll(); + } + + RefreshTreeNode(); + } + + private void Button1_Click(object sender, EventArgs e) + { + try + { + bool OpenFile = false; + if (mainView.FocusedItem != null) + { + if ((string)mainView.FocusedItem.Tag == "") + { // If it isn't a file + GoToDir(Path.Combine(CurrentDirectory, mainView.FocusedItem.Tag.ToString())); + } + else OpenFile = true; // If it is a file + } + else OpenFile = true; + if (OpenFile == true) + { + if (txtSave.Text == "") + { + wm.StartInfobox95("Windows Explorer", "Please enter a filename", InfoboxType.Info, InfoboxButtons.OK); + } + else + { + if (new FileInfo(Path.Combine(CurrentDirectory, txtSave.Text)).Extension == onlyViewExtension) + { + + Program.WindowsExplorerReturnPath = Path.Combine(CurrentDirectory, txtSave.Text); + + } + + + FileDialogBoxManager.IsInOpenDialog = false; + FileDialogBoxManager.IsInSaveDialog = false; + + ((Form)this.TopLevelControl).Close(); + } + } + } catch { + + } + } + + private void DeleteToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (!FileOrDirectoryExists(mainView.FocusedItem.ImageKey)) + { + 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); + + RefreshAll(); + RefreshTreeNode(); + } + } catch + { + RefreshAll(); + } + + } + + internal static bool FileOrDirectoryExists(string path) + { + return (Directory.Exists(path) || File.Exists(path)); + } + + private void CloseToolStripMenuItem_Click(object sender, EventArgs e) + { + ((Form)this.TopLevelControl).Close(); + } + private void AboutWindows95ToolStripMenuItem_Click(object sender, EventArgs e) + { + WindowManager wm = new WindowManager(); + wm.StartAboutBox95("Windows 98", "Microsoft Windows 98", Properties.Resources.WinClassicAbout95); + } + + private void RenameToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + // The AfterLabelEdit event will kick in after this + OldLabelText = mainView.FocusedItem.Text; + mainView.LabelEdit = true; + mainView.FocusedItem.BeginEdit(); + } catch + { + + } + } + + 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); + } + else + { + if (Directory.Exists(setText)) + { + wm.StartInfobox95("Windows Explorer", "That directory already exists.", InfoboxType.Info, InfoboxButtons.OK); + } + else + { + if (File.Exists(setText)) + { + wm.StartInfobox95("Windows Explorer", "That file already exists.", InfoboxType.Info, InfoboxButtons.OK); + } + else + { + if (Directory.Exists(mainView.FocusedItem.ImageKey)) + { + // It was a directory + + Directory.Move(mainView.FocusedItem.ImageKey, Path.Combine(CurrentDirectory, setText)); + + File.Delete(Path.Combine(CurrentDirectory, setText, "_data.info")); + + SaveDirectoryInfo(CurrentDirectory, setText, false, $"{setText}", true); + } + else + { + // It was a file + + File.Copy(mainView.FocusedItem.ImageKey, Path.Combine(CurrentDirectory, setText)); + File.Delete(mainView.FocusedItem.ImageKey); + } + } + + } + } + RefreshAll(); + RefreshTreeNode(); + } catch { + } + + } + + private TreeNode[] createSubDirNodes(DirectoryInfo folder) + { + TreeNode[] toReturn = new TreeNode[folder.GetDirectories().Length]; + int loc = 0; + foreach (DirectoryInfo fold in folder.GetDirectories()) + { + if (fold.GetDirectories().Length > 0) + { + string label = ReadDataFile(fold.FullName, false); + TreeNode[] tn = createSubDirNodes(fold); + toReturn[loc] = new TreeNode(label ?? fold.Name, 2, 3, tn); + toReturn[loc].Tag = fold.FullName; + } + else + { + string label = ReadDataFile(fold.FullName, false); + toReturn[loc] = new TreeNode(label ?? fold.Name, 2, 3); + toReturn[loc].Tag = fold.FullName; + } + loc++; + } + return toReturn; + } + + private void pictureBox1_MouseEnter(object sender, EventArgs e) + { + btnFolderClose.Image = Properties.Resources.XCross_highlighted; + } + + private void btnFolderClose_MouseLeave(object sender, EventArgs e) + { + btnFolderClose.Image = Properties.Resources.XCross; + } + + private void btnFolderClose_Click(object sender, EventArgs e) + { + FoldersToolStripMenuItem.Checked = false; + pnlFolders.Hide(); + } + + private void FoldersToolStripMenuItem_Click(object sender, EventArgs e) + { + if (FoldersToolStripMenuItem.Checked == true) + { + FoldersToolStripMenuItem.Checked = false; + pnlFolders.Hide(); + } else { + FoldersToolStripMenuItem.Checked = true; + pnlFolders.Show(); + } + } + + private void RefreshToolStripMenuItem_Click(object sender, EventArgs e) + { + RefreshAll(); + } + + private void mainView_SelectedIndexChanged(object sender, EventArgs e) + { + // This will change the web view! + + if (mainView.FocusedItem == null) + { + txtInfoTip.Show(); + InfoDesc.Hide(); + } else { + txtInfoTip.Hide(); + + if (File.Exists(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) + { + // Check if it is a regonized file - if so then in Windows 2000/ME it gives a fancy description + + bool recognized = false; + string description = ""; + + if (SaveSystem.CurrentSave.CurrentOS == "2000" || SaveSystem.CurrentSave.CurrentOS == "ME") + { + switch (File.ReadAllText(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) + { + case "explorer": + recognized = true; + description = "Insert a description here..."; + break; + } + } + + if (recognized == true) + { + // TODO: + } else { + InfoDesc.Show(); + + FileInfo fi = new FileInfo(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text)); + txtInfoDescName.Text = mainView.FocusedItem.Text; + txtInfoDescType.Text = ReturnType(fi.Extension).Split('\n')[0]; + txtInfoDescModified.Text = fi.CreationTime.ToString(); + + txtInfoDescSize.Show(); + txtInfoDescSize.Text = $"Size: {fi.Length} bytes."; + } + + } else if (Directory.Exists(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text))) { + txtInfoTip.Hide(); + InfoDesc.Show(); + + DirectoryInfo fi = new DirectoryInfo(Path.Combine(CurrentDirectory, mainView.FocusedItem.Text)); + + txtInfoDescName.Text = mainView.FocusedItem.Text; + txtInfoDescType.Text = "File Folder"; + txtInfoDescModified.Text = fi.CreationTime.ToString(); + + txtInfoDescSize.Hide(); + } + } + } + + private void CutCtrlXToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (mainView.FocusedItem != null && mainView.FocusedItem.ImageKey != "") + { + + // It is a directory + string oldLocation; + oldLocation = mainView.FocusedItem.ImageKey; + + CurrentCopyFile = Path.Combine(GameDirectory, "Data", Path.GetFileName(mainView.FocusedItem.ImageKey)); + + if (Directory.Exists(CurrentCopyFile)) Directory.Delete(CurrentCopyFile); + if (File.Exists(CurrentCopyFile)) File.Delete(CurrentCopyFile); + + Directory.Move(mainView.FocusedItem.ImageKey, Path.Combine(GameDirectory, "Data", Path.GetDirectoryName(mainView.FocusedItem.ImageKey))); + + + DirectoryCopy(CurrentCopyFile, oldLocation, true); + } + else if (mainView.FocusedItem != null) + { + // It is a file + + CurrentCopyFile = Path.Combine(GameDirectory, "Data", Path.GetFileName(mainView.FocusedItem.Tag.ToString())); + + if (Directory.Exists(CurrentCopyFile)) Directory.Delete(CurrentCopyFile); + if (File.Exists(CurrentCopyFile)) File.Delete(CurrentCopyFile); + + File.Move(mainView.FocusedItem.Tag.ToString(), Path.Combine(GameDirectory, "Data", Path.GetFileName(mainView.FocusedItem.Tag.ToString()))); + + + } + RefreshAll(); + } catch { + } + } + + private void CopyCtrlCToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (mainView.FocusedItem != null && mainView.FocusedItem.ImageKey != "") + { + // It is a directory + string oldLocation; + oldLocation = mainView.FocusedItem.ImageKey; + CurrentCopyFile = Path.Combine(GameDirectory, "Data", Path.GetFileName(mainView.FocusedItem.ImageKey)); + + if (Directory.Exists(CurrentCopyFile)) Directory.Delete(CurrentCopyFile); + if (File.Exists(CurrentCopyFile)) File.Delete(CurrentCopyFile); + + DirectoryCopy(CurrentCopyFile, oldLocation, true); + } + else if (mainView.FocusedItem != null) + { + // It is a file + + CurrentCopyFile = Path.Combine(GameDirectory, "Data", Path.GetFileName(mainView.FocusedItem.Tag.ToString())); + + if (Directory.Exists(CurrentCopyFile)) Directory.Delete(CurrentCopyFile); + if (File.Exists(CurrentCopyFile)) File.Delete(CurrentCopyFile); + + File.Copy(mainView.FocusedItem.Tag.ToString(), Path.Combine(GameDirectory, "Data", Path.GetFileName(mainView.FocusedItem.Tag.ToString()))); + + + } + RefreshAll(); + } catch { + } + } + + private void PasteToolStripMenuItem_Click(object sender, EventArgs e) + { + if (Directory.Exists(CurrentCopyFile)) + { + // It is a directory + + DirectoryCopy(CurrentCopyFile, CurrentDirectory, true); + } else if (File.Exists(CurrentCopyFile)) { + // It is a file + + File.Copy(CurrentCopyFile, Path.Combine(CurrentDirectory, Path.GetFileName(CurrentCopyFile))); + } + RefreshAll(); + } + + private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) + { + // Get the subdirectories for the specified directory. + DirectoryInfo dir = new DirectoryInfo(sourceDirName); + + if (dir.Exists) + { + DirectoryInfo[] dirs = dir.GetDirectories(); + // If the destination directory doesn't exist, create it. + if (!Directory.Exists(destDirName)) + { + Directory.CreateDirectory(destDirName); + } + + // Get the files in the directory and copy them to the new location. + FileInfo[] files = dir.GetFiles(); + foreach (FileInfo file in files) + { + string temppath = Path.Combine(destDirName, file.Name); + file.CopyTo(temppath, false); + } + + // If copying subdirectories, copy them and their contents to new location. + if (copySubDirs) + { + foreach (DirectoryInfo subdir in dirs) + { + string temppath = Path.Combine(destDirName, subdir.Name); + DirectoryCopy(subdir.FullName, temppath, copySubDirs); + } + } + } + } + + private void refresh_Tick(object sender, EventArgs e) + { + RefreshAll(); + } + + private void SellectAllCtrlAToolStripMenuItem_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in mainView.Items) + { + item.Selected = true; + } + } + } +} |
