Ejemplo n.º 1
0
        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
Ejemplo n.º 2
0
        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;
                    }
                }
            }
        }