private void btnExtract_Click(object sender, EventArgs e) { if (ExtractionInProgress) { return; } ExtractionInProgress = true; try { FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.Description = "Select location to extract to..."; if (fbd.ShowDialog() != DialogResult.OK) { return; } List <Manifest.Entry> Entries = new List <Manifest.Entry>(); ExtractionRun Extraction = new ExtractionRun(Project); if (CurrentView.SelectedItems.Count > 0) { foreach (ListViewItem Item in CurrentView.SelectedItems) { Entries.Add((Manifest.Entry)Item.Tag); } Extraction.Run(Entries, Utility.StripTrailingSlash(fbd.SelectedPath)); } else if (ArchiveTree.SelectedNode != null) { Manifest.Folder Top = ArchiveTree.SelectedNode.Tag as Manifest.Folder; Entries.Add(Top); Extraction.Run(Entries, Utility.StripTrailingSlash(fbd.SelectedPath)); } } catch (CancelException) { } catch (Exception ex) { # if DEBUG MessageBox.Show(ex.ToString()); # else
private void CurrentView_DoubleClick(object sender, EventArgs e) { if (CurrentView.SelectedItems.Count == 1) { ListViewItem ClickedItem = CurrentView.SelectedItems[0]; if (ClickedItem != null && ClickedItem.Tag is Manifest.Folder) { Manifest.Folder Folder = (Manifest.Folder)ClickedItem.Tag; TreeNode MatchingNode = TreeByPath[Folder.RelativePath]; ArchiveTree.SelectedNode = MatchingNode; } else if (ClickedItem != null && ClickedItem.Tag is Manifest.File) { Manifest.File File = (Manifest.File)ClickedItem.Tag; if (ExtractionInProgress) { return; } ExtractionInProgress = true; try { string TempFolder = Utility.StripTrailingSlash(Path.GetTempPath()); string TempPath = TempFolder + "\\" + File.Name; List <Manifest.Entry> Entry = new List <Manifest.Entry>(); Entry.Add(File); ExtractionRun Extraction = new ExtractionRun(Project); Extraction.Run(Entry, TempFolder); System.IO.File.SetAttributes(TempPath, System.IO.File.GetAttributes(TempPath) | FileAttributes.Temporary); System.Diagnostics.Process.Start(TempPath); } catch (CancelException) { } finally { ExtractionInProgress = false; } } } }