diff --git a/I18N Commander/UI WinForms/AppEvents.cs b/I18N Commander/UI WinForms/AppEvents.cs index 5ba9c0d..dfa47aa 100644 --- a/I18N Commander/UI WinForms/AppEvents.cs +++ b/I18N Commander/UI WinForms/AppEvents.cs @@ -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: diff --git a/I18N Commander/UI WinForms/Components/Setting.cs b/I18N Commander/UI WinForms/Components/Setting.cs index 7be449f..a2be64f 100644 --- a/I18N Commander/UI WinForms/Components/Setting.cs +++ b/I18N Commander/UI WinForms/Components/Setting.cs @@ -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);