Fixed order of settings changed event & added app event for it

This commit is contained in:
Thorsten Sommer 2022-10-29 20:16:44 +02:00
parent 58f30240dc
commit 9c0de0edd5
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 17 additions and 7 deletions

View File

@ -4,6 +4,14 @@ namespace UI_WinForms;
internal static class AppEvents
{
#region Event: Settings were
internal static event EventHandler WhenSettingsChanged;
internal static void SettingsChanged() => WhenSettingsChanged?.Invoke(null, EventArgs.Empty);
#endregion
#region Event: Section was changed
// Section changed event which can be subscribed:

View File

@ -77,6 +77,8 @@ public sealed partial class Setting : UserControl
{
if(this.data.ChangeNeedsRestart)
this.needRestart = true;
AppEvents.SettingsChanged();
}
private void UpdateExplanation() => this.labelExplanation.Text = this.data.SettingExplanation();
@ -257,7 +259,6 @@ public sealed partial class Setting : UserControl
};
// Setup the change event handler:
dropdown.SelectedValueChanged += (sender, args) => changeTrigger();
dropdown.SelectedValueChanged += async (sender, args) => await AppSettings.SetDeepLAction(dropdown.SelectedIndex switch
{
0 => SettingDeepLAction.MANUAL,
@ -265,6 +266,7 @@ public sealed partial class Setting : UserControl
_ => SettingDeepLAction.MANUAL,
});
dropdown.SelectedValueChanged += (sender, args) => changeTrigger();
// Apply the desired layout:
dropdown.Dock = DockStyle.Fill;
@ -314,12 +316,12 @@ public sealed partial class Setting : UserControl
dropdown.SelectedIndex = currentCultureDropdownIndex;
// Setup the change event handler:
dropdown.SelectedValueChanged += (sender, args) => changeTrigger();
dropdown.SelectedValueChanged += async (sender, args) =>
{
if(dropdown.SelectedItem is ComboBoxItem selectedItem)
await AppSettings.SetDeepLSourceCultureIndex(selectedItem.CultureIndex);
};
dropdown.SelectedValueChanged += (sender, args) => changeTrigger();
// Apply the desired layout:
dropdown.Dock = DockStyle.Fill;
@ -414,7 +416,6 @@ public sealed partial class Setting : UserControl
};
// Setup the change event handler:
dropdown.SelectedValueChanged += (sender, args) => changeTrigger();
dropdown.SelectedValueChanged += async (sender, args) => await AppSettings.SetGeneratorMode(dropdown.SelectedIndex switch
{
0 => SettingGeneratorMode.AUTOMATIC,
@ -422,6 +423,7 @@ public sealed partial class Setting : UserControl
_ => SettingGeneratorMode.AUTOMATIC,
});
dropdown.SelectedValueChanged += (sender, args) => changeTrigger();
// Apply the desired layout:
dropdown.Dock = DockStyle.Fill;
@ -449,8 +451,8 @@ public sealed partial class Setting : UserControl
// Set up an checkbox:
var checkbox = new CheckBox();
checkbox.Checked = currentSetting;
checkbox.CheckedChanged += (sender, args) => changeTrigger();
checkbox.CheckedChanged += async (sender, args) => await AppSettings.SetGeneratorDotnetEnabled(checkbox.Checked);
checkbox.CheckedChanged += (sender, args) => changeTrigger();
checkbox.Text = "Enable .NET Generator";
// Apply the desired layout:
@ -486,8 +488,8 @@ public sealed partial class Setting : UserControl
// Set up a textbox:
var textbox = new TextBox();
textbox.Text = currentSetting;
textbox.TextChanged += (sender, args) => changeTrigger();
textbox.TextChanged += async (sender, args) => await AppSettings.SetGeneratorDotnetDestinationPath(textbox.Text);
textbox.TextChanged += (sender, args) => changeTrigger();
textbox.Dock = DockStyle.Fill;
textbox.Margin = new Padding(0, 13, 0, 13);
layout.Controls.Add(textbox, 0, 0);
@ -536,8 +538,8 @@ public sealed partial class Setting : UserControl
// Set up an checkbox:
var checkbox = new CheckBox();
checkbox.Checked = currentSetting;
checkbox.CheckedChanged += (sender, args) => changeTrigger();
checkbox.CheckedChanged += async (sender, args) => await AppSettings.SetGeneratorGodotEnabled(checkbox.Checked);
checkbox.CheckedChanged += (sender, args) => changeTrigger();
checkbox.Text = "Enable Godot Generator";
// Apply the desired layout:
@ -573,8 +575,8 @@ public sealed partial class Setting : UserControl
// Set up a textbox:
var textbox = new TextBox();
textbox.Text = currentSetting;
textbox.TextChanged += (sender, args) => changeTrigger();
textbox.TextChanged += async (sender, args) => await AppSettings.SetGeneratorGodotDestinationPath(textbox.Text);
textbox.TextChanged += (sender, args) => changeTrigger();
textbox.Dock = DockStyle.Fill;
textbox.Margin = new Padding(0, 13, 0, 13);
layout.Controls.Add(textbox, 0, 0);