From 6f02c1e1e742fcbb16b4682030562ceec674e9db Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Sat, 31 Jan 2026 13:32:19 +1000 Subject: [PATCH] refactor set theme --- .../Features/Settings/SetTheme.cs | 26 +++++++++++++++++++ .../Features/Settings/SettingsWindow.cs | 17 +----------- 2 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 src/SharpIDE.Godot/Features/Settings/SetTheme.cs diff --git a/src/SharpIDE.Godot/Features/Settings/SetTheme.cs b/src/SharpIDE.Godot/Features/Settings/SetTheme.cs new file mode 100644 index 0000000..c78b3d4 --- /dev/null +++ b/src/SharpIDE.Godot/Features/Settings/SetTheme.cs @@ -0,0 +1,26 @@ +using Godot; + +namespace SharpIDE.Godot.Features.Settings; + +public static class SetTheme +{ + private static readonly Theme LightTheme = ResourceLoader.Load("uid://dc7l6bjhn61i5"); + private static readonly Color LightThemeClearColor = new Color("fdfdfd"); + private static readonly Theme DarkTheme = ResourceLoader.Load("uid://epmt8kq6efrs"); + private static readonly Color DarkThemeClearColor = new Color("4d4d4d"); + + public static void SetIdeTheme(this Node node, string theme) + { + var rootWindow = node.GetTree().GetRoot(); + if (theme is "Light") + { + RenderingServer.Singleton.SetDefaultClearColor(LightThemeClearColor); + rootWindow.Theme = LightTheme; + } + else if (theme is "Dark") + { + RenderingServer.Singleton.SetDefaultClearColor(DarkThemeClearColor); + rootWindow.Theme = DarkTheme; + } + } +} \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs b/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs index 8c2bf22..ac17dbc 100644 --- a/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs +++ b/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs @@ -9,11 +9,6 @@ public partial class SettingsWindow : Window private CheckButton _debuggerUseSharpDbgCheckButton = null!; private OptionButton _themeOptionButton = null!; - private Theme _lightTheme = ResourceLoader.Load("uid://dc7l6bjhn61i5"); - private Color _lightThemeClearColor = new Color("fdfdfd"); - private Theme _darkTheme = ResourceLoader.Load("uid://epmt8kq6efrs"); - private Color _darkThemeClearColor = new Color("4d4d4d"); - public override void _Ready() { CloseRequested += Hide; @@ -57,16 +52,6 @@ public partial class SettingsWindow : Window private void OnThemeItemSelected(long index) { var selectedTheme = _themeOptionButton.GetItemText((int)index); - var rootWindow = GetTree().GetRoot(); - if (selectedTheme is "Light") - { - RenderingServer.Singleton.SetDefaultClearColor(_lightThemeClearColor); - rootWindow.Theme = _lightTheme; - } - else if (selectedTheme is "Dark") - { - RenderingServer.Singleton.SetDefaultClearColor(_darkThemeClearColor); - rootWindow.Theme = _darkTheme; - } + this.SetIdeTheme(selectedTheme); } } \ No newline at end of file