diff --git a/src/DesktopMagic/Helpers/SettingElementGenerator.cs b/src/DesktopMagic/Helpers/SettingElementGenerator.cs index c4c7810..3327a7b 100644 --- a/src/DesktopMagic/Helpers/SettingElementGenerator.cs +++ b/src/DesktopMagic/Helpers/SettingElementGenerator.cs @@ -206,7 +206,8 @@ internal class SettingElementGenerator(ComboBox optionsComboBox) { try { - eComboBox.Value = comboBox.SelectedItem.ToString() ?? string.Empty; + comboBox.SelectedItem ??= eComboBox.Value; + eComboBox.Value = comboBox.SelectedItem?.ToString() ?? eComboBox.Value; } catch (Exception ex) { diff --git a/src/DesktopMagic/Plugins/PluginWindow.xaml.cs b/src/DesktopMagic/Plugins/PluginWindow.xaml.cs index 2db73c5..097ee17 100644 --- a/src/DesktopMagic/Plugins/PluginWindow.xaml.cs +++ b/src/DesktopMagic/Plugins/PluginWindow.xaml.cs @@ -1,6 +1,7 @@ using DesktopMagic.Api; using DesktopMagic.Api.Drawing; using DesktopMagic.Api.Settings; +using DesktopMagic.DataContexts; using DesktopMagic.Helpers; using DesktopMagic.Plugins; using DesktopMagic.Settings; @@ -250,9 +251,15 @@ public partial class PluginWindow : Window { SetHorizontalAlignment(); SetVerticalAlignment(); + SetThemeOverride(); + SetThemeOverrideItems(); pluginClassInstance.horizontalAlignment.OnValueChanged += SetHorizontalAlignment; pluginClassInstance.verticalAlignment.OnValueChanged += SetVerticalAlignment; + pluginClassInstance.themeOverride.OnValueChanged += SetThemeOverride; + + DesktopMagicSettings desktopMagicSettings = MainWindowDataContext.GetSettings(); + desktopMagicSettings.Themes.CollectionChanged += (s, e) => SetThemeOverrideItems(); }); void SetVerticalAlignment() @@ -282,6 +289,31 @@ public partial class PluginWindow : Window viewBox.HorizontalAlignment = horizontalAlignment; border.HorizontalAlignment = horizontalAlignment; } + + void SetThemeOverride() + { + if (pluginClassInstance.themeOverride.Value == "") + { + settings.CurrentThemeName = null; + } + else + { + settings.CurrentThemeName = pluginClassInstance.themeOverride.Value; + } + } + + void SetThemeOverrideItems() + { + DesktopMagicSettings desktopMagicSettings = MainWindowDataContext.GetSettings(); + + pluginClassInstance.themeOverride.Items.Clear(); + pluginClassInstance.themeOverride.Items.Add(""); + + foreach (Theme theme in desktopMagicSettings.Themes) + { + pluginClassInstance.themeOverride.Items.Add(theme.Name); + } + } } private void LoadOptions(object instance) diff --git a/src/DesktopMagicPluginAPI/Plugin.cs b/src/DesktopMagicPluginAPI/Plugin.cs index eaaa47e..911db6c 100644 --- a/src/DesktopMagicPluginAPI/Plugin.cs +++ b/src/DesktopMagicPluginAPI/Plugin.cs @@ -17,6 +17,9 @@ public abstract class Plugin [Setting("desktopmagic-vertical-alignment", "Vertical Alignment", -998)] internal ComboBox verticalAlignment = new ComboBox("Center", "Top", "Bottom"); + [Setting("theme-override", "Theme Override", -997)] + internal ComboBox themeOverride = new ComboBox(""); + private IPluginData application = null!; ///