private void Button_Start_Click(object sender, RoutedEventArgs e)
        {
            // Show progress window
            progress                   = new InProgress();
            progress.mainWindow        = this;
            progress.Text_Plugin.Text  = GetPluginName();
            progress.Text_Version.Text = engineVersion;
            progress.Show();
            progress.bZip = Check_Zip.IsChecked.Value;
            Hide();

            FireUpBackgroundWorker();
        }
        private void Button_StartAll_Click(object sender, RoutedEventArgs e)
        {
            waiting_progress.Clear();

            // Find each valid ini
            if (Directory.Exists(GetConfigDirectory()))
            {
                string[] iniFiles = Directory.GetFiles(GetConfigDirectory(), "*.ini");

                foreach (string i in iniFiles)
                {
                    if (File.Exists(i))
                    {
                        // Remove the directory path
                        string fileVersion = i.Split('\\').Last();
                        // Remove the extension
                        fileVersion = fileVersion.Split('.').First();

                        // Change to next ini
                        LoadEngineVersion(fileVersion, false);

                        if (Button_Start.IsEnabled)
                        {
                            // Valid ini, create progress window
                            // Show progress window
                            InProgress newProgress = new InProgress();
                            newProgress.mainWindow        = this;
                            newProgress.Text_Plugin.Text  = GetPluginName();
                            newProgress.Text_Version.Text = engineVersion;
                            newProgress.bZip = Check_Zip.IsChecked.Value;

                            waiting_progress.Add(new WaitingProgress(newProgress, fileVersion));
                        }
                    }
                }
            }

            Check_Waiting_Progress();
        }
        public void Check_Waiting_Progress()
        {
            if (!bw.IsBusy)
            {
                // Remove completed progress
                if (progress != null && waiting_progress.Count > 0)
                {
                    WaitingProgress pr            = waiting_progress[0];
                    bool            bFoundRemoval = false;
                    for (int i = 0; i < waiting_progress.Count; i++)
                    {
                        pr = waiting_progress[i];
                        if (progress == pr.Progress)
                        {
                            bFoundRemoval = true;
                            break;
                        }
                    }

                    if (bFoundRemoval)
                    {
                        waiting_progress.Remove(pr);
                    }
                }

                // Begin next progress
                if (waiting_progress.Count > 0)
                {
                    progress = waiting_progress.First().Progress;
                    progress.Show();
                    Hide();

                    LoadEngineVersion(waiting_progress.First().EngineVersion, false);

                    FireUpBackgroundWorker();
                }
            }
        }
 public WaitingProgress(InProgress progress, string engineVersion)
 {
     Progress      = progress;
     EngineVersion = engineVersion;
 }