aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Gtk3/UI/Helper/ThemeHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Gtk3/UI/Helper/ThemeHelper.cs')
-rw-r--r--src/Ryujinx.Gtk3/UI/Helper/ThemeHelper.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/Ryujinx.Gtk3/UI/Helper/ThemeHelper.cs b/src/Ryujinx.Gtk3/UI/Helper/ThemeHelper.cs
new file mode 100644
index 00000000..e1fed1c4
--- /dev/null
+++ b/src/Ryujinx.Gtk3/UI/Helper/ThemeHelper.cs
@@ -0,0 +1,36 @@
+using Gtk;
+using Ryujinx.Common;
+using Ryujinx.Common.Logging;
+using Ryujinx.UI.Common.Configuration;
+using System.IO;
+
+namespace Ryujinx.UI.Helper
+{
+ static class ThemeHelper
+ {
+ public static void ApplyTheme()
+ {
+ if (!ConfigurationState.Instance.UI.EnableCustomTheme)
+ {
+ return;
+ }
+
+ if (File.Exists(ConfigurationState.Instance.UI.CustomThemePath) && (Path.GetExtension(ConfigurationState.Instance.UI.CustomThemePath) == ".css"))
+ {
+ CssProvider cssProvider = new();
+
+ cssProvider.LoadFromPath(ConfigurationState.Instance.UI.CustomThemePath);
+
+ StyleContext.AddProviderForScreen(Gdk.Screen.Default, cssProvider, 800);
+ }
+ else
+ {
+ Logger.Warning?.Print(LogClass.Application, $"The \"custom_theme_path\" section in \"{ReleaseInformation.ConfigName}\" contains an invalid path: \"{ConfigurationState.Instance.UI.CustomThemePath}\".");
+
+ ConfigurationState.Instance.UI.CustomThemePath.Value = "";
+ ConfigurationState.Instance.UI.EnableCustomTheme.Value = false;
+ ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
+ }
+ }
+ }
+}