Exemplo n.º 1
0
        private bool startSelectedProg()
        {
            refreshButtonsState();
            if (!this.startButton.Enabled)
            {
                return(false);
            }

            InfoWindow info = new InfoWindow(Localization.Strings.Preparing);

            info.Show(this);

            Prog prog = progList.Get(Int32.Parse(progsListView.SelectedItems[0].Name));

            if (prog.DiskImage.Length > 0 && !virtualDrive.IsValid)
            {
                info.Close();
                return(false);
            }

            this.Hide();
            this.trayIcon.Text    = String.Format(Localization.Strings.ProgWaitingEnd, prog.Name);
            this.trayIcon.Visible = true;
            info.Close();

            info = new InfoWindow(String.Format(Localization.Strings.DiskImageMounting, prog.DiskImage, prog.Name));
            info.Show(this);
            if (!prog.MountDiskImage(virtualDrive))
            {
                info.Close();
            }
            else
            {
                info.Close();
                info = new InfoWindow(String.Format(Localization.Strings.ProgStarting, prog.Name));
                Process proc = prog.Start();
                info.Close();
                proc.WaitForExit();


                if (prog.DiskImage.Length > 0)
                {
                    info = new InfoWindow(String.Format(Localization.Strings.DiskImageUnmounting, prog.DiskImage));
                    info.Show(this);
                    virtualDrive.Umount();
                    info.Close();
                }
            }

            this.trayIcon.Visible = false;
            refreshWindow();
            this.Show();
            return(true);
        }
Exemplo n.º 2
0
        private static int Start(string progName)
        {
            var trayIcon = new NotifyIcon {
                Icon = GUI.Properties.Resources.icon
            };
            var  progs = new ProgList();
            Prog prog;

            try
            {
                int progId = Int32.Parse(progName);
                prog = progs.Get(progId);
            }
            catch (FormatException)
            {
                prog = progs.Get(progName);
            }

            if (prog == null || !prog.IsOK() || (prog.DiskImage.Length > 0 && !prog.DiskImageOK()))
            {
                ShowError(String.Format(Localization.Strings.ProgNotFound, progName));
                return(-1);
            }

            var info = new InfoWindow(String.Format(Localization.Strings.ProgPreparing, prog.Name));

            info.Show();

            trayIcon.Text = String.Format(Localization.Strings.ProgWaitingEnd, prog.Name);

            VirtualDrive virtualDrive = null;

            if (prog.DiskImage.Length > 0)
            {
                if (!new MainWindow().findDT())
                {
                    return(-1);
                }

                var opts = new Options();
                if (!opts.Reload())
                {
                    ShowError(Localization.Strings.OptionsError);
                    return(-1);
                }
                virtualDrive = opts.VirtualDrive;

                if (!virtualDrive.IsValid)
                {
                    info.Close();
                    ShowError(Localization.Strings.InvalidDrive + " : " + virtualDrive);
                    return(-1);
                }

                info.Close();
                info = new InfoWindow(String.Format(Localization.Strings.DiskImageMounting, prog.DiskImage, prog.Name));
                info.Show();
                if (!prog.MountDiskImage(virtualDrive))
                {
                    ShowError(Localization.Strings.ErrorMounting);
                    return(-1);
                }
            }

            info.Close();
            info = new InfoWindow(String.Format(Localization.Strings.ProgStarting, prog.Name));
            info.Show();

            Process proc = prog.Start();

            trayIcon.Visible = true;
            info.Close();
            proc.WaitForExit();
            trayIcon.Visible = false;

            if (virtualDrive != null && virtualDrive.IsValid)
            {
                info = new InfoWindow(Localization.Strings.DiskImageUnmounting);
                info.Show();
                virtualDrive.Umount();
                info.Close();
            }
            return(0);
        }