private void button_mod_Click(object sender, EventArgs e) { // set user interface into the modding state (disable buttons etc) setUIToModdingState(true); // Modding in second task to avoid UI freeze var activeMods = new List <Mod>(); //get file count of all active mods var fileCount = 0; foreach (ListViewItem modItem in activeModsListView.Items) { var mod = modItem.Tag as Mod; activeMods.Add(mod); fileCount += mod.FileCount; } Task.Factory.StartNew(() => { SetMessage(Resources.PleaseWait, Color.Black); //reset progress bar to new file count _progressBarManipulator.Reset(fileCount + 3); _progressBarManipulator.Increment(); _moddingService.Restore(); _progressBarManipulator.Increment(); var warning = false; var error = false; foreach (var mod in activeMods) { var returnValue = _moddingService.LetsMod(mod, mod.ModDirectoryInfo, new DirectoryInfo(Paths.ExePath), activeMods, _progressBarManipulator); warning = warning || returnValue == ModdingService.WARNING_CODE; error = error || returnValue == ModdingService.ERROR_CODE; //cancel when error occured if (error) { break; } } _moddingService.SaveActiveMods(_language, activeMods); _progressBarManipulator.Finish(); if (error) { SetMessage(Resources.Error, Color.Red); Helpers.ShowMessage(Resources.ModdingService_ErrorMessage, Resources.Error); } else if (warning) { SetMessage(Resources.Warning, Color.Orange); Helpers.ShowMessage(Resources.ModdingService_WarningMessage, Resources.Warning); } else { SetMessage(Resources.ModdingSuccessful, Color.Green); } // set user interface into normal state (enable buttons etc) setUIToModdingState(false); }); }
public FormMain() { InitializeComponent(); Text = string.Format(Resources.FormMainTitle, typeof(FormMain).Assembly.GetName().Version); //add imagelist to listviews var imageList = new ImageList(); imageList.Images.Add("info", Resources.InfoIcon); imageList.Images.Add("warning", Resources.WarningIcon); imageList.Images.Add("error", Resources.ErrorIcon); availableModsListView.SmallImageList = imageList; activeModsListView.SmallImageList = imageList; FormBorderStyle = FormBorderStyle.FixedSingle; //set language menu items for checking languageMenuItems.Add("cz", cestinaToolStripMenuItem); languageMenuItems.Add("de", deutschToolStripMenuItem); languageMenuItems.Add("en", englishToolStripMenuItem); languageMenuItems.Add("es", espanolToolStripMenuItem); languageMenuItems.Add("fr", francaisToolStripMenuItem); languageMenuItems.Add("it", italianoToolStripMenuItem); languageMenuItems.Add("nl", nederlandsToolStripMenuItem); languageMenuItems.Add("pl", polishToolStripMenuItem); languageMenuItems.Add("ru", russianToolStripMenuItem); //get language var appSettingsFilePath = $"{Paths.ExePath}\\{Paths.AppSettingsName}"; if (File.Exists(appSettingsFilePath)) { var json = File.ReadAllText(appSettingsFilePath, Encoding.Default); var appSettings = JsonConvert.DeserializeObject <AppSettings>(json); _language = appSettings.Language; } setCheckOfLanguageInMenu(true); _moddingService = new ModdingService(); _progressBarManipulator = new ProgressBarManipulator(this, modProgressStatusBar); // check, if the exe is in the correct directory var correctDirectory = false; foreach (var digglesExe in Paths.DigglesExecutableNames) { if (File.Exists($"{Paths.ExePath}\\{digglesExe}")) { correctDirectory = true; break; } } //Only start, when exe is in the correct directory if (correctDirectory) { ResetStatusNote(); ReadMods(); } else { Helpers.ShowMessage(Resources.FormMain_CouldNotFindDigglesExeErrorText, Resources.Error); } }