Skip to content

Commit 997feeb

Browse files
committed
Gradient Background
1 parent 7d078f3 commit 997feeb

14 files changed

Lines changed: 267 additions & 230 deletions

File tree

Bloxstrap/App.xaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@
3939
<converters:StringFormatConverter x:Key="StringFormatConverter" />
4040
<converters:RangeConverter x:Key="RangeConverter" />
4141
<converters:EnumNameConverter x:Key="EnumNameConverter" />
42-
<converters:EnumToVisibilityConverter x:Key="EnumToVisibilityConverter" />
4342
<converters:SettingsControlTemplateSelector x:Key="SettingsControlSelector" />
44-
<converters:HexToColorConverter x:Key="HexToColorConverter" />
4543
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
4644
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter" />
4745
<converters:NumberAbbreviationConverter x:Key="NumberAbbreviationConverter" />

Bloxstrap/Models/GradientStops.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Bloxstrap.Models
2+
{
3+
public class GradientStops
4+
{
5+
public double Offset { get; set; } = 1.0;
6+
public string Color { get; set; } = "#3A7A3F";
7+
}
8+
}

Bloxstrap/Models/Persistable/Settings.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ public class Settings
6262
public BootstrapperIcon BootstrapperIcon { get; set; } = BootstrapperIcon.IconBloxstrap;
6363
public WindowsBackdrops SelectedBackdrop { get; set; } = WindowsBackdrops.Mica;
6464
public string? SelectedCustomTheme { get; set; } = null;
65+
public List<GradientStops> CustomGradientStops { get; set; } = new()
66+
{
67+
new GradientStops { Offset = 0.0, Color = "#4D5560" },
68+
new GradientStops { Offset = 0.5, Color = "#383F47" },
69+
new GradientStops { Offset = 1.0, Color = "#252A30" }
70+
};
71+
public double GradientAngle { get; set; } = 0;
6572
public string BootstrapperTitle { get; set; } = App.ProjectName;
6673
public string BootstrapperIconCustomLocation { get; set; } = "";
6774
public string DownloadingStringFormat { get; set; } = Strings.Bootstrapper_Status_Downloading + " {0} - {1}MB / {2}MB";

Bloxstrap/Resources/Strings.Designer.cs

Lines changed: 1 addition & 91 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Bloxstrap/Resources/Strings.resx

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -436,39 +436,12 @@ If not, then please report this exception through a [GitHub issue]({1}) along wi
436436
<data name="Enums.Theme.Dark" xml:space="preserve">
437437
<value>Dark</value>
438438
</data>
439-
<data name="Enums.Theme.NewDark" xml:space="preserve">
440-
<value>New Dark</value>
441-
</data>
442439
<data name="Enums.Theme.Light" xml:space="preserve">
443440
<value>Light</value>
444441
</data>
445-
<data name="Enums.Theme.Forest" xml:space="preserve">
446-
<value>Forest</value>
447-
</data>
448442
<data name="Enums.Theme.Froststrap" xml:space="preserve">
449443
<value>Froststrap</value>
450444
</data>
451-
<data name="Enums.Theme.Midnight" xml:space="preserve">
452-
<value>Midnight</value>
453-
</data>
454-
<data name="Enums.Theme.RedBlue" xml:space="preserve">
455-
<value>Red Blue</value>
456-
</data>
457-
<data name="Enums.Theme.Aqua" xml:space="preserve">
458-
<value>Aqua</value>
459-
</data>
460-
<data name="Enums.Theme.PurpleMoon" xml:space="preserve">
461-
<value>Purple Moon</value>
462-
</data>
463-
<data name="Enums.Theme.CottonCandy" xml:space="preserve">
464-
<value>Cotton Candy</value>
465-
</data>
466-
<data name="Enums.Theme.Yellow" xml:space="preserve">
467-
<value>Yellow</value>
468-
</data>
469-
<data name="Enums.Theme.Cyan" xml:space="preserve">
470-
<value>Cyan</value>
471-
</data>
472445
<data name="Enums.Theme.Pink" xml:space="preserve">
473446
<value>Pink</value>
474447
</data>
@@ -478,9 +451,6 @@ If not, then please report this exception through a [GitHub issue]({1}) along wi
478451
<data name="Enums.Theme.Orange" xml:space="preserve">
479452
<value>Orange</value>
480453
</data>
481-
<data name="Enums.Theme.Red" xml:space="preserve">
482-
<value>Red</value>
483-
</data>
484454
<data name="Enums.Theme.Blue" xml:space="preserve">
485455
<value>Blue</value>
486456
</data>
@@ -2079,7 +2049,7 @@ You can no longer use Bloxshade with Froststrap.</value>
20792049
<value>Export Settings</value>
20802050
</data>
20812051
<data name="Menu.FastFlagEditor.CleanList" xml:space="preserve">
2082-
<value>Clean FastFlag List</value>
2052+
<value>Clean List</value>
20832053
</data>
20842054
<data name="Common.LookingFor" xml:space="preserve">
20852055
<value>Looking For</value>

Bloxstrap/UI/Converters/EnumToVisibilityConverter.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

Bloxstrap/UI/Converters/HexToColorConverter.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.

Bloxstrap/UI/Elements/Base/WpfUiWindow.cs

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Windows;
22
using System.Windows.Interop;
3+
using System.Windows.Media;
34
using Wpf.Ui.Appearance;
45
using Wpf.Ui.Controls;
56
using Wpf.Ui.Mvvm.Contracts;
@@ -18,18 +19,67 @@ public WpfUiWindow()
1819

1920
public void ApplyTheme()
2021
{
21-
const int customThemeIndex = 2; // index for CustomTheme merged dictionary
22+
const int customThemeIndex = 2;
2223

23-
_themeService.SetTheme(App.Settings.Prop.Theme.GetFinal() == Enums.Theme.Light ? ThemeType.Light : ThemeType.Dark);
24+
var finalTheme = App.Settings.Prop.Theme.GetFinal();
25+
26+
_themeService.SetTheme(finalTheme == Enums.Theme.Light ? ThemeType.Light : ThemeType.Dark);
2427
_themeService.SetSystemAccent();
2528

26-
// there doesn't seem to be a way to query the name for merged dictionaries
27-
var dict = new ResourceDictionary { Source = new Uri($"pack://application:,,,/UI/Style/{Enum.GetName(App.Settings.Prop.Theme.GetFinal())}.xaml") };
28-
Application.Current.Resources.MergedDictionaries[customThemeIndex] = dict;
29+
if (finalTheme == Enums.Theme.Custom)
30+
{
31+
Application.Current.Resources["WindowBackgroundGradient"] = null;
32+
33+
double angle = App.Settings.Prop.GradientAngle;
34+
double angleRad = angle * Math.PI / 180.0;
35+
36+
double startX = 0.5 + 0.5 * Math.Cos(angleRad + Math.PI);
37+
double startY = 0.5 + 0.5 * Math.Sin(angleRad + Math.PI);
38+
double endX = 0.5 + 0.5 * Math.Cos(angleRad);
39+
double endY = 0.5 + 0.5 * Math.Sin(angleRad);
40+
41+
var customBrush = new LinearGradientBrush
42+
{
43+
StartPoint = new Point(startX, startY),
44+
EndPoint = new Point(endX, endY)
45+
};
46+
47+
foreach (var stop in App.Settings.Prop.CustomGradientStops.OrderBy(s => s.Offset))
48+
{
49+
try
50+
{
51+
var color = (Color)ColorConverter.ConvertFromString(stop.Color);
52+
customBrush.GradientStops.Add(new GradientStop(color, stop.Offset));
53+
}
54+
catch { }
55+
}
56+
57+
Application.Current.Resources["WindowBackgroundGradient"] = customBrush;
58+
59+
Application.Current.Resources["NewTextEditorBackground"] = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#59000000"));
60+
Application.Current.Resources["NewTextEditorForeground"] = new SolidColorBrush(Colors.White);
61+
Application.Current.Resources["NewTextEditorLink"] = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3A9CEA"));
62+
Application.Current.Resources["PrimaryBackgroundColor"] = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#19000000"));
63+
Application.Current.Resources["NormalDarkAndLightBackground"] = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0FFFFFFF"));
64+
Application.Current.Resources["ControlFillColorDefault"] = (Color)ColorConverter.ConvertFromString("#19000000");
65+
}
66+
else
67+
{
68+
var dict = new ResourceDictionary { Source = new Uri($"pack://application:,,,/UI/Style/{Enum.GetName(finalTheme)}.xaml") };
69+
Application.Current.Resources.MergedDictionaries[customThemeIndex] = dict;
70+
71+
Application.Current.Resources["WindowBackgroundGradient"] = null;
72+
Application.Current.Resources.Remove("NewTextEditorBackground");
73+
Application.Current.Resources.Remove("NewTextEditorForeground");
74+
Application.Current.Resources.Remove("NewTextEditorLink");
75+
Application.Current.Resources.Remove("PrimaryBackgroundColor");
76+
Application.Current.Resources.Remove("NormalDarkAndLightBackground");
77+
Application.Current.Resources.Remove("ControlFillColorDefault");
78+
}
2979

3080
#if QA_BUILD
31-
this.BorderBrush = System.Windows.Media.Brushes.Red;
32-
this.BorderThickness = new Thickness(4);
81+
this.BorderBrush = System.Windows.Media.Brushes.Red;
82+
this.BorderThickness = new Thickness(4);
3383
#endif
3484
}
3585

0 commit comments

Comments
 (0)