From d6bf61aa0ba83b19b388ea78dbc4ed103ae20b49 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 14 Aug 2022 16:11:22 +0300 Subject: [PATCH] Added new "Dark" theme, renamed previous theme to "Night" --- ShareX.HelpersLib/Helpers/Helpers.cs | 10 +++++ ShareX.HelpersLib/ShareXTheme.cs | 65 ++++++++++++++++------------ ShareX/SettingManager.cs | 50 +++++++++++---------- ShareX/Tools/OCR/OCRForm.cs | 2 +- ShareX/Tools/OCR/OCROptions.cs | 12 ----- 5 files changed, 75 insertions(+), 64 deletions(-) diff --git a/ShareX.HelpersLib/Helpers/Helpers.cs b/ShareX.HelpersLib/Helpers/Helpers.cs index ac3ab2c08..a6bf0b2d2 100644 --- a/ShareX.HelpersLib/Helpers/Helpers.cs +++ b/ShareX.HelpersLib/Helpers/Helpers.cs @@ -1002,5 +1002,15 @@ public static void LockCursorToWindow(Form form) form.Activated += (sender, e) => Cursor.Clip = form.Bounds; form.Deactivate += (sender, e) => Cursor.Clip = Rectangle.Empty; } + + public static bool IsDefaultSettings(IEnumerable current, IEnumerable source, Func predicate) + { + if (current != null && current.Count() > 0) + { + return current.All(x => source.Any(y => predicate(x, y))); + } + + return true; + } } } \ No newline at end of file diff --git a/ShareX.HelpersLib/ShareXTheme.cs b/ShareX.HelpersLib/ShareXTheme.cs index c00868da5..c06555269 100644 --- a/ShareX.HelpersLib/ShareXTheme.cs +++ b/ShareX.HelpersLib/ShareXTheme.cs @@ -152,26 +152,26 @@ public Color BorderColor private ShareXTheme() { - Name = "Dark"; - BackgroundColor = Color.FromArgb(42, 47, 56); - LightBackgroundColor = Color.FromArgb(52, 57, 65); - DarkBackgroundColor = Color.FromArgb(28, 32, 38); - TextColor = Color.FromArgb(235, 235, 235); - BorderColor = Color.FromArgb(28, 32, 38); - CheckerColor = Color.FromArgb(60, 60, 60); - CheckerColor2 = Color.FromArgb(50, 50, 50); - CheckerSize = 15; - LinkColor = Color.FromArgb(166, 212, 255); - MenuHighlightColor = Color.FromArgb(30, 34, 40); - MenuHighlightBorderColor = Color.FromArgb(116, 129, 152); - MenuBorderColor = Color.FromArgb(22, 26, 31); - MenuCheckBackgroundColor = Color.FromArgb(56, 64, 75); - ContextMenuOpacity = 100; - SeparatorLightColor = Color.FromArgb(56, 64, 75); - SeparatorDarkColor = Color.FromArgb(22, 26, 31); } - public static ShareXTheme DarkTheme => new ShareXTheme(); + public static ShareXTheme DarkTheme => new ShareXTheme() + { + Name = "Dark", + BackgroundColor = Color.FromArgb(39, 39, 39), + LightBackgroundColor = Color.FromArgb(46, 46, 46), + DarkBackgroundColor = Color.FromArgb(34, 34, 34), + TextColor = Color.FromArgb(231, 233, 234), + BorderColor = Color.FromArgb(31, 31, 31), + CheckerColor = Color.FromArgb(46, 46, 46), + CheckerColor2 = Color.FromArgb(39, 39, 39), + LinkColor = Color.FromArgb(166, 212, 255), + MenuHighlightColor = Color.FromArgb(46, 46, 46), + MenuHighlightBorderColor = Color.FromArgb(63, 63, 63), + MenuBorderColor = Color.FromArgb(63, 63, 63), + MenuCheckBackgroundColor = Color.FromArgb(51, 51, 51), + SeparatorLightColor = Color.FromArgb(44, 44, 44), + SeparatorDarkColor = Color.FromArgb(31, 31, 31) + }; public static ShareXTheme LightTheme => new ShareXTheme() { @@ -183,17 +183,34 @@ private ShareXTheme() BorderColor = Color.FromArgb(201, 201, 201), CheckerColor = Color.FromArgb(247, 247, 247), CheckerColor2 = Color.FromArgb(235, 235, 235), - CheckerSize = 15, LinkColor = Color.FromArgb(166, 212, 255), MenuHighlightColor = Color.FromArgb(247, 247, 247), MenuHighlightBorderColor = Color.FromArgb(96, 143, 226), MenuBorderColor = Color.FromArgb(201, 201, 201), MenuCheckBackgroundColor = Color.FromArgb(225, 233, 244), - ContextMenuOpacity = 100, SeparatorLightColor = Color.FromArgb(253, 253, 253), SeparatorDarkColor = Color.FromArgb(189, 189, 189) }; + public static ShareXTheme NightTheme => new ShareXTheme() + { + Name = "Night", + BackgroundColor = Color.FromArgb(42, 47, 56), + LightBackgroundColor = Color.FromArgb(52, 57, 65), + DarkBackgroundColor = Color.FromArgb(28, 32, 38), + TextColor = Color.FromArgb(235, 235, 235), + BorderColor = Color.FromArgb(28, 32, 38), + CheckerColor = Color.FromArgb(60, 60, 60), + CheckerColor2 = Color.FromArgb(50, 50, 50), + LinkColor = Color.FromArgb(166, 212, 255), + MenuHighlightColor = Color.FromArgb(30, 34, 40), + MenuHighlightBorderColor = Color.FromArgb(116, 129, 152), + MenuBorderColor = Color.FromArgb(22, 26, 31), + MenuCheckBackgroundColor = Color.FromArgb(56, 64, 75), + SeparatorLightColor = Color.FromArgb(56, 64, 75), + SeparatorDarkColor = Color.FromArgb(22, 26, 31) + }; + // https://www.nordtheme.com public static ShareXTheme NordDarkTheme => new ShareXTheme() { @@ -205,13 +222,11 @@ private ShareXTheme() BorderColor = Color.FromArgb(30, 38, 54), CheckerColor = Color.FromArgb(46, 52, 64), CheckerColor2 = Color.FromArgb(36, 42, 54), - CheckerSize = 15, LinkColor = Color.FromArgb(136, 192, 208), MenuHighlightColor = Color.FromArgb(36, 42, 54), MenuHighlightBorderColor = Color.FromArgb(24, 30, 42), MenuBorderColor = Color.FromArgb(24, 30, 42), MenuCheckBackgroundColor = Color.FromArgb(59, 66, 82), - ContextMenuOpacity = 100, SeparatorLightColor = Color.FromArgb(59, 66, 82), SeparatorDarkColor = Color.FromArgb(30, 38, 54) }; @@ -227,13 +242,11 @@ private ShareXTheme() BorderColor = Color.FromArgb(207, 216, 233), CheckerColor = Color.FromArgb(229, 233, 240), CheckerColor2 = Color.FromArgb(216, 222, 233), - CheckerSize = 15, LinkColor = Color.FromArgb(106, 162, 178), MenuHighlightColor = Color.FromArgb(236, 239, 244), MenuHighlightBorderColor = Color.FromArgb(207, 216, 233), MenuBorderColor = Color.FromArgb(216, 222, 233), MenuCheckBackgroundColor = Color.FromArgb(229, 233, 240), - ContextMenuOpacity = 100, SeparatorLightColor = Color.FromArgb(236, 239, 244), SeparatorDarkColor = Color.FromArgb(207, 216, 233) }; @@ -249,20 +262,18 @@ private ShareXTheme() BorderColor = Color.FromArgb(33, 35, 43), CheckerColor = Color.FromArgb(40, 42, 54), CheckerColor2 = Color.FromArgb(36, 38, 48), - CheckerSize = 15, LinkColor = Color.FromArgb(98, 114, 164), MenuHighlightColor = Color.FromArgb(36, 38, 48), MenuHighlightBorderColor = Color.FromArgb(255, 121, 198), MenuBorderColor = Color.FromArgb(33, 35, 43), MenuCheckBackgroundColor = Color.FromArgb(45, 47, 61), - ContextMenuOpacity = 100, SeparatorLightColor = Color.FromArgb(45, 47, 61), SeparatorDarkColor = Color.FromArgb(33, 35, 43) }; public static List GetDefaultThemes() { - return new List() { DarkTheme, LightTheme, NordDarkTheme, NordLightTheme, DraculaTheme }; + return new List() { DarkTheme, LightTheme, NightTheme, NordDarkTheme, NordLightTheme, DraculaTheme }; } public override string ToString() diff --git a/ShareX/SettingManager.cs b/ShareX/SettingManager.cs index 9fa8287fe..e2dc92ad1 100644 --- a/ShareX/SettingManager.cs +++ b/ShareX/SettingManager.cs @@ -26,7 +26,6 @@ You should have received a copy of the GNU General Public License using ShareX.HelpersLib; using ShareX.HistoryLib; using ShareX.Properties; -using ShareX.ScreenCaptureLib; using ShareX.UploadersLib; using ShareX.UploadersLib.FileUploaders; using System; @@ -192,39 +191,42 @@ public static void LoadAllSettings() private static void ApplicationConfigBackwardCompatibilityTasks() { - if (Settings.IsUpgradeFrom("11.4.1")) - { - RegionCaptureOptions regionCaptureOptions = DefaultTaskSettings.CaptureSettings.SurfaceOptions; - regionCaptureOptions.AnnotationOptions = new AnnotationOptions(); - regionCaptureOptions.LastRegionTool = ShapeType.RegionRectangle; - regionCaptureOptions.LastAnnotationTool = ShapeType.DrawingRectangle; - } - - if (Settings.IsUpgradeFrom("11.5.0")) - { - if (File.Exists(Program.ChromeHostManifestFilePath)) - { - IntegrationHelpers.CreateChromeExtensionSupport(true); - } - } - if (Settings.IsUpgradeFrom("13.0.2")) { Settings.UseCustomTheme = Settings.UseDarkTheme; } - if (Settings.IsUpgradeFrom("13.3.1") && Settings.Themes != null) - { - Settings.Themes.Add(ShareXTheme.NordDarkTheme); - Settings.Themes.Add(ShareXTheme.NordLightTheme); - Settings.Themes.Add(ShareXTheme.DraculaTheme); - } - if (Settings.IsUpgradeFrom("13.4.0")) { DefaultTaskSettings.GeneralSettings.ShowToastNotificationAfterTaskCompleted = DefaultTaskSettings.GeneralSettings.PopUpNotification != PopUpNotificationType.None; } + + if (Settings.IsUpgradeFrom("14.1.1")) + { + if (Helpers.IsDefaultSettings(Settings.Themes, ShareXTheme.GetDefaultThemes(), (x, y) => x.Name == y.Name)) + { + if (!Settings.Themes.IsValidIndex(Settings.SelectedTheme)) + { + Settings.SelectedTheme = 0; + } + + ShareXTheme selectedTheme = Settings.Themes[Settings.SelectedTheme]; + + Settings.Themes = ShareXTheme.GetDefaultThemes(); + + int index = Settings.Themes.FindIndex(x => x.Name.Equals(selectedTheme.Name, StringComparison.OrdinalIgnoreCase)); + + if (index >= 0) + { + Settings.SelectedTheme = index; + } + else + { + Settings.SelectedTheme = 0; + } + } + } } private static void MigrateHistoryFile() diff --git a/ShareX/Tools/OCR/OCRForm.cs b/ShareX/Tools/OCR/OCRForm.cs index 7c52d4b3d..fc971da76 100644 --- a/ShareX/Tools/OCR/OCRForm.cs +++ b/ShareX/Tools/OCR/OCRForm.cs @@ -84,7 +84,7 @@ public OCRForm(Bitmap bmp, OCROptions options) nudScaleFactor.SetValue((decimal)Options.ScaleFactor); cbSingleLine.Checked = Options.SingleLine; - if (Options.ServiceLinks == null || Options.IsDefaultServiceLinks()) + if (Helpers.IsDefaultSettings(Options.ServiceLinks, OCROptions.DefaultServiceLinks, (x, y) => x.Name == y.Name)) { Options.ServiceLinks = OCROptions.DefaultServiceLinks; } diff --git a/ShareX/Tools/OCR/OCROptions.cs b/ShareX/Tools/OCR/OCROptions.cs index d01cd523b..4f4a88003 100644 --- a/ShareX/Tools/OCR/OCROptions.cs +++ b/ShareX/Tools/OCR/OCROptions.cs @@ -24,7 +24,6 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) using System.Collections.Generic; -using System.Linq; namespace ShareX { @@ -38,17 +37,6 @@ public class OCROptions public List ServiceLinks { get; set; } = DefaultServiceLinks; public int SelectedServiceLink { get; set; } = 0; - public bool IsDefaultServiceLinks() - { - if (ServiceLinks != null && ServiceLinks.Count > 0) - { - List defaultServiceLinks = DefaultServiceLinks; - return ServiceLinks.All(x => defaultServiceLinks.Any(y => x.Name == y.Name)); - } - - return false; - } - public static List DefaultServiceLinks => new List() { new ServiceLink("Google Translate", "https://translate.google.com/?sl=auto&tl=en&text={0}&op=translate"),