private void treeView_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node != null && e.Node.Tag != null) { if (e.Node.Tag.GetType() == typeof(fileStructure)) { fileStructure folder = e.Node.Tag as fileStructure; fileSwapCode.Text = folder.Path; } else { subFile file = e.Node.Tag as subFile; fileSwapCode.Text = file.name + "\nLength: " + file.Length.ToString() + " bytes"; } } else { fileSwapCode.Text = ""; } }
public void addFile(String name, int tag) { subFile nSF = new subFile(name, tag, this); subFiles.Add(nSF); }
private void extractToolStripMenuItem_Click(object sender, EventArgs e) { if (treeView.SelectedNode == null || treeView.SelectedNode.Tag == null) { return; } if (treeView.SelectedNode.Tag.GetType() == typeof(fileStructure)) { fileStructure folder = treeView.SelectedNode.Tag as fileStructure; using (FolderBrowserDialog sfd = new FolderBrowserDialog()) { sfd.Description = "Select folder to be root of extracting " + folder.name; sfd.SelectedPath = last_folder; if (sfd.ShowDialog() == DialogResult.OK) { last_folder = sfd.SelectedPath; Queue <fileStructure> fs = new Queue <fileStructure>(); List <KeyValuePair <String, String> > files = new List <KeyValuePair <String, String> >(); fs.Enqueue(folder); while (fs.Count > 0) { fileStructure current = fs.Dequeue(); foreach (var item in current.GetFiles()) { String path = sfd.SelectedPath + item.Path.Substring(folder.Path.Length); if (!File.Exists(path)) { files.Add(new KeyValuePair <String, String>(item.Path, path)); } } foreach (var item in current.GetFolders()) { fs.Enqueue(item); Directory.CreateDirectory(sfd.SelectedPath + item.Path.Substring(folder.Path.Length)); } } ExtractFile(files); } } } else { subFile file = treeView.SelectedNode.Tag as subFile; using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Title = "Extract file " + file.name; sfd.Filter = "All Files (*.*)|*.*"; sfd.FileName = file.name; if (sfd.ShowDialog() == DialogResult.OK) { ExtractFile(new KeyValuePair <String, String>[] { new KeyValuePair <String, String>(file.Path, sfd.FileName) }); } } } }
public void addFile(string name, int tag, uint length) { subFile nSF = new subFile(name, tag, length, this); subFiles.Add(nSF); }