private async void SaveButton_OnClick(object sender, RoutedEventArgs e) { SaveButton.IsEnabled = false; try { Cursor = Cursors.Wait; StatsTab.SaveEdits(); AbilitiesTab.SaveEdits(); TraitsTab.SaveEdits(); TalentTab.SaveEdits(); // progress indicator var progressIndicator = new ProgressIndicator("Saving", false) { Owner = Application.Current.MainWindow }; var progress = new Progress <string>(); progress.ProgressChanged += (o, s) => { progressIndicator.ProgressText = s; }; progressIndicator.Show(); // apply changes Savegame.Players = EditingPlayers; await Savegame.WriteEditsToLsxAsync(progress); // pack up files await Savegame.PackSavegameAsync(progress); progressIndicator.ProgressText = "Successful."; progressIndicator.CanCancel = true; progressIndicator.CancelButtonText = "Close"; DialogResult = true; } catch (Exception ex) { SaveButton.IsEnabled = true; var er = new ErrorReporting($"Failed to save changes.\n\n{ex}", null); er.ShowDialog(); } finally { Cursor = Cursors.Arrow; SaveButton.IsEnabled = true; } }
private void SavePlayer_OnClick(object sender, RoutedEventArgs e) { SavePlayer.IsEnabled = false; try { StatsTab.SaveEdits(); AbilitiesTab.SaveEdits(); TraitsTab.SaveEdits(); TalentTab.SaveEdits(); MessageBox.Show(this, "Changes have been applied to the selected character.", "Successful"); } catch (Exception ex) { SavePlayer.IsEnabled = true; var er = new ErrorReporting($"Failed to save changes.\n\n{ex}", null); er.ShowDialog(); } finally { SavePlayer.IsEnabled = true; } }