Esempio n. 1
0
        bool targetDragDrop(object sender, DragEventArgs e)
        {
            var formats = e.Data.GetFormats();

            e.Effect = DragDropEffects.Move;

            string[] fd = (string[])e.Data.GetData(DataFormats.FileDrop); //file drop
            if (selectedTemplate != null)
            {
                return(selectedTemplate.DragDrop(fd));
            }
            else
            {
                foreach (var file in fd)
                {
                    if (Directory.Exists(file))
                    {
                        var files = SelectMultipleForm.DirSearch(file);

                        var targets = files.Select(it => Vault.RequestFileTarget(it));

                        if (targets.Count() > 1 && FileWatch.currentSession.selectedTargetType == TargetType.SINGLE_FILE)
                        {
                            cbTargetType.SelectedItem = cbTargetType.Items.Cast <object>().FirstOrDefault(iterator => iterator.ToString() == TargetType.MULTIPLE_FILE_MULTIDOMAIN);
                        }

                        lbTargets.Items.AddRange(targets.ToArray());
                    }
                    else
                    {
                        var targets = fd.Select(it => Vault.RequestFileTarget(it));

                        if (targets.Count() > 1 && FileWatch.currentSession.selectedTargetType == TargetType.SINGLE_FILE)
                        {
                            cbTargetType.SelectedItem = cbTargetType.Items.Cast <object>().FirstOrDefault(iterator => iterator.ToString() == TargetType.MULTIPLE_FILE_MULTIDOMAIN);
                        }

                        lbTargets.Items.AddRange(targets.ToArray());
                    }
                }

                return(true);
            }
        }
        internal static bool LoadTarget()
        {
            if (currentFileInfo.selectedTargetType == TargetType.SINGLE_FILE)
            {
                FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;

                string filename = Path.Combine(FileWatch.currentDir, "DOSBOX", "save", "1", "Memory");

                if (!File.Exists(filename))
                {
                    MessageBox.Show($"Could not find part of the path {filename}\n\nMake sure you have created your savestate with the button in this interface\n\nIf you changed the Save State slot, put it back to 1.");
                    return(false);
                }

                /*
                 * OpenFileDialog OpenFileDialog1;
                 * OpenFileDialog1 = new OpenFileDialog();
                 *
                 * OpenFileDialog1.Title = "Open File";
                 * OpenFileDialog1.Filter = "files|*.*";
                 * OpenFileDialog1.RestoreDirectory = true;
                 * if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
                 * {
                 *  if (OpenFileDialog1.FileName.ToString().Contains('^'))
                 *  {
                 *      MessageBox.Show("You can't use a file that contains the character ^ ");
                 *      return false;
                 *  }
                 *
                 *  filename = OpenFileDialog1.FileName;
                 * }
                 * else
                 *  return false;
                 */

                string targetId = "File|" + filename;

                CloseTarget(false);


                FileInterface fi = null;

                Action <object, EventArgs> action = (ob, ea) =>
                {
                    fi = new FileInterface(targetId, FileWatch.currentFileInfo.bigEndian, true);

                    if (FileWatch.currentFileInfo.useCacheAndMultithread)
                    {
                        fi.getMemoryDump();
                    }
                };

                Action <object, EventArgs> postAction = (ob, ea) =>
                {
                    if (fi == null || fi.lastMemorySize == null)
                    {
                        MessageBox.Show("Failed to load target");
                        S.GET <StubForm>().DisableTargetInterface();
                        return;
                    }

                    FileWatch.currentFileInfo.targetShortName = fi.ShortFilename;
                    FileWatch.currentFileInfo.targetFullName  = fi.Filename;

                    FileWatch.currentFileInfo.targetInterface = fi;
                    S.GET <StubForm>().lbTarget.Text          = targetId + "|MemorySize:" + fi.lastMemorySize.ToString();

                    if (VanguardCore.vanguardConnected)
                    {
                        UpdateDomains();
                    }

                    //Refresh the UI
                    //RefreshUIPostLoad();
                };

                S.GET <StubForm>().RunProgressBar($"Loading target...", 0, action, postAction);
            }
            else //MULTIPLE_FILE
            {
                switch (currentFileInfo.selectedTargetType)
                {
                case TargetType.MULTIPLE_FILE_SINGLEDOMAIN:
                    FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN:
                    FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN_FULLPATH:
                    FileInterface.identity = FileInterfaceIdentity.FULL_PATH;
                    break;
                }


                S.GET <SelectMultipleForm>().Close();
                var smForm = new SelectMultipleForm();
                S.SET(smForm);

                if (smForm.ShowDialog() != DialogResult.OK)
                {
                    return(false);
                }


                var mfi = (MultipleFileInterface)FileWatch.currentFileInfo.targetInterface;
                //currentTargetName = mfi.ShortFilename;
                S.GET <StubForm>().lbTarget.Text     = mfi.ShortFilename + "|MemorySize:" + mfi.lastMemorySize.ToString();
                StockpileManager_EmuSide.UnCorruptBL = null;
            }

            return(true);
        }
Esempio n. 3
0
        internal static bool InsertTargets()
        {
            if (currentSession.selectedTargetType == TargetType.SINGLE_FILE)
            {
                FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;

                string filename = null;

                OpenFileDialog OpenFileDialog1;
                OpenFileDialog1 = new OpenFileDialog();

                OpenFileDialog1.Title            = "Open File";
                OpenFileDialog1.Filter           = "files|*.*";
                OpenFileDialog1.RestoreDirectory = true;
                if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    if (OpenFileDialog1.FileName.ToString().Contains('^'))
                    {
                        MessageBox.Show("You can't use a file that contains the character ^ ");
                        return(false);
                    }

                    filename = OpenFileDialog1.FileName;
                }
                else
                {
                    return(false);
                }

                var target = Vault.RequestFileTarget(filename);

                //here we make target objects
                S.GET <StubForm>().lbTargets.Items.Clear();
                S.GET <StubForm>().lbTargets.Items.Add(target);
            }
            else //MULTIPLE_FILE
            {
                switch (currentSession.selectedTargetType)
                {
                case TargetType.MULTIPLE_FILE_SINGLEDOMAIN:
                    FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN:
                default:
                    FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN_FULLPATH:
                    FileInterface.identity = FileInterfaceIdentity.FULL_PATH;
                    break;
                }

                S.GET <SelectMultipleForm>().Close();
                var smForm = new SelectMultipleForm();
                S.SET(smForm);

                if (smForm.ShowDialog() != DialogResult.OK)
                {
                    return(false);
                }
            }

            return(true);
        }