From 7bb8a3e03f92d29d50b79aad18947ccadd55a30f Mon Sep 17 00:00:00 2001 From: Adrian Mateoaea <adrianmteo@gmail.com> Date: Thu, 19 Mar 2020 22:58:55 +0200 Subject: [PATCH 1/3] Update project internals --- .extra/setup-script.iss | 130 ++- Luna/App.config | 91 +- Luna/App.xaml | 68 +- Luna/App.xaml.cs | 127 ++- Luna/Controls/WindowHeader.xaml | 70 ++ Luna/Controls/WindowHeader.xaml.cs | 67 ++ Luna/Custom/AnimatedView.xaml | 78 -- Luna/Custom/AnimatedView.xaml.cs | 20 - Luna/Helpers/RegistryHandler.cs | 32 - Luna/Helpers/Rules.cs | 27 - Luna/Helpers/WallpaperHandler.cs | 27 - Luna/Luna.csproj | 363 ++++--- Luna/MainWindow.xaml | 135 --- Luna/MainWindow.xaml.cs | 124 --- Luna/Models/SettingsModel.cs | 221 ++++ Luna/Models/UpdateModel.cs | 142 +++ Luna/Properties/AssemblyInfo.cs | 109 +- Luna/Properties/Settings.Designer.cs | 304 +++--- Luna/Properties/Settings.settings | 73 +- Luna/Properties/app.manifest | 148 +-- Luna/Resources/ThemeTool.exe | Bin 0 -> 5632 bytes .../MetroDark.MSControls.Core.Implicit.xaml | 976 ++++++++++++++++++ Luna/Theme/Styles.Extended.Wpf.Toolkit.xaml | 77 ++ Luna/Theme/Styles.Shared.xaml | 774 ++++++++++++++ Luna/Theme/Styles.WPF.xaml | 827 +++++++++++++++ Luna/Theme/Theme.Colors.xaml | 104 ++ .../MetroDark.MSControls.Core.Implicit.xaml | 966 ----------------- Luna/Themes/Metro/Dark/Styles.Shared.xaml | 740 ------------- Luna/Themes/Metro/Dark/Styles.WPF.xaml | 802 -------------- Luna/Themes/Metro/Dark/Theme.Colors.xaml | 80 -- .../Light/Metro.MSControls.Core.Implicit.xaml | 939 ----------------- Luna/Themes/Metro/Light/Styles.Shared.xaml | 695 ------------- Luna/Themes/Metro/Light/Styles.WPF.xaml | 798 -------------- Luna/Themes/Metro/Light/Theme.Colors.xaml | 80 -- Luna/Utils/AutoFileSaver.cs | 89 ++ Luna/Utils/AutoUpdater.cs | 179 ++++ Luna/Utils/Converters.cs | 38 + Luna/Utils/Handlers/AppearanceHandler.cs | 56 + Luna/Utils/Handlers/RegistryHandler.cs | 43 + .../Handlers}/TaskHandler.cs | 138 ++- Luna/Utils/Handlers/ThemeHandler.cs | 50 + Luna/Utils/Handlers/WallpaperHandler.cs | 38 + Luna/Utils/JsonDownloader.cs | 36 + Luna/Utils/Logger/AbstractLogger.cs | 77 ++ Luna/Utils/Logger/AppLogger.cs | 25 + Luna/Utils/Logger/ConsoleLogger.cs | 12 + Luna/Utils/Logger/FileLogger.cs | 49 + Luna/Utils/Logger/ILogger.cs | 24 + Luna/Utils/Logger/MultiLogger.cs | 81 ++ Luna/Utils/NotifyPropertyChanged.cs | 15 + Luna/Utils/ObjectSerializer.cs | 28 + Luna/Windows/MessageWindow.xaml | 42 + Luna/Windows/MessageWindow.xaml.cs | 49 + Luna/Windows/SettingsWindow.xaml | 127 +++ Luna/Windows/SettingsWindow.xaml.cs | 122 +++ Luna/Windows/UpdateWindow.xaml | 112 ++ Luna/Windows/UpdateWindow.xaml.cs | 39 + Luna/packages.config | 8 +- 58 files changed, 5378 insertions(+), 6313 deletions(-) create mode 100644 Luna/Controls/WindowHeader.xaml create mode 100644 Luna/Controls/WindowHeader.xaml.cs delete mode 100644 Luna/Custom/AnimatedView.xaml delete mode 100644 Luna/Custom/AnimatedView.xaml.cs delete mode 100644 Luna/Helpers/RegistryHandler.cs delete mode 100644 Luna/Helpers/Rules.cs delete mode 100644 Luna/Helpers/WallpaperHandler.cs delete mode 100644 Luna/MainWindow.xaml delete mode 100644 Luna/MainWindow.xaml.cs create mode 100644 Luna/Models/SettingsModel.cs create mode 100644 Luna/Models/UpdateModel.cs create mode 100644 Luna/Resources/ThemeTool.exe create mode 100644 Luna/Theme/MetroDark.MSControls.Core.Implicit.xaml create mode 100644 Luna/Theme/Styles.Extended.Wpf.Toolkit.xaml create mode 100644 Luna/Theme/Styles.Shared.xaml create mode 100644 Luna/Theme/Styles.WPF.xaml create mode 100644 Luna/Theme/Theme.Colors.xaml delete mode 100644 Luna/Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml delete mode 100644 Luna/Themes/Metro/Dark/Styles.Shared.xaml delete mode 100644 Luna/Themes/Metro/Dark/Styles.WPF.xaml delete mode 100644 Luna/Themes/Metro/Dark/Theme.Colors.xaml delete mode 100644 Luna/Themes/Metro/Light/Metro.MSControls.Core.Implicit.xaml delete mode 100644 Luna/Themes/Metro/Light/Styles.Shared.xaml delete mode 100644 Luna/Themes/Metro/Light/Styles.WPF.xaml delete mode 100644 Luna/Themes/Metro/Light/Theme.Colors.xaml create mode 100644 Luna/Utils/AutoFileSaver.cs create mode 100644 Luna/Utils/AutoUpdater.cs create mode 100644 Luna/Utils/Converters.cs create mode 100644 Luna/Utils/Handlers/AppearanceHandler.cs create mode 100644 Luna/Utils/Handlers/RegistryHandler.cs rename Luna/{Helpers => Utils/Handlers}/TaskHandler.cs (93%) create mode 100644 Luna/Utils/Handlers/ThemeHandler.cs create mode 100644 Luna/Utils/Handlers/WallpaperHandler.cs create mode 100644 Luna/Utils/JsonDownloader.cs create mode 100644 Luna/Utils/Logger/AbstractLogger.cs create mode 100644 Luna/Utils/Logger/AppLogger.cs create mode 100644 Luna/Utils/Logger/ConsoleLogger.cs create mode 100644 Luna/Utils/Logger/FileLogger.cs create mode 100644 Luna/Utils/Logger/ILogger.cs create mode 100644 Luna/Utils/Logger/MultiLogger.cs create mode 100644 Luna/Utils/NotifyPropertyChanged.cs create mode 100644 Luna/Utils/ObjectSerializer.cs create mode 100644 Luna/Windows/MessageWindow.xaml create mode 100644 Luna/Windows/MessageWindow.xaml.cs create mode 100644 Luna/Windows/SettingsWindow.xaml create mode 100644 Luna/Windows/SettingsWindow.xaml.cs create mode 100644 Luna/Windows/UpdateWindow.xaml create mode 100644 Luna/Windows/UpdateWindow.xaml.cs diff --git a/.extra/setup-script.iss b/.extra/setup-script.iss index 2d57113..e34e217 100644 --- a/.extra/setup-script.iss +++ b/.extra/setup-script.iss @@ -1,69 +1,61 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "Luna" -#define MyAppVersion "1.0" -#define MyAppPublisher "Adrian Mateoaea" -#define MyAppURL "https://github.com/adrianmteo/Luna" -#define MyAppExeName "Luna.exe" - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{7FDBD0F5-0E11-4048-8C62-A5F64BB878AF} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={localappdata}\{#MyAppName} -DisableProgramGroupPage=yes -; Remove the following line to run in administrative install mode (install for all users.) -PrivilegesRequired=lowest -OutputBaseFilename={#MyAppName}Setup -Compression=lzma -SolidCompression=yes -WizardStyle=modern -UninstallDisplayIcon={app}\{#MyAppExeName} -UninstallDisplayName={#MyAppName} -DirExistsWarning=no -VersionInfoCompany={#MyAppPublisher} -VersionInfoCopyright=Copyright � {#MyAppPublisher} 2020 -VersionInfoProductVersion={#MyAppVersion} -VersionInfoVersion={#MyAppVersion} - -[Code] -procedure InitializeWizard; -begin - WizardForm.SelectDirBrowseLabel.Visible:=False; - WizardForm.DirEdit.Enabled:=False; - WizardForm.DirBrowseButton.Enabled:=False; -end; - -[Messages] -SetupAppTitle={#MyAppName} Setup -SetupWindowTitle={#MyAppName} Setup - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "..\Luna\bin\Release\Luna.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\Luna\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" -Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon - -[Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent - -[UninstallRun] -Filename: "{app}\{#MyAppExeName}"; Parameters: "/clean" - +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "Luna" +#define MyAppVersion "1.1" +#define MyAppPublisher "Adrian Mateoaea" +#define MyAppURL "https://github.com/adrianmteo/Luna" +#define MyAppExeName "Luna.exe" + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{7FDBD0F5-0E11-4048-8C62-A5F64BB878AF} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={localappdata}\{#MyAppName} +DisableProgramGroupPage=yes +; Remove the following line to run in administrative install mode (install for all users.) +PrivilegesRequired=lowest +OutputBaseFilename={#MyAppName}Setup +Compression=lzma +SolidCompression=yes +WizardStyle=modern +UninstallDisplayIcon={app}\{#MyAppExeName} +UninstallDisplayName={#MyAppName} +DirExistsWarning=no +VersionInfoCompany={#MyAppPublisher} +VersionInfoCopyright=Copyright © {#MyAppPublisher} 2020 +VersionInfoProductVersion={#MyAppVersion} +VersionInfoVersion={#MyAppVersion} + +[Messages] +SetupAppTitle={#MyAppName} Setup +SetupWindowTitle={#MyAppName} Setup + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "..\Luna\bin\Release\Luna.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\Luna\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall + +[UninstallRun] +Filename: "{app}\{#MyAppExeName}"; Parameters: "/clean" + diff --git a/Luna/App.config b/Luna/App.config index c726ca8..168b20e 100644 --- a/Luna/App.config +++ b/Luna/App.config @@ -1,45 +1,48 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <configSections> - <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > - <section name="Luna.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> - </sectionGroup> - </configSections> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> - </startup> - <userSettings> - <Luna.Properties.Settings> - <setting name="Enabled" serializeAs="String"> - <value>False</value> - </setting> - <setting name="ChangeAppTheme" serializeAs="String"> - <value>False</value> - </setting> - <setting name="ChangeSystemTheme" serializeAs="String"> - <value>False</value> - </setting> - <setting name="ChangeWallpaper" serializeAs="String"> - <value>False</value> - </setting> - <setting name="LightWallpaperPath" serializeAs="String"> - <value /> - </setting> - <setting name="DarkWallpaperPath" serializeAs="String"> - <value /> - </setting> - <setting name="LightThemeHour" serializeAs="String"> - <value>7</value> - </setting> - <setting name="LightThemeMinute" serializeAs="String"> - <value>0</value> - </setting> - <setting name="DarkThemeHour" serializeAs="String"> - <value>7</value> - </setting> - <setting name="DarkThemeMinute" serializeAs="String"> - <value>0</value> - </setting> - </Luna.Properties.Settings> - </userSettings> +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <configSections> + <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > + <section name="Luna.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> + </sectionGroup> + </configSections> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> + </startup> + <userSettings> + <Luna.Properties.Settings> + <setting name="Enabled" serializeAs="String"> + <value>False</value> + </setting> + <setting name="ChangeAppTheme" serializeAs="String"> + <value>False</value> + </setting> + <setting name="ChangeSystemTheme" serializeAs="String"> + <value>False</value> + </setting> + <setting name="ChangeWallpaper" serializeAs="String"> + <value>False</value> + </setting> + <setting name="LightWallpaperPath" serializeAs="String"> + <value /> + </setting> + <setting name="DarkWallpaperPath" serializeAs="String"> + <value /> + </setting> + <setting name="LightThemeHour" serializeAs="String"> + <value>7</value> + </setting> + <setting name="LightThemeMinute" serializeAs="String"> + <value>0</value> + </setting> + <setting name="DarkThemeHour" serializeAs="String"> + <value>7</value> + </setting> + <setting name="DarkThemeMinute" serializeAs="String"> + <value>0</value> + </setting> + <setting name="UpdateSettings" serializeAs="String"> + <value>True</value> + </setting> + </Luna.Properties.Settings> + </userSettings> </configuration> \ No newline at end of file diff --git a/Luna/App.xaml b/Luna/App.xaml index f229e8c..105eac3 100644 --- a/Luna/App.xaml +++ b/Luna/App.xaml @@ -1,54 +1,14 @@ -<Application x:Class="Luna.App" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - StartupUri="MainWindow.xaml"> - - <Application.Resources> - <ResourceDictionary> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml" /> - <!-- Custom styles --> - <ResourceDictionary> - <Style x:Key="CloseButtonStyle" TargetType="Button"> - <Setter Property="Foreground" Value="{DynamicResource ForegroundBrush}" /> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="BorderBrush" Value="{x:Null}" /> - <Setter Property="BorderThickness" Value="0" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="Button"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentControl" Storyboard.TargetProperty="Opacity"> - <DiscreteDoubleKeyFrame KeyTime="0" Value="0.7" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentControl" Storyboard.TargetProperty="Opacity"> - <DiscreteDoubleKeyFrame KeyTime="0" Value="0.2" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{TemplateBinding Background}" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> - <ContentPresenter /> - </ContentControl> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - </ResourceDictionary> - </ResourceDictionary.MergedDictionaries> - </ResourceDictionary> - </Application.Resources> -</Application> +<Application x:Class="Luna.App" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + StartupUri="Windows/SettingsWindow.xaml"> + + <Application.Resources> + <ResourceDictionary> + <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="Theme/MetroDark.MSControls.Core.Implicit.xaml" /> + <ResourceDictionary Source="Theme/Styles.Extended.Wpf.Toolkit.xaml" /> + </ResourceDictionary.MergedDictionaries> + </ResourceDictionary> + </Application.Resources> +</Application> diff --git a/Luna/App.xaml.cs b/Luna/App.xaml.cs index 4d1bc1a..73c3fe5 100644 --- a/Luna/App.xaml.cs +++ b/Luna/App.xaml.cs @@ -1,57 +1,70 @@ -using Luna.Helpers; -using Luna.Properties; -using System; -using System.Windows; - -namespace Luna -{ - public partial class App : Application - { - [STAThread] - public static void Main(string[] args) - { - if (args.Length > 0) - { - foreach (string arg in args) - { - switch (arg) - { - case "/light": - SwitchToLightTheme(); - break; - - case "/dark": - SwitchToDarkTheme(); - break; - - case "/clean": - TaskHandler.DeleteTasks(); - break; - - default: - break; - } - } - } - else - { - App app = new App(); - app.InitializeComponent(); - app.Run(); - } - } - public static void SwitchToLightTheme() - { - if (Settings.Default.ChangeAppTheme) RegistryHandler.AppsUseLightTheme(true); - if (Settings.Default.ChangeSystemTheme) RegistryHandler.SystemUsesLightTheme(true); - if (Settings.Default.ChangeWallpaper) WallpaperHandler.ChangeWallpaper(Settings.Default.LightWallpaperPath); - } - - public static void SwitchToDarkTheme() - { - if (Settings.Default.ChangeAppTheme) RegistryHandler.AppsUseLightTheme(false); - if (Settings.Default.ChangeSystemTheme) RegistryHandler.SystemUsesLightTheme(false); - if (Settings.Default.ChangeWallpaper) WallpaperHandler.ChangeWallpaper(Settings.Default.DarkWallpaperPath); - } - } -} +using Luna.Models; +using Luna.Utils; +using Luna.Utils.Handlers; +using Luna.Utils.Logger; +using System; +using System.Windows; + +namespace Luna +{ + public partial class App : Application + { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + [STAThread] + public static void Main(string[] args) + { + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + + if (args.Length > 0) + { + Logger.Info("Starting app with command line arguments: {0}", string.Join(", ", args)); + + AutoFileSaver<SettingsModel> autoFileSaver = new AutoFileSaver<SettingsModel>("settings.xml", true); + AppearanceHandler handler = new AppearanceHandler(autoFileSaver.Model); + + foreach (string arg in args) + { + switch (arg) + { + case "/light": + handler.SwitchToLightTheme(); + break; + + case "/dark": + handler.SwitchToDarkTheme(); + break; + + case "/update": + // TODO: wait then exit + AutoUpdater autoUpdater = new AutoUpdater(true); + autoUpdater.CheckForUpdates(); + break; + + case "/clean": + TaskHandler.DeleteTasks(); + break; + + default: + Logger.Error("Command line argument is not accepted: {0}", arg); + break; + } + } + } + else + { + App app = new App(); + app.InitializeComponent(); + app.Run(); + } + } + + private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + if (e.ExceptionObject is Exception ex) + { + Logger.Exception(ex); + } + } + } +} diff --git a/Luna/Controls/WindowHeader.xaml b/Luna/Controls/WindowHeader.xaml new file mode 100644 index 0000000..3dc2686 --- /dev/null +++ b/Luna/Controls/WindowHeader.xaml @@ -0,0 +1,70 @@ +<UserControl x:Class="Luna.Controls.WindowHeader" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="clr-namespace:Luna.Controls" + mc:Ignorable="d" + d:DesignWidth="400" d:DesignHeight="48" + Loaded="WindowHeader_Loaded"> + + <UserControl.Resources> + <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> + </UserControl.Resources> + + <Grid> + <Grid Height="30" VerticalAlignment="Top"> + <Label Margin="14 0 0 0" Content="{Binding Title, RelativeSource={RelativeSource AncestorType=Window}, FallbackValue=Window}" Padding="0" FontSize="14" VerticalAlignment="Center" /> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> + <Button Focusable="False" + Click="ButtonUpdate_Click" + Visibility="{Binding HasUpdate, RelativeSource={RelativeSource AncestorType={x:Type local:WindowHeader}}, Converter={StaticResource BooleanToVisibilityConverter}}" + WindowChrome.IsHitTestVisibleInChrome="True" BorderThickness="0" Content="UPDATE AVAILABLE" FontSize="13" Padding="12 0" /> + <Button Width="48" Click="ButtonMinimize_Click" Focusable="False" BorderThickness="0" Padding="0" WindowChrome.IsHitTestVisibleInChrome="True"> + <Button.Style> + <Style TargetType="Button" BasedOn="{StaticResource ButtonStyle}"> + <Style.Triggers> + <DataTrigger Binding="{Binding ShowInTaskbar, RelativeSource={RelativeSource AncestorType=Window}}" Value="False"> + <Setter Property="Visibility" Value="Collapsed" /> + </DataTrigger> + </Style.Triggers> + </Style> + </Button.Style> + <Rectangle Margin="0 9 0 0" Width="10" Height="1" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" /> + </Button> + <Button Width="48" Click="ButtonMaximize_Click" Focusable="False" BorderThickness="0" Padding="0" WindowChrome.IsHitTestVisibleInChrome="True"> + <Button.Style> + <Style TargetType="Button" BasedOn="{StaticResource ButtonStyle}"> + <Style.Triggers> + <DataTrigger Binding="{Binding ResizeMode, RelativeSource={RelativeSource AncestorType=Window}}" Value="CanMinimize"> + <Setter Property="Visibility" Value="Collapsed" /> + </DataTrigger> + <DataTrigger Binding="{Binding ResizeMode, RelativeSource={RelativeSource AncestorType=Window}}" Value="NoResize"> + <Setter Property="Visibility" Value="Collapsed" /> + </DataTrigger> + </Style.Triggers> + </Style> + </Button.Style> + <Rectangle Width="11" Height="11" Stroke="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" StrokeThickness="1" /> + </Button> + <Button Width="48" Click="ButtonClose_Click" Focusable="False" BorderThickness="0" Padding="0" WindowChrome.IsHitTestVisibleInChrome="True"> + <Button.Background> + <SolidColorBrush Color="{StaticResource Color_028}" /> + </Button.Background> + <Grid> + <Rectangle Width="15" Height="1" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" RenderTransformOrigin="0.5,0.5"> + <Rectangle.RenderTransform> + <RotateTransform Angle="-45" /> + </Rectangle.RenderTransform> + </Rectangle> + <Rectangle Width="15" Height="1" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" RenderTransformOrigin="0.5,0.5"> + <Rectangle.RenderTransform> + <RotateTransform Angle="45" /> + </Rectangle.RenderTransform> + </Rectangle> + </Grid> + </Button> + </StackPanel> + </Grid> + </Grid> +</UserControl> diff --git a/Luna/Controls/WindowHeader.xaml.cs b/Luna/Controls/WindowHeader.xaml.cs new file mode 100644 index 0000000..1f11254 --- /dev/null +++ b/Luna/Controls/WindowHeader.xaml.cs @@ -0,0 +1,67 @@ +using System.Windows; +using System.Windows.Controls; + +namespace Luna.Controls +{ + public partial class WindowHeader : UserControl + { + private static readonly DependencyProperty HasUpdateProperty = DependencyProperty.Register("HasUpdate", typeof(bool), typeof(WindowHeader), new PropertyMetadata(false)); + public bool HasUpdate + { + get { return (bool)GetValue(HasUpdateProperty); } + set { SetValue(HasUpdateProperty, value); } + } + + private static readonly RoutedEvent OnClickUpdateEvent = EventManager.RegisterRoutedEvent("OnClickUpdate", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(WindowHeader)); + + public event RoutedEventHandler OnClickUpdate + { + add { AddHandler(OnClickUpdateEvent, value); } + remove { RemoveHandler(OnClickUpdateEvent, value); } + } + + private Window _window; + + public WindowHeader() + { + InitializeComponent(); + } + + private void WindowHeader_Loaded(object sender, RoutedEventArgs e) + { + if (sender is DependencyObject dependencyObject) + { + _window = Window.GetWindow(dependencyObject); + } + } + + private void ButtonMinimize_Click(object sender, RoutedEventArgs e) + { + if (_window != null) + { + _window.WindowState = WindowState.Minimized; + } + } + + private void ButtonMaximize_Click(object sender, RoutedEventArgs e) + { + if (_window != null) + { + _window.WindowState = _window.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; + } + } + + private void ButtonClose_Click(object sender, RoutedEventArgs e) + { + if (_window != null) + { + _window.Close(); + } + } + + private void ButtonUpdate_Click(object sender, RoutedEventArgs e) + { + RaiseEvent(new RoutedEventArgs(OnClickUpdateEvent)); + } + } +} diff --git a/Luna/Custom/AnimatedView.xaml b/Luna/Custom/AnimatedView.xaml deleted file mode 100644 index 8dff3d5..0000000 --- a/Luna/Custom/AnimatedView.xaml +++ /dev/null @@ -1,78 +0,0 @@ -<UserControl x:Class="Luna.AnimatedView" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:ms="clr-namespace:System;assembly=mscorlib" - xmlns:local="clr-namespace:Luna" - mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800"> - - <UserControl.Resources> - <Duration x:Key="Duration">0:0:0.300</Duration> - <KeyTime x:Key="Duration2">0:0:0.300</KeyTime> - <ms:Double x:Key="Offset">40</ms:Double> - <CircleEase x:Key="EaseIn" EasingMode="EaseIn" /> - <CircleEase x:Key="EaseOut" EasingMode="EaseOut" /> - <Storyboard x:Key="FadeInStoryboard"> - <DoubleAnimation To="1" Storyboard.TargetProperty="Opacity" Duration="{StaticResource Duration}" EasingFunction="{StaticResource EaseOut}" /> - <DoubleAnimation To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Duration="{StaticResource Duration}" EasingFunction="{StaticResource EaseOut}" /> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"> - <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - <Storyboard x:Key="FadeOutStoryboard"> - <DoubleAnimation To="0" Storyboard.TargetProperty="Opacity" Duration="{StaticResource Duration}" EasingFunction="{StaticResource EaseIn}" /> - <DoubleAnimation To="{StaticResource Offset}" Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Duration="{StaticResource Duration}" EasingFunction="{StaticResource EaseIn}" /> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"> - <DiscreteObjectKeyFrame KeyTime="{StaticResource Duration2}" Value="{x:Static Visibility.Collapsed}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </UserControl.Resources> - - <UserControl.Style> - <Style TargetType="UserControl"> - <Style.Resources> - - </Style.Resources> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="UserControl"> - <Grid> - <Grid.RenderTransform> - <TranslateTransform /> - </Grid.RenderTransform> - <Grid.Style> - <Style TargetType="Grid"> - <Style.Triggers> - <DataTrigger Binding="{Binding Value, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:AnimatedView}}}" Value="False"> - <Setter Property="Opacity" Value="0" /> - <Setter Property="Visibility" Value="{x:Static Visibility.Collapsed}" /> - <DataTrigger.EnterActions> - <BeginStoryboard Storyboard="{StaticResource FadeOutStoryboard}" /> - </DataTrigger.EnterActions> - <DataTrigger.ExitActions> - <BeginStoryboard Storyboard="{StaticResource FadeInStoryboard}" /> - </DataTrigger.ExitActions> - </DataTrigger> - <DataTrigger Binding="{Binding Value, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:AnimatedView}}}" Value="True"> - <Setter Property="Opacity" Value="1" /> - <Setter Property="Visibility" Value="{x:Static Visibility.Visible}" /> - <DataTrigger.EnterActions> - <BeginStoryboard Storyboard="{StaticResource FadeInStoryboard}" /> - </DataTrigger.EnterActions> - <DataTrigger.ExitActions> - <BeginStoryboard Storyboard="{StaticResource FadeOutStoryboard}" /> - </DataTrigger.ExitActions> - </DataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - <ContentPresenter /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - </UserControl.Style> -</UserControl> diff --git a/Luna/Custom/AnimatedView.xaml.cs b/Luna/Custom/AnimatedView.xaml.cs deleted file mode 100644 index 6eff3e3..0000000 --- a/Luna/Custom/AnimatedView.xaml.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Windows; -using System.Windows.Controls; - -namespace Luna -{ - public partial class AnimatedView : UserControl - { - public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(bool), typeof(AnimatedView), new PropertyMetadata(true)); - public bool Value - { - get { return (bool)GetValue(ValueProperty); } - set { SetValue(ValueProperty, value); } - } - - public AnimatedView() - { - InitializeComponent(); - } - } -} diff --git a/Luna/Helpers/RegistryHandler.cs b/Luna/Helpers/RegistryHandler.cs deleted file mode 100644 index 4d49d76..0000000 --- a/Luna/Helpers/RegistryHandler.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Microsoft.Win32; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Luna.Helpers -{ - class RegistryHandler - { - public static void AppsUseLightTheme(bool enabled) - { - RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", true); - - if (key != null) - { - key.SetValue("AppsUseLightTheme", enabled ? 1 : 0, RegistryValueKind.DWord); - } - } - - public static void SystemUsesLightTheme(bool enabled) - { - RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", true); - - if (key != null) - { - key.SetValue("SystemUsesLightTheme", enabled ? 1 : 0, RegistryValueKind.DWord); - } - } - } -} diff --git a/Luna/Helpers/Rules.cs b/Luna/Helpers/Rules.cs deleted file mode 100644 index 1bc6411..0000000 --- a/Luna/Helpers/Rules.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Globalization; -using System.Windows.Controls; - -namespace Luna -{ - public class NumberRule : ValidationRule - { - public int Min { get; set; } - - public int Max { get; set; } - - public override ValidationResult Validate(object value, CultureInfo cultureInfo) - { - if (!int.TryParse((string)value, out int hour)) - { - return new ValidationResult(false, "Input is not a number"); - } - - if (hour < Min || hour > Max) - { - return new ValidationResult(false, $"Input must be between {Min} and {Max}"); - } - - return ValidationResult.ValidResult; - } - } -} diff --git a/Luna/Helpers/WallpaperHandler.cs b/Luna/Helpers/WallpaperHandler.cs deleted file mode 100644 index 89fce49..0000000 --- a/Luna/Helpers/WallpaperHandler.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; - -namespace Luna.Helpers -{ - internal sealed class win32 - { - [DllImport("user32.dll", CharSet = CharSet.Auto)] - internal static extern int SystemParametersInfo(int uAction, int uParam, String pvParam, int fWinIni); - } - - class WallpaperHandler - { - public static void ChangeWallpaper(string filePath) - { - if (filePath != null && File.Exists(filePath)) - { - win32.SystemParametersInfo(0x0014, 0, filePath, 1 | 2); - } - } - } -} diff --git a/Luna/Luna.csproj b/Luna/Luna.csproj index c719db8..66167d1 100644 --- a/Luna/Luna.csproj +++ b/Luna/Luna.csproj @@ -1,163 +1,202 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{2DE9EC75-02AA-471B-A2CD-58A19F7BC391}</ProjectGuid> - <OutputType>WinExe</OutputType> - <RootNamespace>Luna</RootNamespace> - <AssemblyName>Luna</AssemblyName> - <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <WarningLevel>4</WarningLevel> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - <NuGetPackageImportStamp> - </NuGetPackageImportStamp> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup /> - <PropertyGroup> - <ApplicationManifest>Properties\app.manifest</ApplicationManifest> - </PropertyGroup> - <PropertyGroup> - <StartupObject>Luna.App</StartupObject> - </PropertyGroup> - <PropertyGroup> - <ApplicationIcon>Resources\Icon.ico</ApplicationIcon> - </PropertyGroup> - <ItemGroup> - <Reference Include="Microsoft.Win32.TaskScheduler, Version=2.8.18.0, Culture=neutral, PublicKeyToken=c416bc1b32d97233, processorArchitecture=MSIL"> - <HintPath>..\packages\TaskScheduler.2.8.18\lib\net452\Microsoft.Win32.TaskScheduler.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.IO.Compression" /> - <Reference Include="System.Xml" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xaml"> - <RequiredTargetFramework>4.0</RequiredTargetFramework> - </Reference> - <Reference Include="WindowsBase" /> - <Reference Include="PresentationCore" /> - <Reference Include="PresentationFramework" /> - </ItemGroup> - <ItemGroup> - <Page Include="App.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Compile Include="Helpers\RegistryHandler.cs" /> - <Compile Include="Helpers\TaskHandler.cs" /> - <Compile Include="Helpers\WallpaperHandler.cs" /> - <Page Include="Custom\AnimatedView.xaml"> - <SubType>Designer</SubType> - <Generator>MSBuild:Compile</Generator> - </Page> - <Page Include="MainWindow.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Compile Include="Custom\AnimatedView.xaml.cs"> - <DependentUpon>AnimatedView.xaml</DependentUpon> - </Compile> - <Compile Include="App.xaml.cs"> - <DependentUpon>App.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Compile Include="MainWindow.xaml.cs"> - <DependentUpon>MainWindow.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Page Include="Themes\Metro\Dark\MetroDark.MSControls.Core.Implicit.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Dark\Styles.Shared.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Dark\Styles.WPF.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Dark\Theme.Colors.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Light\Metro.MSControls.Core.Implicit.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Light\Styles.Shared.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Light\Styles.WPF.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="Themes\Metro\Light\Theme.Colors.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - </ItemGroup> - <ItemGroup> - <Compile Include="Helpers\Rules.cs" /> - <Compile Include="Properties\AssemblyInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Properties\Resources.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>Resources.resx</DependentUpon> - </Compile> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> - <EmbeddedResource Include="Properties\Resources.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Resources.Designer.cs</LastGenOutput> - </EmbeddedResource> - <None Include="Properties\app.manifest" /> - <None Include="packages.config" /> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> - </None> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - </ItemGroup> - <ItemGroup> - <None Include="Resources\Icon.ico" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{2DE9EC75-02AA-471B-A2CD-58A19F7BC391}</ProjectGuid> + <OutputType>WinExe</OutputType> + <RootNamespace>Luna</RootNamespace> + <AssemblyName>Luna</AssemblyName> + <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <WarningLevel>4</WarningLevel> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + <Deterministic>true</Deterministic> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup /> + <PropertyGroup> + <ApplicationManifest>Properties\app.manifest</ApplicationManifest> + </PropertyGroup> + <PropertyGroup> + <StartupObject>Luna.App</StartupObject> + </PropertyGroup> + <PropertyGroup> + <ApplicationIcon>Resources\Icon.ico</ApplicationIcon> + </PropertyGroup> + <ItemGroup> + <Reference Include="Microsoft.Win32.TaskScheduler, Version=2.8.18.0, Culture=neutral, PublicKeyToken=c416bc1b32d97233, processorArchitecture=MSIL"> + <HintPath>..\packages\TaskScheduler.2.8.18\lib\net452\Microsoft.Win32.TaskScheduler.dll</HintPath> + </Reference> + <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> + <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.IO.Compression" /> + <Reference Include="System.Xml" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xaml"> + <RequiredTargetFramework>4.0</RequiredTargetFramework> + </Reference> + <Reference Include="WindowsBase" /> + <Reference Include="PresentationCore" /> + <Reference Include="PresentationFramework" /> + <Reference Include="Xceed.Wpf.AvalonDock, Version=3.8.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL"> + <HintPath>..\packages\Extended.Wpf.Toolkit.3.8.1\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath> + </Reference> + <Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=3.8.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL"> + <HintPath>..\packages\Extended.Wpf.Toolkit.3.8.1\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath> + </Reference> + <Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=3.8.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL"> + <HintPath>..\packages\Extended.Wpf.Toolkit.3.8.1\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath> + </Reference> + <Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=3.8.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL"> + <HintPath>..\packages\Extended.Wpf.Toolkit.3.8.1\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath> + </Reference> + <Reference Include="Xceed.Wpf.Toolkit, Version=3.8.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL"> + <HintPath>..\packages\Extended.Wpf.Toolkit.3.8.1\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="Utils\Handlers\ThemeHandler.cs" /> + <Compile Include="Utils\Handlers\AppearanceHandler.cs" /> + <Compile Include="Windows\MessageWindow.xaml.cs"> + <DependentUpon>MessageWindow.xaml</DependentUpon> + </Compile> + <Compile Include="Models\SettingsModel.cs" /> + <Compile Include="Windows\SettingsWindow.xaml.cs"> + <DependentUpon>SettingsWindow.xaml</DependentUpon> + </Compile> + <Compile Include="Windows\UpdateWindow.xaml.cs"> + <DependentUpon>UpdateWindow.xaml</DependentUpon> + </Compile> + <Compile Include="Utils\AutoFileSaver.cs" /> + <Compile Include="Utils\JsonDownloader.cs" /> + <Compile Include="Utils\NotifyPropertyChanged.cs" /> + <Compile Include="Utils\Converters.cs" /> + <Compile Include="Utils\ObjectSerializer.cs" /> + <Compile Include="Utils\AutoUpdater.cs" /> + <Compile Include="Models\UpdateModel.cs" /> + <Compile Include="Utils\Logger\AbstractLogger.cs" /> + <Compile Include="Utils\Logger\AppLogger.cs" /> + <Compile Include="Utils\Logger\ConsoleLogger.cs" /> + <Compile Include="Utils\Logger\FileLogger.cs" /> + <Compile Include="Utils\Logger\ILogger.cs" /> + <Compile Include="Utils\Logger\MultiLogger.cs" /> + <Compile Include="Controls\WindowHeader.xaml.cs"> + <DependentUpon>WindowHeader.xaml</DependentUpon> + </Compile> + <Page Include="App.xaml"> + <Generator>MSBuild:Compile</Generator> + <SubType>Designer</SubType> + </Page> + <Compile Include="Utils\Handlers\RegistryHandler.cs" /> + <Compile Include="Utils\Handlers\TaskHandler.cs" /> + <Compile Include="Utils\Handlers\WallpaperHandler.cs" /> + <Compile Include="App.xaml.cs"> + <DependentUpon>App.xaml</DependentUpon> + <SubType>Code</SubType> + </Compile> + <Page Include="Theme\Styles.Extended.Wpf.Toolkit.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Windows\MessageWindow.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Windows\SettingsWindow.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Theme\MetroDark.MSControls.Core.Implicit.xaml"> + <Generator>MSBuild:Compile</Generator> + <SubType>Designer</SubType> + </Page> + <Page Include="Theme\Styles.Shared.xaml"> + <Generator>MSBuild:Compile</Generator> + <SubType>Designer</SubType> + </Page> + <Page Include="Theme\Styles.WPF.xaml"> + <Generator>MSBuild:Compile</Generator> + <SubType>Designer</SubType> + </Page> + <Page Include="Theme\Theme.Colors.xaml"> + <Generator>MSBuild:Compile</Generator> + <SubType>Designer</SubType> + </Page> + <Page Include="Windows\UpdateWindow.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Controls\WindowHeader.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + </ItemGroup> + <ItemGroup> + <Compile Include="Properties\AssemblyInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + </EmbeddedResource> + <None Include="Properties\app.manifest" /> + <None Include="packages.config" /> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Icon.ico" /> + </ItemGroup> + <ItemGroup> + <Content Include="Resources\ThemeTool.exe"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> \ No newline at end of file diff --git a/Luna/MainWindow.xaml b/Luna/MainWindow.xaml deleted file mode 100644 index ba7f0e7..0000000 --- a/Luna/MainWindow.xaml +++ /dev/null @@ -1,135 +0,0 @@ -<Window x:Class="Luna.MainWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:local="clr-namespace:Luna" - mc:Ignorable="d" - Title="Luna" Width="400" Height="500" - Background="{DynamicResource ButtonBackgroundBrush}" - BorderBrush="{DynamicResource ButtonBorderBrush}" BorderThickness="1" - WindowStartupLocation="CenterScreen" WindowStyle="None" ResizeMode="NoResize"> - - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <Grid MouseDown="Title_MouseDown" Background="Transparent"> - <Label Content="Luna" FontSize="24" Margin="24 12 0 12" /> - </Grid> - <StackPanel Grid.Column="1" VerticalAlignment="Top" Orientation="Horizontal"> - <Button Style="{StaticResource CloseButtonStyle}" Click="ButtonClose_Click"> - <Path - Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" - Data="m413.348 24.354-24.354-24.354-182.32 182.32-182.32-182.32-24.354 24.354 182.32 182.32-182.32 182.32 24.354 24.354 182.32-182.32 182.32 182.32 24.354-24.354-182.32-182.32z" - Width="13" Height="13" Stretch="Fill" Margin="16" /> - </Button> - </StackPanel> - </Grid> - <ScrollViewer Grid.Row="1"> - <StackPanel Margin="24 0"> - <CheckBox Content="Enable automatic theme" IsChecked="{Binding Enabled}" Panel.ZIndex="100" /> - <local:AnimatedView Value="{Binding Enabled}"> - <StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 12"> - <StackPanel Margin="0 0 24 0"> - <Label Content="Light theme time" /> - <StackPanel Orientation="Horizontal"> - <TextBox Width="40" Margin="6 0 0 0" KeyUp="TextBox_KeyUp"> - <TextBox.Text> - <Binding Path="LightThemeHour" StringFormat="00" UpdateSourceTrigger="LostFocus"> - <Binding.ValidationRules> - <local:NumberRule Min="0" Max="11" /> - </Binding.ValidationRules> - </Binding> - </TextBox.Text> - </TextBox> - <Label Content=":" /> - <TextBox Width="40" KeyUp="TextBox_KeyUp"> - <TextBox.Text> - <Binding Path="LightThemeMinute" StringFormat="00" UpdateSourceTrigger="LostFocus"> - <Binding.ValidationRules> - <local:NumberRule Min="0" Max="59" /> - </Binding.ValidationRules> - </Binding> - </TextBox.Text> - </TextBox> - <Label Content="AM" /> - </StackPanel> - </StackPanel> - <StackPanel> - <Label Content="Dark theme time" /> - <StackPanel Orientation="Horizontal"> - <TextBox Width="40" Margin="6 0 0 0" KeyUp="TextBox_KeyUp"> - <TextBox.Text> - <Binding Path="DarkThemeHour" StringFormat="00" UpdateSourceTrigger="LostFocus"> - <Binding.ValidationRules> - <local:NumberRule Min="0" Max="11" /> - </Binding.ValidationRules> - </Binding> - </TextBox.Text> - </TextBox> - <Label Content=":" /> - <TextBox Width="40" KeyUp="TextBox_KeyUp"> - <TextBox.Text> - <Binding Path="DarkThemeMinute" StringFormat="00" UpdateSourceTrigger="LostFocus"> - <Binding.ValidationRules> - <local:NumberRule Min="0" Max="59" /> - </Binding.ValidationRules> - </Binding> - </TextBox.Text> - </TextBox> - <Label Content="PM" /> - </StackPanel> - </StackPanel> - </StackPanel> - <CheckBox Content="Change app theme" IsChecked="{Binding ChangeAppTheme}" /> - <CheckBox Content="Change system theme" IsChecked="{Binding ChangeSystemTheme}" /> - <CheckBox Content="Change wallpaper" IsChecked="{Binding ChangeWallpaper}" /> - <local:AnimatedView Value="{Binding ChangeWallpaper}"> - <StackPanel Margin="0 12"> - <Label Content="Light theme wallpaper" /> - <Grid Margin="6 0 6 8"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <TextBox Text="{Binding LightWallpaperPath}" IsReadOnly="True" Margin="0 0 8 0" /> - <Button Content="Browse..." Grid.Column="1" Click="ButtonBrowseLightWallpaper_Click" /> - </Grid> - <Label Content="Dark theme wallpaper" /> - <Grid Margin="6 0 6 0"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <TextBox Text="{Binding DarkWallpaperPath}" IsReadOnly="True" Margin="0 0 8 0" /> - <Button Content="Browse..." Grid.Column="1" Click="ButtonBrowseDarkWallpaper_Click" /> - </Grid> - </StackPanel> - </local:AnimatedView> - </StackPanel> - </local:AnimatedView> - </StackPanel> - </ScrollViewer> - <Grid Margin="30 24" Grid.Row="2"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="8" /> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="8" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Button Content="Github" Click="ButtonGithub_Click" /> - <Button Content="Issues" Grid.Column="2" Click="ButtonIssues_Click" /> - <Button Content="About" Grid.Column="4" Click="ButtonAbout_Click" /> - </Grid> - </Grid> -</Window> diff --git a/Luna/MainWindow.xaml.cs b/Luna/MainWindow.xaml.cs deleted file mode 100644 index 1c06c3f..0000000 --- a/Luna/MainWindow.xaml.cs +++ /dev/null @@ -1,124 +0,0 @@ -using Luna.Helpers; -using Luna.Properties; -using Microsoft.Win32; -using System; -using System.Diagnostics; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Input; - -namespace Luna -{ - public partial class MainWindow : Window - { - public MainWindow() - { - InitializeComponent(); - - Settings.Default.PropertyChanged += Settings_PropertyChanged; - - DataContext = Settings.Default; - } - - private void Settings_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) - { - Settings.Default.Save(); - - try - { - if (e.PropertyName == "Enabled") - { - if (Settings.Default.Enabled) - { - TaskHandler.UpdateTasks(Settings.Default.LightThemeHour, Settings.Default.LightThemeMinute, Settings.Default.DarkThemeHour, Settings.Default.DarkThemeMinute); - } - else - { - TaskHandler.DeleteTasks(); - } - } - else if (e.PropertyName.EndsWith("Hour") || e.PropertyName.EndsWith("Minute")) - { - TaskHandler.UpdateTasks(Settings.Default.LightThemeHour, Settings.Default.LightThemeMinute, Settings.Default.DarkThemeHour, Settings.Default.DarkThemeMinute); - } - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Error"); - } - } - - private void Title_MouseDown(object sender, MouseButtonEventArgs e) - { - if (e.LeftButton == MouseButtonState.Pressed) - { - DragMove(); - } - } - - private void ButtonClose_Click(object sender, RoutedEventArgs e) - { - Close(); - } - - private string BrowseWallpaper(string title) - { - OpenFileDialog open = new OpenFileDialog() - { - Title = title, - Filter = "Images|*.jpg;*.jpeg;*.png" - }; - - if (open.ShowDialog() == true) - { - return open.FileName; - } - - return null; - } - - private void ButtonBrowseLightWallpaper_Click(object sender, RoutedEventArgs e) - { - string path = BrowseWallpaper("Browse light theme wallpaper"); - - if (!string.IsNullOrEmpty(path)) - { - Settings.Default.LightWallpaperPath = path; - } - } - - private void ButtonBrowseDarkWallpaper_Click(object sender, RoutedEventArgs e) - { - string path = BrowseWallpaper("Browse dark theme wallpaper"); - - if (!string.IsNullOrEmpty(path)) - { - Settings.Default.DarkWallpaperPath = path; - } - } - - private void TextBox_KeyUp(object sender, KeyEventArgs e) - { - if (e.Key == Key.Enter) - { - FocusManager.SetFocusedElement(FocusManager.GetFocusScope((TextBox)sender), null); - Keyboard.ClearFocus(); - } - } - - private void ButtonGithub_Click(object sender, RoutedEventArgs e) - { - Process.Start("https://github.com/adrianmteo/Luna"); - } - - private void ButtonIssues_Click(object sender, RoutedEventArgs e) - { - Process.Start("https://github.com/adrianmteo/Luna/issues"); - } - - private void ButtonAbout_Click(object sender, RoutedEventArgs e) - { - Process.Start("https://github.com/adrianmteo"); - } - } -} diff --git a/Luna/Models/SettingsModel.cs b/Luna/Models/SettingsModel.cs new file mode 100644 index 0000000..ecdd9cd --- /dev/null +++ b/Luna/Models/SettingsModel.cs @@ -0,0 +1,221 @@ +using Luna.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Xml.Serialization; + +namespace Luna.Models +{ + public enum SettingsChangeType + { + [Description("Based on individual settings")] + Custom, + [Description("Based on a .theme file")] + Theme + } + + [XmlRoot("Settings")] + public class SettingsModel : NotifyPropertyChanged + { + private static IEnumerable<KeyValuePair<T, string>> GetKeyValuePairFromEnum<T>() + { + Type type = typeof(T); + + IEnumerable<T> values = Enum.GetValues(type).Cast<T>(); + + return values.Select((value) => + { + DescriptionAttribute[] attributes = (DescriptionAttribute[])type.GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false); + + string description = ""; + + if (attributes.Length > 0) + { + description = attributes.First().Description; + } + + return new KeyValuePair<T, string>(value, description); + }); + } + + private bool _enabled; + + [XmlElement("Enabled")] + public bool Enabled + { + get + { + return _enabled; + } + set + { + _enabled = value; + RaisePropertyChanged(); + } + } + + private DateTime _lightThemeTime = DateTime.Parse("0001-01-01T07:00:00"); + + [XmlElement("LightThemeTime")] + public DateTime LightThemeTime + { + get + { + return _lightThemeTime; + } + set + { + _lightThemeTime = value; + RaisePropertyChanged(); + } + } + + private DateTime _darkThemeTime = DateTime.Parse("0001-01-01T19:00:00"); + + [XmlElement("DarkThemeTime")] + public DateTime DarkThemeTime + { + get + { + return _darkThemeTime; + } + set + { + _darkThemeTime = value; + RaisePropertyChanged(); + } + } + + private SettingsChangeType _changeType = SettingsChangeType.Custom; + + [XmlElement("ChangeType")] + public SettingsChangeType ChangeType + { + get + { + return _changeType; + } + set + { + _changeType = value; + RaisePropertyChanged(); + } + } + + [XmlIgnore] + public static IEnumerable<KeyValuePair<SettingsChangeType, string>> ChangeTypeValues = GetKeyValuePairFromEnum<SettingsChangeType>(); + + private bool _changeSystemTheme; + + [XmlElement("ChangeSystemTheme")] + public bool ChangeSystemTheme + { + get + { + return _changeSystemTheme; + } + set + { + _changeSystemTheme = value; + RaisePropertyChanged(); + } + } + + private bool _changeAppTheme; + + [XmlElement("ChangeAppTheme")] + public bool ChangeAppTheme + { + get + { + return _changeAppTheme; + } + set + { + _changeAppTheme = value; + RaisePropertyChanged(); + } + } + + private bool _changeWallpaper; + + [XmlElement("ChangeWallpaper")] + public bool ChangeWallpaper + { + get + { + return _changeWallpaper; + } + set + { + _changeWallpaper = value; + RaisePropertyChanged(); + } + } + + private string _lightWallpaperPath; + + [XmlElement("LightWallpaperPath")] + public string LightWallpaperPath + { + get + { + return _lightWallpaperPath; + } + set + { + _lightWallpaperPath = value; + RaisePropertyChanged(); + } + } + + private string _darkWallpaperPath; + + [XmlElement("DarkWallpaperPath")] + public string DarkWallpaperPath + { + get + { + return _darkWallpaperPath; + } + set + { + _darkWallpaperPath = value; + RaisePropertyChanged(); + } + } + + private string _lightThemePath; + + [XmlElement("LightThemePath")] + public string LightThemePath + { + get + { + return _lightThemePath; + } + set + { + _lightThemePath = value; + RaisePropertyChanged(); + } + } + + private string _darkThemePath; + + [XmlElement("DarkThemePath")] + public string DarkThemePath + { + get + { + return _darkThemePath; + } + set + { + _darkThemePath = value; + RaisePropertyChanged(); + } + } + } +} diff --git a/Luna/Models/UpdateModel.cs b/Luna/Models/UpdateModel.cs new file mode 100644 index 0000000..d6b463b --- /dev/null +++ b/Luna/Models/UpdateModel.cs @@ -0,0 +1,142 @@ +using Luna.Utils; +using System; +using System.Xml.Serialization; + +namespace Luna.Models +{ + public enum UpdateStatus + { + Error = -1, + None = 0, + NoUpdate = 1, + Checking = 2, + NewUpdate = 3, + Downloading = 4, + Ready = 5, + } + + [XmlRoot("Update")] + public class UpdateModel : NotifyPropertyChanged + { + private UpdateStatus _status = UpdateStatus.None; + + [XmlAttribute("Status")] + public UpdateStatus Status + { + get + { + return _status; + } + set + { + _status = value; + RaisePropertyChanged(); + } + } + + private double _progress; + + [XmlIgnore] + public double Progress + { + get + { + return _progress; + } + set + { + _progress = value; + RaisePropertyChanged(); + } + } + + private string _version; + + [XmlAttribute("Version")] + public string Version + { + get + { + return _version; + } + set + { + _version = value; + RaisePropertyChanged(); + } + } + + private string _downloadUrl; + + [XmlAttribute("DownloadUrl")] + public string DownloadUrl + { + get + { + return _downloadUrl; + } + set + { + _downloadUrl = value; + RaisePropertyChanged(); + } + } + + private string _downloadPath; + + [XmlAttribute("DownloadPath")] + public string DownloadPath + { + get + { + return _downloadPath; + } + set + { + _downloadPath = value; + RaisePropertyChanged(); + } + } + + private string _downloadName; + + [XmlAttribute("DownloadName")] + public string DownloadName + { + get + { + return _downloadName; + } + set + { + _downloadName = value; + RaisePropertyChanged(); + } + } + + private DateTime _lastCheck; + + [XmlAttribute("LastCheck")] + public DateTime LastCheck + { + get + { + return _lastCheck; + } + set + { + _lastCheck = value; + RaisePropertyChanged(); + } + } + + [XmlIgnore] + public double LastCheckInMinutes + { + get + { + return (DateTime.Now - LastCheck).TotalMinutes; + } + } + } +} diff --git a/Luna/Properties/AssemblyInfo.cs b/Luna/Properties/AssemblyInfo.cs index 40cf7e8..a65bf82 100644 --- a/Luna/Properties/AssemblyInfo.cs +++ b/Luna/Properties/AssemblyInfo.cs @@ -1,55 +1,54 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Luna")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Luna")] -[assembly: AssemblyCopyright("Copyright © Adrian Mateoaea 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file -//inside a <PropertyGroup>. For example, if you are using US english -//in your source files, set the <UICulture> to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Luna")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Luna")] +[assembly: AssemblyCopyright("Copyright © Adrian Mateoaea 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file +//inside a <PropertyGroup>. For example, if you are using US english +//in your source files, set the <UICulture> to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.1.0.0")] +[assembly: AssemblyFileVersion("1.1.0.0")] +[assembly: Guid("7FDBD0F5-0E11-4048-8C62-A5F64BB878AF")] diff --git a/Luna/Properties/Settings.Designer.cs b/Luna/Properties/Settings.Designer.cs index df01f92..6966276 100644 --- a/Luna/Properties/Settings.Designer.cs +++ b/Luna/Properties/Settings.Designer.cs @@ -1,146 +1,158 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Luna.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool Enabled { - get { - return ((bool)(this["Enabled"])); - } - set { - this["Enabled"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ChangeAppTheme { - get { - return ((bool)(this["ChangeAppTheme"])); - } - set { - this["ChangeAppTheme"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ChangeSystemTheme { - get { - return ((bool)(this["ChangeSystemTheme"])); - } - set { - this["ChangeSystemTheme"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool ChangeWallpaper { - get { - return ((bool)(this["ChangeWallpaper"])); - } - set { - this["ChangeWallpaper"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string LightWallpaperPath { - get { - return ((string)(this["LightWallpaperPath"])); - } - set { - this["LightWallpaperPath"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DarkWallpaperPath { - get { - return ((string)(this["DarkWallpaperPath"])); - } - set { - this["DarkWallpaperPath"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("7")] - public ushort LightThemeHour { - get { - return ((ushort)(this["LightThemeHour"])); - } - set { - this["LightThemeHour"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public ushort LightThemeMinute { - get { - return ((ushort)(this["LightThemeMinute"])); - } - set { - this["LightThemeMinute"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("7")] - public ushort DarkThemeHour { - get { - return ((ushort)(this["DarkThemeHour"])); - } - set { - this["DarkThemeHour"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public ushort DarkThemeMinute { - get { - return ((ushort)(this["DarkThemeMinute"])); - } - set { - this["DarkThemeMinute"] = value; - } - } - } -} +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace Luna.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Enabled { + get { + return ((bool)(this["Enabled"])); + } + set { + this["Enabled"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ChangeAppTheme { + get { + return ((bool)(this["ChangeAppTheme"])); + } + set { + this["ChangeAppTheme"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ChangeSystemTheme { + get { + return ((bool)(this["ChangeSystemTheme"])); + } + set { + this["ChangeSystemTheme"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ChangeWallpaper { + get { + return ((bool)(this["ChangeWallpaper"])); + } + set { + this["ChangeWallpaper"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string LightWallpaperPath { + get { + return ((string)(this["LightWallpaperPath"])); + } + set { + this["LightWallpaperPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string DarkWallpaperPath { + get { + return ((string)(this["DarkWallpaperPath"])); + } + set { + this["DarkWallpaperPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("7")] + public ushort LightThemeHour { + get { + return ((ushort)(this["LightThemeHour"])); + } + set { + this["LightThemeHour"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public ushort LightThemeMinute { + get { + return ((ushort)(this["LightThemeMinute"])); + } + set { + this["LightThemeMinute"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("7")] + public ushort DarkThemeHour { + get { + return ((ushort)(this["DarkThemeHour"])); + } + set { + this["DarkThemeHour"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public ushort DarkThemeMinute { + get { + return ((ushort)(this["DarkThemeMinute"])); + } + set { + this["DarkThemeMinute"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool UpdateSettings { + get { + return ((bool)(this["UpdateSettings"])); + } + set { + this["UpdateSettings"] = value; + } + } + } +} diff --git a/Luna/Properties/Settings.settings b/Luna/Properties/Settings.settings index 8ffe0b2..7d36261 100644 --- a/Luna/Properties/Settings.settings +++ b/Luna/Properties/Settings.settings @@ -1,36 +1,39 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Luna.Properties" GeneratedClassName="Settings"> - <Profiles /> - <Settings> - <Setting Name="Enabled" Type="System.Boolean" Scope="User"> - <Value Profile="(Default)">False</Value> - </Setting> - <Setting Name="ChangeAppTheme" Type="System.Boolean" Scope="User"> - <Value Profile="(Default)">False</Value> - </Setting> - <Setting Name="ChangeSystemTheme" Type="System.Boolean" Scope="User"> - <Value Profile="(Default)">False</Value> - </Setting> - <Setting Name="ChangeWallpaper" Type="System.Boolean" Scope="User"> - <Value Profile="(Default)">False</Value> - </Setting> - <Setting Name="LightWallpaperPath" Type="System.String" Scope="User"> - <Value Profile="(Default)" /> - </Setting> - <Setting Name="DarkWallpaperPath" Type="System.String" Scope="User"> - <Value Profile="(Default)" /> - </Setting> - <Setting Name="LightThemeHour" Type="System.UInt16" Scope="User"> - <Value Profile="(Default)">7</Value> - </Setting> - <Setting Name="LightThemeMinute" Type="System.UInt16" Scope="User"> - <Value Profile="(Default)">0</Value> - </Setting> - <Setting Name="DarkThemeHour" Type="System.UInt16" Scope="User"> - <Value Profile="(Default)">7</Value> - </Setting> - <Setting Name="DarkThemeMinute" Type="System.UInt16" Scope="User"> - <Value Profile="(Default)">0</Value> - </Setting> - </Settings> +<?xml version='1.0' encoding='utf-8'?> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Luna.Properties" GeneratedClassName="Settings"> + <Profiles /> + <Settings> + <Setting Name="Enabled" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + <Setting Name="ChangeAppTheme" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + <Setting Name="ChangeSystemTheme" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + <Setting Name="ChangeWallpaper" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + <Setting Name="LightWallpaperPath" Type="System.String" Scope="User"> + <Value Profile="(Default)" /> + </Setting> + <Setting Name="DarkWallpaperPath" Type="System.String" Scope="User"> + <Value Profile="(Default)" /> + </Setting> + <Setting Name="LightThemeHour" Type="System.UInt16" Scope="User"> + <Value Profile="(Default)">7</Value> + </Setting> + <Setting Name="LightThemeMinute" Type="System.UInt16" Scope="User"> + <Value Profile="(Default)">0</Value> + </Setting> + <Setting Name="DarkThemeHour" Type="System.UInt16" Scope="User"> + <Value Profile="(Default)">7</Value> + </Setting> + <Setting Name="DarkThemeMinute" Type="System.UInt16" Scope="User"> + <Value Profile="(Default)">0</Value> + </Setting> + <Setting Name="UpdateSettings" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">True</Value> + </Setting> + </Settings> </SettingsFile> \ No newline at end of file diff --git a/Luna/Properties/app.manifest b/Luna/Properties/app.manifest index 7ae6b22..f0c78dc 100644 --- a/Luna/Properties/app.manifest +++ b/Luna/Properties/app.manifest @@ -1,74 +1,74 @@ -<?xml version="1.0" encoding="utf-8"?> -<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> - <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> - <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> - <security> - <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> - <!-- UAC Manifest Options - If you want to change the Windows User Account Control level replace the - requestedExecutionLevel node with one of the following. - - <requestedExecutionLevel level="asInvoker" uiAccess="false" /> - <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> - <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> - - Specifying requestedExecutionLevel element will disable file and registry virtualization. - Remove this element if your application requires this virtualization for backwards - compatibility. - --> - <requestedExecutionLevel level="asInvoker" uiAccess="false" /> - </requestedPrivileges> - </security> - </trustInfo> - - <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> - <application> - <!-- A list of the Windows versions that this application has been tested on - and is designed to work with. Uncomment the appropriate elements - and Windows will automatically select the most compatible environment. --> - - <!-- Windows Vista --> - <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> - - <!-- Windows 7 --> - <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> - - <!-- Windows 8 --> - <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> - - <!-- Windows 8.1 --> - <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> - - <!-- Windows 10 --> - <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> - - </application> - </compatibility> - - <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher - DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need - to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should - also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. --> - <!-- - <application xmlns="urn:schemas-microsoft-com:asm.v3"> - <windowsSettings> - <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> - </windowsSettings> - </application> - --> - - <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) --> - <dependency> - <dependentAssembly> - <assemblyIdentity - type="win32" - name="Microsoft.Windows.Common-Controls" - version="6.0.0.0" - processorArchitecture="*" - publicKeyToken="6595b64144ccf1df" - language="*" - /> - </dependentAssembly> - </dependency> - -</assembly> +<?xml version="1.0" encoding="utf-8"?> +<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <!-- UAC Manifest Options + If you want to change the Windows User Account Control level replace the + requestedExecutionLevel node with one of the following. + + <requestedExecutionLevel level="asInvoker" uiAccess="false" /> + <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> + <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> + + Specifying requestedExecutionLevel element will disable file and registry virtualization. + Remove this element if your application requires this virtualization for backwards + compatibility. + --> + <requestedExecutionLevel level="asInvoker" uiAccess="false" /> + </requestedPrivileges> + </security> + </trustInfo> + + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> + <application> + <!-- A list of the Windows versions that this application has been tested on + and is designed to work with. Uncomment the appropriate elements + and Windows will automatically select the most compatible environment. --> + + <!-- Windows Vista --> + <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> + + <!-- Windows 7 --> + <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> + + <!-- Windows 8 --> + <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> + + <!-- Windows 8.1 --> + <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> + + <!-- Windows 10 --> + <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> + + </application> + </compatibility> + + <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher + DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need + to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should + also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. --> + <!-- + <application xmlns="urn:schemas-microsoft-com:asm.v3"> + <windowsSettings> + <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> + </windowsSettings> + </application> + --> + + <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) --> + <dependency> + <dependentAssembly> + <assemblyIdentity + type="win32" + name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" + processorArchitecture="*" + publicKeyToken="6595b64144ccf1df" + language="*" + /> + </dependentAssembly> + </dependency> + +</assembly> diff --git a/Luna/Resources/ThemeTool.exe b/Luna/Resources/ThemeTool.exe new file mode 100644 index 0000000000000000000000000000000000000000..2a7c5791f684b550214cce8716a141c78fa69b5d GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/Luna/Theme/MetroDark.MSControls.Core.Implicit.xaml b/Luna/Theme/MetroDark.MSControls.Core.Implicit.xaml new file mode 100644 index 0000000..c8a2a56 --- /dev/null +++ b/Luna/Theme/MetroDark.MSControls.Core.Implicit.xaml @@ -0,0 +1,976 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> + + <!-- ********************************* RESOURCES ********************************* --> + <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="Styles.WPF.xaml" /> + </ResourceDictionary.MergedDictionaries> + + <!-- ********************************* BRUSHES ********************************* --> + <!-- Slider Brushes --> + <SolidColorBrush x:Key="SliderThumbBackgroundBrush" Color="{StaticResource Color_005}" /> + <SolidColorBrush x:Key="SliderThumbHoverBackgroundBrush" Color="{StaticResource Color_002}" /> + <SolidColorBrush x:Key="SliderThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="SliderThumbDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> + <SolidColorBrush x:Key="SliderTrackDisabledOverlayBackgroundBrush" Color="{StaticResource Color_008}" /> + <SolidColorBrush x:Key="SliderThumbFocusedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="SliderTrackBackgroundBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="SliderSelectionRangeBackgroundBrush" Color="{StaticResource Color_024}" /> + + <!-- GridSplitter Brushes --> + <SolidColorBrush x:Key="GridSplitterBackgroundBrush" Color="{StaticResource Color_008}" /> + <SolidColorBrush x:Key="GridSplitterBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="GridSplitterHoverBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="GridSplitterHoverBorderBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="GridSplitterPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="GridSplitterFocusedBorderBrush" Color="{StaticResource Color_024}" /> + + <!-- ProgressBar Brushes --> + <SolidColorBrush x:Key="ProgressBarBackgroundBrush" Color="{StaticResource Color_005}" /> + <SolidColorBrush x:Key="ProgressBarForegroundBrush" Color="{StaticResource Color_024}" /> + <LinearGradientBrush x:Key="ProgressBarIndeterminateBackgroundBrush" EndPoint="0,1" MappingMode="Absolute" SpreadMethod="Repeat" StartPoint="20,1" Opacity="0.8"> + <LinearGradientBrush.Transform> + <TransformGroup> + <TranslateTransform X="0" /> + <SkewTransform AngleX="-30" /> + </TransformGroup> + </LinearGradientBrush.Transform> + <GradientStop Color="{StaticResource Color_023}" Offset="0.249" /> + <GradientStop Color="{StaticResource Color_024}" Offset=".25" /> + <GradientStop Color="{StaticResource Color_024}" Offset="0.75" /> + <GradientStop Color="{StaticResource Color_023}" Offset="0.751" /> + </LinearGradientBrush> + + <!-- Tooltip Brushes --> + <SolidColorBrush x:Key="TooltipBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="TooltipBorderBrush" Color="{StaticResource Color_004}" /> + + <!-- Expander Brushes --> + <SolidColorBrush x:Key="ExpanderButtonBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ExpanderButtonBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="ExpanderButtonHoverBackgroundBrush" Color="{StaticResource Color_007}" /> + <SolidColorBrush x:Key="ExpanderButtonHoverBorderBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="ExpanderButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ExpanderButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ExpanderArrowHoverBorderBrush" Color="{StaticResource Color_002}" /> + <SolidColorBrush x:Key="ExpanderArrowPressedBorderBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ExpanderDisabledForegroundBrush" Color="{StaticResource Color_007}" /> + <SolidColorBrush x:Key="ExpanderDisabledBackgroundBrush" Color="{StaticResource Color_007}" /> + <SolidColorBrush x:Key="ExpanderBackgroundBrush" Color="{StaticResource Color_009}" /> + + <!-- GroupBox Brushes --> + <SolidColorBrush x:Key="GroupBoxBorderBrush" Color="{StaticResource Color_003}" /> + + <!-- PassWordBox Brushes --> + <SolidColorBrush x:Key="PasswordBoxForegroundBrush" Color="{StaticResource Color_024}" /> + + <!-- ********************************* TextBlock Style ********************************* --> + <Style x:Key="TextBlockStyle" TargetType="TextBlock"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="13.333" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + </Style> + + <!-- ********************************* Label Style ********************************* --> + <Style x:Key="LabelStyle" TargetType="{x:Type Label}"> + <Setter Property="Padding" Value="0 0 0 4" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="13.333" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="IsTabStop" Value="False" /> + <Setter Property="HorizontalContentAlignment" Value="Left" /> + </Style> + + <!-- ********************************* Hyperlink Style ********************************* --> + <Style x:Key="HyperlinkStyle" TargetType="{x:Type Hyperlink}"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Style.Triggers> + <Trigger Property="IsMouseOver" Value="True"> + <Setter Property="Foreground" Value="{StaticResource LightForegroundBrush}" /> + </Trigger> + </Style.Triggers> + </Style> + + <!-- ********************************* SliderRepeatButton Style ********************************* --> + <Style x:Key="SliderRepeatButtonStyle" TargetType="{x:Type RepeatButton}"> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="Focusable" Value="false" /> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type RepeatButton}"> + <Rectangle Fill="{StaticResource TransparentBrush}" /> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Slider Horizontal Thumb Style ********************************* --> + <Style x:Key="HSliderThumbStyle" TargetType="{x:Type Thumb}"> + <Setter Property="Background" Value="{StaticResource SliderThumbBackgroundBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="MinHeight" Value="12" /> + <Setter Property="MinWidth" Value="8" /> + <Setter Property="IsTabStop" Value="False" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Thumb}"> + <Grid> + <Ellipse x:Name="ThumbBackground" Fill="{TemplateBinding Background}" Width="16" Height="16" /> + <Ellipse x:Name="FocusedVisualElement" Stroke="{StaticResource SliderThumbFocusedBorderBrush}" Width="16" Height="16" StrokeThickness="2" Opacity="0" /> + <Ellipse x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Width="16" Height="16" Opacity="0" /> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="IsMouseOver" Value="True"> + <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbHoverBackgroundBrush}" /> + </Trigger> + <Trigger Property="IsMouseCaptured" Value="True"> + <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbPressedBackgroundBrush}" /> + </Trigger> + <Trigger Property="IsEnabled" Value="false"> + <Setter TargetName="DisabledVisualElement" Property="Opacity" Value="1" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Slider Vertical Thumb Style ********************************* --> + <Style x:Key="VSliderThumbStyle" TargetType="{x:Type Thumb}"> + <Setter Property="Background" Value="{StaticResource SliderThumbBackgroundBrush}" /> + <Setter Property="MinHeight" Value="8" /> + <Setter Property="MinWidth" Value="12" /> + <Setter Property="IsTabStop" Value="False" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Thumb}"> + <Grid> + <Ellipse x:Name="ThumbBackground" Fill="{TemplateBinding Background}" Width="16" Height="16" /> + <Ellipse x:Name="FocusedVisualElement" Stroke="{StaticResource SliderThumbFocusedBorderBrush}" Width="16" Height="16" StrokeThickness="2" Opacity="0" /> + <Ellipse x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Width="16" Height="16" Opacity="0" /> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="IsMouseOver" Value="True"> + <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbHoverBackgroundBrush}" /> + </Trigger> + <Trigger Property="IsMouseCaptured" Value="True"> + <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbPressedBackgroundBrush}" /> + </Trigger> + <Trigger Property="IsEnabled" Value="false"> + <Setter TargetName="DisabledVisualElement" Property="Opacity" Value="1" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Slider Style ********************************* --> + <Style x:Key="SliderStyle" TargetType="{x:Type Slider}"> + <Setter Property="Background" Value="Transparent" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Slider}"> + <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver" /> + <VisualState x:Name="Disabled" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="Auto" /> + <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" /> + <RowDefinition Height="Auto" /> + </Grid.RowDefinitions> + <TickBar x:Name="TopTick" Fill="{TemplateBinding Foreground}" Height="6" Placement="Top" Grid.Row="0" Visibility="Collapsed" /> + <TickBar x:Name="BottomTick" Fill="{TemplateBinding Foreground}" Height="6" Placement="Bottom" Grid.Row="2" Visibility="Collapsed" /> + <Border x:Name="TrackBackground" Background="{StaticResource SliderTrackBackgroundBrush}" Height="6" Grid.Row="1" VerticalAlignment="center"> + <Canvas Margin="-6,-1"> + <Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderSelectionRangeBackgroundBrush}" Height="6" Width="0" Visibility="Hidden" /> + </Canvas> + </Border> + <Track x:Name="PART_Track" Grid.Row="1"> + <Track.DecreaseRepeatButton> + <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> + </Track.DecreaseRepeatButton> + <Track.IncreaseRepeatButton> + <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> + </Track.IncreaseRepeatButton> + <Track.Thumb> + <Thumb x:Name="Thumb" Style="{StaticResource HSliderThumbStyle}" /> + </Track.Thumb> + </Track> + </Grid> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="TickPlacement" Value="TopLeft"> + <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> + <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HSliderThumbStyle}" /> + <Setter Property="Margin" TargetName="TrackBackground" Value="5,2,5,0" /> + </Trigger> + <Trigger Property="TickPlacement" Value="BottomRight"> + <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> + <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HSliderThumbStyle}" /> + <Setter Property="Margin" TargetName="TrackBackground" Value="5,0,5,2" /> + </Trigger> + <Trigger Property="TickPlacement" Value="Both"> + <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> + <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> + </Trigger> + <Trigger Property="IsSelectionRangeEnabled" Value="true"> + <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible" /> + </Trigger> + <Trigger Property="IsKeyboardFocused" Value="true"> + <Setter Property="Foreground" TargetName="Thumb" Value="{StaticResource SliderThumbFocusedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + <Style.Triggers> + <Trigger Property="Orientation" Value="Vertical"> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Slider}"> + <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition MinWidth="{TemplateBinding MinWidth}" Width="Auto" /> + <ColumnDefinition Width="Auto" /> + </Grid.ColumnDefinitions> + <TickBar x:Name="TopTick" Grid.Column="0" Fill="{TemplateBinding Foreground}" Placement="Left" Visibility="Collapsed" Width="6" /> + <TickBar x:Name="BottomTick" Grid.Column="2" Fill="{TemplateBinding Foreground}" Placement="Right" Visibility="Collapsed" Width="6" /> + <Border x:Name="TrackBackground" Background="{StaticResource SliderTrackBackgroundBrush}" Grid.Column="1" HorizontalAlignment="center" Width="6"> + <Canvas Margin="-1,-6"> + <Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderSelectionRangeBackgroundBrush}" Visibility="Hidden" Width="6" /> + </Canvas> + </Border> + <Track x:Name="PART_Track" Grid.Column="1"> + <Track.DecreaseRepeatButton> + <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> + </Track.DecreaseRepeatButton> + <Track.IncreaseRepeatButton> + <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> + </Track.IncreaseRepeatButton> + <Track.Thumb> + <Thumb x:Name="Thumb" Style="{StaticResource VSliderThumbStyle}" /> + </Track.Thumb> + </Track> + </Grid> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="TickPlacement" Value="TopLeft"> + <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> + <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VSliderThumbStyle}" /> + <Setter Property="Margin" TargetName="TrackBackground" Value="2,5,0,5" /> + </Trigger> + <Trigger Property="TickPlacement" Value="BottomRight"> + <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> + <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VSliderThumbStyle}" /> + <Setter Property="Margin" TargetName="TrackBackground" Value="0,5,2,5" /> + </Trigger> + <Trigger Property="TickPlacement" Value="Both"> + <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> + <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> + </Trigger> + <Trigger Property="IsSelectionRangeEnabled" Value="true"> + <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible" /> + </Trigger> + <Trigger Property="IsKeyboardFocused" Value="true"> + <Setter Property="Foreground" TargetName="Thumb" Value="{StaticResource SliderThumbFocusedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Trigger> + </Style.Triggers> + </Style> + + <!-- ********************************* RepeatButton Style ********************************* --> + <Style x:Key="RepeatButtonStyle" TargetType="{x:Type RepeatButton}"> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Padding" Value="10,0,10,2" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type RepeatButton}"> + <Grid SnapsToDevicePixels="True"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> + <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> + <ContentPresenter x:Name="contentPresenter" /> + </ContentControl> + <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> + <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************** GridSplitter Style **********************************--> + <Style x:Key="GridSplitterStyle" TargetType="{x:Type GridSplitter}"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Background" Value="{StaticResource GridSplitterBackgroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource GridSplitterBorderBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="SnapsToDevicePixels" Value="True" /> + <Setter Property="PreviewStyle"> + <Setter.Value> + <Style TargetType="Control"> + <Setter Property="Control.Template"> + <Setter.Value> + <ControlTemplate> + <Rectangle Fill="{StaticResource GridSplitterPressedBackgroundBrush}" Opacity="0.8" /> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + </Setter.Value> + </Setter> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate> + <Grid> + <Border x:Name="border" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" MinHeight="8" MinWidth="8"> + <Grid> + <StackPanel x:Name="HGrip" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Vertical"> + <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="1" Margin="1,2,1,1" StrokeThickness="0" Width="20" /> + <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="1" Margin="1,1,1,2" StrokeThickness="0" Width="20" /> + </StackPanel> + <StackPanel x:Name="VGrip" Width="8" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal" Visibility="Collapsed"> + <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="20" Margin="2,1,1,1" StrokeThickness="0" Width="1" /> + <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="20" Margin="1,1,2,1" StrokeThickness="0" Width="1" /> + </StackPanel> + </Grid> + </Border> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="HorizontalAlignment" Value="Stretch"> + <Setter TargetName="HGrip" Property="Visibility" Value="Visible" /> + <Setter TargetName="VGrip" Property="Visibility" Value="Collapsed" /> + </Trigger> + <Trigger Property="VerticalAlignment" Value="Stretch"> + <Setter TargetName="VGrip" Property="Visibility" Value="Visible" /> + <Setter TargetName="HGrip" Property="Visibility" Value="Collapsed" /> + </Trigger> + <Trigger Property="IsMouseOver" Value="True"> + <Setter TargetName="border" Property="Background" Value="{StaticResource GridSplitterHoverBackgroundBrush}" /> + <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource GridSplitterHoverBorderBrush}" /> + </Trigger> + <Trigger Property="IsFocused" Value="True"> + <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource GridSplitterFocusedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************** ProgressBar Style **********************************--> + <Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}"> + <Setter Property="Foreground" Value="{StaticResource ProgressBarForegroundBrush}" /> + <Setter Property="Background" Value="{StaticResource ProgressBarBackgroundBrush}" /> + <Setter Property="BorderThickness" Value="0" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ProgressBar}"> + <Grid x:Name="TemplateRoot" SnapsToDevicePixels="true"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Determinate" /> + <VisualState x:Name="Indeterminate"> + <Storyboard RepeatBehavior="Forever"> + <DoubleAnimation Duration="00:00:.5" From="0" To="20" Storyboard.TargetProperty="(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X" Storyboard.TargetName="IndeterminateGradientFill" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Border x:Name="ProgressBarTrack" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" /> + <Rectangle x:Name="PART_Track" Margin="{TemplateBinding BorderThickness}" /> + <Decorator x:Name="PART_Indicator" HorizontalAlignment="Left" Margin="{TemplateBinding BorderThickness}"> + <Grid x:Name="Foreground"> + <Rectangle x:Name="Indicator" Fill="{TemplateBinding Foreground}" /> + </Grid> + </Decorator> + <Grid x:Name="IndeterminateRoot" Visibility="Collapsed"> + <Rectangle x:Name="IndeterminateSolidFill" Fill="{TemplateBinding Foreground}" Margin="{TemplateBinding BorderThickness}" Opacity="1" RenderTransformOrigin="0.5,0.5" StrokeThickness="0" /> + <Rectangle x:Name="IndeterminateGradientFill" Fill="{StaticResource ProgressBarIndeterminateBackgroundBrush}" Margin="{TemplateBinding BorderThickness}" StrokeThickness="1" /> + </Grid> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="Orientation" Value="Vertical"> + <Setter Property="LayoutTransform" TargetName="TemplateRoot"> + <Setter.Value> + <RotateTransform Angle="-90" /> + </Setter.Value> + </Setter> + </Trigger> + <Trigger Property="IsIndeterminate" Value="true"> + <Setter Property="Visibility" TargetName="Indicator" Value="Collapsed" /> + <Setter Property="Visibility" TargetName="IndeterminateRoot" Value="Visible" /> + </Trigger> + <Trigger Property="IsIndeterminate" Value="false"> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************** PasswordBox Style **********************************--> + <Style x:Key="PasswordBoxStyle" TargetType="{x:Type PasswordBox}"> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="13.333" /> + <Setter Property="Foreground" Value="{StaticResource PasswordBoxForegroundBrush}" /> + <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Padding" Value="6,4" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> + <Setter Property="PasswordChar" Value="â—" /> + <Setter Property="KeyboardNavigation.TabNavigation" Value="None" /> + <Setter Property="AllowDrop" Value="true" /> + <Setter Property="FocusVisualStyle" Value="{x:Null}" /> + <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" /> + <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> + <Setter Property="FlowDirection" Value="LeftToRight" /> + <Setter Property="CaretBrush" Value="{StaticResource CaretForegroundBrush}" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type PasswordBox}"> + <Grid> + <Border Background="{TemplateBinding Background}" x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" /> + <Border x:Name="DisabledVisualElement" BorderBrush="{StaticResource DisabledVisualElement}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource DisabledVisualElement}" IsHitTestVisible="False" Opacity="0" /> + <Border x:Name="ReadOnlyVisualElement" Background="{StaticResource TextBoxReadOnlyBackgroundBrush}" Opacity="0" /> + <Border> + <ScrollViewer x:Name="PART_ContentHost" /> + </Border> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="IsEnabled" Value="False"> + <Setter Property="Opacity" Value="1" TargetName="DisabledVisualElement" /> + </Trigger> + <Trigger Property="IsMouseOver" Value="True"> + <Setter Property="BorderBrush" Value="{StaticResource TextBoxHoverBorderBrush}" TargetName="Bd" /> + </Trigger> + <Trigger Property="IsFocused" Value="True"> + <Setter Property="BorderBrush" Value="{StaticResource TextBoxFocusedBrush}" TargetName="Bd" /> + </Trigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}" Value="True" /> + <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" /> + </MultiDataTrigger.Conditions> + <Setter Property="Opacity" Value="1" TargetName="ReadOnlyVisualElement" /> + </MultiDataTrigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ToolTip Style ********************************* --> + <Style x:Key="{x:Type ToolTip}" TargetType="ToolTip"> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Background" Value="{StaticResource TooltipBackgroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource TooltipBorderBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Padding" Value="10,7" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ToolTip"> + <Grid> + <Rectangle Stroke="{TemplateBinding BorderBrush}" Fill="{TemplateBinding Background}" StrokeThickness="{TemplateBinding BorderThickness}" /> + <StackPanel Orientation="Horizontal" d:LayoutOverrides="Width, Height"> + <ContentPresenter Margin="{TemplateBinding Padding}" Content="{TemplateBinding Content}" /> + </StackPanel> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Expander Right Style ********************************* --> + <Style x:Key="ExpanderRightHeaderStyle" TargetType="{x:Type ToggleButton}"> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ToggleButton}"> + <Border Padding="{TemplateBinding Padding}"> + <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> + <Grid.RowDefinitions> + <RowDefinition Height="30" /> + <RowDefinition Height="*" /> + </Grid.RowDefinitions> + <Grid> + <Grid.LayoutTransform> + <TransformGroup> + <TransformGroup.Children> + <TransformCollection> + <RotateTransform Angle="-90" /> + </TransformCollection> + </TransformGroup.Children> + </TransformGroup> + </Grid.LayoutTransform> + <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> + <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> + </Grid> + <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Stretch" /> + </Grid> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="IsChecked" Value="true"> + <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> + </Trigger> + <Trigger Property="IsMouseOver" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> + </Trigger> + <Trigger Property="IsPressed" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Expander Up Style ********************************* --> + <Style x:Key="ExpanderUpHeaderStyle" TargetType="{x:Type ToggleButton}"> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ToggleButton}"> + <Border Padding="{TemplateBinding Padding}"> + <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="30" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <Grid> + <Grid.LayoutTransform> + <TransformGroup> + <TransformGroup.Children> + <TransformCollection> + <RotateTransform Angle="180" /> + </TransformCollection> + </TransformGroup.Children> + </TransformGroup> + </Grid.LayoutTransform> + <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> + <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> + </Grid> + <ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center" /> + </Grid> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="IsChecked" Value="true"> + <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> + </Trigger> + <Trigger Property="IsMouseOver" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> + </Trigger> + <Trigger Property="IsPressed" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Expander Left Style ********************************* --> + <Style x:Key="ExpanderLeftHeaderStyle" TargetType="{x:Type ToggleButton}"> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ToggleButton}"> + <Border Padding="{TemplateBinding Padding}"> + <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> + <Grid.RowDefinitions> + <RowDefinition Height="30" /> + <RowDefinition Height="*" /> + </Grid.RowDefinitions> + <Grid> + <Grid.LayoutTransform> + <TransformGroup> + <TransformGroup.Children> + <TransformCollection> + <RotateTransform Angle="90" /> + </TransformCollection> + </TransformGroup.Children> + </TransformGroup> + </Grid.LayoutTransform> + <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> + <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> + </Grid> + <ContentPresenter Grid.Row="1" HorizontalAlignment="Center" Margin="0,4,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Stretch" /> + </Grid> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="IsChecked" Value="true"> + <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> + </Trigger> + <Trigger Property="IsMouseOver" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> + </Trigger> + <Trigger Property="IsPressed" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Expander Down Style ********************************* --> + <Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ToggleButton}"> + <Border Padding="{TemplateBinding Padding}"> + <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="30" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> + <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> + <ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center" /> + </Grid> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="IsChecked" Value="true"> + <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> + </Trigger> + <Trigger Property="IsMouseOver" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> + </Trigger> + <Trigger Property="IsPressed" Value="true"> + <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> + <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> + <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Expander Style ********************************* --> + <Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}"> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="Background" Value="{StaticResource ExpanderBackgroundBrush}" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Padding" Value="2" /> + <Setter Property="HorizontalContentAlignment" Value="Stretch" /> + <Setter Property="VerticalContentAlignment" Value="Stretch" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Expander}"> + <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="true"> + <DockPanel> + <ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ExpanderDownHeaderStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> + <ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> + </DockPanel> + </Border> + <ControlTemplate.Triggers> + <Trigger Property="IsExpanded" Value="true"> + <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" /> + </Trigger> + <Trigger Property="ExpandDirection" Value="Right"> + <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right" /> + <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left" /> + <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}" /> + </Trigger> + <Trigger Property="ExpandDirection" Value="Up"> + <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top" /> + <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom" /> + <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}" /> + </Trigger> + <Trigger Property="ExpandDirection" Value="Left"> + <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left" /> + <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right" /> + <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}" /> + </Trigger> + <Trigger Property="IsEnabled" Value="false"> + <Setter Property="Foreground" Value="{StaticResource ExpanderDisabledForegroundBrush}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ToggleButton Style ********************************* --> + <Style x:Key="ToggleButtonStyle" TargetType="{x:Type ToggleButton}"> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Padding" Value="10,0,10,2" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ToggleButton}"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="CheckStates"> + <VisualState x:Name="Checked"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="checked"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Collapsed</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unchecked" /> + <VisualState x:Name="Indeterminate" /> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> + <Rectangle x:Name="checked" Fill="{StaticResource ButtonPressedBackgroundBrush}" Stroke="{StaticResource ButtonPressedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" /> + <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> + <ContentPresenter x:Name="contentPresenter" /> + </ContentControl> + <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource ForegroundBrush}"> + <ContentPresenter x:Name="contentPresenter1" /> + </ContentControl> + <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> + <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* GroupBox Style ********************************* --> + <BorderGapMaskConverter x:Key="BorderGapMaskConverter" /> + <Style x:Key="GroupBoxStyle" TargetType="{x:Type GroupBox}"> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource GroupBoxBorderBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Padding" Value="5" /> + <Setter Property="SnapsToDevicePixels" Value="True" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type GroupBox}"> + <Grid SnapsToDevicePixels="true"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="6" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="6" /> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="Auto" /> + <RowDefinition Height="Auto" /> + <RowDefinition Height="*" /> + <RowDefinition Height="6" /> + </Grid.RowDefinitions> + <Border BorderBrush="{StaticResource TransparentBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="4" Grid.Column="0" Grid.Row="1" Grid.RowSpan="3" /> + <Border x:Name="Header" Grid.Column="1" Padding="10,0,10,0" Grid.Row="0" Grid.RowSpan="2"> + <ContentPresenter ContentSource="Header" Height="20" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + </Border> + <ContentPresenter Grid.ColumnSpan="2" Grid.Column="1" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + <Border Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3"> + <Border.OpacityMask> + <MultiBinding ConverterParameter="7" Converter="{StaticResource BorderGapMaskConverter}"> + <Binding ElementName="Header" Path="ActualWidth" /> + <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" /> + <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" /> + </MultiBinding> + </Border.OpacityMask> + <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> + </Border> + </Border> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!--********************** Implicit Styles *********************** --> + <Style BasedOn="{StaticResource ButtonStyle}" TargetType="{x:Type Button}" /> + <Style BasedOn="{StaticResource ScrollBarStyle}" TargetType="{x:Type ScrollBar}" /> + <Style BasedOn="{StaticResource ScrollViewerStyle}" TargetType="{x:Type ScrollViewer}" /> + <Style BasedOn="{StaticResource ComboBoxStyle}" TargetType="{x:Type ComboBox}" /> + <Style BasedOn="{StaticResource ComboBoxItemStyle}" TargetType="{x:Type ComboBoxItem}" /> + <Style BasedOn="{StaticResource TextBoxStyle}" TargetType="{x:Type TextBox}" /> + <Style BasedOn="{StaticResource ListBoxStyle}" TargetType="{x:Type ListBox}" /> + <Style BasedOn="{StaticResource ListBoxItemStyle}" TargetType="{x:Type ListBoxItem}" /> + <Style BasedOn="{StaticResource CheckBoxStyle}" TargetType="CheckBox"> + <!-- Adding setter for VerticalContentAlignment to target default behavior of MS check box. --> + <Setter Property="VerticalContentAlignment" Value="Top" /> + </Style> + <Style BasedOn="{StaticResource RadioButtonStyle}" TargetType="{x:Type RadioButton}" /> + <Style BasedOn="{StaticResource LabelStyle}" TargetType="{x:Type Label}" /> + <Style BasedOn="{StaticResource HyperlinkStyle}" TargetType="{x:Type Hyperlink}" /> + <Style BasedOn="{StaticResource SliderStyle}" TargetType="{x:Type Slider}" /> + <Style BasedOn="{StaticResource RepeatButtonStyle}" TargetType="{x:Type RepeatButton}" /> + <Style BasedOn="{StaticResource GridSplitterStyle}" TargetType="{x:Type GridSplitter}" /> + <Style BasedOn="{StaticResource ProgressBarStyle}" TargetType="{x:Type ProgressBar}" /> + <Style BasedOn="{StaticResource PasswordBoxStyle}" TargetType="{x:Type PasswordBox}" /> + <Style BasedOn="{StaticResource ExpanderStyle}" TargetType="{x:Type Expander}" /> + <Style BasedOn="{StaticResource ToggleButtonStyle}" TargetType="{x:Type ToggleButton}" /> + <Style BasedOn="{StaticResource GroupBoxStyle}" TargetType="{x:Type GroupBox}" /> + +</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Theme/Styles.Extended.Wpf.Toolkit.xaml b/Luna/Theme/Styles.Extended.Wpf.Toolkit.xaml new file mode 100644 index 0000000..6cca8d9 --- /dev/null +++ b/Luna/Theme/Styles.Extended.Wpf.Toolkit.xaml @@ -0,0 +1,77 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"> + + <Style x:Key="TimePickerStyle" TargetType="{x:Type toolkit:TimePicker}"> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Padding" Value="6,3" /> + <Setter Property="TextAlignment" Value="Left" /> + <Setter Property="Validation.ErrorTemplate" Value="{StaticResource TextBoxValidationToolTipTemplate}"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type toolkit:TimePicker}"> + <Grid x:Name="root"> + <toolkit:ButtonSpinner x:Name="PART_Spinner" + IsTabStop="False" + Background="{TemplateBinding Background}" + BorderBrush="{TemplateBinding BorderBrush}" + BorderThickness="{TemplateBinding BorderThickness}" + HorizontalContentAlignment="Stretch" + VerticalContentAlignment="Stretch" + ButtonSpinnerLocation="{TemplateBinding ButtonSpinnerLocation}" + AllowSpin="{TemplateBinding AllowSpin}" + ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}" + Padding="0"> + <toolkit:WatermarkTextBox x:Name="PART_TextBox" + BorderThickness="0" + Background="Transparent" + FontFamily="{TemplateBinding FontFamily}" + FontSize="{TemplateBinding FontSize}" + FontStretch="{TemplateBinding FontStretch}" + FontStyle="{TemplateBinding FontStyle}" + FontWeight="{TemplateBinding FontWeight}" + Foreground="{TemplateBinding Foreground}" + HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" + VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" + IsUndoEnabled="{Binding IsUndoEnabled, RelativeSource={RelativeSource TemplatedParent}}" + IsTabStop="True" + MinWidth="20" + AcceptsReturn="False" + Padding="{TemplateBinding Padding}" + TextAlignment="{TemplateBinding TextAlignment}" + TextWrapping="NoWrap" + Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}" + TabIndex="{TemplateBinding TabIndex}" + Watermark="{TemplateBinding Watermark}" + WatermarkTemplate="{TemplateBinding WatermarkTemplate}" + CaretBrush="{StaticResource ForegroundBrush}" + SelectionBrush="{StaticResource TextBoxFocusedBrush}" /> + </toolkit:ButtonSpinner> + <Border x:Name="FocusVisual" + Opacity="0" + BorderThickness="{TemplateBinding BorderThickness}" + BorderBrush="{StaticResource TextBoxFocusedBrush}" /> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="IsMouseOver" Value="True"> + <Setter Property="BorderBrush" Value="{StaticResource TextBoxHoverBorderBrush}" /> + <Setter Property="Background" Value="{StaticResource TextBoxHoverBackgroundBrush}" /> + </Trigger> + <Trigger SourceName="PART_TextBox" Property="IsFocused" Value="True"> + <Setter TargetName="FocusVisual" Property="Opacity" Value="1" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <Style BasedOn="{StaticResource TimePickerStyle}" TargetType="{x:Type toolkit:TimePicker}" /> + +</ResourceDictionary> diff --git a/Luna/Theme/Styles.Shared.xaml b/Luna/Theme/Styles.Shared.xaml new file mode 100644 index 0000000..a8e336e --- /dev/null +++ b/Luna/Theme/Styles.Shared.xaml @@ -0,0 +1,774 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"> + + <!-- ********************************* COLORS ********************************* --> + <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="Theme.Colors.xaml" /> + </ResourceDictionary.MergedDictionaries> + + <!-- ********************************* BRUSHES ********************************* --> + <SolidColorBrush x:Key="ForegroundBrush" Color="{StaticResource Color_002}" /> + <SolidColorBrush x:Key="LightForegroundBrush" Color="{StaticResource Color_001}" /> + <SolidColorBrush x:Key="TransparentBrush" Color="{StaticResource Color_016}" /> + <SolidColorBrush x:Key="DisabledVisualElement" Color="{StaticResource Color_009}" Opacity="0.6" /> + <SolidColorBrush x:Key="ValidationErrorElement" Color="{StaticResource Color_028}" /> + <SolidColorBrush x:Key="CaretForegroundBrush" Color="{StaticResource Color_022}" /> + + <!-- Scrollbar/ScrollViewer Brushes --> + <SolidColorBrush x:Key="HScrollbarThumbBackgroundBrush" Color="{StaticResource Color_005}" /> + <SolidColorBrush x:Key="VScrollbarThumbBackgroundBrush" Color="{StaticResource Color_005}" /> + <SolidColorBrush x:Key="ScrollbarPageButtonArrowBackgroundBrush" Color="{StaticResource Color_005}" /> + <SolidColorBrush x:Key="ScrollbarPageButtonArrowPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ScrollbarPageButtonArrowHoverBackgroundBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="ScrollbarPageButtonArrowDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="VScrollbarThumbHoverBackgroundBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="HScrollbarThumbHoverBackgroundBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="VScrollbarThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="HScrollbarThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="VScrollbarThumbDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="HScrollbarThumbDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ScrollbarDisabledBackgroundBrush" Color="{StaticResource Color_008}" /> + <SolidColorBrush x:Key="ScrollbarBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ScrollViewerCornerBackgroundBrush" Color="{StaticResource Color_009}"/> + + <!-- ComboBox Brushes --> + <SolidColorBrush x:Key="ComboBoxBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ComboBoxBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxReadOnlyBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxHoverBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="ComboBoxFocusedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ComboBoxDisabledBackgroundBrush" Color="{StaticResource Color_009}" Opacity="0.6" /> + <SolidColorBrush x:Key="PopupBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="PopupBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxReadOnlyBackgroundBrush" Color="{StaticResource Color_064}" /> + <!-- Need to change color or delete --> + + <!-- TextBox Brushes --> + <SolidColorBrush x:Key="TextBoxBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="TextBoxBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="TextBoxHoverBackgroundBrush" Color="{StaticResource Color_008}" /> + <SolidColorBrush x:Key="TextBoxHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="TextBoxFocusedBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="TextBoxReadOnlyBackgroundBrush" Color="{StaticResource Color_007}" /> + <SolidColorBrush x:Key="TextBoxSelectionBackgroundBrush" Color="{StaticResource Color_024}" Opacity="0.4" /> + <SolidColorBrush x:Key="TextBoxSelectionForegroundBrush" Color="{StaticResource Color_025}" /> + + <!-- Button Brushes --> + <SolidColorBrush x:Key="ButtonBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ButtonBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ButtonHoverBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ButtonHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="ButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> + + <!-- ComboBoxItem Brushes --> + <SolidColorBrush x:Key="ComboBoxItemHoverBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxItemHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="ComboBoxItemPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ComboBoxItemPressedBorderBrush" Color="{StaticResource Color_024}" /> + + <!-- ComboBoxToggleButton Brushes --> + <SolidColorBrush x:Key="ComboBoxToggleButtonBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ComboBoxToggleButtonBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxToggleButtonHoverBackgroundBrush" Color="{StaticResource Color_008}" /> + <SolidColorBrush x:Key="ComboBoxToggleButtonHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="ComboBoxToggleButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ComboBoxToggleButtonDropDownSeparatorBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ComboBoxToggleButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> + + <!-- ListBox Brushes --> + <SolidColorBrush x:Key="ListBoxBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="ListBoxBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ListBoxItemHoverBackgroundBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="ListBoxItemHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="ListBoxItemPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="ListBoxItemPressedBorderBrush" Color="{StaticResource Color_024}" /> + + <SolidColorBrush x:Key="ListBoxItemBackgroundBrush" Color="{StaticResource Color_016}" /> + <!-- Need to change color or delete --> + <SolidColorBrush x:Key="ListBoxItemBorderBrush" Color="{StaticResource Color_016}" /> + <!-- Need to change color or delete --> + <SolidColorBrush x:Key="ListBoxItemSelectedBackgroundBrush" Color="{StaticResource Color_024}" /> + <!-- Need to change color or delete --> + <SolidColorBrush x:Key="ListBoxItemSelectedBorderBrush" Color="{StaticResource Color_024}" /> + <!-- Need to change color or delete --> + + <!-- CheckBox Brushes --> + <SolidColorBrush x:Key="CheckBoxBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="CheckBoxHoverBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="CheckBoxPressedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="CheckBoxFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="CheckBoxInvalidUnfocusedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="CheckBoxInvalidFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="CheckBoxBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="CheckBoxHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="CheckBoxPressedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="CheckBoxFocusedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="CheckBoxInvalidUnfocusedBorderBrush" Color="{StaticResource Color_029}" /> + <SolidColorBrush x:Key="CheckBoxInvalidFocusedBorderBrush" Color="{StaticResource Color_028}" /> + <SolidColorBrush x:Key="CheckBoxIndeterminateCheckBackgroundBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="CheckBoxCheckBackgroundBrush" Color="{StaticResource Color_024}" /> + + <!-- RadioButton Brushes --> + <SolidColorBrush x:Key="RadioButtonBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="RadioButtonHoverBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="RadioButtonPressedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="RadioButtonFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="RadioButtonInvalidUnfocusedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="RadioButtonInvalidFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="RadioButtonBorderBrush" Color="{StaticResource Color_006}" /> + <SolidColorBrush x:Key="RadioButtonHoverBorderBrush" Color="{StaticResource Color_004}" /> + <SolidColorBrush x:Key="RadioButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="RadioButtonFocusedBorderBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="RadioButtonInvalidUnfocusedBorderBrush" Color="{StaticResource Color_029}" /> + <SolidColorBrush x:Key="RadioButtonInvalidFocusedBorderBrush" Color="{StaticResource Color_028}" /> + <SolidColorBrush x:Key="RadioButtonCheckBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="RadioButtonIndeterminateCheckBackgroundBrush" Color="{StaticResource Color_004}" /> + + <!-- Visual Glyphs brushes --> + <SolidColorBrush x:Key="GlyphBackgroundBrush" Color="{StaticResource Color_003}" /> + <SolidColorBrush x:Key="GlyphHoverBackgroundBrush" Color="{StaticResource Color_002}" /> + <SolidColorBrush x:Key="GlyphPressedBackgroundBrush" Color="{StaticResource Color_024}" /> + <SolidColorBrush x:Key="GlyphDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> + + <!-- ValidationToolTip Brushes --> + <SolidColorBrush x:Key="ValidationToolTipTemplateShadowBrush" Color="{StaticResource Color_003}" /> + + <!-- ToolTip Brushes --> + <SolidColorBrush x:Key="TooltipBackgroundBrush" Color="{StaticResource Color_009}" /> + <SolidColorBrush x:Key="TooltipBorderBrush" Color="{StaticResource Color_006}" /> + + <!-- ******************************************************** SL-WPF SHARED INLINE CONTROLS RESOURCES *********************************************************** + *********************************************************************************************************************************************************************** --> + + <!-- ********************************* ValidationToolTip Template ********************************* --> + <ControlTemplate x:Key="ValidationToolTipTemplate"> + <Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0"> + <Grid.RenderTransform> + <TranslateTransform x:Name="xform" X="-25" /> + </Grid.RenderTransform> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="OpenStates"> + <VisualStateGroup.Transitions> + <VisualTransition GeneratedDuration="0" /> + <VisualTransition GeneratedDuration="0:0:0.2" To="Open"> + <Storyboard> + <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform"> + <DoubleAnimation.EasingFunction> + <BackEase Amplitude=".3" EasingMode="EaseOut" /> + </DoubleAnimation.EasingFunction> + </DoubleAnimation> + <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> + </Storyboard> + </VisualTransition> + </VisualStateGroup.Transitions> + <VisualState x:Name="Closed"> + <Storyboard> + <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Open"> + <Storyboard> + <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform" /> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="4,4,-4,-4" Opacity="0.02" /> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="3,3,-3,-3" Opacity="0.08" /> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="2,2,-2,-2" Opacity="0.15" /> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="1,1,-1,-1" Opacity="0.21" /> + <Border Background="{StaticResource ValidationErrorElement}" /> + <Border> + <TextBlock Foreground="{StaticResource LightForegroundBrush}" MaxWidth="250" Margin="8,4,8,4" TextWrapping="Wrap" Text="{Binding (Validation.Errors)[0].ErrorContent}" UseLayoutRounding="false" /> + </Border> + </Grid> + </ControlTemplate> + + <!-- ********************************* ComboBoxToggleButton Style ********************************* --> + <Style x:Key="ComboBoxToggleButtonStyle" TargetType="ToggleButton"> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource ComboBoxToggleButtonBorderBrush}" /> + <Setter Property="Background" Value="{StaticResource ComboBoxToggleButtonBackgroundBrush}"/> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Padding" Value="2" /> + <Setter Property="Cursor" Value="Hand" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ToggleButton"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Bd"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ComboBoxToggleButtonHoverBackgroundBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Stroke" Storyboard.TargetName="Bd"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ComboBoxToggleButtonHoverBorderBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphPressedBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphDisabledBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="CheckStates"> + <VisualState x:Name="Checked"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ArrowSelected"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unchecked" /> + <VisualState x:Name="Indeterminate" /> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused" /> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Grid.ColumnDefinitions> + <ColumnDefinition /> + <ColumnDefinition Width="30" /> + </Grid.ColumnDefinitions> + <Rectangle x:Name="Bd" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="2" /> + <Grid Grid.Column="1"> + <Rectangle Width="1" Fill="{StaticResource ComboBoxToggleButtonDropDownSeparatorBackgroundBrush}" HorizontalAlignment="Left" Margin="-1,5,0,5" /> + <Path x:Name="Arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" /> + <Path x:Name="ArrowSelected" Width="10" Height="6" Visibility="Collapsed" Fill="{StaticResource GlyphPressedBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" /> + </Grid> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ComboBoxItem Style ********************************* --> + <Style x:Key="ComboBoxItemStyle" TargetType="ComboBoxItem"> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Padding" Value="6,0" /> + <Setter Property="HorizontalContentAlignment" Value="Left" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ComboBoxItem"> + <Grid Background="{TemplateBinding Background}"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="fillColor" /> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="SelectionStates"> + <VisualState x:Name="Unselected" /> + <VisualState x:Name="Selected"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="CheckedBd"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Collapsed</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="SelectedUnfocused" /> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FocusVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + <VisualStateGroup x:Name="LayoutStates"> + <VisualState x:Name="AfterLoaded" /> + <VisualState x:Name="BeforeLoaded" /> + <VisualState x:Name="BeforeUnloaded" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle Fill="{StaticResource TransparentBrush}" /> + <Rectangle x:Name="fillColor" Fill="{StaticResource ComboBoxItemHoverBackgroundBrush}" IsHitTestVisible="False" Opacity="0" Stroke="{StaticResource ComboBoxItemHoverBorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" /> + <Rectangle x:Name="CheckedBd" Fill="{StaticResource ComboBoxItemPressedBackgroundBrush}" IsHitTestVisible="False" Visibility="Collapsed" Stroke="{StaticResource ComboBoxItemPressedBorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" /> + <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> + <ContentPresenter x:Name="contentPresenter" /> + </ContentControl> + <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource ForegroundBrush}"> + <ContentPresenter x:Name="contentPresenter1" /> + </ContentControl> + <Rectangle x:Name="FocusVisualElement" Stroke="{StaticResource ComboBoxItemPressedBackgroundBrush}" Visibility="Collapsed" StrokeThickness="2" /> + <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ListBoxItem Style ********************************* --> + <Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> + <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Padding" Value="6,2" /> + <Setter Property="Margin" Value="0" /> + <Setter Property="HorizontalContentAlignment" Value="Stretch" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ListBoxItem"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemHoverBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="SelectionStates"> + <VisualState x:Name="Unselected" /> + <VisualState x:Name="Selected"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="BgSelected"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Collapsed</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="SelectedUnfocused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="BgSelected"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Collapsed</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle x:Name="Bd" Fill="{TemplateBinding Background}" /> + <Rectangle x:Name="BgSelected" Fill="{StaticResource ListBoxItemSelectedBackgroundBrush}" Stroke="{StaticResource ListBoxItemSelectedBorderBrush}" Visibility="Collapsed" /> + <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> + <ContentPresenter x:Name="contentPresenter" /> + </ContentControl> + <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource ForegroundBrush}"> + <ContentPresenter x:Name="contentPresenter1" /> + </ContentControl> + <Rectangle x:Name="FocusedVisualElement" IsHitTestVisible="False" Visibility="Collapsed" Stroke="{StaticResource ListBoxItemPressedBorderBrush}" StrokeThickness="2" /> + <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************** CheckBoxStyle **********************************--> + <Style x:Key="CheckBoxStyle" TargetType="CheckBox"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="HorizontalContentAlignment" Value="Left" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="Padding" Value="8,0,0,0" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="CheckBox"> + <Grid VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="hover" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pressed" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter" /> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="disabled" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="CheckStates"> + <VisualState x:Name="Checked"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="checkBox" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Unchecked" /> + <VisualState x:Name="Indeterminate"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="IndeterminateCheck" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focused" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + <VisualStateGroup x:Name="ValidationStates"> + <VisualState x:Name="Valid" /> + <VisualState x:Name="InvalidUnfocused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidUnfocused" /> + </Storyboard> + </VisualState> + <VisualState x:Name="InvalidFocused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidFocused" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="18" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <Rectangle Fill="{StaticResource TransparentBrush}" /> + <Rectangle x:Name="normal" Opacity="1" Stroke="{StaticResource CheckBoxBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxBackgroundBrush}" Width="18" Height="18" /> + <Rectangle x:Name="hover" Stroke="{StaticResource CheckBoxHoverBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxHoverBackgroundBrush}" Opacity="0" Width="18" Height="18" /> + <Rectangle x:Name="pressed" Opacity="0" Stroke="{StaticResource CheckBoxPressedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxPressedBackgroundBrush}" Width="18" Height="18" /> + <Rectangle x:Name="focused" Opacity="0" Stroke="{StaticResource CheckBoxFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxFocusedBackgroundBrush}" Width="18" Height="18" /> + <Rectangle x:Name="invalidUnfocused" Opacity="0" Stroke="{StaticResource CheckBoxInvalidUnfocusedBackgroundBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxInvalidUnfocusedBackgroundBrush}" Width="18" Height="18" /> + <Rectangle x:Name="invalidFocused" Opacity="0" Stroke="{StaticResource CheckBoxInvalidFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxInvalidFocusedBackgroundBrush}" Width="18" Height="18" /> + <Path x:Name="checkBox" Height="10" Width="12" Stretch="Fill" Opacity="0" Data="M 1145.607177734375,430 C1145.607177734375,430 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1138,434.5538330078125 1138,434.5538330078125 1138,434.5538330078125 1141.482177734375,438 1141.482177734375,438 1141.482177734375,438 1141.96875,437.9375 1141.96875,437.9375 1141.96875,437.9375 1147,431.34619140625 1147,431.34619140625 1147,431.34619140625 1145.607177734375,430 1145.607177734375,430 z" Fill="{StaticResource CheckBoxCheckBackgroundBrush}" UseLayoutRounding="False" /> + <Rectangle x:Name="IndeterminateCheck" Fill="{StaticResource CheckBoxIndeterminateCheckBackgroundBrush}" Height="3" Width="8" Opacity="0" /> + <Rectangle x:Name="disabled" Opacity="0" StrokeThickness="1" Fill="{StaticResource DisabledVisualElement}" Width="18" Height="18" /> + <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" Margin="{TemplateBinding Padding}" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************** RadioButton Style **********************************--> + <Style x:Key="RadioButtonStyle" TargetType="RadioButton"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="HorizontalContentAlignment" Value="Left" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="Padding" Value="6,0,0,0" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="MinWidth" Value="20" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="RadioButton"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="hover" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pressed" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter" /> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="disabled" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="CheckStates"> + <VisualState x:Name="Checked"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Checked1" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Unchecked" /> + <VisualState x:Name="Indeterminate" /> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focused" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + <VisualStateGroup x:Name="ValidationStates"> + <VisualState x:Name="Valid" /> + <VisualState x:Name="InvalidUnfocused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidUnfocused" /> + </Storyboard> + </VisualState> + <VisualState x:Name="InvalidFocused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidFocused" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="18" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-6,0" /> + <Ellipse x:Name="normal" Opacity="1" Stroke="{StaticResource RadioButtonBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonBackgroundBrush}" Width="18" Height="18" /> + <Ellipse x:Name="hover" Stroke="{StaticResource RadioButtonHoverBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonHoverBackgroundBrush}" Opacity="0" Width="18" Height="18" /> + <Ellipse x:Name="pressed" Opacity="0" Stroke="{StaticResource RadioButtonPressedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonPressedBackgroundBrush}" Width="18" Height="18" /> + <Ellipse x:Name="focused" Opacity="0" Stroke="{StaticResource RadioButtonFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonFocusedBackgroundBrush}" Width="18" Height="18" /> + <Ellipse x:Name="invalidUnfocused" Opacity="0" Stroke="{StaticResource RadioButtonInvalidUnfocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonInvalidUnfocusedBackgroundBrush}" Width="18" Height="18" /> + <Ellipse x:Name="invalidFocused" Opacity="0" Stroke="{StaticResource RadioButtonInvalidFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonInvalidFocusedBackgroundBrush}" Width="18" Height="18" /> + <Ellipse x:Name="Checked1" Fill="{StaticResource RadioButtonCheckBackgroundBrush}" Opacity="0" Width="10" Height="10" /> + <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> + <Ellipse x:Name="disabled" Opacity="0" StrokeThickness="1" Fill="{StaticResource DisabledVisualElement}" Width="18" Height="18" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ButtonStyle ********************************* --> + <Style x:Key="ButtonStyle" TargetType="Button"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="Padding" Value="10,0,10,2" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Background" Value="{StaticResource ButtonPressedBackgroundBrush}" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="Button"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Background"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Background"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="BorderBrush"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="BorderBrush"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Border x:Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{StaticResource ButtonBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" /> + <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> + <ContentPresenter x:Name="contentPresenter" /> + </ContentControl> + <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> + <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Theme/Styles.WPF.xaml b/Luna/Theme/Styles.WPF.xaml new file mode 100644 index 0000000..d473b00 --- /dev/null +++ b/Luna/Theme/Styles.WPF.xaml @@ -0,0 +1,827 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"> + + <!-- ********************************* RESOURCES ********************************* --> + <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="Theme.Colors.xaml" /> + <ResourceDictionary Source="Styles.Shared.xaml" /> + </ResourceDictionary.MergedDictionaries> + + <!-- ******************************************************** WPF SPECIFIC INLINE-CONTROLS RESOURCES *********************************************************** + *********************************************************************************************************************************************************************** --> + <!-- ********************************* ScrollBarButton Style ********************************* --> + <Style x:Key="ScrollBarButtonStyle" TargetType="{x:Type RepeatButton}"> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Padding" Value="0" /> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="Focusable" Value="false" /> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type RepeatButton}"> + <Grid x:Name="grid1"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowPressedBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowDisabledBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> + <Path x:Name="Arrow" Data="F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z " Height="6" Stretch="Uniform" Width="10" Fill="{StaticResource ScrollbarPageButtonArrowBackgroundBrush}" Margin="{TemplateBinding Padding}" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ScrollBarPageButton Style ********************************* --> + <Style x:Key="ScrollBarPageButtonStyle" TargetType="{x:Type RepeatButton}"> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="Background" Value="Transparent" /> + <Setter Property="Focusable" Value="false" /> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type RepeatButton}"> + <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver" /> + <VisualState x:Name="Pressed" /> + <VisualState x:Name="Disabled" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + </Rectangle> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Horizontal ScrollBarThumb Style ********************************* --> + <Style x:Key="HScrollBarThumbStyle" TargetType="{x:Type Thumb}"> + <Setter Property="MinWidth" Value="20" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Thumb}"> + <Grid Margin="0"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbPressedBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbDisabledBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> + <Rectangle x:Name="Thumb" Margin="1" Fill="{StaticResource HScrollbarThumbBackgroundBrush}" Height="8" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* Vertical ScrollbarThumb Style ********************************* --> + <Style x:Key="VScrollBarThumbStyle" TargetType="{x:Type Thumb}"> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="MinHeight" Value="20" /> + <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Thumb}"> + <Grid x:Name="grid" Height="Auto" Width="Auto"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbPressedBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbDisabledBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> + <Rectangle x:Name="Thumb" Fill="{StaticResource VScrollbarThumbBackgroundBrush}" Width="8" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ScrollBar Style ********************************* --> + <Style x:Key="ScrollBarStyle" TargetType="{x:Type ScrollBar}"> + <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> + <Setter Property="Stylus.IsFlicksEnabled" Value="false" /> + <Setter Property="Width" Value="30" /> + <Setter Property="MinWidth" Value="30" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ScrollBar}"> + <Grid x:Name="Bg" SnapsToDevicePixels="true"> + <Grid.RowDefinitions> + <RowDefinition Height="30" /> + <RowDefinition Height="0.00001*" /> + <RowDefinition Height="30" /> + </Grid.RowDefinitions> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualStateGroup.Transitions> + <VisualTransition GeneratedDuration="0:0:0.3" /> + </VisualStateGroup.Transitions> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver" /> + <VisualState x:Name="Disabled"> + <Storyboard> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton"> + <EasingDoubleKeyFrame KeyTime="0" Value="0.6" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton1"> + <EasingDoubleKeyFrame KeyTime="0" Value="0.6" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="thumb"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + </DoubleAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle Grid.RowSpan="3" Fill="{StaticResource ScrollbarBackgroundBrush}" Margin="0" /> + <RepeatButton x:Name="repeatButton" Command="{x:Static ScrollBar.LineUpCommand}" IsEnabled="True" Style="{StaticResource ScrollBarButtonStyle}" HorizontalAlignment="Center" /> + <Track x:Name="PART_Track" IsDirectionReversed="true" IsEnabled="True" Grid.Row="1"> + <Track.DecreaseRepeatButton> + <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> + </Track.DecreaseRepeatButton> + <Track.IncreaseRepeatButton> + <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> + </Track.IncreaseRepeatButton> + <Track.Thumb> + <Thumb x:Name="thumb" Style="{StaticResource VScrollBarThumbStyle}" HorizontalAlignment="Center" Width="30" /> + </Track.Thumb> + </Track> + <RepeatButton x:Name="repeatButton1" Command="{x:Static ScrollBar.LineDownCommand}" IsEnabled="True" Grid.Row="2" Style="{StaticResource ScrollBarButtonStyle}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center"> + <RepeatButton.RenderTransform> + <TransformGroup> + <ScaleTransform /> + <SkewTransform /> + <RotateTransform Angle="180" /> + <TranslateTransform /> + </TransformGroup> + </RepeatButton.RenderTransform> + </RepeatButton> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + <Style.Triggers> + <Trigger Property="Orientation" Value="Horizontal"> + <Setter Property="Width" Value="Auto" /> + <Setter Property="MinWidth" Value="0" /> + <Setter Property="Height" Value="30" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ScrollBar}"> + <Grid x:Name="Bg" SnapsToDevicePixels="true"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="30" /> + <ColumnDefinition Width="0.00001*" /> + <ColumnDefinition Width="30" /> + </Grid.ColumnDefinitions> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualStateGroup.Transitions> + <VisualTransition GeneratedDuration="0:0:0.3" /> + </VisualStateGroup.Transitions> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton"> + <EasingDoubleKeyFrame KeyTime="0" Value="1" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton1"> + <EasingDoubleKeyFrame KeyTime="0" Value="1" /> + </DoubleAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle Grid.ColumnSpan="5" Fill="{StaticResource ScrollbarBackgroundBrush}" /> + <RepeatButton x:Name="repeatButton" Command="{x:Static ScrollBar.LineLeftCommand}" IsEnabled="True" Style="{DynamicResource ScrollBarButtonStyle}" Opacity="1" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"> + <RepeatButton.RenderTransform> + <TransformGroup> + <ScaleTransform /> + <SkewTransform /> + <RotateTransform Angle="-90" /> + <TranslateTransform /> + </TransformGroup> + </RepeatButton.RenderTransform> + </RepeatButton> + <Track x:Name="PART_Track" Grid.Column="1" IsEnabled="True"> + <Track.DecreaseRepeatButton> + <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> + </Track.DecreaseRepeatButton> + <Track.IncreaseRepeatButton> + <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> + </Track.IncreaseRepeatButton> + <Track.Thumb> + <Thumb Style="{StaticResource HScrollBarThumbStyle}" VerticalAlignment="Center" Height="30" /> + </Track.Thumb> + </Track> + <RepeatButton x:Name="repeatButton1" Grid.Column="2" Command="{x:Static ScrollBar.LineRightCommand}" IsEnabled="True" Style="{DynamicResource ScrollBarButtonStyle}" Opacity="1" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"> + <RepeatButton.RenderTransform> + <TransformGroup> + <ScaleTransform /> + <SkewTransform /> + <RotateTransform Angle="90" /> + <TranslateTransform /> + </TransformGroup> + </RepeatButton.RenderTransform> + </RepeatButton> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Trigger> + </Style.Triggers> + </Style> + + <!-- ********************************* ScrollViewer Style ********************************* --> + <Style x:Key="ScrollViewerStyle" TargetType="{x:Type ScrollViewer}"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="HorizontalContentAlignment" Value="Left" /> + <Setter Property="VerticalContentAlignment" Value="Top" /> + <Setter Property="VerticalScrollBarVisibility" Value="Auto" /> + <Setter Property="Padding" Value="0" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ScrollViewer}"> + <Grid x:Name="Grid"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="Auto" /> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="*" /> + <RowDefinition Height="Auto" /> + </Grid.RowDefinitions> + <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0" /> + <Rectangle Grid.Column="1" Fill="{StaticResource ScrollViewerCornerBackgroundBrush}" Grid.Row="1"/> + <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Style="{StaticResource ScrollBarStyle}" /> + <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" Style="{StaticResource ScrollBarStyle}" /> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* TextBoxValidationToolTip Template ********************************* --> + <ControlTemplate x:Key="TextBoxValidationToolTipTemplate"> + <Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0"> + <Grid.RenderTransform> + <TranslateTransform x:Name="xform" X="-25" /> + </Grid.RenderTransform> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="OpenStates"> + <VisualStateGroup.Transitions> + <VisualTransition GeneratedDuration="0" /> + <VisualTransition GeneratedDuration="0:0:0.2" To="Open"> + <Storyboard> + <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform"> + <DoubleAnimation.EasingFunction> + <BackEase Amplitude=".3" EasingMode="EaseOut" /> + </DoubleAnimation.EasingFunction> + </DoubleAnimation> + <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> + </Storyboard> + </VisualTransition> + </VisualStateGroup.Transitions> + <VisualState x:Name="Closed"> + <Storyboard> + <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Open"> + <Storyboard> + <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform" /> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="4,4,-4,-4" Opacity="0.02" /> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="3,3,-3,-3" Opacity="0.08" /> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="2,2,-2,-2" Opacity="0.15" /> + <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" Margin="1,1,-1,-1" Opacity="0.21" /> + <Border Background="{StaticResource ValidationErrorElement}" /> + <Border> + <TextBlock Foreground="{StaticResource LightForegroundBrush}" MaxWidth="250" Margin="8,4,8,4" TextWrapping="Wrap" Text="{Binding (Validation.Errors).CurrentItem.ErrorContent}" UseLayoutRounding="false" /> + </Border> + </Grid> + </ControlTemplate> + + <!-- ********************************* ComboBoxEditableTextBox Style ********************************* --> + <Style x:Key="ComboBoxEditableTextBoxStyle" TargetType="{x:Type TextBox}"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="AllowDrop" Value="true" /> + <Setter Property="MinWidth" Value="0" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Padding" Value="6,4" /> + <Setter Property="FocusVisualStyle" Value="{x:Null}" /> + <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> + <Setter Property="SelectionOpacity" Value="0.4" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type TextBox}"> + <ScrollViewer Style="{StaticResource ScrollViewerStyle}" x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="Disabled"> + <Storyboard> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PART_ContentHost"> + <EasingDoubleKeyFrame KeyTime="0" Value="0.3" /> + </DoubleAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="ReadOnly" /> + <VisualState x:Name="MouseOver" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + </ScrollViewer> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ComboBoxEditable Template ********************************* --> + <ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="{x:Type ComboBox}"> + <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="Auto" /> + </Grid.ColumnDefinitions> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hover"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="disabled"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Unfocused" /> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="FocusedDropDown"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle x:Name="normal" Fill="{StaticResource ComboBoxBackgroundBrush}" Stroke="{StaticResource ComboBoxBorderBrush}" StrokeThickness="1" Grid.ColumnSpan="2" /> + <Rectangle x:Name="hover" Fill="{StaticResource ComboBoxHoverBackgroundBrush}" Stroke="{StaticResource ComboBoxHoverBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> + <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> + <Border x:Name="DropDownBorder" HorizontalAlignment="Stretch" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupBorderBrush}" BorderThickness="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" CornerRadius="2"> + <ScrollViewer x:Name="DropDownScrollViewer" Style="{StaticResource ScrollViewerStyle}"> + <Grid RenderOptions.ClearTypeHint="Enabled"> + <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> + <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}" /> + </Canvas> + <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + </Grid> + </ScrollViewer> + </Border> + </Popup> + <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.Column="0" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonStyle}" /> + <TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBoxStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Margin="0,0,31,0" /> + <Rectangle x:Name="focused" Stroke="{StaticResource ComboBoxFocusedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> + <Rectangle x:Name="disabled" Fill="{StaticResource ComboBoxDisabledBackgroundBrush}" Visibility="Collapsed" Grid.ColumnSpan="2" /> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="HasItems" Value="false"> + <Setter Property="Height" TargetName="DropDownBorder" Value="95" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + + <!-- ********************************* ComboBox Style ********************************* --> + <Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}"> + <Setter Property="Padding" Value="6,1,6,3" /> + <Setter Property="Margin" Value="0" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource ComboBoxBorderBrush}" /> + <Setter Property="ItemContainerStyle" Value="{StaticResource ComboBoxItemStyle}" /> + <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> + <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> + <Setter Property="ScrollViewer.CanContentScroll" Value="true" /> + <Setter Property="ScrollViewer.PanningMode" Value="Both" /> + <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> + <Setter Property="VerticalContentAlignment" Value="Center"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ComboBox}"> + <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition MinWidth="30" Width="0" /> + </Grid.ColumnDefinitions> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hover"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="disabled"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Unfocused" /> + <VisualState x:Name="Focused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="FocusedDropDown"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Rectangle x:Name="normal" Fill="{StaticResource ComboBoxBackgroundBrush}" Stroke="{StaticResource ComboBoxBorderBrush}" StrokeThickness="1" Grid.ColumnSpan="2" /> + <Rectangle x:Name="hover" Fill="{StaticResource ComboBoxHoverBackgroundBrush}" Stroke="{StaticResource ComboBoxHoverBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> + <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> + <Border x:Name="DropDownBorder" HorizontalAlignment="Stretch" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupBorderBrush}" BorderThickness="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" CornerRadius="2"> + <ScrollViewer x:Name="DropDownScrollViewer" Style="{StaticResource ScrollViewerStyle}"> + <Grid RenderOptions.ClearTypeHint="Enabled"> + <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> + <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}" /> + </Canvas> + <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + </Grid> + </ScrollViewer> + </Border> + </Popup> + <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonStyle}" /> + <ContentControl x:Name="contentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" IsHitTestVisible="false" > + <ContentPresenter ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> + </ContentControl> + <Rectangle x:Name="focused" Stroke="{StaticResource ComboBoxFocusedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> + <Rectangle x:Name="disabled" Fill="{StaticResource ComboBoxDisabledBackgroundBrush}" Visibility="Collapsed" Grid.ColumnSpan="2" /> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="HasItems" Value="false"> + <Setter Property="Height" TargetName="DropDownBorder" Value="95" /> + </Trigger> + <Trigger Property="IsEnabled" Value="false"> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Background" Value="{StaticResource ComboBoxBackgroundBrush}" /> + </Trigger> + <Trigger Property="IsGrouping" Value="true"> + <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> + </Trigger> + <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false"> + <Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}" /> + <Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + <Style.Triggers> + <Trigger Property="IsEditable" Value="true"> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Padding" Value="0" /> + <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}" /> + </Trigger> + </Style.Triggers> + </Style> + + <!-- ********************************* TextBox Style ********************************* --> + <Style x:Key="TextBoxStyle" TargetType="TextBox"> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="FontSize" Value="14.667" /> + <Setter Property="FontFamily" Value="Segoe UI" /> + <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> + <Setter Property="MinHeight" Value="30" /> + <Setter Property="Padding" Value="6,3" /> + <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> + <Setter Property="Validation.ErrorTemplate" Value="{StaticResource TextBoxValidationToolTipTemplate}"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="TextBox"> + <Grid x:Name="RootElement" SnapsToDevicePixels="True"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="MouseOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TextBoxHoverBorderBrush}" /> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Background" Storyboard.TargetName="Border"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TextBoxHoverBackgroundBrush}" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="DisabledVisualElement" /> + </Storyboard> + </VisualState> + <VisualState x:Name="ReadOnly"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ReadOnlyVisualElement" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" /> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused"> + <Storyboard> + <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="ValidationStates"> + <VisualState x:Name="Valid" /> + <VisualState x:Name="InvalidUnfocused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="InvalidFocused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <System:Boolean>True</System:Boolean> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Opacity="1"> + <Grid> + <Border x:Name="ReadOnlyVisualElement" Background="{StaticResource TextBoxReadOnlyBackgroundBrush}" Opacity="0" /> + <ScrollViewer x:Name="PART_ContentHost" BorderThickness="0" IsTabStop="False" Padding="{TemplateBinding Padding}" /> + </Grid> + </Border> + <Border x:Name="DisabledVisualElement" BorderBrush="{StaticResource DisabledVisualElement}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource DisabledVisualElement}" IsHitTestVisible="False" Opacity="0" /> + <Border x:Name="FocusVisualElement" BorderBrush="{StaticResource TextBoxFocusedBrush}" BorderThickness="{TemplateBinding BorderThickness}" IsHitTestVisible="False" Opacity="0" /> + <Border x:Name="ValidationErrorElement" BorderBrush="{StaticResource ValidationErrorElement}" BorderThickness="{TemplateBinding BorderThickness}" Visibility="Collapsed"> + <ToolTipService.ToolTip> + <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource TextBoxValidationToolTipTemplate}"/> + </ToolTipService.ToolTip> + <Grid Background="Transparent" HorizontalAlignment="Right" Height="12" Margin="1,-4,-4,0" VerticalAlignment="Top" Width="12"> + <Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="{StaticResource ValidationErrorElement}" Margin="1,3,0,0" /> + <Path Data="M 0,0 L2,0 L 8,6 L8,8" Fill="{StaticResource LightForegroundBrush}" Margin="1,3,0,0" /> + </Grid> + </Border> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ********************************* ListBox Style ********************************* --> + <Style x:Key="ListBoxStyle" TargetType="ListBox"> + <Setter Property="Padding" Value="0" /> + <Setter Property="Background" Value="{StaticResource ListBoxBackgroundBrush}" /> + <Setter Property="BorderBrush" Value="{StaticResource ListBoxBorderBrush}" /> + <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="HorizontalContentAlignment" Value="Left" /> + <Setter Property="VerticalContentAlignment" Value="Top" /> + <Setter Property="IsTabStop" Value="False" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="ItemContainerStyle" Value="{StaticResource ListBoxItemStyle}" /> + <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> + <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ListBox"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="ValidationStates"> + <VisualState x:Name="Valid" /> + <VisualState x:Name="InvalidUnfocused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="InvalidFocused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <Visibility>Visible</Visibility> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <System:Boolean>True</System:Boolean> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"> + <ScrollViewer x:Name="ScrollViewer" BorderThickness="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ScrollViewerStyle}"> + <ItemsPresenter /> + </ScrollViewer> + </Border> + <Border x:Name="ValidationErrorElement" BorderBrush="{StaticResource ValidationErrorElement}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" Visibility="Collapsed"> + <ToolTipService.ToolTip> + <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ValidationToolTipTemplate}"> + <ToolTip.Triggers> + <EventTrigger RoutedEvent="Canvas.Loaded"> + <BeginStoryboard> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="validationTooltip"> + <DiscreteObjectKeyFrame KeyTime="0"> + <DiscreteObjectKeyFrame.Value> + <System:Boolean>true</System:Boolean> + </DiscreteObjectKeyFrame.Value> + </DiscreteObjectKeyFrame> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </BeginStoryboard> + </EventTrigger> + </ToolTip.Triggers> + </ToolTip> + </ToolTipService.ToolTip> + <Grid Background="{StaticResource TransparentBrush}" HorizontalAlignment="Right" Height="10" Margin="0,-4,-4,0" VerticalAlignment="Top" Width="10"> + <Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="{StaticResource ValidationErrorElement}" Margin="-1,3,0,0" /> + <Path Data="M 0,0 L2,0 L 8,6 L8,8" Fill="{StaticResource LightForegroundBrush}" Margin="-1,3,0,0" /> + </Grid> + </Border> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Theme/Theme.Colors.xaml b/Luna/Theme/Theme.Colors.xaml new file mode 100644 index 0000000..a0840a9 --- /dev/null +++ b/Luna/Theme/Theme.Colors.xaml @@ -0,0 +1,104 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> + + <!-- ********************************** THEME BRUSHES - For Color Tuner **********************************--> + <SolidColorBrush x:Key="Brush01" Color="#FF00AADE" /> + <SolidColorBrush x:Key="Brush02" Color="White" /> + <SolidColorBrush x:Key="Brush03" Color="#FFC6C6C6" /> + <SolidColorBrush x:Key="Brush04" Color="#FF565656" /> + <SolidColorBrush x:Key="Brush05" Color="#FF333333" /> + + <!-- ********************************** THEME COLORS **********************************--> + <!--Base Colors--> + <Color x:Key="Color_000">#FF282828</Color> + <Color x:Key="Color_001">#FFFFFFFF</Color> + <Color x:Key="Color_002">#FFBABABA</Color> + <Color x:Key="Color_003">#FF858585</Color> + <Color x:Key="Color_004">#FF747474</Color> + <Color x:Key="Color_005">#FF565656</Color> + <Color x:Key="Color_006">#FF454545</Color> + <Color x:Key="Color_007">#FF333333</Color> + <Color x:Key="Color_008">#FF292929</Color> + <Color x:Key="Color_009">#FF181818</Color> + + <!--Transparent and Whites with transparency--> + <Color x:Key="Color_010">#E5FFFFFF</Color> + <!--90% White--> + <Color x:Key="Color_011">#BFFFFFFF</Color> + <!--75% White--> + <Color x:Key="Color_012">#99FFFFFF</Color> + <!--60% White--> + <Color x:Key="Color_013">#72FFFFFF</Color> + <!--45% White--> + <Color x:Key="Color_014">#4CFFFFFF</Color> + <!--30% White--> + <Color x:Key="Color_015">#26FFFFFF</Color> + <!--15% White--> + <Color x:Key="Color_016">#00FFFFFF</Color> + <!--0% White--> + + <!--Blacks and grays with transparency--> + <Color x:Key="Color_069">#E5000000</Color> + <!--90% Black--> + <Color x:Key="Color_070">#BF000000</Color> + <!--75% Black--> + <Color x:Key="Color_017">#99000000</Color> + <!--60% Black--> + <Color x:Key="Color_018">#72000000</Color> + <!--45% Black--> + <Color x:Key="Color_019">#4C000000</Color> + <!--30% Black--> + <Color x:Key="Color_020">#26000000</Color> + <!--15% Black--> + <Color x:Key="Color_021">#00000000</Color> + <!--0% Black--> + <Color x:Key="Color_022">#66E2E2E2</Color> + + <!--Theme Accent colors --> + <Color x:Key="Color_023">#FF0086AF</Color> + <Color x:Key="Color_024">#FF00AADE</Color> + <Color x:Key="Color_025">#FF80D5EF</Color> + <Color x:Key="Color_026">#FFB2E1EF</Color> + <Color x:Key="Color_027">#2600AADE</Color> + + <!--Theme Error colors --> + <Color x:Key="Color_028">#FFD0284C</Color> + <Color x:Key="Color_029">#FFF55E7F</Color> + <Color x:Key="Color_030">#FFFFCAD5</Color> + + <!--Colors for Chart Series--> + <Color x:Key="Color_035">#FF006481</Color> + <Color x:Key="Color_037">#FF8A9B0F</Color> + <Color x:Key="Color_038">#FF3E4700</Color> + <Color x:Key="Color_040">#FFF14D0F</Color> + <Color x:Key="Color_041">#FF8D2E00</Color> + <Color x:Key="Color_043">#FF81106B</Color> + <Color x:Key="Color_044">#FF410135</Color> + <Color x:Key="Color_046">#FFFCA910</Color> + <Color x:Key="Color_047">#FF8D4902</Color> + <Color x:Key="Color_049">#FF037A54</Color> + <Color x:Key="Color_050">#FF003F2A</Color> + <Color x:Key="Color_052">#FF154D85</Color> + <Color x:Key="Color_053">#FF02284D</Color> + <Color x:Key="Color_055">#FF543511</Color> + <Color x:Key="Color_056">#FF211303</Color> + <Color x:Key="Color_058">#FF89806D</Color> + <Color x:Key="Color_059">#FF393225</Color> + <Color x:Key="Color_061">#FF58458B</Color> + <Color x:Key="Color_062">#FF211347</Color> + <Color x:Key="Color_063">#7FB9B9B9</Color> + <Color x:Key="Color_064">#33565656</Color> + <Color x:Key="Color_065">#7F3F3F3F</Color> + <Color x:Key="Color_066">#FF686868</Color> + <Color x:Key="Color_067">#8000AADE</Color> + <Color x:Key="Color_068">#CC3F3F3F</Color> + + <!-- ********************************** BULLETGRAPH/LINEARGAUGE COLORS **********************************--> + + <Color x:Key="Color_071">#FF0092BE</Color> + <Color x:Key="Color_072">#FF00AADE</Color> + <Color x:Key="Color_073">#FF2BB9E5</Color> + <Color x:Key="Color_074">#FF55C8EB</Color> + <Color x:Key="Color_075">#FF80D7F2</Color> + + +</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml b/Luna/Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml deleted file mode 100644 index 876cffe..0000000 --- a/Luna/Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml +++ /dev/null @@ -1,966 +0,0 @@ -<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d"> - - <!-- ********************************* RESOURCES ********************************* --> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Styles.WPF.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!-- ********************************* BRUSHES ********************************* --> - <!-- Slider Brushes --> - <SolidColorBrush x:Key="SliderThumbBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="SliderThumbHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="SliderThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="SliderThumbDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="SliderTrackDisabledOverlayBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="SliderThumbFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="SliderTrackBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="SliderSelectionRangeBackgroundBrush" Color="{StaticResource Color_024}" /> - - <!-- GridSplitter Brushes --> - <SolidColorBrush x:Key="GridSplitterBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="GridSplitterBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="GridSplitterHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="GridSplitterHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="GridSplitterPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="GridSplitterFocusedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ProgressBar Brushes --> - <SolidColorBrush x:Key="ProgressBarBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="ProgressBarForegroundBrush" Color="{StaticResource Color_024}" /> - <LinearGradientBrush x:Key="ProgressBarIndeterminateBackgroundBrush" EndPoint="0,1" MappingMode="Absolute" SpreadMethod="Repeat" StartPoint="20,1" Opacity="0.8"> - <LinearGradientBrush.Transform> - <TransformGroup> - <TranslateTransform X="0" /> - <SkewTransform AngleX="-30" /> - </TransformGroup> - </LinearGradientBrush.Transform> - <GradientStop Color="{StaticResource Color_023}" Offset="0.249" /> - <GradientStop Color="{StaticResource Color_024}" Offset=".25" /> - <GradientStop Color="{StaticResource Color_024}" Offset="0.75" /> - <GradientStop Color="{StaticResource Color_023}" Offset="0.751" /> - </LinearGradientBrush> - - <!-- Tooltip Brushes --> - <SolidColorBrush x:Key="TooltipBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="TooltipBorderBrush" Color="{StaticResource Color_004}" /> - - <!-- Expander Brushes --> - <SolidColorBrush x:Key="ExpanderButtonBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ExpanderButtonBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ExpanderButtonHoverBackgroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ExpanderButtonHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ExpanderButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ExpanderButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ExpanderArrowHoverBorderBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="ExpanderArrowPressedBorderBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ExpanderDisabledForegroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ExpanderDisabledBackgroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ExpanderBackgroundBrush" Color="{StaticResource Color_009}" /> - - <!-- GroupBox Brushes --> - <SolidColorBrush x:Key="GroupBoxBorderBrush" Color="{StaticResource Color_003}" /> - - <!-- PassWordBox Brushes --> - <SolidColorBrush x:Key="PasswordBoxForegroundBrush" Color="{StaticResource Color_024}" /> - - <!-- ********************************* TextBlock Style ********************************* --> - <Style x:Key="TextBlockStyle" TargetType="TextBlock"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - </Style> - - <!-- ********************************* Label Style ********************************* --> - <Style x:Key="LabelStyle" TargetType="{x:Type Label}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - </Style> - - <!-- ********************************* SliderRepeatButton Style ********************************* --> - <Style x:Key="SliderRepeatButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="Focusable" Value="false" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Rectangle Fill="{StaticResource TransparentBrush}" /> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Slider Horizontal Thumb Style ********************************* --> - <Style x:Key="HSliderThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="Background" Value="{StaticResource SliderThumbBackgroundBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="MinHeight" Value="12" /> - <Setter Property="MinWidth" Value="8" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid> - <Ellipse x:Name="ThumbBackground" Fill="{TemplateBinding Background}" Width="16" Height="16" /> - <Ellipse x:Name="FocusedVisualElement" Stroke="{StaticResource SliderThumbFocusedBorderBrush}" Width="16" Height="16" StrokeThickness="2" Opacity="0" /> - <Ellipse x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Width="16" Height="16" Opacity="0" /> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbHoverBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsMouseCaptured" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbPressedBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter TargetName="DisabledVisualElement" Property="Opacity" Value="1" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Slider Vertical Thumb Style ********************************* --> - <Style x:Key="VSliderThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="Background" Value="{StaticResource SliderThumbBackgroundBrush}" /> - <Setter Property="MinHeight" Value="8" /> - <Setter Property="MinWidth" Value="12" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid> - <Ellipse x:Name="ThumbBackground" Fill="{TemplateBinding Background}" Width="16" Height="16" /> - <Ellipse x:Name="FocusedVisualElement" Stroke="{StaticResource SliderThumbFocusedBorderBrush}" Width="16" Height="16" StrokeThickness="2" Opacity="0" /> - <Ellipse x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Width="16" Height="16" Opacity="0" /> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbHoverBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsMouseCaptured" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbPressedBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter TargetName="DisabledVisualElement" Property="Opacity" Value="1" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Slider Style ********************************* --> - <Style x:Key="SliderStyle" TargetType="{x:Type Slider}"> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Slider}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver" /> - <VisualState x:Name="Disabled" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <TickBar x:Name="TopTick" Fill="{TemplateBinding Foreground}" Height="6" Placement="Top" Grid.Row="0" Visibility="Collapsed" /> - <TickBar x:Name="BottomTick" Fill="{TemplateBinding Foreground}" Height="6" Placement="Bottom" Grid.Row="2" Visibility="Collapsed" /> - <Border x:Name="TrackBackground" Background="{StaticResource SliderTrackBackgroundBrush}" Height="6" Grid.Row="1" VerticalAlignment="center"> - <Canvas Margin="-6,-1"> - <Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderSelectionRangeBackgroundBrush}" Height="6" Width="0" Visibility="Hidden" /> - </Canvas> - </Border> - <Track x:Name="PART_Track" Grid.Row="1"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb x:Name="Thumb" Style="{StaticResource HSliderThumbStyle}" /> - </Track.Thumb> - </Track> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="TickPlacement" Value="TopLeft"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="5,2,5,0" /> - </Trigger> - <Trigger Property="TickPlacement" Value="BottomRight"> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="5,0,5,2" /> - </Trigger> - <Trigger Property="TickPlacement" Value="Both"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - </Trigger> - <Trigger Property="IsSelectionRangeEnabled" Value="true"> - <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible" /> - </Trigger> - <Trigger Property="IsKeyboardFocused" Value="true"> - <Setter Property="Foreground" TargetName="Thumb" Value="{StaticResource SliderThumbFocusedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="Orientation" Value="Vertical"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Slider}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition MinWidth="{TemplateBinding MinWidth}" Width="Auto" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <TickBar x:Name="TopTick" Grid.Column="0" Fill="{TemplateBinding Foreground}" Placement="Left" Visibility="Collapsed" Width="6" /> - <TickBar x:Name="BottomTick" Grid.Column="2" Fill="{TemplateBinding Foreground}" Placement="Right" Visibility="Collapsed" Width="6" /> - <Border x:Name="TrackBackground" Background="{StaticResource SliderTrackBackgroundBrush}" Grid.Column="1" HorizontalAlignment="center" Width="6"> - <Canvas Margin="-1,-6"> - <Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderSelectionRangeBackgroundBrush}" Visibility="Hidden" Width="6" /> - </Canvas> - </Border> - <Track x:Name="PART_Track" Grid.Column="1"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb x:Name="Thumb" Style="{StaticResource VSliderThumbStyle}" /> - </Track.Thumb> - </Track> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="TickPlacement" Value="TopLeft"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="2,5,0,5" /> - </Trigger> - <Trigger Property="TickPlacement" Value="BottomRight"> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="0,5,2,5" /> - </Trigger> - <Trigger Property="TickPlacement" Value="Both"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - </Trigger> - <Trigger Property="IsSelectionRangeEnabled" Value="true"> - <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible" /> - </Trigger> - <Trigger Property="IsKeyboardFocused" Value="true"> - <Setter Property="Foreground" TargetName="Thumb" Value="{StaticResource SliderThumbFocusedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Trigger> - </Style.Triggers> - </Style> - - <!-- ********************************* RepeatButton Style ********************************* --> - <Style x:Key="RepeatButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Padding" Value="10,0,10,2" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Grid SnapsToDevicePixels="True"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** GridSplitter Style **********************************--> - <Style x:Key="GridSplitterStyle" TargetType="{x:Type GridSplitter}"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource GridSplitterBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource GridSplitterBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="SnapsToDevicePixels" Value="True" /> - <Setter Property="PreviewStyle"> - <Setter.Value> - <Style TargetType="Control"> - <Setter Property="Control.Template"> - <Setter.Value> - <ControlTemplate> - <Rectangle Fill="{StaticResource GridSplitterPressedBackgroundBrush}" Opacity="0.8" /> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - </Setter.Value> - </Setter> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate> - <Grid> - <Border x:Name="border" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" MinHeight="8" MinWidth="8"> - <Grid> - <StackPanel x:Name="HGrip" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Vertical"> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="1" Margin="1,2,1,1" StrokeThickness="0" Width="20" /> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="1" Margin="1,1,1,2" StrokeThickness="0" Width="20" /> - </StackPanel> - <StackPanel x:Name="VGrip" Width="8" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal" Visibility="Collapsed"> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="20" Margin="2,1,1,1" StrokeThickness="0" Width="1" /> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="20" Margin="1,1,2,1" StrokeThickness="0" Width="1" /> - </StackPanel> - </Grid> - </Border> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="HorizontalAlignment" Value="Stretch"> - <Setter TargetName="HGrip" Property="Visibility" Value="Visible" /> - <Setter TargetName="VGrip" Property="Visibility" Value="Collapsed" /> - </Trigger> - <Trigger Property="VerticalAlignment" Value="Stretch"> - <Setter TargetName="VGrip" Property="Visibility" Value="Visible" /> - <Setter TargetName="HGrip" Property="Visibility" Value="Collapsed" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="True"> - <Setter TargetName="border" Property="Background" Value="{StaticResource GridSplitterHoverBackgroundBrush}" /> - <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource GridSplitterHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource GridSplitterFocusedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** ProgressBar Style **********************************--> - <Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}"> - <Setter Property="Foreground" Value="{StaticResource ProgressBarForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource ProgressBarBackgroundBrush}" /> - <Setter Property="BorderThickness" Value="0" /> - <Setter Property="Height" Value="6" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ProgressBar}"> - <Grid x:Name="TemplateRoot" SnapsToDevicePixels="true"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Determinate" /> - <VisualState x:Name="Indeterminate"> - <Storyboard RepeatBehavior="Forever"> - <DoubleAnimation Duration="00:00:.5" From="0" To="20" Storyboard.TargetProperty="(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X" Storyboard.TargetName="IndeterminateGradientFill" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border x:Name="ProgressBarTrack" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" /> - <Rectangle x:Name="PART_Track" Margin="{TemplateBinding BorderThickness}" /> - <Decorator x:Name="PART_Indicator" HorizontalAlignment="Left" Margin="{TemplateBinding BorderThickness}"> - <Grid x:Name="Foreground"> - <Rectangle x:Name="Indicator" Fill="{TemplateBinding Foreground}" /> - </Grid> - </Decorator> - <Grid x:Name="IndeterminateRoot" Visibility="Collapsed"> - <Rectangle x:Name="IndeterminateSolidFill" Fill="{TemplateBinding Foreground}" Margin="{TemplateBinding BorderThickness}" Opacity="1" RenderTransformOrigin="0.5,0.5" StrokeThickness="0" /> - <Rectangle x:Name="IndeterminateGradientFill" Fill="{StaticResource ProgressBarIndeterminateBackgroundBrush}" Margin="{TemplateBinding BorderThickness}" StrokeThickness="1" /> - </Grid> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="Orientation" Value="Vertical"> - <Setter Property="LayoutTransform" TargetName="TemplateRoot"> - <Setter.Value> - <RotateTransform Angle="-90" /> - </Setter.Value> - </Setter> - </Trigger> - <Trigger Property="IsIndeterminate" Value="true"> - <Setter Property="Visibility" TargetName="Indicator" Value="Collapsed" /> - <Setter Property="Visibility" TargetName="IndeterminateRoot" Value="Visible" /> - </Trigger> - <Trigger Property="IsIndeterminate" Value="false"> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** PasswordBox Style **********************************--> - <Style x:Key="PasswordBoxStyle" TargetType="{x:Type PasswordBox}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="Foreground" Value="{StaticResource PasswordBoxForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="6,4" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> - <Setter Property="PasswordChar" Value="â—" /> - <Setter Property="KeyboardNavigation.TabNavigation" Value="None" /> - <Setter Property="AllowDrop" Value="true" /> - <Setter Property="FocusVisualStyle" Value="{x:Null}" /> - <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" /> - <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> - <Setter Property="FlowDirection" Value="LeftToRight" /> - <Setter Property="CaretBrush" Value="{StaticResource CaretForegroundBrush}"/> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type PasswordBox}"> - <Grid> - <Border Background="{TemplateBinding Background}" x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" /> - <Border x:Name="DisabledVisualElement" BorderBrush="{StaticResource DisabledVisualElement}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource DisabledVisualElement}" IsHitTestVisible="False" Opacity="0" /> - <Border x:Name="ReadOnlyVisualElement" Background="{StaticResource TextBoxReadOnlyBackgroundBrush}" Opacity="0" /> - <Border> - <ScrollViewer x:Name="PART_ContentHost" /> - </Border> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsEnabled" Value="False"> - <Setter Property="Opacity" Value="1" TargetName="DisabledVisualElement" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxHoverBorderBrush}" TargetName="Bd" /> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxFocusedBrush}" TargetName="Bd" /> - </Trigger> - <MultiDataTrigger> - <MultiDataTrigger.Conditions> - <Condition Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}" Value="True" /> - <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" /> - </MultiDataTrigger.Conditions> - <Setter Property="Opacity" Value="1" TargetName="ReadOnlyVisualElement" /> - </MultiDataTrigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ToolTip Style ********************************* --> - <Style x:Key="{x:Type ToolTip}" TargetType="ToolTip"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TooltipBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TooltipBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="10,7" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ToolTip"> - <Grid> - <Rectangle Stroke="{TemplateBinding BorderBrush}" Fill="{TemplateBinding Background}" StrokeThickness="{TemplateBinding BorderThickness}" /> - <StackPanel Orientation="Horizontal" d:LayoutOverrides="Width, Height"> - <ContentPresenter Margin="{TemplateBinding Padding}" Content="{TemplateBinding Content}" /> - </StackPanel> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Right Style ********************************* --> - <Style x:Key="ExpanderRightHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.RowDefinitions> - <RowDefinition Height="30" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - <Grid> - <Grid.LayoutTransform> - <TransformGroup> - <TransformGroup.Children> - <TransformCollection> - <RotateTransform Angle="-90" /> - </TransformCollection> - </TransformGroup.Children> - </TransformGroup> - </Grid.LayoutTransform> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - </Grid> - <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Stretch" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Up Style ********************************* --> - <Style x:Key="ExpanderUpHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Grid> - <Grid.LayoutTransform> - <TransformGroup> - <TransformGroup.Children> - <TransformCollection> - <RotateTransform Angle="180" /> - </TransformCollection> - </TransformGroup.Children> - </TransformGroup> - </Grid.LayoutTransform> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - </Grid> - <ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Left Style ********************************* --> - <Style x:Key="ExpanderLeftHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.RowDefinitions> - <RowDefinition Height="30" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - <Grid> - <Grid.LayoutTransform> - <TransformGroup> - <TransformGroup.Children> - <TransformCollection> - <RotateTransform Angle="90" /> - </TransformCollection> - </TransformGroup.Children> - </TransformGroup> - </Grid.LayoutTransform> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - </Grid> - <ContentPresenter Grid.Row="1" HorizontalAlignment="Center" Margin="0,4,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Stretch" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Down Style ********************************* --> - <Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - <ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Style ********************************* --> - <Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Background" Value="{StaticResource ExpanderBackgroundBrush}"/> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="2" /> - <Setter Property="HorizontalContentAlignment" Value="Stretch" /> - <Setter Property="VerticalContentAlignment" Value="Stretch" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Expander}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="true"> - <DockPanel> - <ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ExpanderDownHeaderStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> - <ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> - </DockPanel> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsExpanded" Value="true"> - <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" /> - </Trigger> - <Trigger Property="ExpandDirection" Value="Right"> - <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right" /> - <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left" /> - <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}" /> - </Trigger> - <Trigger Property="ExpandDirection" Value="Up"> - <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top" /> - <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom" /> - <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}" /> - </Trigger> - <Trigger Property="ExpandDirection" Value="Left"> - <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left" /> - <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right" /> - <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Foreground" Value="{StaticResource ExpanderDisabledForegroundBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ToggleButton Style ********************************* --> - <Style x:Key="ToggleButtonStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Padding" Value="10,0,10,2" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="checked"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Collapsed</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> - <Rectangle x:Name="checked" Fill="{StaticResource ButtonPressedBackgroundBrush}" Stroke="{StaticResource ButtonPressedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" /> - <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource ForegroundBrush}"> - <ContentPresenter x:Name="contentPresenter1" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* GroupBox Style ********************************* --> - <BorderGapMaskConverter x:Key="BorderGapMaskConverter" /> - <Style x:Key="GroupBoxStyle" TargetType="{x:Type GroupBox}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource GroupBoxBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="5 7" /> - <Setter Property="SnapsToDevicePixels" Value="True" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type GroupBox}"> - <Grid SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="6" /> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="6" /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - <RowDefinition Height="6" /> - </Grid.RowDefinitions> - <Border BorderBrush="{StaticResource TransparentBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="4" Grid.Column="0" Grid.Row="1" Grid.RowSpan="3" /> - <Border x:Name="Header" Grid.Column="1" Padding="10,5,10,0" Grid.Row="0" Grid.RowSpan="2"> - <ContentPresenter ContentSource="Header" Height="30" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </Border> - <ContentPresenter Grid.ColumnSpan="2" Grid.Column="1" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - <Border Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3"> - <Border.OpacityMask> - <MultiBinding ConverterParameter="7" Converter="{StaticResource BorderGapMaskConverter}"> - <Binding ElementName="Header" Path="ActualWidth" /> - <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" /> - <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" /> - </MultiBinding> - </Border.OpacityMask> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> - </Border> - </Border> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!--********************** Implicit Styles *********************** --> - <Style BasedOn="{StaticResource ButtonStyle}" TargetType="{x:Type Button}" /> - <Style BasedOn="{StaticResource ScrollBarStyle}" TargetType="{x:Type ScrollBar}" /> - <Style BasedOn="{StaticResource ScrollViewerStyle}" TargetType="{x:Type ScrollViewer}" /> - <Style BasedOn="{StaticResource ComboBoxStyle}" TargetType="{x:Type ComboBox}" /> - <Style BasedOn="{StaticResource ComboBoxItemStyle}" TargetType="{x:Type ComboBoxItem}" /> - <Style BasedOn="{StaticResource TextBoxStyle}" TargetType="{x:Type TextBox}" /> - <Style BasedOn="{StaticResource ListBoxStyle}" TargetType="{x:Type ListBox}" /> - <Style BasedOn="{StaticResource ListBoxItemStyle}" TargetType="{x:Type ListBoxItem}" /> - <Style BasedOn="{StaticResource CheckBoxStyle}" TargetType="{x:Type CheckBox}" /> - <Style BasedOn="{StaticResource RadioButtonStyle}" TargetType="{x:Type RadioButton}" /> - <Style BasedOn="{StaticResource LabelStyle}" TargetType="{x:Type Label}" /> - <Style BasedOn="{StaticResource SliderStyle}" TargetType="{x:Type Slider}" /> - <Style BasedOn="{StaticResource RepeatButtonStyle}" TargetType="{x:Type RepeatButton}" /> - <Style BasedOn="{StaticResource GridSplitterStyle}" TargetType="{x:Type GridSplitter}" /> - <Style BasedOn="{StaticResource ProgressBarStyle}" TargetType="{x:Type ProgressBar}" /> - <Style BasedOn="{StaticResource PasswordBoxStyle}" TargetType="{x:Type PasswordBox}" /> - <Style BasedOn="{StaticResource ExpanderStyle}" TargetType="{x:Type Expander}" /> - <Style BasedOn="{StaticResource ToggleButtonStyle}" TargetType="{x:Type ToggleButton}" /> - <Style BasedOn="{StaticResource GroupBoxStyle}" TargetType="{x:Type GroupBox}" /> - -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Dark/Styles.Shared.xaml b/Luna/Themes/Metro/Dark/Styles.Shared.xaml deleted file mode 100644 index 2d2e2a6..0000000 --- a/Luna/Themes/Metro/Dark/Styles.Shared.xaml +++ /dev/null @@ -1,740 +0,0 @@ -<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:System="clr-namespace:System;assembly=mscorlib" - mc:Ignorable="d"> - - <!-- ********************************* COLORS ********************************* --> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Theme.Colors.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!-- ********************************* BRUSHES ********************************* --> - <SolidColorBrush x:Key="ForegroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="LightForegroundBrush" Color="{StaticResource Color_001}" /> - <SolidColorBrush x:Key="TransparentBrush" Color="{StaticResource Color_016}" /> - <SolidColorBrush x:Key="DisabledVisualElement" Color="{StaticResource Color_009}" Opacity="0.6" /> - <SolidColorBrush x:Key="ValidationErrorElement" Color="{StaticResource Color_028}" /> - <SolidColorBrush x:Key="CaretForegroundBrush" Color="{StaticResource Color_022}" /> - - <!-- Scrollbar Brushes --> - <SolidColorBrush x:Key="HScrollbarThumbBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="VScrollbarThumbBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowHoverBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="VScrollbarThumbHoverBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="HScrollbarThumbHoverBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="VScrollbarThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="HScrollbarThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="VScrollbarThumbDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="HScrollbarThumbDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ScrollbarDisabledBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ScrollbarBackgroundBrush" Color="{StaticResource Color_009}" /> - - <!-- ComboBox Brushes --> - <SolidColorBrush x:Key="ComboBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ComboBoxBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxReadOnlyBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxHoverBackgroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ComboBoxHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ComboBoxFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ComboBoxDisabledBackgroundBrush" Color="{StaticResource Color_009}" Opacity="0.6" /> - <SolidColorBrush x:Key="PopupBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="PopupBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxReadOnlyBackgroundBrush" Color="{StaticResource Color_064}" /> - <!-- Need to change color or delete --> - - <!-- TextBox Brushes --> - <SolidColorBrush x:Key="TextBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="TextBoxBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="TextBoxHoverBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="TextBoxHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="TextBoxFocusedBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="TextBoxReadOnlyBackgroundBrush" Color="{StaticResource Color_007}" /> - - <!-- Button Brushes --> - <SolidColorBrush x:Key="ButtonBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ButtonBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ButtonHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ButtonHoverBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ComboBoxItem Brushes --> - <SolidColorBrush x:Key="ComboBoxItemHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxItemHoverBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ComboBoxItemPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ComboBoxItemPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ComboBoxToggleButton Brushes --> - <SolidColorBrush x:Key="ComboBoxToggleButtonBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonDropDownSeparatorBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ListBox Brushes --> - <SolidColorBrush x:Key="ListBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ListBoxBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ListBoxItemHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ListBoxItemHoverBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ListBoxItemPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ListBoxItemPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <SolidColorBrush x:Key="ListBoxItemBackgroundBrush" Color="{StaticResource Color_016}" /> - <!-- Need to change color or delete --> - <SolidColorBrush x:Key="ListBoxItemBorderBrush" Color="{StaticResource Color_016}" /> - <!-- Need to change color or delete --> - <SolidColorBrush x:Key="ListBoxItemSelectedBackgroundBrush" Color="{StaticResource Color_024}" /> - <!-- Need to change color or delete --> - <SolidColorBrush x:Key="ListBoxItemSelectedBorderBrush" Color="{StaticResource Color_024}" /> - <!-- Need to change color or delete --> - - <!-- CheckBox Brushes --> - <SolidColorBrush x:Key="CheckBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxHoverBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxPressedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxInvalidUnfocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxInvalidFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="CheckBoxHoverBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="CheckBoxPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="CheckBoxFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="CheckBoxInvalidUnfocusedBorderBrush" Color="{StaticResource Color_029}" /> - <SolidColorBrush x:Key="CheckBoxInvalidFocusedBorderBrush" Color="{StaticResource Color_028}" /> - <SolidColorBrush x:Key="CheckBoxIndeterminateCheckBackgroundBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="CheckBoxCheckBackgroundBrush" Color="{StaticResource Color_024}" /> - - <!-- RadioButton Brushes --> - <SolidColorBrush x:Key="RadioButtonBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonHoverBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonPressedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonInvalidUnfocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonInvalidFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonBorderBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="RadioButtonHoverBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="RadioButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="RadioButtonFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="RadioButtonInvalidUnfocusedBorderBrush" Color="{StaticResource Color_029}" /> - <SolidColorBrush x:Key="RadioButtonInvalidFocusedBorderBrush" Color="{StaticResource Color_028}" /> - <SolidColorBrush x:Key="RadioButtonCheckBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="RadioButtonIndeterminateCheckBackgroundBrush" Color="{StaticResource Color_004}" /> - - <!-- Visual Glyphs brushes --> - <SolidColorBrush x:Key="GlyphBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="GlyphHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="GlyphPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="GlyphDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - - <!-- ValidationToolTip Brushes --> - <SolidColorBrush x:Key="ValidationToolTipTemplateShadowBrush" Color="{StaticResource Color_003}" /> - - <!-- ******************************************************** SL-WPF SHARED INLINE CONTROLS RESOURCES *********************************************************** - *********************************************************************************************************************************************************************** --> - - <!-- ********************************* ValidationToolTip Template ********************************* --> - <ControlTemplate x:Key="ValidationToolTipTemplate"> - <Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0"> - <Grid.RenderTransform> - <TranslateTransform x:Name="xform" X="-25" /> - </Grid.RenderTransform> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="OpenStates"> - <VisualStateGroup.Transitions> - <VisualTransition GeneratedDuration="0" /> - <VisualTransition GeneratedDuration="0:0:0.2" To="Open"> - <Storyboard> - <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform"> - <DoubleAnimation.EasingFunction> - <BackEase Amplitude=".3" EasingMode="EaseOut" /> - </DoubleAnimation.EasingFunction> - </DoubleAnimation> - <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> - </Storyboard> - </VisualTransition> - </VisualStateGroup.Transitions> - <VisualState x:Name="Closed"> - <Storyboard> - <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Open"> - <Storyboard> - <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform" /> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border Background="{StaticResource ValidationErrorElement}" /> - <Border MinHeight="30"> - <TextBlock Foreground="{StaticResource ForegroundBrush}" MaxWidth="250" Margin="8,4,8,4" VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding (Validation.Errors)[0].ErrorContent}" UseLayoutRounding="false" /> - </Border> - </Grid> - </ControlTemplate> - - <!-- ********************************* ComboBoxToggleButton Style ********************************* --> - <Style x:Key="ComboBoxToggleButtonStyle" TargetType="ToggleButton"> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource ComboBoxToggleButtonBorderBrush}" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="2" /> - <Setter Property="Cursor" Value="Hand" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ToggleButton"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ArrowSelected"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused" /> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid.ColumnDefinitions> - <ColumnDefinition /> - <ColumnDefinition Width="30" /> - </Grid.ColumnDefinitions> - <Rectangle x:Name="Bd" Fill="{StaticResource TransparentBrush}" Grid.ColumnSpan="2" /> - <Grid Grid.Column="1"> - <Rectangle Width="1" Fill="{StaticResource ComboBoxToggleButtonDropDownSeparatorBackgroundBrush}" HorizontalAlignment="Left" Margin="-1,5,0,5" /> - <Path x:Name="Arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" /> - <Path x:Name="ArrowSelected" Width="10" Height="6" Visibility="Collapsed" Fill="{StaticResource GlyphPressedBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" /> - </Grid> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ComboBoxItem Style ********************************* --> - <Style x:Key="ComboBoxItemStyle" TargetType="ComboBoxItem"> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,0" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ComboBoxItem"> - <Grid Background="{TemplateBinding Background}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="fillColor" /> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="SelectionStates"> - <VisualState x:Name="Unselected" /> - <VisualState x:Name="Selected"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="CheckedBd"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Collapsed</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedUnfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FocusVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="LayoutStates"> - <VisualState x:Name="AfterLoaded" /> - <VisualState x:Name="BeforeLoaded" /> - <VisualState x:Name="BeforeUnloaded" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" /> - <Rectangle x:Name="fillColor" Fill="{StaticResource ComboBoxItemHoverBackgroundBrush}" IsHitTestVisible="False" Opacity="0" Stroke="{StaticResource ComboBoxItemHoverBorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" /> - <Rectangle x:Name="CheckedBd" Fill="{StaticResource ComboBoxItemPressedBackgroundBrush}" IsHitTestVisible="False" Visibility="Collapsed" Stroke="{StaticResource ComboBoxItemPressedBorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" /> - <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource ForegroundBrush}"> - <ContentPresenter x:Name="contentPresenter1" /> - </ContentControl> - <Rectangle x:Name="FocusVisualElement" Stroke="{StaticResource ComboBoxItemPressedBackgroundBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ListBoxItem Style ********************************* --> - <Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> - <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,2" /> - <Setter Property="Margin" Value="0" /> - <Setter Property="HorizontalContentAlignment" Value="Stretch" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListBoxItem"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="SelectionStates"> - <VisualState x:Name="Unselected" /> - <VisualState x:Name="Selected"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="BgSelected"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Collapsed</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="BgSelected"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{TemplateBinding Background}" /> - <Rectangle x:Name="BgSelected" Fill="{StaticResource ListBoxItemSelectedBackgroundBrush}" Stroke="{StaticResource ListBoxItemSelectedBorderBrush}" Visibility="Collapsed" /> - <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource ForegroundBrush}"> - <ContentPresenter x:Name="contentPresenter1" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" IsHitTestVisible="False" Visibility="Collapsed" Stroke="{StaticResource ListBoxItemPressedBorderBrush}" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** CheckBoxStyle **********************************--> - <Style x:Key="CheckBoxStyle" TargetType="CheckBox"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Padding" Value="6,0,0,0" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="CheckBox"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="hover" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pressed" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter" /> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="disabled" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="checkBox" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="IndeterminateCheck" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidUnfocused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidFocused" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Rectangle Fill="{StaticResource TransparentBrush}" /> - <Rectangle x:Name="normal" Opacity="1" Stroke="{StaticResource CheckBoxBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="hover" Stroke="{StaticResource CheckBoxHoverBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxHoverBackgroundBrush}" Opacity="0" Width="18" Height="18" /> - <Rectangle x:Name="pressed" Opacity="0" Stroke="{StaticResource CheckBoxPressedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxPressedBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="focused" Opacity="0" Stroke="{StaticResource CheckBoxFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxFocusedBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="invalidUnfocused" Opacity="0" Stroke="{StaticResource CheckBoxInvalidUnfocusedBackgroundBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxInvalidUnfocusedBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="invalidFocused" Opacity="0" Stroke="{StaticResource CheckBoxInvalidFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxInvalidFocusedBackgroundBrush}" Width="18" Height="18" /> - <Path x:Name="checkBox" Height="10" Width="12" Stretch="Fill" Opacity="0" Data="M 1145.607177734375,430 C1145.607177734375,430 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1138,434.5538330078125 1138,434.5538330078125 1138,434.5538330078125 1141.482177734375,438 1141.482177734375,438 1141.482177734375,438 1141.96875,437.9375 1141.96875,437.9375 1141.96875,437.9375 1147,431.34619140625 1147,431.34619140625 1147,431.34619140625 1145.607177734375,430 1145.607177734375,430 z" Fill="{StaticResource CheckBoxCheckBackgroundBrush}" UseLayoutRounding="False" /> - <Rectangle x:Name="IndeterminateCheck" Fill="{StaticResource CheckBoxIndeterminateCheckBackgroundBrush}" Height="3" Width="8" Opacity="0" /> - <Rectangle x:Name="disabled" Opacity="0" StrokeThickness="1" Fill="{StaticResource DisabledVisualElement}" Width="18" Height="18" /> - <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** RadioButton Style **********************************--> - <Style x:Key="RadioButtonStyle" TargetType="RadioButton"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Padding" Value="6,0,0,0" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="20" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="RadioButton"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="hover" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pressed" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter" /> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="disabled" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Checked1" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidUnfocused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidFocused" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="18" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-6,0" /> - <Ellipse x:Name="normal" Opacity="1" Stroke="{StaticResource RadioButtonBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="hover" Stroke="{StaticResource RadioButtonHoverBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonHoverBackgroundBrush}" Opacity="0" Width="18" Height="18" /> - <Ellipse x:Name="pressed" Opacity="0" Stroke="{StaticResource RadioButtonPressedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonPressedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="focused" Opacity="0" Stroke="{StaticResource RadioButtonFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonFocusedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="invalidUnfocused" Opacity="0" Stroke="{StaticResource RadioButtonInvalidUnfocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonInvalidUnfocusedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="invalidFocused" Opacity="0" Stroke="{StaticResource RadioButtonInvalidFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonInvalidFocusedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="Checked1" Fill="{StaticResource RadioButtonCheckBackgroundBrush}" Opacity="0" Width="10" Height="10" /> - <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> - <Ellipse x:Name="disabled" Opacity="0" StrokeThickness="1" Fill="{StaticResource DisabledVisualElement}" Width="18" Height="18" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ButtonStyle ********************************* --> - <Style x:Key="ButtonStyle" TargetType="Button"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="Padding" Value="10,0,10,2" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="Button"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Dark/Styles.WPF.xaml b/Luna/Themes/Metro/Dark/Styles.WPF.xaml deleted file mode 100644 index 1d8b7e8..0000000 --- a/Luna/Themes/Metro/Dark/Styles.WPF.xaml +++ /dev/null @@ -1,802 +0,0 @@ -<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"> - - <!-- ********************************* RESOURCES ********************************* --> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Theme.Colors.xaml" /> - <ResourceDictionary Source="Styles.Shared.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!-- ******************************************************** WPF SPECIFIC INLINE-CONTROLS RESOURCES *********************************************************** - *********************************************************************************************************************************************************************** --> - <!-- ********************************* ScrollBarButton Style ********************************* --> - <Style x:Key="ScrollBarButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="Focusable" Value="false" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Grid x:Name="grid1"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> - <Path x:Name="Arrow" Data="F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z " Height="6" Stretch="Uniform" Width="10" Fill="{StaticResource ScrollbarPageButtonArrowBackgroundBrush}" Margin="{TemplateBinding Padding}" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ScrollBarPageButton Style ********************************* --> - <Style x:Key="ScrollBarPageButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="Focusable" Value="false" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver" /> - <VisualState x:Name="Pressed" /> - <VisualState x:Name="Disabled" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - </Rectangle> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Horizontal ScrollBarThumb Style ********************************* --> - <Style x:Key="HScrollBarThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="MinWidth" Value="20" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid Margin="0"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> - <Rectangle x:Name="Thumb" Margin="1" Fill="{StaticResource HScrollbarThumbBackgroundBrush}" Height="8" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Vertical ScrollbarThumb Style ********************************* --> - <Style x:Key="VScrollBarThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="MinHeight" Value="20" /> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid x:Name="grid" Height="Auto" Width="Auto"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> - <Rectangle x:Name="Thumb" Fill="{StaticResource VScrollbarThumbBackgroundBrush}" Width="8" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ScrollBar Style ********************************* --> - <Style x:Key="ScrollBarStyle" TargetType="{x:Type ScrollBar}"> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> - <Setter Property="Stylus.IsFlicksEnabled" Value="false" /> - <Setter Property="Width" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollBar}"> - <Grid SnapsToDevicePixels="true"> - <Grid.RowDefinitions> - <RowDefinition Height="30" /> - <RowDefinition Height="0.00001*" /> - <RowDefinition Height="30" /> - </Grid.RowDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualStateGroup.Transitions> - <VisualTransition GeneratedDuration="0:0:0.3" /> - </VisualStateGroup.Transitions> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver" /> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton"> - <EasingDoubleKeyFrame KeyTime="0" Value="0.6" /> - </DoubleAnimationUsingKeyFrames> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton1"> - <EasingDoubleKeyFrame KeyTime="0" Value="0.6" /> - </DoubleAnimationUsingKeyFrames> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="thumb"> - <EasingDoubleKeyFrame KeyTime="0" Value="0" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bg" Grid.RowSpan="3" Fill="{StaticResource ScrollbarBackgroundBrush}" Margin="0" /> - <RepeatButton x:Name="repeatButton" Command="{x:Static ScrollBar.LineUpCommand}" IsEnabled="True" Style="{StaticResource ScrollBarButtonStyle}" HorizontalAlignment="Center" /> - <Track x:Name="PART_Track" IsDirectionReversed="true" IsEnabled="True" Grid.Row="1"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb x:Name="thumb" Style="{StaticResource VScrollBarThumbStyle}" HorizontalAlignment="Center" Width="30" /> - </Track.Thumb> - </Track> - <RepeatButton x:Name="repeatButton1" Command="{x:Static ScrollBar.LineDownCommand}" IsEnabled="True" Grid.Row="2" Style="{StaticResource ScrollBarButtonStyle}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center"> - <RepeatButton.RenderTransform> - <TransformGroup> - <ScaleTransform /> - <SkewTransform /> - <RotateTransform Angle="180" /> - <TranslateTransform /> - </TransformGroup> - </RepeatButton.RenderTransform> - </RepeatButton> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Fill" TargetName="Bg" Value="{StaticResource ScrollbarDisabledBackgroundBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="Orientation" Value="Horizontal"> - <Setter Property="Width" Value="Auto" /> - <Setter Property="MinWidth" Value="0" /> - <Setter Property="Height" Value="30" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollBar}"> - <Grid SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="0.00001*" /> - <ColumnDefinition Width="30" /> - </Grid.ColumnDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualStateGroup.Transitions> - <VisualTransition GeneratedDuration="0:0:0.3" /> - </VisualStateGroup.Transitions> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton"> - <EasingDoubleKeyFrame KeyTime="0" Value="1" /> - </DoubleAnimationUsingKeyFrames> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton1"> - <EasingDoubleKeyFrame KeyTime="0" Value="1" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bg" Grid.ColumnSpan="5" Fill="{StaticResource ScrollbarBackgroundBrush}" Margin="0" /> - <RepeatButton x:Name="repeatButton" Command="{x:Static ScrollBar.LineLeftCommand}" IsEnabled="True" Style="{DynamicResource ScrollBarButtonStyle}" Opacity="1" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"> - <RepeatButton.RenderTransform> - <TransformGroup> - <ScaleTransform /> - <SkewTransform /> - <RotateTransform Angle="-90" /> - <TranslateTransform /> - </TransformGroup> - </RepeatButton.RenderTransform> - </RepeatButton> - <Track x:Name="PART_Track" Grid.Column="1" IsEnabled="True"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb Style="{StaticResource HScrollBarThumbStyle}" VerticalAlignment="Center" Height="30" /> - </Track.Thumb> - </Track> - <RepeatButton x:Name="repeatButton1" Grid.Column="2" Command="{x:Static ScrollBar.LineRightCommand}" IsEnabled="True" Style="{DynamicResource ScrollBarButtonStyle}" Opacity="1" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"> - <RepeatButton.RenderTransform> - <TransformGroup> - <ScaleTransform /> - <SkewTransform /> - <RotateTransform Angle="90" /> - <TranslateTransform /> - </TransformGroup> - </RepeatButton.RenderTransform> - </RepeatButton> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Fill" TargetName="Bg" Value="{StaticResource ScrollbarDisabledBackgroundBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Trigger> - </Style.Triggers> - </Style> - - <!-- ********************************* ScrollViewer Style ********************************* --> - <Style x:Key="ScrollViewerStyle" TargetType="{x:Type ScrollViewer}"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Top" /> - <Setter Property="VerticalScrollBarVisibility" Value="Auto" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollViewer}"> - <Grid x:Name="Grid"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="*" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0" /> - <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Style="{StaticResource ScrollBarStyle}" /> - <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" Style="{StaticResource ScrollBarStyle}" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ComboBoxEditableTextBox Style ********************************* --> - <Style x:Key="ComboBoxEditableTextBoxStyle" TargetType="{x:Type TextBox}"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="AllowDrop" Value="true" /> - <Setter Property="MinWidth" Value="0" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,4" /> - <Setter Property="FocusVisualStyle" Value="{x:Null}" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type TextBox}"> - <ScrollViewer Style="{StaticResource ScrollViewerStyle}" x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PART_ContentHost"> - <EasingDoubleKeyFrame KeyTime="0" Value="0.3" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="ReadOnly" /> - <VisualState x:Name="MouseOver" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - </ScrollViewer> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ComboBoxEditable Template ********************************* --> - <ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="{x:Type ComboBox}"> - <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hover"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="disabled"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Unfocused" /> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="FocusedDropDown"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="normal" Fill="{StaticResource ComboBoxBackgroundBrush}" Stroke="{StaticResource ComboBoxBorderBrush}" StrokeThickness="1" Grid.ColumnSpan="2" /> - <Rectangle x:Name="hover" Fill="{StaticResource ComboBoxHoverBackgroundBrush}" Stroke="{StaticResource ComboBoxHoverBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> - <Border x:Name="DropDownBorder" HorizontalAlignment="Stretch" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupBorderBrush}" BorderThickness="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" CornerRadius="2"> - <ScrollViewer x:Name="DropDownScrollViewer" Style="{StaticResource ScrollViewerStyle}"> - <Grid RenderOptions.ClearTypeHint="Enabled"> - <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> - <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}" /> - </Canvas> - <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </Grid> - </ScrollViewer> - </Border> - </Popup> - <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.Column="0" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonStyle}" /> - <TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBoxStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Margin="0,0,31,0" VerticalAlignment="Center" /> - <Rectangle x:Name="focused" Stroke="{StaticResource ComboBoxFocusedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Rectangle x:Name="disabled" Fill="{StaticResource ComboBoxDisabledBackgroundBrush}" Visibility="Collapsed" Grid.ColumnSpan="2" /> - </Grid> - </ControlTemplate> - - <!-- ********************************* ComboBox Style ********************************* --> - <Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}"> - <Setter Property="Padding" Value="6,5,6,3" /> - <Setter Property="Margin" Value="0" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource ComboBoxBorderBrush}" /> - <Setter Property="ItemContainerStyle" Value="{StaticResource ComboBoxItemStyle}" /> - <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> - <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> - <Setter Property="ScrollViewer.CanContentScroll" Value="true" /> - <Setter Property="ScrollViewer.PanningMode" Value="Both" /> - <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ComboBox}"> - <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition MinWidth="30" Width="0" /> - </Grid.ColumnDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hover"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="disabled"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Unfocused" /> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="FocusedDropDown"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="normal" Fill="{StaticResource ComboBoxBackgroundBrush}" Stroke="{StaticResource ComboBoxBorderBrush}" StrokeThickness="1" Grid.ColumnSpan="2" /> - <Rectangle x:Name="hover" Fill="{StaticResource ComboBoxHoverBackgroundBrush}" Stroke="{StaticResource ComboBoxHoverBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> - <Border x:Name="DropDownBorder" HorizontalAlignment="Stretch" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupBorderBrush}" BorderThickness="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" CornerRadius="2"> - <ScrollViewer x:Name="DropDownScrollViewer" Style="{StaticResource ScrollViewerStyle}"> - <Grid RenderOptions.ClearTypeHint="Enabled"> - <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> - <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}" /> - </Canvas> - <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </Grid> - </ScrollViewer> - </Border> - </Popup> - <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonStyle}" /> - <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"> - <ContentPresenter ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </ContentControl> - <Rectangle x:Name="focused" Stroke="{StaticResource ComboBoxFocusedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Rectangle x:Name="disabled" Fill="{StaticResource ComboBoxDisabledBackgroundBrush}" Visibility="Collapsed" Grid.ColumnSpan="2" /> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="HasItems" Value="false"> - <Setter Property="Height" TargetName="DropDownBorder" Value="95" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource ComboBoxBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsGrouping" Value="true"> - <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> - </Trigger> - <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false"> - <Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}" /> - <Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="IsEditable" Value="true"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}" /> - </Trigger> - </Style.Triggers> - </Style> - - <!-- ********************************* TextBox Style ********************************* --> - <Style x:Key="TextBoxStyle" TargetType="TextBox"> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,4" /> - <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> - <Setter Property="CaretBrush" Value="{StaticResource CaretForegroundBrush}" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="TextBox"> - <Grid x:Name="RootElement"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TextBoxHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Background" Storyboard.TargetName="Border"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TextBoxHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="DisabledVisualElement" /> - </Storyboard> - </VisualState> - <VisualState x:Name="ReadOnly"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ReadOnlyVisualElement" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>True</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Opacity="1"> - <Grid> - <Border x:Name="ReadOnlyVisualElement" Background="{StaticResource TextBoxReadOnlyBackgroundBrush}" Opacity="0" /> - <ScrollViewer x:Name="PART_ContentHost" BorderThickness="0" IsTabStop="False" Padding="{TemplateBinding Padding}" /> - </Grid> - </Border> - <Border x:Name="DisabledVisualElement" BorderBrush="{StaticResource DisabledVisualElement}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource DisabledVisualElement}" IsHitTestVisible="False" Opacity="0" /> - <Border x:Name="FocusVisualElement" BorderBrush="{StaticResource TextBoxFocusedBrush}" BorderThickness="{TemplateBinding BorderThickness}" IsHitTestVisible="False" Opacity="0" /> - <Border x:Name="ValidationErrorElement" BorderBrush="{StaticResource ValidationErrorElement}" BorderThickness="{TemplateBinding BorderThickness}" Visibility="Collapsed"> - <ToolTipService.ToolTip> - <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ValidationToolTipTemplate}"> - <ToolTip.Triggers> - <EventTrigger RoutedEvent="Canvas.Loaded"> - <BeginStoryboard> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>true</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </BeginStoryboard> - </EventTrigger> - </ToolTip.Triggers> - </ToolTip> - </ToolTipService.ToolTip> - </Border> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ListBox Style ********************************* --> - <Style x:Key="ListBoxStyle" TargetType="ListBox"> - <Setter Property="Padding" Value="0" /> - <Setter Property="Background" Value="{StaticResource ListBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource ListBoxBorderBrush}" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Top" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="ItemContainerStyle" Value="{StaticResource ListBoxItemStyle}" /> - <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> - <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListBox"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>True</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"> - <ScrollViewer x:Name="ScrollViewer" BorderThickness="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ScrollViewerStyle}"> - <ItemsPresenter /> - </ScrollViewer> - </Border> - <Border x:Name="ValidationErrorElement" BorderBrush="{StaticResource ValidationErrorElement}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" Visibility="Collapsed"> - <ToolTipService.ToolTip> - <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ValidationToolTipTemplate}"> - <ToolTip.Triggers> - <EventTrigger RoutedEvent="Canvas.Loaded"> - <BeginStoryboard> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>true</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </BeginStoryboard> - </EventTrigger> - </ToolTip.Triggers> - </ToolTip> - </ToolTipService.ToolTip> - <Grid Background="{StaticResource TransparentBrush}" HorizontalAlignment="Right" Height="10" Margin="0,-4,-4,0" VerticalAlignment="Top" Width="10"> - <Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="{StaticResource ValidationErrorElement}" Margin="-1,3,0,0" /> - <Path Data="M 0,0 L2,0 L 8,6 L8,8" Fill="{StaticResource LightForegroundBrush}" Margin="-1,3,0,0" /> - </Grid> - </Border> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Dark/Theme.Colors.xaml b/Luna/Themes/Metro/Dark/Theme.Colors.xaml deleted file mode 100644 index b06ae21..0000000 --- a/Luna/Themes/Metro/Dark/Theme.Colors.xaml +++ /dev/null @@ -1,80 +0,0 @@ -<ResourceDictionary - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> - - <!-- ********************************** THEME BRUSHES - For Color Tuner **********************************--> - <SolidColorBrush x:Key="Brush01" Color="#FF00AADE"/> - <SolidColorBrush x:Key="Brush02" Color="White"/> - <SolidColorBrush x:Key="Brush03" Color="#FFC6C6C6"/> - <SolidColorBrush x:Key="Brush04" Color="#FF565656"/> - <SolidColorBrush x:Key="Brush05" Color="#FF333333"/> - - <!-- ********************************** THEME COLORS **********************************--> - <!--Base Colors--> - <Color x:Key="Color_000">#FF282828</Color> - <Color x:Key="Color_001">#FFFFFFFF</Color> - <Color x:Key="Color_002">#FFBABABA</Color> - <Color x:Key="Color_003">#FF858585</Color> - <Color x:Key="Color_004">#FF747474</Color> - <Color x:Key="Color_005">#FF565656</Color> - <Color x:Key="Color_006">#FF454545</Color> - <Color x:Key="Color_007">#FF333333</Color> - <Color x:Key="Color_008">#FF292929</Color> - <Color x:Key="Color_009">#FF181818</Color> - -<!--Transparent and Whites with transparency--> - <Color x:Key="Color_010">#E5FFFFFF</Color><!--90% White--> - <Color x:Key="Color_011">#BFFFFFFF</Color><!--75% White--> - <Color x:Key="Color_012">#99FFFFFF</Color><!--60% White--> - <Color x:Key="Color_013">#72FFFFFF</Color><!--45% White--> - <Color x:Key="Color_014">#4CFFFFFF</Color><!--30% White--> - <Color x:Key="Color_016">#00FFFFFF</Color><!--0% White--> - -<!--Blacks and grays with transparency--> - <Color x:Key="Color_018">#72000000</Color><!--45% Black--> - <Color x:Key="Color_019">#4C000000</Color><!--30% Black--> - <Color x:Key="Color_020">#26000000</Color><!--15% Black--> - <Color x:Key="Color_021">#00000000</Color><!--0% Black--> - <Color x:Key="Color_022">#66E2E2E2</Color> - -<!--Theme Accent colors --> - <Color x:Key="Color_023">#FF0086AF</Color> - <Color x:Key="Color_024">#FF00AADE</Color> - <Color x:Key="Color_025">#FF80D5EF</Color> - <Color x:Key="Color_026">#FFB2E1EF</Color> - <Color x:Key="Color_027">#2600AADE</Color> - -<!--Theme Error colors --> - <Color x:Key="Color_028">#FFD0284C</Color> - <Color x:Key="Color_029">#FFF55E7F</Color> - <Color x:Key="Color_030">#FFFFCAD5</Color> - -<!--Colors for Chart Series--> - <Color x:Key="Color_035">#FF006481</Color> - <Color x:Key="Color_037">#FF8A9B0F</Color> - <Color x:Key="Color_038">#FF3E4700</Color> - <Color x:Key="Color_040">#FFF14D0F</Color> - <Color x:Key="Color_041">#FF8D2E00</Color> - <Color x:Key="Color_043">#FF81106B</Color> - <Color x:Key="Color_044">#FF410135</Color> - <Color x:Key="Color_046">#FFFCA910</Color> - <Color x:Key="Color_047">#FF8D4902</Color> - <Color x:Key="Color_049">#FF037A54</Color> - <Color x:Key="Color_050">#FF003F2A</Color> - <Color x:Key="Color_052">#FF154D85</Color> - <Color x:Key="Color_053">#FF02284D</Color> - <Color x:Key="Color_055">#FF543511</Color> - <Color x:Key="Color_056">#FF211303</Color> - <Color x:Key="Color_058">#FF89806D</Color> - <Color x:Key="Color_059">#FF393225</Color> - <Color x:Key="Color_061">#FF58458B</Color> - <Color x:Key="Color_062">#FF211347</Color> - <Color x:Key="Color_063">#7FB9B9B9</Color> - <Color x:Key="Color_064">#33565656</Color> - <Color x:Key="Color_065">#7F3F3F3F</Color> - <Color x:Key="Color_066">#FF686868</Color> - <Color x:Key="Color_067">#8000AADE</Color> - <Color x:Key="Color_068">#CC3F3F3F</Color> -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Light/Metro.MSControls.Core.Implicit.xaml b/Luna/Themes/Metro/Light/Metro.MSControls.Core.Implicit.xaml deleted file mode 100644 index c03fc67..0000000 --- a/Luna/Themes/Metro/Light/Metro.MSControls.Core.Implicit.xaml +++ /dev/null @@ -1,939 +0,0 @@ -<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d"> - - <!-- ********************************* RESOURCES ********************************* --> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Styles.WPF.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!-- ********************************* BRUSHES ********************************* --> - <!-- Slider Brushes --> - <SolidColorBrush x:Key="SliderThumbBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="SliderThumbHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="SliderThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="SliderThumbDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="SliderTrackDisabledOverlayBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="SliderThumbFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="SliderTrackBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="SliderSelectionRangeBackgroundBrush" Color="{StaticResource Color_024}" /> - - <!-- GridSplitter Brushes --> - <SolidColorBrush x:Key="GridSplitterBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="GridSplitterBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="GridSplitterHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="GridSplitterHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="GridSplitterPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="GridSplitterFocusedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ProgressBar Brushes --> - <SolidColorBrush x:Key="ProgressBarBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="ProgressBarForegroundBrush" Color="{StaticResource Color_024}" /> - <LinearGradientBrush x:Key="ProgressBarIndeterminateBackgroundBrush" EndPoint="0,1" MappingMode="Absolute" SpreadMethod="Repeat" StartPoint="20,1" Opacity="0.8"> - <LinearGradientBrush.Transform> - <TransformGroup> - <TranslateTransform X="0" /> - <SkewTransform AngleX="-30" /> - </TransformGroup> - </LinearGradientBrush.Transform> - <GradientStop Color="{StaticResource Color_023}" Offset="0.249" /> - <GradientStop Color="{StaticResource Color_024}" Offset=".25" /> - <GradientStop Color="{StaticResource Color_024}" Offset="0.75" /> - <GradientStop Color="{StaticResource Color_023}" Offset="0.751" /> - </LinearGradientBrush> - - <!-- Tooltip Brushes --> - <SolidColorBrush x:Key="TooltipBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="TooltipBorderBrush" Color="{StaticResource Color_004}" /> - - <!-- Expander Brushes --> - <SolidColorBrush x:Key="ExpanderButtonBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ExpanderButtonBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ExpanderButtonHoverBackgroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ExpanderButtonHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ExpanderButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ExpanderButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ExpanderArrowHoverBorderBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="ExpanderArrowPressedBorderBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ExpanderDisabledForegroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ExpanderDisabledBackgroundBrush" Color="{StaticResource Color_007}" /> - - <!-- GroupBox Brushes --> - <SolidColorBrush x:Key="GroupBoxBorderBrush" Color="{StaticResource Color_003}" /> - - <!-- PassWordBox Brushes --> - <SolidColorBrush x:Key="PasswordBoxForegroundBrush" Color="{StaticResource Color_024}" /> - - <!-- ********************************* TextBlock Style ********************************* --> - <Style x:Key="TextBlockStyle" TargetType="TextBlock"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - </Style> - - <!-- ********************************* Label Style ********************************* --> - <Style x:Key="LabelStyle" TargetType="{x:Type Label}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - </Style> - - <!-- ********************************* SliderRepeatButton Style ********************************* --> - <Style x:Key="SliderRepeatButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="Focusable" Value="false" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Rectangle Fill="{StaticResource TransparentBrush}" /> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Slider Horizontal Thumb Style ********************************* --> - <Style x:Key="HSliderThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="Background" Value="{StaticResource SliderThumbBackgroundBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="MinHeight" Value="12" /> - <Setter Property="MinWidth" Value="8" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid> - <Ellipse x:Name="ThumbBackground" Fill="{TemplateBinding Background}" Width="16" Height="16" /> - <Ellipse x:Name="FocusedVisualElement" Stroke="{StaticResource SliderThumbFocusedBorderBrush}" Width="16" Height="16" StrokeThickness="2" Opacity="0" /> - <Ellipse x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Width="16" Height="16" Opacity="0" /> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbHoverBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsMouseCaptured" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbPressedBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter TargetName="DisabledVisualElement" Property="Opacity" Value="1" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Slider Vertical Thumb Style ********************************* --> - <Style x:Key="VSliderThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="Background" Value="{StaticResource SliderThumbBackgroundBrush}" /> - <Setter Property="MinHeight" Value="8" /> - <Setter Property="MinWidth" Value="12" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid> - <Ellipse x:Name="ThumbBackground" Fill="{TemplateBinding Background}" Width="16" Height="16" /> - <Ellipse x:Name="FocusedVisualElement" Stroke="{StaticResource SliderThumbFocusedBorderBrush}" Width="16" Height="16" StrokeThickness="2" Opacity="0" /> - <Ellipse x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Width="16" Height="16" Opacity="0" /> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbHoverBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsMouseCaptured" Value="True"> - <Setter TargetName="ThumbBackground" Property="Fill" Value="{StaticResource SliderThumbPressedBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter TargetName="DisabledVisualElement" Property="Opacity" Value="1" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Slider Style ********************************* --> - <Style x:Key="SliderStyle" TargetType="{x:Type Slider}"> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Slider}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver" /> - <VisualState x:Name="Disabled" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <TickBar x:Name="TopTick" Fill="{TemplateBinding Foreground}" Height="6" Placement="Top" Grid.Row="0" Visibility="Collapsed" /> - <TickBar x:Name="BottomTick" Fill="{TemplateBinding Foreground}" Height="6" Placement="Bottom" Grid.Row="2" Visibility="Collapsed" /> - <Border x:Name="TrackBackground" Background="{StaticResource SliderTrackBackgroundBrush}" Height="6" Grid.Row="1" VerticalAlignment="center"> - <Canvas Margin="-6,-1"> - <Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderSelectionRangeBackgroundBrush}" Height="6" Width="0" Visibility="Hidden" /> - </Canvas> - </Border> - <Track x:Name="PART_Track" Grid.Row="1"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb x:Name="Thumb" Style="{StaticResource HSliderThumbStyle}" /> - </Track.Thumb> - </Track> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="TickPlacement" Value="TopLeft"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="5,2,5,0" /> - </Trigger> - <Trigger Property="TickPlacement" Value="BottomRight"> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="5,0,5,2" /> - </Trigger> - <Trigger Property="TickPlacement" Value="Both"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - </Trigger> - <Trigger Property="IsSelectionRangeEnabled" Value="true"> - <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible" /> - </Trigger> - <Trigger Property="IsKeyboardFocused" Value="true"> - <Setter Property="Foreground" TargetName="Thumb" Value="{StaticResource SliderThumbFocusedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="Orientation" Value="Vertical"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Slider}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition MinWidth="{TemplateBinding MinWidth}" Width="Auto" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <TickBar x:Name="TopTick" Grid.Column="0" Fill="{TemplateBinding Foreground}" Placement="Left" Visibility="Collapsed" Width="6" /> - <TickBar x:Name="BottomTick" Grid.Column="2" Fill="{TemplateBinding Foreground}" Placement="Right" Visibility="Collapsed" Width="6" /> - <Border x:Name="TrackBackground" Background="{StaticResource SliderTrackBackgroundBrush}" Grid.Column="1" HorizontalAlignment="center" Width="6"> - <Canvas Margin="-1,-6"> - <Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderSelectionRangeBackgroundBrush}" Visibility="Hidden" Width="6" /> - </Canvas> - </Border> - <Track x:Name="PART_Track" Grid.Column="1"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource SliderRepeatButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb x:Name="Thumb" Style="{StaticResource VSliderThumbStyle}" /> - </Track.Thumb> - </Track> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="TickPlacement" Value="TopLeft"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="2,5,0,5" /> - </Trigger> - <Trigger Property="TickPlacement" Value="BottomRight"> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VSliderThumbStyle}" /> - <Setter Property="Margin" TargetName="TrackBackground" Value="0,5,2,5" /> - </Trigger> - <Trigger Property="TickPlacement" Value="Both"> - <Setter Property="Visibility" TargetName="TopTick" Value="Visible" /> - <Setter Property="Visibility" TargetName="BottomTick" Value="Visible" /> - </Trigger> - <Trigger Property="IsSelectionRangeEnabled" Value="true"> - <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible" /> - </Trigger> - <Trigger Property="IsKeyboardFocused" Value="true"> - <Setter Property="Foreground" TargetName="Thumb" Value="{StaticResource SliderThumbFocusedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Trigger> - </Style.Triggers> - </Style> - - <!-- ********************************* RepeatButton Style ********************************* --> - <Style x:Key="RepeatButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Padding" Value="10,0,10,2" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Grid SnapsToDevicePixels="True"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** GridSplitter Style **********************************--> - <Style x:Key="GridSplitterStyle" TargetType="{x:Type GridSplitter}"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource GridSplitterBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource GridSplitterBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="SnapsToDevicePixels" Value="True" /> - <Setter Property="PreviewStyle"> - <Setter.Value> - <Style TargetType="Control"> - <Setter Property="Control.Template"> - <Setter.Value> - <ControlTemplate> - <Rectangle Fill="{StaticResource GridSplitterPressedBackgroundBrush}" Opacity="0.8" /> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - </Setter.Value> - </Setter> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate> - <Grid> - <Border x:Name="border" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" MinHeight="8" MinWidth="8"> - <Grid> - <StackPanel x:Name="HGrip" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Vertical"> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="1" Margin="1,2,1,1" StrokeThickness="0" Width="20" /> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="1" Margin="1,1,1,2" StrokeThickness="0" Width="20" /> - </StackPanel> - <StackPanel x:Name="VGrip" Width="8" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal" Visibility="Collapsed"> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="20" Margin="2,1,1,1" StrokeThickness="0" Width="1" /> - <Rectangle Fill="{StaticResource GlyphBackgroundBrush}" Height="20" Margin="1,1,2,1" StrokeThickness="0" Width="1" /> - </StackPanel> - </Grid> - </Border> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="HorizontalAlignment" Value="Stretch"> - <Setter TargetName="HGrip" Property="Visibility" Value="Visible" /> - <Setter TargetName="VGrip" Property="Visibility" Value="Collapsed" /> - </Trigger> - <Trigger Property="VerticalAlignment" Value="Stretch"> - <Setter TargetName="VGrip" Property="Visibility" Value="Visible" /> - <Setter TargetName="HGrip" Property="Visibility" Value="Collapsed" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="True"> - <Setter TargetName="border" Property="Background" Value="{StaticResource GridSplitterHoverBackgroundBrush}" /> - <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource GridSplitterHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource GridSplitterFocusedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** ProgressBar Style **********************************--> - <Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}"> - <Setter Property="Foreground" Value="{StaticResource ProgressBarForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource ProgressBarBackgroundBrush}" /> - <Setter Property="BorderThickness" Value="0" /> - <Setter Property="Height" Value="6" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ProgressBar}"> - <Grid x:Name="TemplateRoot" SnapsToDevicePixels="true"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Determinate" /> - <VisualState x:Name="Indeterminate"> - <Storyboard RepeatBehavior="Forever"> - <DoubleAnimation Duration="00:00:.5" From="0" To="20" Storyboard.TargetProperty="(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X" Storyboard.TargetName="IndeterminateGradientFill" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border x:Name="ProgressBarTrack" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" /> - <Rectangle x:Name="PART_Track" Margin="{TemplateBinding BorderThickness}" /> - <Decorator x:Name="PART_Indicator" HorizontalAlignment="Left" Margin="{TemplateBinding BorderThickness}"> - <Grid x:Name="Foreground"> - <Rectangle x:Name="Indicator" Fill="{TemplateBinding Foreground}" /> - </Grid> - </Decorator> - <Grid x:Name="IndeterminateRoot" Visibility="Collapsed"> - <Rectangle x:Name="IndeterminateSolidFill" Fill="{TemplateBinding Foreground}" Margin="{TemplateBinding BorderThickness}" Opacity="1" RenderTransformOrigin="0.5,0.5" StrokeThickness="0" /> - <Rectangle x:Name="IndeterminateGradientFill" Fill="{StaticResource ProgressBarIndeterminateBackgroundBrush}" Margin="{TemplateBinding BorderThickness}" StrokeThickness="1" /> - </Grid> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="Orientation" Value="Vertical"> - <Setter Property="LayoutTransform" TargetName="TemplateRoot"> - <Setter.Value> - <RotateTransform Angle="-90" /> - </Setter.Value> - </Setter> - </Trigger> - <Trigger Property="IsIndeterminate" Value="true"> - <Setter Property="Visibility" TargetName="Indicator" Value="Collapsed" /> - <Setter Property="Visibility" TargetName="IndeterminateRoot" Value="Visible" /> - </Trigger> - <Trigger Property="IsIndeterminate" Value="false"> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** PasswordBox Style **********************************--> - <Style x:Key="PasswordBoxStyle" TargetType="{x:Type PasswordBox}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="Foreground" Value="{StaticResource PasswordBoxForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="6,4" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> - <Setter Property="PasswordChar" Value="â—" /> - <Setter Property="KeyboardNavigation.TabNavigation" Value="None" /> - <Setter Property="AllowDrop" Value="true" /> - <Setter Property="FocusVisualStyle" Value="{x:Null}" /> - <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" /> - <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> - <Setter Property="FlowDirection" Value="LeftToRight" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type PasswordBox}"> - <Grid> - <Border Background="{TemplateBinding Background}" x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" /> - <Border x:Name="DisabledVisualElement" BorderBrush="{StaticResource DisabledVisualElement}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource DisabledVisualElement}" IsHitTestVisible="False" Opacity="0" /> - <Border x:Name="ReadOnlyVisualElement" Background="{StaticResource TextBoxReadOnlyBackgroundBrush}" Opacity="0" /> - <Border> - <ScrollViewer x:Name="PART_ContentHost" /> - </Border> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsEnabled" Value="False"> - <Setter Property="Opacity" Value="1" TargetName="DisabledVisualElement" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxHoverBorderBrush}" TargetName="Bd" /> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxFocusedBrush}" TargetName="Bd" /> - </Trigger> - <MultiDataTrigger> - <MultiDataTrigger.Conditions> - <Condition Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}" Value="True" /> - <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" /> - </MultiDataTrigger.Conditions> - <Setter Property="Opacity" Value="1" TargetName="ReadOnlyVisualElement" /> - </MultiDataTrigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ToolTip Style ********************************* --> - <Style x:Key="{x:Type ToolTip}" TargetType="ToolTip"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TooltipBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TooltipBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="10,7" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ToolTip"> - <Grid> - <Rectangle Stroke="{TemplateBinding BorderBrush}" Fill="{TemplateBinding Background}" StrokeThickness="{TemplateBinding BorderThickness}" /> - <StackPanel Orientation="Horizontal" d:LayoutOverrides="Width, Height"> - <ContentPresenter Margin="{TemplateBinding Padding}" Content="{TemplateBinding Content}" /> - </StackPanel> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Right Style ********************************* --> - <Style x:Key="ExpanderRightHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.RowDefinitions> - <RowDefinition Height="30" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - <Grid> - <Grid.LayoutTransform> - <TransformGroup> - <TransformGroup.Children> - <TransformCollection> - <RotateTransform Angle="-90" /> - </TransformCollection> - </TransformGroup.Children> - </TransformGroup> - </Grid.LayoutTransform> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - </Grid> - <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Stretch" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Up Style ********************************* --> - <Style x:Key="ExpanderUpHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Grid> - <Grid.LayoutTransform> - <TransformGroup> - <TransformGroup.Children> - <TransformCollection> - <RotateTransform Angle="180" /> - </TransformCollection> - </TransformGroup.Children> - </TransformGroup> - </Grid.LayoutTransform> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - </Grid> - <ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Left Style ********************************* --> - <Style x:Key="ExpanderLeftHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.RowDefinitions> - <RowDefinition Height="30" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - <Grid> - <Grid.LayoutTransform> - <TransformGroup> - <TransformGroup.Children> - <TransformCollection> - <RotateTransform Angle="90" /> - </TransformCollection> - </TransformGroup.Children> - </TransformGroup> - </Grid.LayoutTransform> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - </Grid> - <ContentPresenter Grid.Row="1" HorizontalAlignment="Center" Margin="0,4,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Stretch" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Down Style ********************************* --> - <Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Border Padding="{TemplateBinding Padding}"> - <Grid Background="{StaticResource TransparentBrush}" SnapsToDevicePixels="False"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Rectangle x:Name="rectangle" Width="30" Height="30" Fill="{StaticResource ExpanderButtonBackgroundBrush}" HorizontalAlignment="Center" Stroke="{StaticResource ExpanderButtonBorderBrush}" VerticalAlignment="Center" /> - <Path x:Name="arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" RenderTransformOrigin="0.5, 0.5" /> - <ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center" /> - </Grid> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsChecked" Value="true"> - <Setter Property="Data" TargetName="arrow" Value="M3.4,-4.4 L6.8,3.9 3.9566912E-07,3.9 z" /> - </Trigger> - <Trigger Property="IsMouseOver" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonHoverBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowHoverBorderBrush}" /> - </Trigger> - <Trigger Property="IsPressed" Value="true"> - <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBackgroundBrush}" /> - <Setter Property="Stroke" TargetName="rectangle" Value="{StaticResource ExpanderButtonPressedBorderBrush}" /> - <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ExpanderArrowPressedBorderBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Expander Style ********************************* --> - <Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="HorizontalContentAlignment" Value="Stretch" /> - <Setter Property="VerticalContentAlignment" Value="Stretch" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Expander}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="true"> - <DockPanel> - <ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ExpanderDownHeaderStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> - <ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> - </DockPanel> - </Border> - <ControlTemplate.Triggers> - <Trigger Property="IsExpanded" Value="true"> - <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" /> - </Trigger> - <Trigger Property="ExpandDirection" Value="Right"> - <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right" /> - <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left" /> - <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}" /> - </Trigger> - <Trigger Property="ExpandDirection" Value="Up"> - <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top" /> - <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom" /> - <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}" /> - </Trigger> - <Trigger Property="ExpandDirection" Value="Left"> - <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left" /> - <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right" /> - <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Foreground" Value="{StaticResource ExpanderDisabledForegroundBrush}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ToggleButton Style ********************************* --> - <Style x:Key="ToggleButtonStyle" TargetType="{x:Type ToggleButton}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Padding" Value="10,0,10,2" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ToggleButton}"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="checked"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> - <Rectangle x:Name="checked" Fill="{StaticResource ButtonPressedBackgroundBrush}" Stroke="{StaticResource ButtonPressedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* GroupBox Style ********************************* --> - <BorderGapMaskConverter x:Key="BorderGapMaskConverter" /> - <Style x:Key="GroupBoxStyle" TargetType="{x:Type GroupBox}"> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource GroupBoxBorderBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="5 7" /> - <Setter Property="SnapsToDevicePixels" Value="True" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type GroupBox}"> - <Grid SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="6" /> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="6" /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - <RowDefinition Height="6" /> - </Grid.RowDefinitions> - <Border BorderBrush="{StaticResource TransparentBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="4" Grid.Column="0" Grid.Row="1" Grid.RowSpan="3" /> - <Border x:Name="Header" Grid.Column="1" Padding="10,5,10,0" Grid.Row="0" Grid.RowSpan="2"> - <ContentPresenter ContentSource="Header" Height="30" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </Border> - <ContentPresenter Grid.ColumnSpan="2" Grid.Column="1" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - <Border Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3"> - <Border.OpacityMask> - <MultiBinding ConverterParameter="7" Converter="{StaticResource BorderGapMaskConverter}"> - <Binding ElementName="Header" Path="ActualWidth" /> - <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" /> - <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" /> - </MultiBinding> - </Border.OpacityMask> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> - </Border> - </Border> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!--********************** Implicit Styles *********************** --> - <Style BasedOn="{StaticResource ButtonStyle}" TargetType="{x:Type Button}" /> - <Style BasedOn="{StaticResource ScrollBarStyle}" TargetType="{x:Type ScrollBar}" /> - <Style BasedOn="{StaticResource ScrollViewerStyle}" TargetType="{x:Type ScrollViewer}" /> - <Style BasedOn="{StaticResource ComboBoxStyle}" TargetType="{x:Type ComboBox}" /> - <Style BasedOn="{StaticResource ComboBoxItemStyle}" TargetType="{x:Type ComboBoxItem}" /> - <Style BasedOn="{StaticResource TextBoxStyle}" TargetType="{x:Type TextBox}" /> - <Style BasedOn="{StaticResource ListBoxStyle}" TargetType="{x:Type ListBox}" /> - <Style BasedOn="{StaticResource ListBoxItemStyle}" TargetType="{x:Type ListBoxItem}" /> - <Style BasedOn="{StaticResource CheckBoxStyle}" TargetType="{x:Type CheckBox}" /> - <Style BasedOn="{StaticResource RadioButtonStyle}" TargetType="{x:Type RadioButton}" /> - <Style BasedOn="{StaticResource LabelStyle}" TargetType="{x:Type Label}" /> - <Style BasedOn="{StaticResource SliderStyle}" TargetType="{x:Type Slider}" /> - <Style BasedOn="{StaticResource RepeatButtonStyle}" TargetType="{x:Type RepeatButton}" /> - <Style BasedOn="{StaticResource GridSplitterStyle}" TargetType="{x:Type GridSplitter}" /> - <Style BasedOn="{StaticResource ProgressBarStyle}" TargetType="{x:Type ProgressBar}" /> - <Style BasedOn="{StaticResource PasswordBoxStyle}" TargetType="{x:Type PasswordBox}" /> - <Style BasedOn="{StaticResource ExpanderStyle}" TargetType="{x:Type Expander}" /> - <Style BasedOn="{StaticResource ToggleButtonStyle}" TargetType="{x:Type ToggleButton}" /> - <Style BasedOn="{StaticResource GroupBoxStyle}" TargetType="{x:Type GroupBox}" /> - -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Light/Styles.Shared.xaml b/Luna/Themes/Metro/Light/Styles.Shared.xaml deleted file mode 100644 index 2424c22..0000000 --- a/Luna/Themes/Metro/Light/Styles.Shared.xaml +++ /dev/null @@ -1,695 +0,0 @@ -<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"> - - <!-- ********************************* COLORS ********************************* --> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Theme.Colors.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!-- ********************************* BRUSHES ********************************* --> - <SolidColorBrush x:Key="ForegroundBrush" Color="{StaticResource Color_001}" /> - <SolidColorBrush x:Key="LightForegroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="TransparentBrush" Color="{StaticResource Color_016}" /> - <SolidColorBrush x:Key="DisabledVisualElement" Color="{StaticResource Color_012}" /> - <SolidColorBrush x:Key="ValidationErrorElement" Color="{StaticResource Color_028}" /> - - <!-- Scrollbar Brushes --> - <SolidColorBrush x:Key="HScrollbarThumbBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="VScrollbarThumbBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="ScrollbarPageButtonArrowDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="VScrollbarThumbHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="HScrollbarThumbHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="VScrollbarThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="HScrollbarThumbPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="VScrollbarThumbDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="HScrollbarThumbDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - <SolidColorBrush x:Key="ScrollbarDisabledBackgroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ScrollbarBackgroundBrush" Color="{StaticResource Color_009}" /> - - <!-- ComboBox Brushes --> - <SolidColorBrush x:Key="ComboBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ComboBoxBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ComboBoxReadOnlyBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ComboBoxHoverBackgroundBrush" Color="{StaticResource Color_007}" /> - <SolidColorBrush x:Key="ComboBoxHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ComboBoxFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ComboBoxDisabledBackgroundBrush" Color="{StaticResource Color_012}" /> - <SolidColorBrush x:Key="ComboBoxReadOnlyBackgroundBrush" Color="{StaticResource Color_064}" /> - <SolidColorBrush x:Key="PopupBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="PopupBorderBrush" Color="{StaticResource Color_004}" /> - - <!-- TextBox Brushes --> - <SolidColorBrush x:Key="TextBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="TextBoxBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="TextBoxHoverBackgroundBrush" Color="{StaticResource Color_016}" /> - <SolidColorBrush x:Key="TextBoxHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="TextBoxFocusedBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="TextBoxReadOnlyBackgroundBrush" Color="{StaticResource Color_064}" /> - - <!-- Button Brushes --> - <SolidColorBrush x:Key="ButtonBackgroundBrush" Color="{StaticResource Color_008}" /> - <SolidColorBrush x:Key="ButtonBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ButtonHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ButtonHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ComboBoxItem Brushes --> - <SolidColorBrush x:Key="ComboBoxItemHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxItemHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ComboBoxItemPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ComboBoxItemPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ComboBoxToggleButton Brushes --> - <SolidColorBrush x:Key="ComboBoxToggleButtonBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonDropDownSeparatorBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ComboBoxToggleButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- ListBox Brushes --> - <SolidColorBrush x:Key="ListBoxBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="ListBoxBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="ListBoxItemBackgroundBrush" Color="{StaticResource Color_016}" /> - <SolidColorBrush x:Key="ListBoxItemBorderBrush" Color="{StaticResource Color_016}" /> - <SolidColorBrush x:Key="ListBoxItemHoverBackgroundBrush" Color="{StaticResource Color_006}" /> - <SolidColorBrush x:Key="ListBoxItemHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="ListBoxItemPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ListBoxItemPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="ListBoxItemSelectedBackgroundBrush" Color="{StaticResource Color_026}" /> - <SolidColorBrush x:Key="ListBoxItemSelectedBorderBrush" Color="{StaticResource Color_024}" /> - - <!-- CheckBox Brushes --> - <SolidColorBrush x:Key="CheckBoxBackgroundlBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxHoverBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxPressedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxInvalidUnfocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxInvalidFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="CheckBoxBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="CheckBoxHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="CheckBoxPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="CheckBoxFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="CheckBoxInvalidUnfocusedBorderBrush" Color="{StaticResource Color_029}" /> - <SolidColorBrush x:Key="CheckBoxInvalidFocusedBorderBrush" Color="{StaticResource Color_028}" /> - <SolidColorBrush x:Key="CheckBoxIndeterminateCheckBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="CheckBoxCheckBackgroundBrush" Color="{StaticResource Color_024}" /> - - <!-- RadioButton Brushes --> - <SolidColorBrush x:Key="RadioButtonBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonHoverBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonPressedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonInvalidUnfocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonInvalidFocusedBackgroundBrush" Color="{StaticResource Color_009}" /> - <SolidColorBrush x:Key="RadioButtonBorderBrush" Color="{StaticResource Color_004}" /> - <SolidColorBrush x:Key="RadioButtonHoverBorderBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="RadioButtonPressedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="RadioButtonFocusedBorderBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="RadioButtonInvalidUnfocusedBorderBrush" Color="{StaticResource Color_029}" /> - <SolidColorBrush x:Key="RadioButtonInvalidFocusedBorderBrush" Color="{StaticResource Color_028}" /> - <SolidColorBrush x:Key="RadioButtonCheckBackgroundBrush" Color="{StaticResource Color_024}" /> - - <!-- Visual Glyphs brushes --> - <SolidColorBrush x:Key="GlyphBackgroundBrush" Color="{StaticResource Color_003}" /> - <SolidColorBrush x:Key="GlyphHoverBackgroundBrush" Color="{StaticResource Color_002}" /> - <SolidColorBrush x:Key="GlyphPressedBackgroundBrush" Color="{StaticResource Color_024}" /> - <SolidColorBrush x:Key="GlyphDisabledBackgroundBrush" Color="{StaticResource Color_005}" /> - - <!-- ValidationToolTip Brushes --> - <SolidColorBrush x:Key="ValidationToolTipTemplateShadowBrush" Color="{StaticResource Color_003}" /> - - <!-- ******************************************************** SL-WPF SHARED INLINE CONTROLS RESOURCES *********************************************************** - *********************************************************************************************************************************************************************** --> - - <!-- ********************************* ValidationToolTip Template ********************************* --> - <ControlTemplate x:Key="ValidationToolTipTemplate"> - <Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0"> - <Grid.RenderTransform> - <TranslateTransform x:Name="xform" X="-25" /> - </Grid.RenderTransform> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="OpenStates"> - <VisualStateGroup.Transitions> - <VisualTransition GeneratedDuration="0" /> - <VisualTransition GeneratedDuration="0:0:0.2" To="Open"> - <Storyboard> - <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform"> - <DoubleAnimation.EasingFunction> - <BackEase Amplitude=".3" EasingMode="EaseOut" /> - </DoubleAnimation.EasingFunction> - </DoubleAnimation> - <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> - </Storyboard> - </VisualTransition> - </VisualStateGroup.Transitions> - <VisualState x:Name="Closed"> - <Storyboard> - <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Open"> - <Storyboard> - <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform" /> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" CornerRadius="5" Margin="4,4,-4,-4" Opacity="0.02" /> - <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" CornerRadius="4" Margin="3,3,-3,-3" Opacity="0.08" /> - <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" CornerRadius="3" Margin="2,2,-2,-2" Opacity="0.15" /> - <Border Background="{StaticResource ValidationToolTipTemplateShadowBrush}" CornerRadius="2" Margin="1,1,-1,-1" Opacity="0.21" /> - <Border Background="{StaticResource ValidationErrorElement}" CornerRadius="2" /> - <Border CornerRadius="2"> - <TextBlock Foreground="{StaticResource LightForegroundBrush}" MaxWidth="250" Margin="8,4,8,4" TextWrapping="Wrap" Text="{Binding (Validation.Errors)[0].ErrorContent}" UseLayoutRounding="false" /> - </Border> - </Grid> - </ControlTemplate> - - <!-- ********************************* ComboBoxToggleButton Style ********************************* --> - <Style x:Key="ComboBoxToggleButtonStyle" TargetType="ToggleButton"> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource ComboBoxToggleButtonBorderBrush}" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Padding" Value="2" /> - <Setter Property="Cursor" Value="Hand" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ToggleButton"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GlyphDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ArrowSelected"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused" /> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid.ColumnDefinitions> - <ColumnDefinition /> - <ColumnDefinition Width="30" /> - </Grid.ColumnDefinitions> - <Rectangle x:Name="Bd" Fill="{StaticResource TransparentBrush}" Grid.ColumnSpan="2" /> - <Grid Grid.Column="1"> - <Rectangle Width="1" Fill="{StaticResource ComboBoxToggleButtonDropDownSeparatorBackgroundBrush}" HorizontalAlignment="Left" Margin="-1,5,0,5" /> - <Path x:Name="Arrow" Width="10" Height="6" Fill="{StaticResource GlyphBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" /> - <Path x:Name="ArrowSelected" Width="10" Height="6" Visibility="Collapsed" Fill="{StaticResource GlyphPressedBackgroundBrush}" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z " Stretch="Fill" /> - </Grid> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ComboBoxItem Style ********************************* --> - <Style x:Key="ComboBoxItemStyle" TargetType="ComboBoxItem"> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,0" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ComboBoxItem"> - <Grid Background="{TemplateBinding Background}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="fillColor" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="SelectionStates"> - <VisualState x:Name="Unselected" /> - <VisualState x:Name="Selected"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="CheckedBd"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Collapsed</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl1"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedUnfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FocusVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="LayoutStates"> - <VisualState x:Name="AfterLoaded" /> - <VisualState x:Name="BeforeLoaded" /> - <VisualState x:Name="BeforeUnloaded" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" /> - <Rectangle x:Name="fillColor" Fill="{StaticResource ComboBoxItemHoverBackgroundBrush}" IsHitTestVisible="False" Opacity="0" Stroke="{StaticResource ComboBoxItemHoverBorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" /> - <Rectangle x:Name="CheckedBd" Fill="{StaticResource ComboBoxItemPressedBackgroundBrush}" IsHitTestVisible="False" Visibility="Collapsed" Stroke="{StaticResource ComboBoxItemPressedBorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" /> - <ContentControl x:Name="contentControl" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <ContentControl x:Name="contentControl1" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Foreground="{StaticResource LightForegroundBrush}"> - <ContentPresenter x:Name="contentPresenter1" /> - </ContentControl> - <Rectangle x:Name="FocusVisualElement" Stroke="{StaticResource ComboBoxItemPressedBackgroundBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ListBoxItem Style ********************************* --> - <Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> - <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,2" /> - <Setter Property="Margin" Value="0" /> - <Setter Property="HorizontalContentAlignment" Value="Stretch" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListBoxItem"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="SelectionStates"> - <VisualState x:Name="Unselected" /> - <VisualState x:Name="Selected"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="BgSelected"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="BgSelected"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{TemplateBinding Background}" /> - <Rectangle x:Name="BgSelected" Fill="{StaticResource ListBoxItemSelectedBackgroundBrush}" Stroke="{StaticResource ListBoxItemSelectedBorderBrush}" Visibility="Collapsed" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" IsHitTestVisible="False" Visibility="Collapsed" Stroke="{StaticResource ListBoxItemPressedBorderBrush}" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** CheckBoxStyle **********************************--> - <Style x:Key="CheckBoxStyle" TargetType="CheckBox"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Padding" Value="6,0,0,0" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="CheckBox"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="hover" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pressed" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter" /> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="disabled" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="checkBox" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="IndeterminateCheck" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidUnfocused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidFocused" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Rectangle Fill="{StaticResource TransparentBrush}" /> - <Rectangle x:Name="normal" Opacity="1" Stroke="{StaticResource CheckBoxBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxBackgroundlBrush}" Width="18" Height="18" /> - <Rectangle x:Name="hover" Stroke="{StaticResource CheckBoxHoverBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxHoverBackgroundBrush}" Opacity="0" Width="18" Height="18" /> - <Rectangle x:Name="pressed" Opacity="0" Stroke="{StaticResource CheckBoxPressedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxPressedBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="focused" Opacity="0" Stroke="{StaticResource CheckBoxFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxFocusedBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="invalidUnfocused" Opacity="0" Stroke="{StaticResource CheckBoxInvalidUnfocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxInvalidUnfocusedBackgroundBrush}" Width="18" Height="18" /> - <Rectangle x:Name="invalidFocused" Opacity="0" Stroke="{StaticResource CheckBoxInvalidFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource CheckBoxInvalidFocusedBackgroundBrush}" Width="18" Height="18" /> - <Path x:Name="checkBox" Height="10" Width="12" Stretch="Fill" Opacity="0" Data="M 1145.607177734375,430 C1145.607177734375,430 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1138,434.5538330078125 1138,434.5538330078125 1138,434.5538330078125 1141.482177734375,438 1141.482177734375,438 1141.482177734375,438 1141.96875,437.9375 1141.96875,437.9375 1141.96875,437.9375 1147,431.34619140625 1147,431.34619140625 1147,431.34619140625 1145.607177734375,430 1145.607177734375,430 z" Fill="{StaticResource CheckBoxCheckBackgroundBrush}" UseLayoutRounding="False" /> - <Rectangle x:Name="IndeterminateCheck" Fill="{StaticResource CheckBoxIndeterminateCheckBackgroundBrush}" Height="3" Width="8" Opacity="0" /> - <Rectangle x:Name="disabled" Opacity="0" StrokeThickness="1" Fill="{StaticResource DisabledVisualElement}" Width="18" Height="18" /> - <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************** RadioButton Style **********************************--> - <Style x:Key="RadioButtonStyle" TargetType="RadioButton"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Padding" Value="6,0,0,0" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="20" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="RadioButton"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="hover" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pressed" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter" /> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="disabled" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="CheckStates"> - <VisualState x:Name="Checked"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Checked1" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unchecked" /> - <VisualState x:Name="Indeterminate" /> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidUnfocused" /> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="invalidFocused" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="18" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-6,0" /> - <Ellipse x:Name="normal" Opacity="1" Stroke="{StaticResource RadioButtonBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="hover" Stroke="{StaticResource RadioButtonHoverBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonHoverBackgroundBrush}" Opacity="0" Width="18" Height="18" /> - <Ellipse x:Name="pressed" Opacity="0" Stroke="{StaticResource RadioButtonPressedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonPressedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="focused" Opacity="0" Stroke="{StaticResource RadioButtonFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonFocusedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="invalidUnfocused" Opacity="0" Stroke="{StaticResource RadioButtonInvalidUnfocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonInvalidUnfocusedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="invalidFocused" Opacity="0" Stroke="{StaticResource RadioButtonInvalidFocusedBorderBrush}" StrokeThickness="1" Fill="{StaticResource RadioButtonInvalidFocusedBackgroundBrush}" Width="18" Height="18" /> - <Ellipse x:Name="Checked1" Fill="{StaticResource RadioButtonCheckBackgroundBrush}" Opacity="0" Width="10" Height="10" /> - <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> - <Ellipse x:Name="disabled" Opacity="0" StrokeThickness="1" Fill="{StaticResource DisabledVisualElement}" Width="18" Height="18" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ButtonStyle ********************************* --> - <Style x:Key="ButtonStyle" TargetType="Button"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="Padding" Value="10,0,10,2" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="Button"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Bd" Storyboard.TargetProperty="Stroke"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentControl"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightForegroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="DisabledVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FocusedVisualElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bd" Fill="{StaticResource ButtonBackgroundBrush}" Stroke="{StaticResource ButtonBorderBrush}" StrokeThickness="1" /> - <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> - <ContentPresenter x:Name="contentPresenter" /> - </ContentControl> - <Rectangle x:Name="FocusedVisualElement" Stroke="{StaticResource ButtonPressedBorderBrush}" Visibility="Collapsed" StrokeThickness="2" /> - <Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource DisabledVisualElement}" Visibility="Collapsed" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Light/Styles.WPF.xaml b/Luna/Themes/Metro/Light/Styles.WPF.xaml deleted file mode 100644 index 1ca0641..0000000 --- a/Luna/Themes/Metro/Light/Styles.WPF.xaml +++ /dev/null @@ -1,798 +0,0 @@ -<ResourceDictionary - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:System="clr-namespace:System;assembly=mscorlib" - mc:Ignorable="d"> - - <!-- ********************************* RESOURCES ********************************* --> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="Theme.Colors.xaml" /> - <ResourceDictionary Source="Styles.Shared.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!-- ******************************************************** WPF SPECIFIC INLINE-CONTROLS RESOURCES *********************************************************** - *********************************************************************************************************************************************************************** --> - <!-- ********************************* ScrollBarButton Style ********************************* --> - <Style x:Key="ScrollBarButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="Focusable" Value="false" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Grid x:Name="grid1"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ScrollbarPageButtonArrowDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> - <Path x:Name="Arrow" Data="F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z " Height="6" Stretch="Uniform" Width="10" Fill="{StaticResource ScrollbarPageButtonArrowBackgroundBrush}" Margin="{TemplateBinding Padding}" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ScrollBarPageButton Style ********************************* --> - <Style x:Key="ScrollBarPageButtonStyle" TargetType="{x:Type RepeatButton}"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="Focusable" Value="false" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type RepeatButton}"> - <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver" /> - <VisualState x:Name="Pressed" /> - <VisualState x:Name="Disabled" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - </Rectangle> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Horizontal ScrollBarThumb Style ********************************* --> - <Style x:Key="HScrollBarThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="MinWidth" Value="20" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid Margin="0"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HScrollbarThumbDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> - <Rectangle x:Name="Thumb" Margin="1" Fill="{StaticResource HScrollbarThumbBackgroundBrush}" Height="8" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* Vertical ScrollbarThumb Style ********************************* --> - <Style x:Key="VScrollBarThumbStyle" TargetType="{x:Type Thumb}"> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="MinHeight" Value="20" /> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Grid x:Name="grid" Height="Auto" Width="Auto"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbPressedBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="Thumb"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VScrollbarThumbDisabledBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle Fill="{StaticResource TransparentBrush}" Margin="-5" /> - <Rectangle x:Name="Thumb" Fill="{StaticResource VScrollbarThumbBackgroundBrush}" Width="8" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ScrollBar Style ********************************* --> - <Style x:Key="ScrollBarStyle" TargetType="{x:Type ScrollBar}"> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" /> - <Setter Property="Stylus.IsFlicksEnabled" Value="false" /> - <Setter Property="Width" Value="30" /> - <Setter Property="MinWidth" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollBar}"> - <Grid SnapsToDevicePixels="true"> - <Grid.RowDefinitions> - <RowDefinition Height="30" /> - <RowDefinition Height="0.00001*" /> - <RowDefinition Height="30" /> - </Grid.RowDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualStateGroup.Transitions> - <VisualTransition GeneratedDuration="0:0:0.3" /> - </VisualStateGroup.Transitions> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver" /> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton"> - <EasingDoubleKeyFrame KeyTime="0" Value="0.6" /> - </DoubleAnimationUsingKeyFrames> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton1"> - <EasingDoubleKeyFrame KeyTime="0" Value="0.6" /> - </DoubleAnimationUsingKeyFrames> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="thumb"> - <EasingDoubleKeyFrame KeyTime="0" Value="0" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bg" Grid.RowSpan="3" Fill="{StaticResource ScrollbarBackgroundBrush}" Margin="0"/> - <RepeatButton x:Name="repeatButton" Command="{x:Static ScrollBar.LineUpCommand}" IsEnabled="True" Style="{StaticResource ScrollBarButtonStyle}" HorizontalAlignment="Center" /> - <Track x:Name="PART_Track" IsDirectionReversed="true" IsEnabled="True" Grid.Row="1"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb x:Name="thumb" Style="{StaticResource VScrollBarThumbStyle}" HorizontalAlignment="Center" Width="30" /> - </Track.Thumb> - </Track> - <RepeatButton x:Name="repeatButton1" Command="{x:Static ScrollBar.LineDownCommand}" IsEnabled="True" Grid.Row="2" Style="{StaticResource ScrollBarButtonStyle}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center"> - <RepeatButton.RenderTransform> - <TransformGroup> - <ScaleTransform /> - <SkewTransform /> - <RotateTransform Angle="180" /> - <TranslateTransform /> - </TransformGroup> - </RepeatButton.RenderTransform> - </RepeatButton> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Fill" TargetName="Bg" Value="{StaticResource ScrollbarDisabledBackgroundBrush}"/> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="Orientation" Value="Horizontal"> - <Setter Property="Width" Value="Auto" /> - <Setter Property="MinWidth" Value="0" /> - <Setter Property="Height" Value="30" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollBar}"> - <Grid SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="30" /> - <ColumnDefinition Width="0.00001*" /> - <ColumnDefinition Width="30" /> - </Grid.ColumnDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualStateGroup.Transitions> - <VisualTransition GeneratedDuration="0:0:0.3" /> - </VisualStateGroup.Transitions> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton"> - <EasingDoubleKeyFrame KeyTime="0" Value="1" /> - </DoubleAnimationUsingKeyFrames> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="repeatButton1"> - <EasingDoubleKeyFrame KeyTime="0" Value="1" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="Bg" Grid.ColumnSpan="5" Fill="{StaticResource ScrollbarBackgroundBrush}" Margin="0"/> - <RepeatButton x:Name="repeatButton" Command="{x:Static ScrollBar.LineLeftCommand}" IsEnabled="True" Style="{DynamicResource ScrollBarButtonStyle}" Opacity="1" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"> - <RepeatButton.RenderTransform> - <TransformGroup> - <ScaleTransform /> - <SkewTransform /> - <RotateTransform Angle="-90" /> - <TranslateTransform /> - </TransformGroup> - </RepeatButton.RenderTransform> - </RepeatButton> - <Track x:Name="PART_Track" Grid.Column="1" IsEnabled="True"> - <Track.DecreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.DecreaseRepeatButton> - <Track.IncreaseRepeatButton> - <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource ScrollBarPageButtonStyle}" /> - </Track.IncreaseRepeatButton> - <Track.Thumb> - <Thumb Style="{StaticResource HScrollBarThumbStyle}" VerticalAlignment="Center" Height="30" /> - </Track.Thumb> - </Track> - <RepeatButton x:Name="repeatButton1" Grid.Column="2" Command="{x:Static ScrollBar.LineRightCommand}" IsEnabled="True" Style="{DynamicResource ScrollBarButtonStyle}" Opacity="1" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"> - <RepeatButton.RenderTransform> - <TransformGroup> - <ScaleTransform /> - <SkewTransform /> - <RotateTransform Angle="90" /> - <TranslateTransform /> - </TransformGroup> - </RepeatButton.RenderTransform> - </RepeatButton> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Fill" TargetName="Bg" Value="{StaticResource ScrollbarDisabledBackgroundBrush}"/> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Trigger> - </Style.Triggers> - </Style> - - <!-- ********************************* ScrollViewer Style ********************************* --> - <Style x:Key="ScrollViewerStyle" TargetType="{x:Type ScrollViewer}"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Top" /> - <Setter Property="VerticalScrollBarVisibility" Value="Auto" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollViewer}"> - <Grid x:Name="Grid"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="*" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0" /> - <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Style="{StaticResource ScrollBarStyle}" /> - <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" Style="{StaticResource ScrollBarStyle}" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ComboBoxEditableTextBox Style ********************************* --> - <Style x:Key="ComboBoxEditableTextBoxStyle" TargetType="{x:Type TextBox}"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="OverridesDefaultStyle" Value="true" /> - <Setter Property="AllowDrop" Value="true" /> - <Setter Property="MinWidth" Value="0" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,4" /> - <Setter Property="FocusVisualStyle" Value="{x:Null}" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type TextBox}"> - <ScrollViewer Style="{StaticResource ScrollViewerStyle}" x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PART_ContentHost"> - <EasingDoubleKeyFrame KeyTime="0" Value="0.3" /> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="ReadOnly" /> - <VisualState x:Name="MouseOver" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - </ScrollViewer> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ComboBoxEditable Template ********************************* --> - <ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="{x:Type ComboBox}"> - <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hover"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="disabled"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Unfocused" /> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="FocusedDropDown"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="normal" Fill="{StaticResource ComboBoxBackgroundBrush}" Stroke="{StaticResource ComboBoxBorderBrush}" StrokeThickness="1" Grid.ColumnSpan="2" /> - <Rectangle x:Name="hover" Fill="{StaticResource ComboBoxHoverBackgroundBrush}" Stroke="{StaticResource ComboBoxHoverBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> - <Border x:Name="DropDownBorder" HorizontalAlignment="Stretch" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupBorderBrush}" BorderThickness="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" CornerRadius="2"> - <ScrollViewer x:Name="DropDownScrollViewer" Style="{StaticResource ScrollViewerStyle}"> - <Grid RenderOptions.ClearTypeHint="Enabled"> - <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> - <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}" /> - </Canvas> - <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </Grid> - </ScrollViewer> - </Border> - </Popup> - <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.Column="0" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonStyle}" /> - <TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBoxStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Margin="0,0,31,0" VerticalAlignment="Center" /> - <Rectangle x:Name="focused" Stroke="{StaticResource ComboBoxFocusedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Rectangle x:Name="disabled" Fill="{StaticResource ComboBoxDisabledBackgroundBrush}" Visibility="Collapsed" Grid.ColumnSpan="2" /> - </Grid> - </ControlTemplate> - - <!-- ********************************* ComboBox Style ********************************* --> - <Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}"> - <Setter Property="Padding" Value="6,5,35,3"/> - <Setter Property="Margin" Value="0" /> - <Setter Property="FontSize" Value="14.667" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TransparentBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource ComboBoxBorderBrush}" /> - <Setter Property="ItemContainerStyle" Value="{StaticResource ComboBoxItemStyle}" /> - <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> - <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> - <Setter Property="ScrollViewer.CanContentScroll" Value="true" /> - <Setter Property="ScrollViewer.PanningMode" Value="Both" /> - <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ComboBox}"> - <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition MinWidth="30" Width="0" /> - </Grid.ColumnDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hover"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="disabled"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Unfocused" /> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="FocusedDropDown"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="focused"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="normal" Fill="{StaticResource ComboBoxBackgroundBrush}" Stroke="{StaticResource ComboBoxBorderBrush}" StrokeThickness="1" Grid.ColumnSpan="2" /> - <Rectangle x:Name="hover" Fill="{StaticResource ComboBoxHoverBackgroundBrush}" Stroke="{StaticResource ComboBoxHoverBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> - <Border x:Name="DropDownBorder" HorizontalAlignment="Stretch" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupBorderBrush}" BorderThickness="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" CornerRadius="2"> - <ScrollViewer x:Name="DropDownScrollViewer" Style="{StaticResource ScrollViewerStyle}"> - <Grid RenderOptions.ClearTypeHint="Enabled"> - <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> - <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}" /> - </Canvas> - <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> - </Grid> - </ScrollViewer> - </Border> - </Popup> - <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonStyle}" /> - <ContentPresenter Grid.ColumnSpan="2" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> - <Rectangle x:Name="focused" Stroke="{StaticResource ComboBoxFocusedBorderBrush}" StrokeThickness="1" Visibility="Collapsed" Grid.ColumnSpan="2" /> - <Rectangle x:Name="disabled" Fill="{StaticResource ComboBoxDisabledBackgroundBrush}" Visibility="Collapsed" Grid.ColumnSpan="2" /> - </Grid> - <ControlTemplate.Triggers> - <Trigger Property="HasItems" Value="false"> - <Setter Property="Height" TargetName="DropDownBorder" Value="95" /> - </Trigger> - <Trigger Property="IsEnabled" Value="false"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource ComboBoxBackgroundBrush}" /> - </Trigger> - <Trigger Property="IsGrouping" Value="true"> - <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> - </Trigger> - <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false"> - <Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}" /> - <Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}" /> - </Trigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="IsEditable" Value="true"> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> - <Setter Property="IsTabStop" Value="false" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}" /> - </Trigger> - </Style.Triggers> - </Style> - - <!-- ********************************* TextBox Style ********************************* --> - <Style x:Key="TextBoxStyle" TargetType="TextBox"> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="FontSize" Value="13.333" /> - <Setter Property="FontFamily" Value="Segoe UI" /> - <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}" /> - <Setter Property="MinHeight" Value="30" /> - <Setter Property="Padding" Value="6,4" /> - <Setter Property="SelectionBrush" Value="{StaticResource TextBoxFocusedBrush}" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="TextBox"> - <Grid x:Name="RootElement"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="MouseOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TextBoxHoverBorderBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Background" Storyboard.TargetName="Border"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TextBoxHoverBackgroundBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="DisabledVisualElement" /> - </Storyboard> - </VisualState> - <VisualState x:Name="ReadOnly"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ReadOnlyVisualElement" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused"> - <Storyboard> - <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>True</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Opacity="1"> - <Grid> - <Border x:Name="ReadOnlyVisualElement" Background="{StaticResource TextBoxReadOnlyBackgroundBrush}" Opacity="0" /> - <ScrollViewer x:Name="PART_ContentHost" BorderThickness="0" IsTabStop="False" Padding="{TemplateBinding Padding}" /> - </Grid> - </Border> - <Border x:Name="DisabledVisualElement" BorderBrush="{StaticResource DisabledVisualElement}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource DisabledVisualElement}" IsHitTestVisible="False" Opacity="0" /> - <Border x:Name="FocusVisualElement" BorderBrush="{StaticResource TextBoxFocusedBrush}" BorderThickness="{TemplateBinding BorderThickness}" IsHitTestVisible="False" Opacity="0" /> - <Border x:Name="ValidationErrorElement" BorderBrush="{StaticResource ValidationErrorElement}" BorderThickness="{TemplateBinding BorderThickness}" Visibility="Collapsed"> - <ToolTipService.ToolTip> - <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ValidationToolTipTemplate}"> - <ToolTip.Triggers> - <EventTrigger RoutedEvent="Canvas.Loaded"> - <BeginStoryboard> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>true</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </BeginStoryboard> - </EventTrigger> - </ToolTip.Triggers> - </ToolTip> - </ToolTipService.ToolTip> - </Border> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- ********************************* ListBox Style ********************************* --> - <Style x:Key="ListBoxStyle" TargetType="ListBox"> - <Setter Property="Padding" Value="0" /> - <Setter Property="Background" Value="{StaticResource ListBoxBackgroundBrush}" /> - <Setter Property="BorderBrush" Value="{StaticResource ListBoxBorderBrush}" /> - <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="VerticalContentAlignment" Value="Top" /> - <Setter Property="IsTabStop" Value="False" /> - <Setter Property="BorderThickness" Value="1" /> - <Setter Property="ItemContainerStyle" Value="{StaticResource ListBoxItemStyle}" /> - <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> - <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListBox"> - <Grid> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="ValidationStates"> - <VisualState x:Name="Valid" /> - <VisualState x:Name="InvalidUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="InvalidFocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <Visibility>Visible</Visibility> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>True</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"> - <ScrollViewer x:Name="ScrollViewer" BorderThickness="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ScrollViewerStyle}"> - <ItemsPresenter /> - </ScrollViewer> - </Border> - <Border x:Name="ValidationErrorElement" BorderBrush="{StaticResource ValidationErrorElement}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" Visibility="Collapsed"> - <ToolTipService.ToolTip> - <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ValidationToolTipTemplate}"> - <ToolTip.Triggers> - <EventTrigger RoutedEvent="Canvas.Loaded"> - <BeginStoryboard> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="validationTooltip"> - <DiscreteObjectKeyFrame KeyTime="0"> - <DiscreteObjectKeyFrame.Value> - <System:Boolean>true</System:Boolean> - </DiscreteObjectKeyFrame.Value> - </DiscreteObjectKeyFrame> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </BeginStoryboard> - </EventTrigger> - </ToolTip.Triggers> - </ToolTip> - </ToolTipService.ToolTip> - <Grid Background="{StaticResource TransparentBrush}" HorizontalAlignment="Right" Height="10" Margin="0,-4,-4,0" VerticalAlignment="Top" Width="10"> - <Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="{StaticResource ValidationErrorElement}" Margin="-1,3,0,0" /> - <Path Data="M 0,0 L2,0 L 8,6 L8,8" Fill="{StaticResource LightForegroundBrush}" Margin="-1,3,0,0" /> - </Grid> - </Border> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Themes/Metro/Light/Theme.Colors.xaml b/Luna/Themes/Metro/Light/Theme.Colors.xaml deleted file mode 100644 index 86a9bcf..0000000 --- a/Luna/Themes/Metro/Light/Theme.Colors.xaml +++ /dev/null @@ -1,80 +0,0 @@ -<ResourceDictionary - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> - - <!-- ********************************** THEME BRUSHES - For Color Tuner **********************************--> - <SolidColorBrush x:Key="Brush01" Color="#FF00AADE"/> - <SolidColorBrush x:Key="Brush02" Color="White"/> - <SolidColorBrush x:Key="Brush03" Color="#FFC6C6C6"/> - <SolidColorBrush x:Key="Brush04" Color="#FF565656"/> - <SolidColorBrush x:Key="Brush05" Color="#FF333333"/> - - <!-- ********************************** THEME COLORS **********************************--> - <!--Base Colors--> - <Color x:Key="Color_000">#FF282828</Color> - <Color x:Key="Color_001">#FF3F3F3F</Color> - <Color x:Key="Color_002">#FF565656</Color> - <Color x:Key="Color_003">#FF858585</Color> - <Color x:Key="Color_004">#FFB9B9B9</Color> - <Color x:Key="Color_005">#FFD7D7D7</Color> - <Color x:Key="Color_006">#FFE7E7E7</Color> - <Color x:Key="Color_007">#FFF4F4F4</Color> - <Color x:Key="Color_008">#FFF9F9F9</Color> - <Color x:Key="Color_009">#FFFFFFFF</Color> - -<!--Transparent and Whites with transparency--> - <Color x:Key="Color_010">#E5FFFFFF</Color><!--90% White--> - <Color x:Key="Color_011">#BFFFFFFF</Color><!--75% White--> - <Color x:Key="Color_012">#99FFFFFF</Color><!--60% White--> - <Color x:Key="Color_013">#72FFFFFF</Color><!--45% White--> - <Color x:Key="Color_014">#4CFFFFFF</Color><!--30% White--> - <Color x:Key="Color_016">#00FFFFFF</Color><!--0% White--> - -<!--Blacks and grays with transparency--> - <Color x:Key="Color_018">#72000000</Color><!--45% Black--> - <Color x:Key="Color_019">#4C000000</Color><!--30% Black--> - <Color x:Key="Color_020">#26000000</Color><!--15% Black--> - <Color x:Key="Color_021">#00000000</Color><!--0% Black--> - <Color x:Key="Color_022">#66E2E2E2</Color> - -<!--Theme Accent colors --> - <Color x:Key="Color_023">#FF0086AF</Color> - <Color x:Key="Color_024">#FF00AADE</Color> - <Color x:Key="Color_025">#FF80D5EF</Color> - <Color x:Key="Color_026">#FFB2E1EF</Color> - <Color x:Key="Color_027">#2600AADE</Color> - -<!--Theme Error colors --> - <Color x:Key="Color_028">#FFD0284C</Color> - <Color x:Key="Color_029">#FFF55E7F</Color> - <Color x:Key="Color_030">#FFFFCAD5</Color> - -<!--Colors for Chart Series--> - <Color x:Key="Color_035">#FF006481</Color> - <Color x:Key="Color_037">#FF8A9B0F</Color> - <Color x:Key="Color_038">#FF3E4700</Color> - <Color x:Key="Color_040">#FFF14D0F</Color> - <Color x:Key="Color_041">#FF8D2E00</Color> - <Color x:Key="Color_043">#FF81106B</Color> - <Color x:Key="Color_044">#FF410135</Color> - <Color x:Key="Color_046">#FFFCA910</Color> - <Color x:Key="Color_047">#FF8D4902</Color> - <Color x:Key="Color_049">#FF037A54</Color> - <Color x:Key="Color_050">#FF003F2A</Color> - <Color x:Key="Color_052">#FF154D85</Color> - <Color x:Key="Color_053">#FF02284D</Color> - <Color x:Key="Color_055">#FF543511</Color> - <Color x:Key="Color_056">#FF211303</Color> - <Color x:Key="Color_058">#FF89806D</Color> - <Color x:Key="Color_059">#FF393225</Color> - <Color x:Key="Color_061">#FF58458B</Color> - <Color x:Key="Color_062">#FF211347</Color> - <Color x:Key="Color_063">#7FB9B9B9</Color> - <Color x:Key="Color_064">#33565656</Color> - <Color x:Key="Color_065">#7F3F3F3F</Color> - <Color x:Key="Color_066">#FF686868</Color> - <Color x:Key="Color_067">#8000AADE</Color> - <Color x:Key="Color_068">#CC3F3F3F</Color> -</ResourceDictionary> \ No newline at end of file diff --git a/Luna/Utils/AutoFileSaver.cs b/Luna/Utils/AutoFileSaver.cs new file mode 100644 index 0000000..13b8a14 --- /dev/null +++ b/Luna/Utils/AutoFileSaver.cs @@ -0,0 +1,89 @@ +using Luna.Utils.Logger; +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace Luna.Utils +{ + public class AutoFileSaver<T> where T : INotifyPropertyChanged, new() + { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + public string Path { get; private set; } + + public bool ReadOnly { get; private set; } + + private T _model; + + public T Model + { + get + { + return _model; + } + private set + { + if (_model != null) + { + _model.PropertyChanged -= Model_PropertyChanged; + } + + _model = value; + _model.PropertyChanged += Model_PropertyChanged; + } + } + + public AutoFileSaver(string path, bool readOnly = false) + { + Path = path; + ReadOnly = readOnly; + + ReloadFromDisk(); + } + + public void ReloadFromDisk() + { + try + { + Logger.Debug("Reading XML for '{0}' from file '{1}'", typeof(T).Name, Path); + + Model = ObjectSerializer.DeserializeObjectFromFile<T>(Path); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + + Model = new T(); + } + } + + private void Model_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (ReadOnly) + { + return; + } + + object[] attributes = typeof(T).GetProperty(e.PropertyName).GetCustomAttributes(typeof(XmlIgnoreAttribute), false); + + if (attributes.Length > 0) + { + return; + } + + Logger.Debug("Writing XML for '{0}' to file '{1}'", typeof(T).Name, Path); + + if (sender is T model) + { + try + { + ObjectSerializer.SerializeObjectToFile(Path, model); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + } + } +} diff --git a/Luna/Utils/AutoUpdater.cs b/Luna/Utils/AutoUpdater.cs new file mode 100644 index 0000000..f596c35 --- /dev/null +++ b/Luna/Utils/AutoUpdater.cs @@ -0,0 +1,179 @@ +using Luna.Models; +using Luna.Utils.Logger; +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; + +namespace Luna.Utils +{ + public class AutoUpdater + { + private class GithubModel + { + public class Assets + { + public string name = ""; + public string browser_download_url = ""; + } + + public string tag_name = ""; + public Assets[] assets = new Assets[] { }; + } + + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + private readonly AutoFileSaver<UpdateModel> _autoSaver = new AutoFileSaver<UpdateModel>("update.xml"); + + private readonly JsonDownloader jsonDownloader = new JsonDownloader(); + + public UpdateModel Model + { + get + { + return _autoSaver.Model; + } + } + + public Version LocalVersion + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version; + } + } + + public bool AutoUpdate { get; set; } + + public AutoUpdater(bool autoUpdate = false) + { + AutoUpdate = autoUpdate; + + if (Model.Status == UpdateStatus.Checking || Model.Status == UpdateStatus.Downloading || Model.Status == UpdateStatus.Error) + { + Model.Status = UpdateStatus.None; + } + } + + public async void CheckForUpdates(bool force = true) + { + if (Model.Status == UpdateStatus.Checking) + { + return; + } + + if (!force && Model.LastCheckInMinutes < 15) + { + return; + } + + Logger.Info("Checking for updates..."); + + Model.LastCheck = DateTime.Now; + Model.Status = UpdateStatus.Checking; + + try + { + GithubModel response = await jsonDownloader.GetObject<GithubModel>("https://api.github.com/repos/adrianmteo/Luna/releases/latest"); + + Version newVersion = new Version(response.tag_name.Substring(1)); + + if (newVersion > LocalVersion) + { + Logger.Debug("Found new update with version {0}", newVersion); + + GithubModel.Assets asset = response.assets.First(e => e.name.ToLower().Contains("exe")); + + Model.Version = newVersion.ToString(); + Model.DownloadUrl = asset.browser_download_url; + Model.DownloadName = asset.name; + Model.Status = UpdateStatus.NewUpdate; + + if (AutoUpdate) + { + DownloadUpdate(); + } + } + else + { + Logger.Info("No new updates found..."); + + Model.Status = UpdateStatus.NoUpdate; + } + } + catch (Exception ex) + { + Logger.Error(ex.Message); + + Model.Status = UpdateStatus.Error; + } + } + + public async void DownloadUpdate() + { + if (Model.Status == UpdateStatus.Downloading) + { + return; + } + + Logger.Info("Downloading update..."); + + Model.Progress = 0; + Model.Status = UpdateStatus.Downloading; + + try + { + jsonDownloader.Client.DownloadProgressChanged += Client_DownloadProgressChanged; + + Model.DownloadPath = await jsonDownloader.GetTempFile(Model.DownloadUrl, Model.DownloadName); + + Model.Status = UpdateStatus.Ready; + + if (AutoUpdate) + { + InstallUpdate(); + } + } + catch (Exception ex) + { + Logger.Error(ex.Message); + + Model.Status = UpdateStatus.Error; + } + finally + { + jsonDownloader.Client.DownloadProgressChanged -= Client_DownloadProgressChanged; + } + } + + private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + { + Logger.Debug("Downloading update... {0}%...", e.ProgressPercentage.ToString()); + + Model.Progress = e.ProgressPercentage; + } + + public void InstallUpdate() + { + if (!File.Exists(Model.DownloadPath)) + { + return; + } + + try + { + Process.Start(Model.DownloadPath, "/VERYSILENT"); + + Environment.Exit(0); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + + Model.Status = UpdateStatus.Error; + } + } + } +} diff --git a/Luna/Utils/Converters.cs b/Luna/Utils/Converters.cs new file mode 100644 index 0000000..331bd62 --- /dev/null +++ b/Luna/Utils/Converters.cs @@ -0,0 +1,38 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Luna.Utils +{ + public class GreaterThanOrEqualComparatorToBoolean : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is IComparable a && parameter is IComparable b) + { + return a.CompareTo(b) >= 0; + } + + return Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } + + public class ObjectComparatorToVisbility : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value.Equals(parameter) ? Visibility.Visible : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/Luna/Utils/Handlers/AppearanceHandler.cs b/Luna/Utils/Handlers/AppearanceHandler.cs new file mode 100644 index 0000000..9926ebd --- /dev/null +++ b/Luna/Utils/Handlers/AppearanceHandler.cs @@ -0,0 +1,56 @@ +using Luna.Models; + +namespace Luna.Utils.Handlers +{ + public class AppearanceHandler + { + public SettingsModel Model { get; private set; } + + public AppearanceHandler(SettingsModel model) + { + Model = model; + } + + public AppearanceHandler() + { + } + + public void SwitchToLightTheme() + { + switch (Model.ChangeType) + { + case SettingsChangeType.Custom: + if (Model.ChangeAppTheme) RegistryHandler.SetAppsUseLightTheme(true); + if (Model.ChangeSystemTheme) RegistryHandler.SetSystemUsesLightTheme(true); + if (Model.ChangeWallpaper) WallpaperHandler.ChangeWallpaper(Model.LightWallpaperPath); + break; + + case SettingsChangeType.Theme: + ThemeHandler.ChangeTheme(Model.LightThemePath); + break; + + default: + break; + } + } + + public void SwitchToDarkTheme() + { + switch (Model.ChangeType) + { + case SettingsChangeType.Custom: + if (Model.ChangeAppTheme) RegistryHandler.SetAppsUseLightTheme(false); + if (Model.ChangeSystemTheme) RegistryHandler.SetSystemUsesLightTheme(false); + if (Model.ChangeWallpaper) WallpaperHandler.ChangeWallpaper(Model.DarkWallpaperPath); + break; + + case SettingsChangeType.Theme: + ThemeHandler.ChangeTheme(Model.DarkThemePath); + break; + + default: + break; + } + } + } +} diff --git a/Luna/Utils/Handlers/RegistryHandler.cs b/Luna/Utils/Handlers/RegistryHandler.cs new file mode 100644 index 0000000..98019f6 --- /dev/null +++ b/Luna/Utils/Handlers/RegistryHandler.cs @@ -0,0 +1,43 @@ +using Luna.Utils.Logger; +using Microsoft.Win32; +using System; + +namespace Luna.Utils.Handlers +{ + public class RegistryHandler + { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + private static readonly string KeyPath = @"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"; + + public static void SetAppsUseLightTheme(bool on) + { + Logger.Debug("Set 'AppsUseLightTheme' to {0}", on); + + try + { + RegistryKey key = Registry.CurrentUser.OpenSubKey(KeyPath, true); + key.SetValue("AppsUseLightTheme", on ? 1 : 0, RegistryValueKind.DWord); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + + public static void SetSystemUsesLightTheme(bool on) + { + Logger.Debug("Set 'SystemUsesLightTheme' to {0}", on); + + try + { + RegistryKey key = Registry.CurrentUser.OpenSubKey(KeyPath, true); + key.SetValue("SystemUsesLightTheme", on ? 1 : 0, RegistryValueKind.DWord); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + } +} diff --git a/Luna/Helpers/TaskHandler.cs b/Luna/Utils/Handlers/TaskHandler.cs similarity index 93% rename from Luna/Helpers/TaskHandler.cs rename to Luna/Utils/Handlers/TaskHandler.cs index 90d7857..63525e7 100644 --- a/Luna/Helpers/TaskHandler.cs +++ b/Luna/Utils/Handlers/TaskHandler.cs @@ -1,71 +1,67 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using Microsoft.Win32.TaskScheduler; - -namespace Luna.Helpers -{ - class TaskHandler - { - public static void DeleteTasks() - { - using (TaskService ts = new TaskService()) - { - var folder = ts.RootFolder.SubFolders.FirstOrDefault(e => e.Name == "Luna"); - - if (folder != null) - { - foreach (var task in folder.Tasks) - { - folder.DeleteTask(task.Name); - } - - ts.RootFolder.DeleteFolder(folder.Name, false); - } - } - } - - public static void CreateTasks(ushort lightTimeHour, ushort lightTimeMinute, ushort darkTimeHour, ushort darkTimeMinute) - { - DateTime now = DateTime.Now; - - DateTime lightTime = new DateTime(now.Year, now.Month, now.Day, lightTimeHour, lightTimeMinute, 0); - DateTime darkTime = new DateTime(now.Year, now.Month, now.Day, 12 + darkTimeHour, darkTimeMinute, 0); - - string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.FriendlyName); - - Console.WriteLine("Creating task events for {0} starting at {1} and ending at {2}", path, lightTime.ToString(), darkTime.ToString()); - - using (TaskService ts = new TaskService()) - { - var folder = ts.RootFolder.CreateFolder("Luna"); - - var lightModeTask = ts.NewTask(); - lightModeTask.Triggers.Add(new DailyTrigger { StartBoundary = lightTime, DaysInterval = 1 }); - lightModeTask.Actions.Add(new ExecAction(path, "/light")); - lightModeTask.Settings.DisallowStartIfOnBatteries = false; - lightModeTask.Settings.StartWhenAvailable = true; - - folder.RegisterTaskDefinition(@"Light theme", lightModeTask); - - var darkModeTask = ts.NewTask(); - darkModeTask.Triggers.Add(new DailyTrigger { StartBoundary = darkTime, DaysInterval = 1 }); - darkModeTask.Actions.Add(new ExecAction(path, "/dark")); - darkModeTask.Settings.DisallowStartIfOnBatteries = false; - darkModeTask.Settings.StartWhenAvailable = true; - - folder.RegisterTaskDefinition(@"Dark theme", darkModeTask); - } - } - - public static void UpdateTasks(ushort lightTimeHour, ushort lightTimeMinute, ushort darkTimeHour, ushort darkTimeMinute) - { - DeleteTasks(); - CreateTasks(lightTimeHour, lightTimeMinute, darkTimeHour, darkTimeMinute); - } - } -} +using Microsoft.Win32.TaskScheduler; +using System; +using System.IO; +using System.Linq; + +namespace Luna.Utils.Handlers +{ + class TaskHandler + { + public static void DeleteTasks() + { + using (TaskService ts = new TaskService()) + { + var folder = ts.RootFolder.SubFolders.FirstOrDefault(e => e.Name == "Luna"); + + if (folder != null) + { + foreach (var task in folder.Tasks) + { + folder.DeleteTask(task.Name); + } + + ts.RootFolder.DeleteFolder(folder.Name, false); + } + } + } + + public static void CreateTasks(ushort lightTimeHour, ushort lightTimeMinute, ushort darkTimeHour, ushort darkTimeMinute) + { + DateTime now = DateTime.Now; + + DateTime lightTime = new DateTime(now.Year, now.Month, now.Day, lightTimeHour, lightTimeMinute, 0); + DateTime darkTime = new DateTime(now.Year, now.Month, now.Day, 12 + darkTimeHour, darkTimeMinute, 0); + + string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.FriendlyName); + + Console.WriteLine("Creating task events for {0} starting at {1} and ending at {2}", path, lightTime.ToString(), darkTime.ToString()); + + using (TaskService ts = new TaskService()) + { + var folder = ts.RootFolder.CreateFolder("Luna"); + + var lightModeTask = ts.NewTask(); + lightModeTask.Triggers.Add(new DailyTrigger { StartBoundary = lightTime, DaysInterval = 1 }); + lightModeTask.Actions.Add(new ExecAction(path, "/light")); + lightModeTask.Settings.DisallowStartIfOnBatteries = false; + lightModeTask.Settings.StartWhenAvailable = true; + + folder.RegisterTaskDefinition(@"Light theme", lightModeTask); + + var darkModeTask = ts.NewTask(); + darkModeTask.Triggers.Add(new DailyTrigger { StartBoundary = darkTime, DaysInterval = 1 }); + darkModeTask.Actions.Add(new ExecAction(path, "/dark")); + darkModeTask.Settings.DisallowStartIfOnBatteries = false; + darkModeTask.Settings.StartWhenAvailable = true; + + folder.RegisterTaskDefinition(@"Dark theme", darkModeTask); + } + } + + public static void UpdateTasks(ushort lightTimeHour, ushort lightTimeMinute, ushort darkTimeHour, ushort darkTimeMinute) + { + DeleteTasks(); + CreateTasks(lightTimeHour, lightTimeMinute, darkTimeHour, darkTimeMinute); + } + } +} diff --git a/Luna/Utils/Handlers/ThemeHandler.cs b/Luna/Utils/Handlers/ThemeHandler.cs new file mode 100644 index 0000000..08e9518 --- /dev/null +++ b/Luna/Utils/Handlers/ThemeHandler.cs @@ -0,0 +1,50 @@ +using Luna.Utils.Logger; +using System; +using System.Diagnostics; +using System.IO; + +namespace Luna.Utils.Handlers +{ + public static class ThemeHandler + { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + public static void ChangeTheme(string path) + { + if (!File.Exists(path)) + { + Logger.Error("Theme file does not exist at '{0}'", path); + return; + } + + string themeToolPath = @"Resources\ThemeTool.exe"; + + if (!File.Exists(themeToolPath)) + { + Logger.Error("'ThemeTool.exe' does not exist"); + return; + } + + Logger.Debug("Running 'ThemeTool.exe' with theme '{0}'", path); + + try + { + ProcessStartInfo processInfo = new ProcessStartInfo + { + FileName = themeToolPath, + Arguments = $"ChangeTheme \"{path}\"", + WindowStyle = ProcessWindowStyle.Hidden + }; + + Process process = Process.Start(processInfo); + process.WaitForExit(); + + Logger.Info("'ThemeTool.exe' exited with status code {0}", process.ExitCode); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + } +} diff --git a/Luna/Utils/Handlers/WallpaperHandler.cs b/Luna/Utils/Handlers/WallpaperHandler.cs new file mode 100644 index 0000000..b0fdb95 --- /dev/null +++ b/Luna/Utils/Handlers/WallpaperHandler.cs @@ -0,0 +1,38 @@ +using Luna.Utils.Logger; +using System; +using System.IO; +using System.Runtime.InteropServices; + +namespace Luna.Utils.Handlers +{ +#pragma warning disable IDE1006 // Naming Styles + internal sealed class win32 +#pragma warning restore IDE1006 // Naming Styles + { + [DllImport("user32.dll", CharSet = CharSet.Auto)] + internal static extern int SystemParametersInfo(int uAction, int uParam, String pvParam, int fWinIni); + } + + public static class WallpaperHandler + { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + public static void ChangeWallpaper(string path) + { + if (!File.Exists(path)) + { + Logger.Error("Wallpaper does not exist at '{0}'", path); + return; + } + + try + { + win32.SystemParametersInfo(0x0014, 0, path, 1 | 2); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + } +} diff --git a/Luna/Utils/JsonDownloader.cs b/Luna/Utils/JsonDownloader.cs new file mode 100644 index 0000000..769286e --- /dev/null +++ b/Luna/Utils/JsonDownloader.cs @@ -0,0 +1,36 @@ +using Newtonsoft.Json; +using System.IO; +using System.Net; +using System.Reflection; +using System.Threading.Tasks; + +namespace Luna.Utils +{ + public class JsonDownloader + { + public WebClient Client { get; private set; } + + public JsonDownloader() + { + Client = new WebClient(); + Client.Headers.Add("User-Agent", Assembly.GetExecutingAssembly().FullName); + } + + public async Task<T> GetObject<T>(string url) + { + string json = await Client.DownloadStringTaskAsync(url); + + return JsonConvert.DeserializeObject<T>(json); + } + + public async Task<string> GetTempFile(string url, string filename) + { + string extension = Path.GetExtension(filename); + string path = Path.ChangeExtension(Path.GetTempFileName(), extension); + + await Client.DownloadFileTaskAsync(url, path); + + return path; + } + } +} diff --git a/Luna/Utils/Logger/AbstractLogger.cs b/Luna/Utils/Logger/AbstractLogger.cs new file mode 100644 index 0000000..7acf78d --- /dev/null +++ b/Luna/Utils/Logger/AbstractLogger.cs @@ -0,0 +1,77 @@ +using System; + +namespace Luna.Utils.Logger +{ + public static class LogMessageToken + { + public static readonly string Date = "{date}"; + public static readonly string Level = "{level}"; + public static readonly string Message = "{message}"; + public static readonly string Tag = "{tag}"; + } + + public abstract class AbstractLogger : ILogger + { + public string Tag { get; set; } + public string MessageFormat { get; set; } + = $"[{LogMessageToken.Date}] ({LogMessageToken.Level}) {LogMessageToken.Tag}: {LogMessageToken.Message}"; + + public string DateFormat { get; set; } + + public LogLevel MinimumLevel { get; set; } = LogLevel.Debug; + + public LogLevel MaximumLevel { get; set; } = LogLevel.Severe; + + public void Debug(string format, params object[] args) + { + Log(LogLevel.Debug, format, args); + } + + public void Info(string format, params object[] args) + { + Log(LogLevel.Info, format, args); + } + + public void Warning(string format, params object[] args) + { + Log(LogLevel.Warning, format, args); + } + + public void Error(string format, params object[] args) + { + Log(LogLevel.Error, format, args); + } + + public void Exception(Exception ex) + { + Log(LogLevel.Severe, ex.ToString()); + } + + public void Log(LogLevel level, string format, params object[] args) + { + if (level >= MinimumLevel && level <= MaximumLevel) + { + string date = DateTime.Now.ToString(DateFormat); + string log = string.Format(format, args); + + string[] lines = log.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); + + foreach (string line in lines) + { + string message = MessageFormat + .Replace(LogMessageToken.Date, date) + .Replace(LogMessageToken.Level, level.ToString().ToUpper()) + .Replace(LogMessageToken.Message, line) + .Replace(LogMessageToken.Tag, Tag); + + WriteMessage(message); + } + } + } + + internal virtual void WriteMessage(string message) + { + throw new NotImplementedException(); + } + } +} diff --git a/Luna/Utils/Logger/AppLogger.cs b/Luna/Utils/Logger/AppLogger.cs new file mode 100644 index 0000000..db96a5e --- /dev/null +++ b/Luna/Utils/Logger/AppLogger.cs @@ -0,0 +1,25 @@ +using System.Diagnostics; + +namespace Luna.Utils.Logger +{ + public static class AppLogger + { + public static ILogger GetLoggerForCurrentClass() + { + ILogger logger = new MultiLogger( + new FileLogger("application.log") { MinimumLevel = LogLevel.Info }, + new FileLogger("error.log") { MinimumLevel = LogLevel.Error }, + new ConsoleLogger() { MaximumLevel = LogLevel.Error } + ); + + StackTrace trace = new StackTrace(); + + if (trace.FrameCount > 1) + { + logger.Tag = trace.GetFrame(1).GetMethod().DeclaringType.Name; + } + + return logger; + } + } +} diff --git a/Luna/Utils/Logger/ConsoleLogger.cs b/Luna/Utils/Logger/ConsoleLogger.cs new file mode 100644 index 0000000..fbe6c55 --- /dev/null +++ b/Luna/Utils/Logger/ConsoleLogger.cs @@ -0,0 +1,12 @@ +using System; + +namespace Luna.Utils.Logger +{ + public class ConsoleLogger : AbstractLogger + { + internal override void WriteMessage(string message) + { + Console.WriteLine(message); + } + } +} diff --git a/Luna/Utils/Logger/FileLogger.cs b/Luna/Utils/Logger/FileLogger.cs new file mode 100644 index 0000000..6165aaa --- /dev/null +++ b/Luna/Utils/Logger/FileLogger.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading; + +namespace Luna.Utils.Logger +{ + public class FileLogger : AbstractLogger + { + private static readonly Dictionary<string, ReaderWriterLockSlim> _allLocks + = new Dictionary<string, ReaderWriterLockSlim>(); + + public string Path { get; set; } + + public FileLogger(string path) + { + Path = path; + + if (!_allLocks.ContainsKey(path)) + { + _allLocks.Add(path, new ReaderWriterLockSlim()); + } + } + + internal override void WriteMessage(string message) + { + ReaderWriterLockSlim currentLock = _allLocks[Path]; + + try + { + currentLock.EnterWriteLock(); + + using (StreamWriter writer = File.AppendText(Path)) + { + writer.WriteLine(message); + writer.Flush(); + } + } + catch (Exception ex) + { + Console.WriteLine("Error while writing log to file: {1}", ex.Message); + } + finally + { + currentLock.ExitWriteLock(); + } + } + } +} diff --git a/Luna/Utils/Logger/ILogger.cs b/Luna/Utils/Logger/ILogger.cs new file mode 100644 index 0000000..3452e8b --- /dev/null +++ b/Luna/Utils/Logger/ILogger.cs @@ -0,0 +1,24 @@ +using System; + +namespace Luna.Utils.Logger +{ + public enum LogLevel + { + Debug = 1, + Info = 2, + Warning = 3, + Error = 4, + Severe = 5, + } + + public interface ILogger + { + string Tag { get; set; } + void Debug(string format, params object[] args); + void Info(string format, params object[] args); + void Warning(string format, params object[] args); + void Error(string format, params object[] args); + void Exception(Exception ex); + void Log(LogLevel level, string format, params object[] args); + } +} diff --git a/Luna/Utils/Logger/MultiLogger.cs b/Luna/Utils/Logger/MultiLogger.cs new file mode 100644 index 0000000..f6d2e63 --- /dev/null +++ b/Luna/Utils/Logger/MultiLogger.cs @@ -0,0 +1,81 @@ +using System; + +namespace Luna.Utils.Logger +{ + public class MultiLogger : ILogger + { + public ILogger[] Loggers { get; set; } + + private string _tag; + + public string Tag + { + get + { + return _tag; + } + set + { + _tag = value; + + foreach (ILogger logger in Loggers) + { + logger.Tag = value; + } + } + } + + public MultiLogger(params ILogger[] loggers) + { + Loggers = loggers; + } + + public void Debug(string format, params object[] args) + { + foreach (ILogger logger in Loggers) + { + logger.Debug(format, args); + } + } + + public void Info(string format, params object[] args) + { + foreach (ILogger logger in Loggers) + { + logger.Info(format, args); + } + } + + public void Warning(string format, params object[] args) + { + foreach (ILogger logger in Loggers) + { + logger.Warning(format, args); + } + } + + public void Error(string format, params object[] args) + { + foreach (ILogger logger in Loggers) + { + logger.Error(format, args); + } + } + + public void Exception(Exception ex) + { + foreach (ILogger logger in Loggers) + { + logger.Exception(ex); + } + } + + public void Log(LogLevel level, string format, params object[] args) + { + foreach (ILogger logger in Loggers) + { + logger.Log(level, format, args); + } + } + } +} diff --git a/Luna/Utils/NotifyPropertyChanged.cs b/Luna/Utils/NotifyPropertyChanged.cs new file mode 100644 index 0000000..49ba2de --- /dev/null +++ b/Luna/Utils/NotifyPropertyChanged.cs @@ -0,0 +1,15 @@ +using System.ComponentModel; +using System.Runtime.CompilerServices; + +namespace Luna.Utils +{ + public abstract class NotifyPropertyChanged : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + + internal void RaisePropertyChanged([CallerMemberName] string propertyName = "") + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + } +} diff --git a/Luna/Utils/ObjectSerializer.cs b/Luna/Utils/ObjectSerializer.cs new file mode 100644 index 0000000..9fb08ce --- /dev/null +++ b/Luna/Utils/ObjectSerializer.cs @@ -0,0 +1,28 @@ +using System.Xml; +using System.Xml.Serialization; + +namespace Luna.Utils +{ + public static class ObjectSerializer + { + public static void SerializeObjectToFile<T>(string path, T obj) + { + XmlSerializer serializer = new XmlSerializer(typeof(T)); + + using (XmlWriter writer = XmlWriter.Create(path)) + { + serializer.Serialize(writer, obj); + } + } + + public static T DeserializeObjectFromFile<T>(string path) + { + XmlSerializer serializer = new XmlSerializer(typeof(T)); + + using (XmlReader reader = XmlReader.Create(path)) + { + return (T)serializer.Deserialize(reader); + } + } + } +} diff --git a/Luna/Windows/MessageWindow.xaml b/Luna/Windows/MessageWindow.xaml new file mode 100644 index 0000000..14f6e8d --- /dev/null +++ b/Luna/Windows/MessageWindow.xaml @@ -0,0 +1,42 @@ +<Window x:Class="Luna.Windows.MessageWindow" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:local="clr-namespace:Luna.Windows" + xmlns:controls="clr-namespace:Luna.Controls" + mc:Ignorable="d" + Title="Window" Width="350" + WindowStartupLocation="CenterOwner" ResizeMode="NoResize" ShowInTaskbar="False" + BorderThickness="1" + SnapsToDevicePixels="True" SizeToContent="Height"> + + <Window.Background> + <SolidColorBrush Color="{StaticResource Color_009}" /> + </Window.Background> + + <Window.BorderBrush> + <SolidColorBrush Color="{StaticResource Color_008}" /> + </Window.BorderBrush> + + <WindowChrome.WindowChrome> + <WindowChrome CaptionHeight="30" ResizeBorderThickness="4" CornerRadius="0" NonClientFrameEdges="None" GlassFrameThickness="0" /> + </WindowChrome.WindowChrome> + + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="30" /> + <RowDefinition /> + </Grid.RowDefinitions> + <controls:WindowHeader /> + <StackPanel Grid.Row="1" Margin="16"> + <Label Padding="0 0 0 16"> + <TextBlock Text="{Binding Caption, RelativeSource={RelativeSource AncestorType={x:Type local:MessageWindow}}}" TextWrapping="Wrap" /> + </Label> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> + <Button Content="{Binding OK, RelativeSource={RelativeSource AncestorType={x:Type local:MessageWindow}}}" Margin="0 0 8 0" Click="Button_Click_1" /> + <Button Content="{Binding Cancel, RelativeSource={RelativeSource AncestorType={x:Type local:MessageWindow}}}" Click="Button_Click" /> + </StackPanel> + </StackPanel> + </Grid> +</Window> diff --git a/Luna/Windows/MessageWindow.xaml.cs b/Luna/Windows/MessageWindow.xaml.cs new file mode 100644 index 0000000..c2cf6a5 --- /dev/null +++ b/Luna/Windows/MessageWindow.xaml.cs @@ -0,0 +1,49 @@ +using System.Windows; + +namespace Luna.Windows +{ + public partial class MessageWindow : Window + { + private static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(MessageWindow), new PropertyMetadata("Caption")); + public string Caption + { + get { return (string)GetValue(CaptionProperty); } + set { SetValue(CaptionProperty, value); } + } + + private static readonly DependencyProperty OKProperty = DependencyProperty.Register("OK", typeof(string), typeof(MessageWindow), new PropertyMetadata("OK")); + public string OK + { + get { return (string)GetValue(OKProperty); } + set { SetValue(OKProperty, value); } + } + + private static readonly DependencyProperty CancelProperty = DependencyProperty.Register("Cancel", typeof(string), typeof(MessageWindow), new PropertyMetadata("Cancel")); + public string Cancel + { + get { return (string)GetValue(CancelProperty); } + set { SetValue(CancelProperty, value); } + } + + public MessageWindow(Window owner, string title, string caption, string ok = "OK", string cancel = "Cancel") + { + InitializeComponent(); + + Owner = owner; + Title = title; + Caption = caption; + OK = ok; + Cancel = cancel; + } + + private void Button_Click_1(object sender, RoutedEventArgs e) + { + DialogResult = true; + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + DialogResult = false; + } + } +} diff --git a/Luna/Windows/SettingsWindow.xaml b/Luna/Windows/SettingsWindow.xaml new file mode 100644 index 0000000..9960080 --- /dev/null +++ b/Luna/Windows/SettingsWindow.xaml @@ -0,0 +1,127 @@ +<Window x:Class="Luna.Windows.SettingsWindow" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit" + xmlns:utils="clr-namespace:Luna.Utils" + xmlns:models="clr-namespace:Luna.Models" + xmlns:controls="clr-namespace:Luna.Controls" + Title="Luna" Width="420" + WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" SizeToContent="Height" + BorderThickness="1" + SnapsToDevicePixels="True" Closing="Window_Closing"> + + <Window.Background> + <SolidColorBrush Color="{StaticResource Color_009}" /> + </Window.Background> + + <Window.BorderBrush> + <SolidColorBrush Color="{StaticResource Color_008}" /> + </Window.BorderBrush> + + <Window.Resources> + <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> + <utils:ObjectComparatorToVisbility x:Key="ObjectComparatorToVisbility" /> + <utils:GreaterThanOrEqualComparatorToBoolean x:Key="GreaterThanOrEqualComparatorToBoolean" /> + </Window.Resources> + + <WindowChrome.WindowChrome> + <WindowChrome CaptionHeight="30" ResizeBorderThickness="4" CornerRadius="0" NonClientFrameEdges="None" GlassFrameThickness="0" /> + </WindowChrome.WindowChrome> + + <Grid> + <Grid.Style> + <Style TargetType="Grid"> + <Style.Triggers> + <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}" Value="Maximized"> + <Setter Property="Margin" Value="7" /> + </DataTrigger> + <DataTrigger Binding="{Binding IsActive, RelativeSource={RelativeSource AncestorType=Window}}" Value="True"> + <DataTrigger.EnterActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Duration="0:0:0.250" To="1" Storyboard.TargetProperty="Opacity" /> + </Storyboard> + </BeginStoryboard> + </DataTrigger.EnterActions> + <DataTrigger.ExitActions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimation Duration="0:0:1" To="0.4" Storyboard.TargetProperty="Opacity" /> + </Storyboard> + </BeginStoryboard> + </DataTrigger.ExitActions> + </DataTrigger> + </Style.Triggers> + </Style> + </Grid.Style> + <Grid.RowDefinitions> + <RowDefinition Height="30" /> + <RowDefinition Height="*" /> + </Grid.RowDefinitions> + <controls:WindowHeader x:Name="Header" HasUpdate="{Binding Status, Converter={StaticResource GreaterThanOrEqualComparatorToBoolean}, ConverterParameter={x:Static models:UpdateStatus.NewUpdate}}" OnClickUpdate="WindowHeader_OnClickUpdate" /> + <StackPanel Grid.Row="1" Margin="32"> + <CheckBox Content="Enable automatic theme changer" IsChecked="{Binding Enabled}" /> + <StackPanel Margin="0 16 0 0" Visibility="{Binding Enabled, Converter={StaticResource BooleanToVisibilityConverter}}"> + <Grid Margin="0 0 0 16"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="12" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <StackPanel> + <Label Content="Change to light theme at" /> + <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding LightThemeTime}" Format="ShortTime" /> + </StackPanel> + <StackPanel Grid.Column="2"> + <Label Content="Change to dark theme at" /> + <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding DarkThemeTime}" Format="ShortTime" /> + </StackPanel> + </Grid> + <Label Content="Let the app change Windows appearance" /> + <ComboBox Margin="0 0 0 16" ItemsSource="{x:Static models:SettingsModel.ChangeTypeValues}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding ChangeType}" /> + <StackPanel Visibility="{Binding ChangeType, Converter={StaticResource ObjectComparatorToVisbility}, ConverterParameter={x:Static models:SettingsChangeType.Custom}}"> + <CheckBox Content="Change system theme" IsChecked="{Binding ChangeSystemTheme}" /> + <CheckBox Content="Change app theme" IsChecked="{Binding ChangeAppTheme}" /> + <CheckBox Content="Change wallpaper" IsChecked="{Binding ChangeWallpaper}" /> + <StackPanel Margin="0 16 0 0" Visibility="{Binding ChangeWallpaper, Converter={StaticResource BooleanToVisibilityConverter}}"> + <Label> + <TextBlock> + Light theme wallpaper (<Hyperlink Click="Hyperlink2_Click" Tag="LightWallpaperPath">Browse...</Hyperlink>) + </TextBlock> + </Label> + <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightWallpaperPath}" /> + <Label> + <TextBlock> + Dark theme wallpaper (<Hyperlink Click="Hyperlink2_Click" Tag="DarkWallpaperPath">Browse...</Hyperlink>) + </TextBlock> + </Label> + <TextBox IsReadOnly="True" Text="{Binding DarkWallpaperPath}" /> + </StackPanel> + </StackPanel> + <StackPanel Visibility="{Binding ChangeType, Converter={StaticResource ObjectComparatorToVisbility}, ConverterParameter={x:Static models:SettingsChangeType.Theme}}"> + <Label> + <TextBlock> + Light .theme file (<Hyperlink Click="Hyperlink_Click" Tag="LightThemePath">Browse...</Hyperlink>) + </TextBlock> + </Label> + <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightThemePath}" /> + <Label> + <TextBlock> + Dark .theme file (<Hyperlink Click="Hyperlink_Click" Tag="DarkThemePath">Browse...</Hyperlink>) + </TextBlock> + </Label> + <TextBox IsReadOnly="True" Text="{Binding DarkThemePath}" /> + </StackPanel> + <Grid Margin="0 16 0 0"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="8" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <Button Content="Test light theme" Click="Button_Click" /> + <Button Content="Test dark theme" Click="Button_Click_1" Grid.Column="2" /> + </Grid> + </StackPanel> + </StackPanel> + </Grid> +</Window> diff --git a/Luna/Windows/SettingsWindow.xaml.cs b/Luna/Windows/SettingsWindow.xaml.cs new file mode 100644 index 0000000..5e3ee8d --- /dev/null +++ b/Luna/Windows/SettingsWindow.xaml.cs @@ -0,0 +1,122 @@ +using Luna.Models; +using Luna.Utils; +using Luna.Utils.Handlers; +using Microsoft.Win32; +using System; +using System.ComponentModel; +using System.IO; +using System.Reflection; +using System.Windows; +using System.Windows.Documents; + +namespace Luna.Windows +{ + public partial class SettingsWindow : Window + { + private readonly AutoFileSaver<SettingsModel> _autoFileSaver = new AutoFileSaver<SettingsModel>("settings.xml"); + + private readonly AutoUpdater _autoUpdater = new AutoUpdater(); + + public SettingsWindow() + { + InitializeComponent(); + + DataContext = _autoFileSaver.Model; + Header.DataContext = _autoUpdater.Model; + + _autoUpdater.CheckForUpdates(false); + } + + private void WindowHeader_OnClickUpdate(object sender, RoutedEventArgs e) + { + OpenUpdateWindow(); + } + + private void OpenUpdateWindow() + { + UpdateWindow window = new UpdateWindow(_autoUpdater) + { + Owner = this + }; + + window.ShowDialog(); + } + + private void Window_Closing(object sender, CancelEventArgs e) + { + if (_autoUpdater.Model.Status >= UpdateStatus.NewUpdate && new MessageWindow(this, "Update available", $"An update to version {_autoUpdater.Model.Version} is now available. Do you want to download and install it now?", "Update now").ShowDialog() == true) + { + e.Cancel = true; + + _autoUpdater.AutoUpdate = true; + + switch (_autoUpdater.Model.Status) + { + case UpdateStatus.NewUpdate: + _autoUpdater.DownloadUpdate(); + break; + + case UpdateStatus.Ready: + _autoUpdater.InstallUpdate(); + break; + + default: + break; + } + + OpenUpdateWindow(); + } + } + + private void Hyperlink_Click(object sender, RoutedEventArgs e) + { + Hyperlink hyperlink = (Hyperlink)sender; + + OpenFileDialog dialog = new OpenFileDialog(); + + string localAppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + string initialPath = Path.Combine(localAppDataPath, @"Microsoft\Windows\Themes"); + + dialog.Filter = "Theme files|*.theme"; + dialog.Title = "Select a theme"; + dialog.InitialDirectory = initialPath; + + if (dialog.ShowDialog() == true) + { + PropertyInfo propertyInfo = _autoFileSaver.Model.GetType().GetProperty((string)hyperlink.Tag); + propertyInfo.SetValue(_autoFileSaver.Model, dialog.FileName, null); + } + } + + private void Hyperlink2_Click(object sender, RoutedEventArgs e) + { + Hyperlink hyperlink = (Hyperlink)sender; + + OpenFileDialog dialog = new OpenFileDialog(); + + string initialPath = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); + + dialog.Filter = "Image files|*.jpg;*.jpeg;*.png|All files|*.*"; + dialog.Title = "Select a wallpaper"; + dialog.InitialDirectory = initialPath; + + if (dialog.ShowDialog() == true) + { + PropertyInfo propertyInfo = _autoFileSaver.Model.GetType().GetProperty((string)hyperlink.Tag); + propertyInfo.SetValue(_autoFileSaver.Model, dialog.FileName, null); + } + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + AppearanceHandler handler = new AppearanceHandler(_autoFileSaver.Model); + handler.SwitchToLightTheme(); + } + + private void Button_Click_1(object sender, RoutedEventArgs e) + { + AppearanceHandler handler = new AppearanceHandler(_autoFileSaver.Model); + handler.SwitchToDarkTheme(); + } + } +} diff --git a/Luna/Windows/UpdateWindow.xaml b/Luna/Windows/UpdateWindow.xaml new file mode 100644 index 0000000..c8590b6 --- /dev/null +++ b/Luna/Windows/UpdateWindow.xaml @@ -0,0 +1,112 @@ +<Window x:Class="Luna.Windows.UpdateWindow" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:models="clr-namespace:Luna.Models" + xmlns:controls="clr-namespace:Luna.Controls" + mc:Ignorable="d" + Title="Update" Width="350" + WindowStartupLocation="CenterOwner" ResizeMode="CanMinimize" ShowInTaskbar="False" + BorderThickness="1" + SnapsToDevicePixels="True" SizeToContent="Height"> + + <Window.Background> + <SolidColorBrush Color="{StaticResource Color_009}" /> + </Window.Background> + + <Window.BorderBrush> + <SolidColorBrush Color="{StaticResource Color_008}" /> + </Window.BorderBrush> + + <Window.Resources> + <DataTemplate x:Key="CheckingTemplate"> + <StackPanel> + <Label Content="Checking for updates..." /> + <ProgressBar IsIndeterminate="True" Height="7" /> + </StackPanel> + </DataTemplate> + <DataTemplate x:Key="NoUpdateTemplate"> + <Label Padding="0"> + <TextBlock> + No new updates found. Last check was <Run Text="{Binding LastCheck}" />. + </TextBlock> + </Label> + </DataTemplate> + <DataTemplate x:Key="NewUpdateTemplate"> + <StackPanel> + <Label Padding="0 0 0 16"> + <TextBlock> + Update to version <Run Text="{Binding Version}" /> is now available for download + </TextBlock> + </Label> + <Button Content="Download now" HorizontalAlignment="Right" Click="DownloadButton_Click" /> + </StackPanel> + </DataTemplate> + <DataTemplate x:Key="DownloadingTemplate"> + <StackPanel> + <Grid> + <Label Content="Downloading update..." /> + <Label HorizontalAlignment="Right"> + <TextBlock Text="{Binding Progress, StringFormat={}{0:0}%}" /> + </Label> + </Grid> + <ProgressBar Value="{Binding Progress}" Height="7" /> + </StackPanel> + </DataTemplate> + <DataTemplate x:Key="ReadyTemplate"> + <StackPanel> + <Label Padding="0 0 0 16"> + <TextBlock> + Update to version <Run Text="{Binding Version}" /> is now ready to be installed + </TextBlock> + </Label> + <Button Content="Update now" HorizontalAlignment="Right" Click="InstallButton_Click" /> + </StackPanel> + </DataTemplate> + <DataTemplate x:Key="ErrorView"> + <StackPanel> + <Label Content="An error has occured. Check logs" /> + <Button Content="Try Again" HorizontalAlignment="Right" Click="CheckButton_Click" /> + </StackPanel> + </DataTemplate> + </Window.Resources> + + <WindowChrome.WindowChrome> + <WindowChrome CaptionHeight="30" ResizeBorderThickness="4" CornerRadius="0" NonClientFrameEdges="None" GlassFrameThickness="0" /> + </WindowChrome.WindowChrome> + + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="30" /> + <RowDefinition /> + </Grid.RowDefinitions> + <controls:WindowHeader /> + <ContentPresenter Grid.Row="1" Margin="16" Content="{Binding}"> + <ContentPresenter.Style> + <Style TargetType="ContentPresenter"> + <Style.Triggers> + <DataTrigger Binding="{Binding Status}" Value="{x:Static models:UpdateStatus.Checking}"> + <Setter Property="ContentTemplate" Value="{StaticResource CheckingTemplate}" /> + </DataTrigger> + <DataTrigger Binding="{Binding Status}" Value="{x:Static models:UpdateStatus.NewUpdate}"> + <Setter Property="ContentTemplate" Value="{StaticResource NewUpdateTemplate}" /> + </DataTrigger> + <DataTrigger Binding="{Binding Status}" Value="{x:Static models:UpdateStatus.NoUpdate}"> + <Setter Property="ContentTemplate" Value="{StaticResource NoUpdateTemplate}" /> + </DataTrigger> + <DataTrigger Binding="{Binding Status}" Value="{x:Static models:UpdateStatus.Downloading}"> + <Setter Property="ContentTemplate" Value="{StaticResource DownloadingTemplate}" /> + </DataTrigger> + <DataTrigger Binding="{Binding Status}" Value="{x:Static models:UpdateStatus.Ready}"> + <Setter Property="ContentTemplate" Value="{StaticResource ReadyTemplate}" /> + </DataTrigger> + <DataTrigger Binding="{Binding Status}" Value="{x:Static models:UpdateStatus.Error}"> + <Setter Property="ContentTemplate" Value="{StaticResource ErrorView}" /> + </DataTrigger> + </Style.Triggers> + </Style> + </ContentPresenter.Style> + </ContentPresenter> + </Grid> +</Window> diff --git a/Luna/Windows/UpdateWindow.xaml.cs b/Luna/Windows/UpdateWindow.xaml.cs new file mode 100644 index 0000000..eb4f83b --- /dev/null +++ b/Luna/Windows/UpdateWindow.xaml.cs @@ -0,0 +1,39 @@ +using Luna.Utils; +using System.Windows; + +namespace Luna.Windows +{ + public partial class UpdateWindow : Window + { + public AutoUpdater AutoUpdater { get; private set; } + + public UpdateWindow(AutoUpdater autoUpdater) + { + InitializeComponent(); + + AutoUpdater = autoUpdater; + + DataContext = autoUpdater.Model; + + if (autoUpdater.Model.Status == Models.UpdateStatus.None) + { + autoUpdater.CheckForUpdates(); + } + } + + private void CheckButton_Click(object sender, RoutedEventArgs e) + { + AutoUpdater.CheckForUpdates(true); + } + + private void DownloadButton_Click(object sender, RoutedEventArgs e) + { + AutoUpdater.DownloadUpdate(); + } + + private void InstallButton_Click(object sender, RoutedEventArgs e) + { + AutoUpdater.InstallUpdate(); + } + } +} diff --git a/Luna/packages.config b/Luna/packages.config index cbcb7bc..485a706 100644 --- a/Luna/packages.config +++ b/Luna/packages.config @@ -1,4 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="TaskScheduler" version="2.8.18" targetFramework="net472" /> +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="Extended.Wpf.Toolkit" version="3.8.1" targetFramework="net472" /> + <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" /> + <package id="TaskScheduler" version="2.8.18" targetFramework="net472" /> </packages> \ No newline at end of file From 5089b402abaad48136a445f3f17ea11160aa442f Mon Sep 17 00:00:00 2001 From: Adrian Mateoaea <adrianmteo@gmail.com> Date: Fri, 20 Mar 2020 13:14:01 +0200 Subject: [PATCH 2/3] Automate setup script output generation - Automate auto updater - Add migration from old settings --- .extra/setup-script.iss | 36 ++++++-- Luna/App.config | 3 - Luna/App.xaml.cs | 7 +- Luna/Luna.csproj | 12 ++- Luna/Properties/Settings.Designer.cs | 12 --- Luna/Properties/Settings.settings | 3 - Luna/Utils/AutoFileSaver.cs | 5 ++ Luna/Utils/AutoUpdater.cs | 43 +++++++--- Luna/Utils/Handlers/TaskHandler.cs | 67 --------------- Luna/Utils/Handlers/TaskSchedulerHandler.cs | 95 +++++++++++++++++++++ Luna/Windows/SettingsWindow.xaml | 16 ++-- Luna/Windows/SettingsWindow.xaml.cs | 66 ++++++++++++-- Luna/Windows/UpdateWindow.xaml.cs | 6 +- 13 files changed, 246 insertions(+), 125 deletions(-) delete mode 100644 Luna/Utils/Handlers/TaskHandler.cs create mode 100644 Luna/Utils/Handlers/TaskSchedulerHandler.cs diff --git a/.extra/setup-script.iss b/.extra/setup-script.iss index e34e217..929adfc 100644 --- a/.extra/setup-script.iss +++ b/.extra/setup-script.iss @@ -1,11 +1,13 @@ ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! +#define MyAppSourceIcon "..\Luna\Resources\Icon.ico" +#define MyAppSourceDir "..\Luna\bin\Release" +#define MyAppExeName "Luna.exe" #define MyAppName "Luna" -#define MyAppVersion "1.1" +#define MyAppVersion GetStringFileInfo(MyAppSourceDir + "\" + MyAppExeName, "ProductVersion") #define MyAppPublisher "Adrian Mateoaea" #define MyAppURL "https://github.com/adrianmteo/Luna" -#define MyAppExeName "Luna.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. @@ -33,6 +35,7 @@ VersionInfoCompany={#MyAppPublisher} VersionInfoCopyright=Copyright © {#MyAppPublisher} 2020 VersionInfoProductVersion={#MyAppVersion} VersionInfoVersion={#MyAppVersion} +SetupIconFile={#MyAppSourceIcon} [Messages] SetupAppTitle={#MyAppName} Setup @@ -42,11 +45,11 @@ SetupWindowTitle={#MyAppName} Setup Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}" [Files] -Source: "..\Luna\bin\Release\Luna.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\Luna\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "{#MyAppSourceDir}\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#MyAppSourceDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] @@ -54,8 +57,29 @@ Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall; Check: LaunchChecked + +[Code] +function CmdLineParamExists(const Value: string): Boolean; +var + I: Integer; +begin + Result := False; + for I := 1 to ParamCount do + if CompareText(ParamStr(I), Value) = 0 then + begin + Result := True; + Exit; + end; +end; + +function LaunchChecked: Boolean; +begin + Result := not CmdLineParamExists('/NOSTART'); +end; [UninstallRun] Filename: "{app}\{#MyAppExeName}"; Parameters: "/clean" +[UninstallDelete] +Type: files; Name: "{app}\*.*" diff --git a/Luna/App.config b/Luna/App.config index 168b20e..f6b08d1 100644 --- a/Luna/App.config +++ b/Luna/App.config @@ -40,9 +40,6 @@ <setting name="DarkThemeMinute" serializeAs="String"> <value>0</value> </setting> - <setting name="UpdateSettings" serializeAs="String"> - <value>True</value> - </setting> </Luna.Properties.Settings> </userSettings> </configuration> \ No newline at end of file diff --git a/Luna/App.xaml.cs b/Luna/App.xaml.cs index 73c3fe5..7f68fae 100644 --- a/Luna/App.xaml.cs +++ b/Luna/App.xaml.cs @@ -36,13 +36,12 @@ public static void Main(string[] args) break; case "/update": - // TODO: wait then exit - AutoUpdater autoUpdater = new AutoUpdater(true); - autoUpdater.CheckForUpdates(); + AutoUpdater autoUpdater = new AutoUpdater(true, true); + autoUpdater.CheckForUpdates(true).Wait(); break; case "/clean": - TaskHandler.DeleteTasks(); + TaskSchedulerHandler.DeleteAllTasks(); break; default: diff --git a/Luna/Luna.csproj b/Luna/Luna.csproj index 66167d1..ed2bcad 100644 --- a/Luna/Luna.csproj +++ b/Luna/Luna.csproj @@ -119,7 +119,7 @@ <SubType>Designer</SubType> </Page> <Compile Include="Utils\Handlers\RegistryHandler.cs" /> - <Compile Include="Utils\Handlers\TaskHandler.cs" /> + <Compile Include="Utils\Handlers\TaskSchedulerHandler.cs" /> <Compile Include="Utils\Handlers\WallpaperHandler.cs" /> <Compile Include="App.xaml.cs"> <DependentUpon>App.xaml</DependentUpon> @@ -199,4 +199,14 @@ </Content> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <PropertyGroup> + <PostBuildEvent>IF $(ConfigurationName) == Release ( + "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "$(SolutionDir)\.extra\setup-script.iss" +)</PostBuildEvent> + </PropertyGroup> + <PropertyGroup> + <PreBuildEvent>IF $(ConfigurationName) == Release ( + RD /S /Q "$(TargetDir)" +)</PreBuildEvent> + </PropertyGroup> </Project> \ No newline at end of file diff --git a/Luna/Properties/Settings.Designer.cs b/Luna/Properties/Settings.Designer.cs index 6966276..698adb0 100644 --- a/Luna/Properties/Settings.Designer.cs +++ b/Luna/Properties/Settings.Designer.cs @@ -142,17 +142,5 @@ public ushort DarkThemeMinute { this["DarkThemeMinute"] = value; } } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool UpdateSettings { - get { - return ((bool)(this["UpdateSettings"])); - } - set { - this["UpdateSettings"] = value; - } - } } } diff --git a/Luna/Properties/Settings.settings b/Luna/Properties/Settings.settings index 7d36261..77a509c 100644 --- a/Luna/Properties/Settings.settings +++ b/Luna/Properties/Settings.settings @@ -32,8 +32,5 @@ <Setting Name="DarkThemeMinute" Type="System.UInt16" Scope="User"> <Value Profile="(Default)">0</Value> </Setting> - <Setting Name="UpdateSettings" Type="System.Boolean" Scope="User"> - <Value Profile="(Default)">True</Value> - </Setting> </Settings> </SettingsFile> \ No newline at end of file diff --git a/Luna/Utils/AutoFileSaver.cs b/Luna/Utils/AutoFileSaver.cs index 13b8a14..6c8e9b5 100644 --- a/Luna/Utils/AutoFileSaver.cs +++ b/Luna/Utils/AutoFileSaver.cs @@ -1,6 +1,7 @@ using Luna.Utils.Logger; using System; using System.ComponentModel; +using System.IO; using System.Xml.Serialization; namespace Luna.Utils @@ -13,6 +14,8 @@ namespace Luna.Utils public bool ReadOnly { get; private set; } + public bool FoundOnDisk { get; private set; } + private T _model; public T Model @@ -43,6 +46,8 @@ public AutoFileSaver(string path, bool readOnly = false) public void ReloadFromDisk() { + FoundOnDisk = File.Exists(Path); + try { Logger.Debug("Reading XML for '{0}' from file '{1}'", typeof(T).Name, Path); diff --git a/Luna/Utils/AutoUpdater.cs b/Luna/Utils/AutoUpdater.cs index f596c35..df8424e 100644 --- a/Luna/Utils/AutoUpdater.cs +++ b/Luna/Utils/AutoUpdater.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Net; using System.Reflection; +using System.Threading.Tasks; namespace Luna.Utils { @@ -27,7 +28,7 @@ public class Assets private readonly AutoFileSaver<UpdateModel> _autoSaver = new AutoFileSaver<UpdateModel>("update.xml"); - private readonly JsonDownloader jsonDownloader = new JsonDownloader(); + private readonly JsonDownloader _jsonDownloader = new JsonDownloader(); public UpdateModel Model { @@ -47,9 +48,12 @@ public Version LocalVersion public bool AutoUpdate { get; set; } - public AutoUpdater(bool autoUpdate = false) + public bool NoStart { get; set; } + + public AutoUpdater(bool autoUpdate = false, bool noStart = false) { AutoUpdate = autoUpdate; + NoStart = noStart; if (Model.Status == UpdateStatus.Checking || Model.Status == UpdateStatus.Downloading || Model.Status == UpdateStatus.Error) { @@ -57,15 +61,17 @@ public AutoUpdater(bool autoUpdate = false) } } - public async void CheckForUpdates(bool force = true) + public async Task CheckForUpdates(bool force = true) { if (Model.Status == UpdateStatus.Checking) { + Logger.Warning("Cannot check for new updates because the status says it's already checking for one"); return; } - if (!force && Model.LastCheckInMinutes < 15) + if (!force && Model.LastCheckInMinutes < 30) { + Logger.Warning("Cannot check for new updates because the last check was less than 30m"); return; } @@ -76,13 +82,13 @@ public async void CheckForUpdates(bool force = true) try { - GithubModel response = await jsonDownloader.GetObject<GithubModel>("https://api.github.com/repos/adrianmteo/Luna/releases/latest"); + GithubModel response = await _jsonDownloader.GetObject<GithubModel>("https://api.github.com/repos/adrianmteo/Luna/releases/latest"); Version newVersion = new Version(response.tag_name.Substring(1)); if (newVersion > LocalVersion) { - Logger.Debug("Found new update with version {0}", newVersion); + Logger.Info("Found new update with version {0}", newVersion); GithubModel.Assets asset = response.assets.First(e => e.name.ToLower().Contains("exe")); @@ -93,7 +99,7 @@ public async void CheckForUpdates(bool force = true) if (AutoUpdate) { - DownloadUpdate(); + await DownloadUpdate(); } } else @@ -111,10 +117,11 @@ public async void CheckForUpdates(bool force = true) } } - public async void DownloadUpdate() + public async Task DownloadUpdate() { if (Model.Status == UpdateStatus.Downloading) { + Logger.Warning("Cannot download update because the status says it's already downloading one"); return; } @@ -125,9 +132,9 @@ public async void DownloadUpdate() try { - jsonDownloader.Client.DownloadProgressChanged += Client_DownloadProgressChanged; + _jsonDownloader.Client.DownloadProgressChanged += Client_DownloadProgressChanged; - Model.DownloadPath = await jsonDownloader.GetTempFile(Model.DownloadUrl, Model.DownloadName); + Model.DownloadPath = await _jsonDownloader.GetTempFile(Model.DownloadUrl, Model.DownloadName); Model.Status = UpdateStatus.Ready; @@ -144,7 +151,9 @@ public async void DownloadUpdate() } finally { - jsonDownloader.Client.DownloadProgressChanged -= Client_DownloadProgressChanged; + Logger.Info("Download update finished"); + + _jsonDownloader.Client.DownloadProgressChanged -= Client_DownloadProgressChanged; } } @@ -159,12 +168,22 @@ public void InstallUpdate() { if (!File.Exists(Model.DownloadPath)) { + Logger.Warning("Update file was not found at '{0}'", Model.DownloadPath); return; } + Logger.Info("Staring update file at '{0}'", Model.DownloadPath); + try { - Process.Start(Model.DownloadPath, "/VERYSILENT"); + string arguments = "/VERYSILENT"; + + if (NoStart) + { + arguments += " /NOSTART"; + } + + Process.Start(Model.DownloadPath, arguments); Environment.Exit(0); } diff --git a/Luna/Utils/Handlers/TaskHandler.cs b/Luna/Utils/Handlers/TaskHandler.cs deleted file mode 100644 index 63525e7..0000000 --- a/Luna/Utils/Handlers/TaskHandler.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Microsoft.Win32.TaskScheduler; -using System; -using System.IO; -using System.Linq; - -namespace Luna.Utils.Handlers -{ - class TaskHandler - { - public static void DeleteTasks() - { - using (TaskService ts = new TaskService()) - { - var folder = ts.RootFolder.SubFolders.FirstOrDefault(e => e.Name == "Luna"); - - if (folder != null) - { - foreach (var task in folder.Tasks) - { - folder.DeleteTask(task.Name); - } - - ts.RootFolder.DeleteFolder(folder.Name, false); - } - } - } - - public static void CreateTasks(ushort lightTimeHour, ushort lightTimeMinute, ushort darkTimeHour, ushort darkTimeMinute) - { - DateTime now = DateTime.Now; - - DateTime lightTime = new DateTime(now.Year, now.Month, now.Day, lightTimeHour, lightTimeMinute, 0); - DateTime darkTime = new DateTime(now.Year, now.Month, now.Day, 12 + darkTimeHour, darkTimeMinute, 0); - - string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.FriendlyName); - - Console.WriteLine("Creating task events for {0} starting at {1} and ending at {2}", path, lightTime.ToString(), darkTime.ToString()); - - using (TaskService ts = new TaskService()) - { - var folder = ts.RootFolder.CreateFolder("Luna"); - - var lightModeTask = ts.NewTask(); - lightModeTask.Triggers.Add(new DailyTrigger { StartBoundary = lightTime, DaysInterval = 1 }); - lightModeTask.Actions.Add(new ExecAction(path, "/light")); - lightModeTask.Settings.DisallowStartIfOnBatteries = false; - lightModeTask.Settings.StartWhenAvailable = true; - - folder.RegisterTaskDefinition(@"Light theme", lightModeTask); - - var darkModeTask = ts.NewTask(); - darkModeTask.Triggers.Add(new DailyTrigger { StartBoundary = darkTime, DaysInterval = 1 }); - darkModeTask.Actions.Add(new ExecAction(path, "/dark")); - darkModeTask.Settings.DisallowStartIfOnBatteries = false; - darkModeTask.Settings.StartWhenAvailable = true; - - folder.RegisterTaskDefinition(@"Dark theme", darkModeTask); - } - } - - public static void UpdateTasks(ushort lightTimeHour, ushort lightTimeMinute, ushort darkTimeHour, ushort darkTimeMinute) - { - DeleteTasks(); - CreateTasks(lightTimeHour, lightTimeMinute, darkTimeHour, darkTimeMinute); - } - } -} diff --git a/Luna/Utils/Handlers/TaskSchedulerHandler.cs b/Luna/Utils/Handlers/TaskSchedulerHandler.cs new file mode 100644 index 0000000..a97cbf5 --- /dev/null +++ b/Luna/Utils/Handlers/TaskSchedulerHandler.cs @@ -0,0 +1,95 @@ +using Luna.Utils.Logger; +using Microsoft.Win32.TaskScheduler; +using System; +using System.IO; +using System.Linq; +using System.Reflection; + +namespace Luna.Utils.Handlers +{ + public class TaskSchedulerHandler + { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + + private static readonly TaskService Service = new TaskService(); + + private static readonly string RootFolderName = "Luna"; + + private static TaskFolder CreateRootFolder() + { + TaskFolder folder = Service.RootFolder.SubFolders.FirstOrDefault(e => e.Name == RootFolderName); + + if (folder == null) + { + Logger.Info("Creating task scheduler root folder"); + + return Service.RootFolder.CreateFolder(RootFolderName); + } + + return folder; + } + + private static Task CreateDailyTask(string name, TaskFolder folder, DateTime start, string path, string args, short days = 1) + { + Logger.Info("Creating task scheduler daily task '{0}' for app at '{1}' and with args '{2}'", name, path, args); + + Task foundTask = folder.Tasks.FirstOrDefault(e => e.Path == name); + + if (foundTask != null) + { + folder.DeleteTask(foundTask.Name); + } + + string cwd = Path.GetDirectoryName(path); + + TaskDefinition task = Service.NewTask(); + task.Triggers.Add(new DailyTrigger { StartBoundary = start, DaysInterval = days }); + task.Actions.Add(new ExecAction(path, args, cwd)); + task.Settings.DisallowStartIfOnBatteries = false; + task.Settings.StartWhenAvailable = true; + + return folder.RegisterTaskDefinition(name, task); + } + + public static void UpdateAllTasks(DateTime lightThemeTime, DateTime darkThemeTime) + { + string path = Assembly.GetExecutingAssembly().Location; + + DateTime now = DateTime.Now; + DateTime lightTime = new DateTime(now.Year, now.Month, now.Day, lightThemeTime.Hour, lightThemeTime.Minute, 0); + DateTime darkTime = new DateTime(now.Year, now.Month, now.Day, darkThemeTime.Hour, darkThemeTime.Minute, 0); + + try + { + TaskFolder folder = CreateRootFolder(); + + CreateDailyTask("Light theme", folder, lightTime, path, "/light"); + CreateDailyTask("Dark theme", folder, darkTime, path, "/dark"); + CreateDailyTask("Auto update", folder, lightTime, path, "/update", 7); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + + public static void DeleteAllTasks() + { + try + { + TaskFolder folder = CreateRootFolder(); + + foreach (Task task in folder.Tasks) + { + folder.DeleteTask(task.Name); + } + + Service.RootFolder.DeleteFolder(folder.Name, false); + } + catch (Exception ex) + { + Logger.Error(ex.Message); + } + } + } +} diff --git a/Luna/Windows/SettingsWindow.xaml b/Luna/Windows/SettingsWindow.xaml index 9960080..752dabd 100644 --- a/Luna/Windows/SettingsWindow.xaml +++ b/Luna/Windows/SettingsWindow.xaml @@ -70,11 +70,11 @@ </Grid.ColumnDefinitions> <StackPanel> <Label Content="Change to light theme at" /> - <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding LightThemeTime}" Format="ShortTime" /> + <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding LightThemeTime, UpdateSourceTrigger=LostFocus}" Format="ShortTime" /> </StackPanel> <StackPanel Grid.Column="2"> <Label Content="Change to dark theme at" /> - <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding DarkThemeTime}" Format="ShortTime" /> + <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding DarkThemeTime, UpdateSourceTrigger=LostFocus}" Format="ShortTime" /> </StackPanel> </Grid> <Label Content="Let the app change Windows appearance" /> @@ -86,13 +86,13 @@ <StackPanel Margin="0 16 0 0" Visibility="{Binding ChangeWallpaper, Converter={StaticResource BooleanToVisibilityConverter}}"> <Label> <TextBlock> - Light theme wallpaper (<Hyperlink Click="Hyperlink2_Click" Tag="LightWallpaperPath">Browse...</Hyperlink>) + Light theme wallpaper (<Hyperlink Click="BrowseWallpaperHyperlink_Click" Tag="LightWallpaperPath">Browse...</Hyperlink>) </TextBlock> </Label> <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightWallpaperPath}" /> <Label> <TextBlock> - Dark theme wallpaper (<Hyperlink Click="Hyperlink2_Click" Tag="DarkWallpaperPath">Browse...</Hyperlink>) + Dark theme wallpaper (<Hyperlink Click="BrowseWallpaperHyperlink_Click" Tag="DarkWallpaperPath">Browse...</Hyperlink>) </TextBlock> </Label> <TextBox IsReadOnly="True" Text="{Binding DarkWallpaperPath}" /> @@ -101,13 +101,13 @@ <StackPanel Visibility="{Binding ChangeType, Converter={StaticResource ObjectComparatorToVisbility}, ConverterParameter={x:Static models:SettingsChangeType.Theme}}"> <Label> <TextBlock> - Light .theme file (<Hyperlink Click="Hyperlink_Click" Tag="LightThemePath">Browse...</Hyperlink>) + Light .theme file (<Hyperlink Click="BrowseThemeHyperlink_Click" Tag="LightThemePath">Browse...</Hyperlink>) </TextBlock> </Label> <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightThemePath}" /> <Label> <TextBlock> - Dark .theme file (<Hyperlink Click="Hyperlink_Click" Tag="DarkThemePath">Browse...</Hyperlink>) + Dark .theme file (<Hyperlink Click="BrowseThemeHyperlink_Click" Tag="DarkThemePath">Browse...</Hyperlink>) </TextBlock> </Label> <TextBox IsReadOnly="True" Text="{Binding DarkThemePath}" /> @@ -118,8 +118,8 @@ <ColumnDefinition Width="8" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> - <Button Content="Test light theme" Click="Button_Click" /> - <Button Content="Test dark theme" Click="Button_Click_1" Grid.Column="2" /> + <Button Content="Test light theme" Click="TextLightThemeButton_Click" /> + <Button Content="Test dark theme" Click="TestDarkThemeButton_Click" Grid.Column="2" /> </Grid> </StackPanel> </StackPanel> diff --git a/Luna/Windows/SettingsWindow.xaml.cs b/Luna/Windows/SettingsWindow.xaml.cs index 5e3ee8d..0e6bfa9 100644 --- a/Luna/Windows/SettingsWindow.xaml.cs +++ b/Luna/Windows/SettingsWindow.xaml.cs @@ -1,8 +1,11 @@ using Luna.Models; +using Luna.Properties; using Luna.Utils; using Luna.Utils.Handlers; +using Luna.Utils.Logger; using Microsoft.Win32; using System; +using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Reflection; @@ -13,6 +16,8 @@ namespace Luna.Windows { public partial class SettingsWindow : Window { + private static readonly ILogger Logger = AppLogger.GetLoggerForCurrentClass(); + private readonly AutoFileSaver<SettingsModel> _autoFileSaver = new AutoFileSaver<SettingsModel>("settings.xml"); private readonly AutoUpdater _autoUpdater = new AutoUpdater(); @@ -21,10 +26,59 @@ public SettingsWindow() { InitializeComponent(); + MigrateSettingsModel(); + DataContext = _autoFileSaver.Model; Header.DataContext = _autoUpdater.Model; - _autoUpdater.CheckForUpdates(false); + _ = _autoUpdater.CheckForUpdates(false); + + _autoFileSaver.Model.PropertyChanged += Model_PropertyChanged; + } + + private void MigrateSettingsModel() + { + if (!_autoFileSaver.FoundOnDisk) + { + Logger.Warning("Running settings migration..."); + + Settings.Default.Upgrade(); + Settings.Default.Save(); + + Logger.Warning("Settings upgrade done"); + + _autoFileSaver.Model.Enabled = Settings.Default.Enabled; + _autoFileSaver.Model.ChangeSystemTheme = Settings.Default.ChangeSystemTheme; + _autoFileSaver.Model.ChangeAppTheme = Settings.Default.ChangeAppTheme; + _autoFileSaver.Model.ChangeWallpaper = Settings.Default.ChangeWallpaper; + _autoFileSaver.Model.LightWallpaperPath = Settings.Default.LightWallpaperPath; + _autoFileSaver.Model.DarkWallpaperPath = Settings.Default.DarkWallpaperPath; + _autoFileSaver.Model.ChangeType = SettingsChangeType.Custom; + + _autoFileSaver.Model.LightThemeTime = new DateTime(1, 1, 1, Settings.Default.LightThemeHour, Settings.Default.LightThemeMinute, 0); + _autoFileSaver.Model.DarkThemeTime = new DateTime(1, 1, 1, Settings.Default.DarkThemeHour + 12, Settings.Default.DarkThemeMinute, 0); + + Logger.Warning("Settings migration done"); + } + } + + private void Model_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + SettingsModel model = (SettingsModel)sender; + + List<string> properties = new List<string>() { "Enabled", "LightThemeTime", "DarkThemeTime" }; + + if (properties.Contains(e.PropertyName)) + { + if (!model.Enabled) + { + TaskSchedulerHandler.DeleteAllTasks(); + } + else + { + TaskSchedulerHandler.UpdateAllTasks(model.LightThemeTime, model.DarkThemeTime); + } + } } private void WindowHeader_OnClickUpdate(object sender, RoutedEventArgs e) @@ -53,7 +107,7 @@ private void Window_Closing(object sender, CancelEventArgs e) switch (_autoUpdater.Model.Status) { case UpdateStatus.NewUpdate: - _autoUpdater.DownloadUpdate(); + _ = _autoUpdater.DownloadUpdate(); break; case UpdateStatus.Ready: @@ -68,7 +122,7 @@ private void Window_Closing(object sender, CancelEventArgs e) } } - private void Hyperlink_Click(object sender, RoutedEventArgs e) + private void BrowseThemeHyperlink_Click(object sender, RoutedEventArgs e) { Hyperlink hyperlink = (Hyperlink)sender; @@ -88,7 +142,7 @@ private void Hyperlink_Click(object sender, RoutedEventArgs e) } } - private void Hyperlink2_Click(object sender, RoutedEventArgs e) + private void BrowseWallpaperHyperlink_Click(object sender, RoutedEventArgs e) { Hyperlink hyperlink = (Hyperlink)sender; @@ -107,13 +161,13 @@ private void Hyperlink2_Click(object sender, RoutedEventArgs e) } } - private void Button_Click(object sender, RoutedEventArgs e) + private void TextLightThemeButton_Click(object sender, RoutedEventArgs e) { AppearanceHandler handler = new AppearanceHandler(_autoFileSaver.Model); handler.SwitchToLightTheme(); } - private void Button_Click_1(object sender, RoutedEventArgs e) + private void TestDarkThemeButton_Click(object sender, RoutedEventArgs e) { AppearanceHandler handler = new AppearanceHandler(_autoFileSaver.Model); handler.SwitchToDarkTheme(); diff --git a/Luna/Windows/UpdateWindow.xaml.cs b/Luna/Windows/UpdateWindow.xaml.cs index eb4f83b..48a50de 100644 --- a/Luna/Windows/UpdateWindow.xaml.cs +++ b/Luna/Windows/UpdateWindow.xaml.cs @@ -17,18 +17,18 @@ public UpdateWindow(AutoUpdater autoUpdater) if (autoUpdater.Model.Status == Models.UpdateStatus.None) { - autoUpdater.CheckForUpdates(); + _ = autoUpdater.CheckForUpdates(); } } private void CheckButton_Click(object sender, RoutedEventArgs e) { - AutoUpdater.CheckForUpdates(true); + _ = AutoUpdater.CheckForUpdates(true); } private void DownloadButton_Click(object sender, RoutedEventArgs e) { - AutoUpdater.DownloadUpdate(); + _ = AutoUpdater.DownloadUpdate(); } private void InstallButton_Click(object sender, RoutedEventArgs e) From 646300898f5f1f5b1e156b1f6f236cd40df56910 Mon Sep 17 00:00:00 2001 From: Adrian Mateoaea <adrianmteo@gmail.com> Date: Fri, 20 Mar 2020 14:17:33 +0200 Subject: [PATCH 3/3] Update readme Add light/dark icons --- .repo/recording.gif | Bin 275414 -> 0 bytes .repo/screenshot.png | Bin 24443 -> 0 bytes .repo/screenshot1.png | Bin 0 -> 31778 bytes .repo/screenshot2.png | Bin 0 -> 30456 bytes .repo/theme.png | Bin 0 -> 70450 bytes Luna/Windows/SettingsWindow.xaml | 100 ++++++++++++++++++++-------- README.md | 111 ++++++++++++++++++------------- 7 files changed, 138 insertions(+), 73 deletions(-) delete mode 100644 .repo/recording.gif delete mode 100644 .repo/screenshot.png create mode 100644 .repo/screenshot1.png create mode 100644 .repo/screenshot2.png create mode 100644 .repo/theme.png diff --git a/.repo/recording.gif b/.repo/recording.gif deleted file mode 100644 index ddff6476a0da460013a2bd1fca9f8cee3d10f5cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275414 zcmeFaXH=BymMvTXDv^qup~z7vB#4r#P%<haAS!5qN(Ku=k_bi4S;-(dXAqEB<YXWz zh=C+X1`!Do>O=QFsr&S~_k6c+-|l^U$8f+e2S1)?J#)>u=3E+D>hh<}qJdk$9gq}2 zLK|?=4nP6`m5o6t36O{)_=XP|7)GA+8WKx{u?xa^PE%6SQfgUKu?kYL@zQwZAUPyx zS-I($gz4#+={e5Ob7L5oco>*D7&tW<nHU*a7#LZZnOInu8R?iAQOw65D;qP%8D^d{ zEKIB{EHo@Ej4a0=D+4Pt3o9!t8xuPlGd(*a13NPfJDUhQI~zNf2s_tFPDUzDMlMb! z2&bSX7o#v2n-bUYhq;VmK=9Dh@-P8;xW#!H$$5Ercm?G6Sit;rZ~<DR0Kb61DIGyt zgdhVzkb_0=LA;QlppdYru&|J@w1TkaEfIBNQFgc}KT1@?TvX$>XndWR0K3?aPh3px znwV3t7$HTR7AQ`K5a*y3SHE>a{KSbX))G9T5)u-UXbJQ=!;>e)Po6v}&BHA%DIzT` zErX(!k&%&=m6cPyd`jc8yqwf&QNh!vPoLptR1jlTa0yk2DpEZDZrUj+D=F*WQNd`a z+_{gH6jjAyRZXl_!?Vv`wK*ridhXmgwG*6bS{mw_=hZJ>R=;Mcp{Am#q@*P#tb6tL z1!c(##>V<q&PICrMpyKVu3o#MbLNV<#TCC8V?)hr_U^dLs<-q`-8Q^*`;NtJhkJL- zuHJbNbSF5)(#6Zt&ENXcN$X2W)(&@V9V{HY0`K1Uc5=Rd@9r%Z8%<YlU$=lLcN={V zhf5xJ)jgbUdxWJtwACO4h5E#$`T7%l!(x0RlKt-8_VaQGib@EI%L;u`9TpWCmYyG0 z(Gni?AUwoB(%(KRG%7l!C_1YuCLuK@=UGg7OKe8oqtu4PjFO}fx8$^pl$6?(lG@aq zhSZu@X=P1mRo!U~uhWxa(+m4D(h@RLqcV$LXEyd{J@U><h{(z<%8n1nDJjj%%girt z%`fjQD6cDMXf4XiC@L!}$r~(b>?^GxRy4L&Wj(4Y%&4j=t1gVMuC1$XY<XH)SNp8> zS#9gH`m$%w>YJ*Ho9oM4sxn$?Yuj79-cC%fuYWz*KRP@*I{wE)qPU=DaQQ4&Pwk`x z8Vm#g06cqS<X`{@Ab$Ki;Kwxy`gKWuU6Oz0O9CSSpl}Y&ii|ct7`>=TZ$)ND5Ry+j zRkJdyD~v_j=DizjH=I%E0)a)VDkn5f_;L{$YgO(*0{T{e>RYGW^N(ciExl*moIjtA z@q4rNOut|#?OYg_si<_Jb{^((i=xN|-)QlL+#4T~89y79m|pd|!)CNHo_*(4EER<T zN~ijYPJbGO>Z*Q&+wz2La>Ck;mWOjkjBLgmxQqZD2U(FSn^!qOd^+j6&#LAI5~T;6 z?F_3wzsfip#&tfq5Yvp;DZcTd;py_&>5Du5=NoHR-_?`)*HRnn)+dSfe&cCp>c7nP z#?f#o!=7$_9?aI6?0dhrwLD(UUaow-ac6zXu$sir)zY;0^-<5M^~jdy{T-{bu|XGG zTOKAXtuIfK-tF}@h!Oy?1Q1gXm*s�m}Bi4<VHMW#)X3sCbQRuP=**CL3j7O`L`f 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�YjZdAj@>I#%Lmx(bTk-I^XbA<sCw1x&A@j{`d9K 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%0A1i~Cw?|Fpw{GzZ7mLP^ zNE}4qvy?5}LSJZs5@cZ9JTNx{2$qoeJ~H=WB%Y>}K}iLKFu-aI#k>2{$o9rheo;L8 z47C7ce3l8*_VEAGM3Dg2V9VQaNTfOj0CUy!IDTK)VZR@6+cX<vqkHgd=*U}sn515X z;5qISokQ8ueaBa;z5u%jKKZl<9g(z2uZWx7U|*JM<gd7@HF2<#s-`CQ@wyhmG;P0d zOB)aoe5k{&T6jFtrrI27x@<z;>qHn)-Zd%aM>R<V;=X=|#Gd7A4~W{CP7bW^Y3eaw zrySoqK(%v7`2B{2Cps2PWkeV_Yp(a1^DXB`^b_4)fB$P5Zh7D@Bb;Sy{2osgEwlSx zP0iHy34WlJaveo(?~XX3E6_mlR#Pa#^CiYLEth#yH##mx>|)6p4`KHO^%gWbNGqQs zGkg_Hlg1ho@ps95LKP2oO2@}jH=q3BY{MDcPfYS3#d+IEhca%&j%F-8<O?3_lQ+*K z>H0v-=o*sh-=tLK@_ljLHAIcArL-VhnZteW(0L2jqoJn#a2@Hv+A?(++p;WhKeLa& z#QTEGII!lCrN^tbz!xcIDp00Bn874F@%q7`vYC8fxI7bVi<8hkLNq`$@;WqC0u1g) zc6<EPRojd528BYqiE<~F>fa@ARI%^)IHk9ZTvI#!@V_4LNme7i;y(+9Y^yZ$AC3eV z?$a?QS-v@U#zu@NU7)I7Del^MJ23iZ(Ja1Nf6(el_~oC)i?-E<(+{6Sw*M?yN~<>h zXf+!B;^&o(k?K9NCpp81)=!oKyfsv`^%zThwG3ldLl+qyOEg?9htg{p^48-i9;+3i zk88~JhQ}{OuU;kb)>>LvKh3(lTB%@HYwbGxG_QU2ntFPzZJ_nD%P&@|^dHySpB{d8 zWoxyX%3J4<WIa(KzE)#tSLc*JJW*x1R_l;n=Ui<)S?94<=k~bH<<9Wrjp(&{Z{B*h zLF=hz?gn3wUA@Qj@YL=0wd<kj^`0NCr`unw-H3Wzf9Tinbl29}O(t)HH`->VSA4xO z*{;D?<k8H4;d&E0y}?i3=K1X`3?uh(LxA2R_m_B^f@?GH`Qn$bFm+SFpKY#|(47)@ zu6M`1b5ymMZe^Hi6b;}Tk{zDfuMKOQ7r)bgZ4|{yr-;twi;((_#w;mumSxB~%>w@V zhsFQh)GY;s0tDD;E?>_9kW789h9#K~Bq|w)(aQlMMWV{GM}3Zw^k22m|2hFFSZJz5 zsUJ2=fMlJHDa`r~7yTQo-<z*3HsHzCPK=cPW9sJCLI(v%M4aq$bB$wyZppt)-L6Ud z$d|nx*JKCEz5X$E=TROAK~{n)9hvbdx4EY7gGN^e`gq#w&Lr<xCSwnt<(j&`3O-8{ zR8sTw?qP+}Thh3u?lj^<tPoMHEtE_HQCL|wObxj^56!O?iQ)beo#3Y^BW!0bvTpsz z5xsDDgaXtd4t86XvgCKU(Wh=}4nJ6YC$}4Rb_o0SQ25rmZ(*A=hjA!w{FaWTaXC*$ zrfY9NvBV3z&BPamuoG=x-ts%;076Q}Oi#fsPZmRjM^FYQf;~kBq(`~BSKHGi6Yv<( zfJFjY!qS^Z-AY@)ihs9rnXQ~9Mm-g1mW?+zms_YzNz@Jyl}rNF9jueDVaDT-Q)M-e zR8-{{3_a2Q<Y&sbhfeP<5LR5_IN2q2I5!YmNfR_yk;f5DaZ7Q)V3|e|UGWX&Q9Rg| zC6~=tyY3gzASA<#i!@Ytb?W@c*eHyD%y;jeTiUn03#{%+Gm&6JA-m!v?)1ZK^!CqD zm^c>z)jE&&*`L5mh@aS>nO8Ssle_h96ecKfX9O}8<OJr`woGj~JLdj<w%5dd6?{Te zUI_To*cTpOf9=oqtzevL1GA^0-`u7iCt2p*i$kxz%eaw;qsF2}t(8NrBMZww-rV4$ zwKp1^)W3IJlN9XjMArn@-rL47q0a56Gd;IBQ$-E8>$V<@!W`G?8x!|TbbN1r`29h5 zuizKG0a081ZGMwH%~=hkWSZmhP}iw37#@@|9yO7y2fzTzV8ir5xoq~g9zkcNFlP-} zm7k+gwD@m5QvV!bRQ4^w#%#X`iNG5!0GUtFDz8^3&%oRu6#DDWY5?h@s_P1XHIR*` z7PSZElksicgB&#b(`Bs7?h94hg;Do9^9kqiueS$x!Zv2(MM6Fk6XoBuJQPD#w<UgB z8f>F?8($&os(D8sj)zj>843S~y*KfPy5IZ9KeI54!C14KVeF+*LJ>1#-zOw#8%x=X zvXz#ZAzNfDl_d-bNtsI8YYYh~DoLe6LZL<^3G@A^u5)$HeV_Zjf9G81+~@r6{)Krw zKJR(Ho~y<tbuPy7aoCkpO9+jc4%UYqs$}rA5^7F`U+${1=LT-q68HEfL)5N4@*?va zlX55#&;&YV$8F>G&g$|Z!;yjeBTwo);$ERWryg#x-uLPGrloq*1IKpEe;KZ*nV%WG z^kM!h|ISju?BtUjg1PCT8o~VR=MNwWiD3f>J1$g#Pe(ejp^KWi!mIcUY#JM`Wmk{( z<}>Bm*uuum^<sPY@i<Hg($<bAna@wqb}B)yYv##b<sT%bm0$ww8Wf)K6HVGm#A2Eo zRA%@|Bupt*Dao!;O(E0Q$fVT0i)~fGh9I2xs;rglH(vCkiQ}7({AbAdUvkFMcE3Z; zGW)|q&OdzQ>T7u4At!F@H^}Ll`|kodjZ)tQJoho)fVFBJ^CgE1;Qs^2`7>wS5kzF6 zG>Od*QCenlB?+J}g_S6m--u6APSh^lq?gb^MlQb$mb<=A&y_%dTlA!ZGE@C(6gfMb zx@Gl7EiT4bj*tK>sSQ6tk;8acS}j8Y8RW&a9RrzATs`j~4F8d})C^;VK7x=~o(gD| z;p$2Hga)i6be54uE}JC!9kkVTe}mFBV>{X?M*`c9fZf+xM2Q<I)Zzp8IS{lSM%_uY z#IUxEd|l3;Q0UR6PM2>0)DxiM_~myb5Y{NQBYM>U1wp7);2|G23Le}hYt_ySSxR%B z>7uS_?}DGY<N$vSQAl9Ate&V=7s{-6@Ss{COnOP+fC<h|<kgCTj?{~2KDf_JCo$32 zc$H(6p8Syv07J#SKRZ-<_sk^$5*WKy*K}=3y3GFP?N<@3=ep%HVjhj8l|bJa3(WF1 z5|5<4F_TBCjm>VPYM4nk5v-LW9D`Usi3%ddqplXv#hFbY5H}Q-BgW(Ds&M1U^Y+AI zi6aVLv_5ymfaZ;oZGM>A1P5h;4*j9lfsrK^2wHD|RSz?qsp?U@Dyz#eBFtTp*l9Ld zuc@&K|L9fM*9;4)>yl{8Sl>CS;;yrBp0aCZX2bI>NrD%WvWS4w4=-sxe-1*<aJWyG zp?KG_t$Ip)P;ufn@F5tEBIjV*#EmDfGfuH7#RR4BWu4>GprEH4dmno+T}1e*pHSxZ zRh`ngH(j}Up73iUyYJ0=oz8qc4}r~8x-hQft=6CRy|xTA-Rsd<*DS8paPlT{Qs(Q0 zM&H9$h>8U^tsW~CQMtc-Ghw`5<+=Fe-mT9fqxbtwh;W)ncba)m=dvF>#KQSNJn+E) zC~Ff#4(GvTNAbKknw6S18R^MVlfI6#RI02`2<OBjzTl7uHJ-%6gOMOw^syrgefvJ% z)3n!mkJgdd6n~V@YegitTyi{iOkF?HUQDoU61%edAjX=`0CFy8>1jXM71j)q`a-#6 zq(l`9<CfY#BN-R2whmY;4ZLtTpU`!~B~7=lRQ3YJvYsEZSu;ral_8-)`q}v5*tQcY zpPTQP&x~i#F=aS}eKSSjBP-ddOl?t1b7!-*kj}6lVM06Eg5s9Z8B(Tc+|uH*=VLY- zb5h&ZzSS-NV@{>hN!@iVt)5pu9^s^&TpVD3*ZbMWqyG)$oXG1)D>tmLzZdL1k>A}` zZgi>T-uC|~<ow*y*1msc;-3jQi<a-BrU%a){|-6NWlG_0CEQV%<w`@l6M-~hy6JnI zEW$v@Xv)jnbWarSs~&p;!VLpyYn2|c<0&7DV1>kz5&IgsngbD(F?l#lpT+?08}f9v zYvH~Jg}zlS{rtfH;uQW{PT}VV{<rOxz7SI+2MQW1h(30vEDkSm@jV<MEJ@??NHWaa z2N*ddPTUOUqgI-#mQL}rSu?%!wcX)aemv6Ddw@$Wo7SeAkln1}0q!Kd!_?j-ClTO{ z^69{5tM!@ajYYjDk0GKewpwmEs)IG~Q~7j~{3*xpVB+hOLDW2Pv)(sird*vN%C;%_ zp`w>xu4uB+s8!k}NO`noDGAeAdC(fbpDMHV_Xv_WaNi@ygBUuKT|tn+>sD%J;sJR- zBncwrS4p-}@M{zVS6KzH)`V2WS7IfqG;degc!V{+lTr*V^UkV<t;m!_wlVoW76?!Z ztd(PNM@z+5h%nLM`743hST4QYqfM+J{;b}nb5;(tB6^8Mha1p<#<Qr~tcj5#nM%;K zkcX(<W>Lb};i<-^D~ngu!^xvp_2?GR#<-G;xLg{=DNn8O4bE41O3(k<P4F2OfF=Xf zR1wXfNg}MrfTn6|^xncy@F=524_wM=!dx-)YC8;8--2`0q+J$9cM5oSrM@hd>quW8 z8u4J>!}<I@1P#kPh!0&tM=WxjGH8#t4}&5R9xvJ-L-{9kQCIieINxosva4E{pw!X+ zY~4D+jf@uY>Nbjq!ozzUzb&QCJ0BZvxRD`+lrVqVefVBs%)?pMUa}%aiA(B(-6Q(> z=h!Mwy_w_h;+oDAx%PUNW$e>B(2d5c{7)|577??1fu5*P;<uYiAvp~_`;-_T2cinh zS!hJ%P5b2tuxU#?U+I8BK9trx+jqFci83UOnY0w08+ErtNi}w0wo#Lo-bAa4MRLt& zFNc5KI=;N=<Shv-NjI2Fw<0i*1#gSn)ToJ!T6Iw?97V|R1nIVPsEZZ}f-V<=iV`@x zkDlwUHR3SDnLCzgU+_Y#>d5OUVZn9%@c|o?D;E&qZHWw3FSXi@<bea4kWvpp^Pq%g z_y`lRroLWbuqHFMV}qGA@JM<m;#yh>%Gy%Rp3Bx-qL3g;()Qjmt$|poHXyc>bi#gs zTVq5zm<FZ$+2@Btmpd37*6}%^aABtv4=K7)aN&gQJCoZ(Q4&c%9(bEoA2V5LWdtqz z76<Q-S-EXL9{8QEX1L@If=;udWNFqCZGW|OET-!}^MQZ&&wk+lYfhn6!8$MHJEw59 zKy~AJ>5Lu*)*KIPL$Was1Iw^p5iHkO^{jQi17C#ug&>%eOdW5q1PTXuZal$BTiitE zWWv>*K0?drl4>`Mv8Y<E5cD#j=J@5$2mv{e5LgD7eJ2EvN_JFss+5qF?#5<LA4vwM z<ZxU&6P_Z4)Cukhlz82gA?98N*gq^u&D3z$B;ZL*(jqy7d}7}k4Qm-mB9bn@YnyYy z!gN<F_I3QhXURq$CH<8TD_|j{BY_PH<WufzIJw?g@}6<f(1^8_zSf7t@RE|NvLdR1 zOyyMsLjTcFvf+ji*|f?_HCrl|3-mFIy#U1(zfE^FiiX(d|CsJ_Ju8!EpZ#OHD^lt{ zCS<qKy{l1ynohx|>~1`}IQEdU_0i3Hagpzzimd&tGXLfC_Wm2`h#KWREdfIv$4oxA zU5^UwMIS6EdfB*pyzfcSI>8Rf1bY_Fvw9<5{8~!RXSc2mPj2kpi#6)&d@<4qmt4tw za$QR`q;H9BzGz49`6l&ehUXKd2Ub3C(faUI_Br}aN_o<XglZr7QZz*lu2;`BW(O_W zhE$Nsn9kaay-K{$w8sY7(X7O|Xp7tTH2q0}&h4^02|8Rah?P_|e;Go-alk}18Wr>e zE`<Q<;i|W)8HrNYnwt}(pwwjH9YRx=`ym)$9Jy?tS6`#S*=mVK{EJ#fqKyAXxvgOy z^9@{N2isRjV{nq3BwCH+2*>V`C1@O(pFKgBnCzTzQ3-5=lry!idJYx^EL{9S=1<_V zuXhK$SS+XD)dLYE3*HT7zOWB?cjoNlhgEqsP4B=aJ0i<c!Wk>#oxPj#R=b#!I&<1W zdH|;&Rpo8>${xyKLxnF~@2a-wo!1Qwd+aTugwaOTQZALuOKq>7Ez{X@rKmNLbzaA8 zX6)L0qh44{8nmJsJu@@&zVd4<spg8X1e}5pYS7b#NxS#>S9~&`>_B1T8Mp6vDFLAt zh(@VV5x=zYahY}W(T{iaw-_{Cd|Om&uVcL9JPIb@?*a(Ypzj2=DtqUJ2PWz_QXV>~ z-dj`$ZPR?%xmCG$xsaX`*p7#w^2un~6f0h*|FI=mz+zOVtR?u~UqnFzfe~}W-i~8v z*>i@9u&*qc&`X<lAKRMQg9v0rZ;BmKj_s#_ZIlb*%dboL@4JM*1Esns9!fY5>tipy z8SJFobA?;tAc-Ngla7w^OKj4V5?nO3vJ$Kgsjj87Qi$f0fR$m_G>d34JS>rco=#qa zeuWAe$h6ZuHIU^*K_+;tG}Fn+(SZ1990^K?B-+#H5jGydG{!;Ku;b^p+HX2+&><P* zoQqG~VZH*NM{I1_DiL@Q&poco2*2a*KS0xR3F~|+DH|&rq$Ka`&=`0EyBdAUGRvj4 z<3y@=Ft$8nMW#Z<;oYeUmHBE`!KVtua)NxF_Ex>~J9Aht6YTHYxr%DwiNq!><so~m zu&@%J+cG(89YW3&&8q>*M$++z0H<Myn4%|pP2M>c{&|7~Qlj*<P8%&TtfE=CBng<5 z^FOofYzIF0+%ZT!T*@)|T~KviAzB{x@nOh^YyJ0E$-`DklRsRCa!%#l%=q$1yxz%> z!Qp*Do8_Wp6|5*rrd1}x#U!2wW4TIItZ~b^S<CP<cyX(p>G2Aa8GtVAoYh_E_3Hx` zg2{>Tduo>NGJtvMF%EzWd9GDVxU%wbmHLu30c}t^HLw^*eDUz;az*Fm7MNZgdah=R z&mwtiE{^_8Z&QiUV`yzA?D?A8_E8p_C)zU5Sr|brN~a*_V@z+nh}h-60wjxPxwH1c zW&5z<FK^tpybHQw?^p>KAKXKEA3KD5dIsBW^Yzg#i?2#RLw~Am4h0?l!MdctrJ!u( z<6TYLW!}!_-seJYEe~IoO;BQghKx^xNpV#q4ccj^&<@g-a<?)7y=s~c65-^^05HQR zmcjH$2MC`#H&oU`DpfmX%XC?|1GbpaM;Tv_wz@LWdd;`yAqqIg$^Ht9xl?p{rNe(p zo%!FxNZ(n7h^8`_tlkj?JIL79{~>iI_(q+LC)+udN*-%&)Lb>5LQN}`uCTkU>ph<8 z)mAEdsrk14p7BF8%n7+Wc1_Fj$3gMsgu;{NCZnt4>EUT7l!ol?torXR;lBoy{y~?p z>@a;ne7QGt@0<A2<1DUihZgSYMU-Q?MsQj}kajrYoJq0{r_YFl(B>Dy*2e?ebGQmU z4!|ZXU8gG(E~Nh&_k_<B!zDAE)0*8hm5{<4xll+#pj+f~7t*hr)3Mm)Z_=^<^5(Q6 zu=qGf375-R=ojmAAEI;v|7yK&v%7>_J?RA1_^3zY;g#jqO>&y)28jx5F5=5vLpczC zdrFo8RVt{SO-a&p){#NVe*`5=k19~Y3~a&Ek0=g~cgm9@PiY+ccCWQc=)AVvdH*T3 zFj_xBE0F4~ITX7a%@1IsL>-37i7Kn8rK!uVdKFi!tdc8}(Akw&mi@qh3A7=(Ac(P3 z0~B_+)CFw2i;)JQ3pXNY8(T%td52W(A6?~ta#hZ0|4aIw!BSlFl~}1A``_wp%T=4w z<FrxiLjzh|S{I+oF@g*hT>Gey?SIcrq?{wX+Hrkts>EG5XGp>7R2u1c-1g#;)@IVR z56cu!oI@C}8YDjnKUZTzr%x=E_3C{7Fef-Qf$sqvYJ?}E6w7!=6?e*w+xgK;3}m5` zug9-@(aFR+dM|vQ$T<%X2OVgUvE!srpyZ=xnOrA$j81052xXyet(q%NM<yv*77&th z!$=x~524BH-K3P3brwF-P~KGQAc<!2NOMTO>m5WHZmK)49!JkX-kOz2TCe7R@|pMC z#3zV?m6uQ2rq;q;7LhfAaO1RXac5%g%qoG$u3iG`;vvb_^b0+6v+gGS2QF#j?`N96 zA2-KPJL(Q0Ozw-{M-XuU48e6)J6f&U8__q8bgD<|u~6!$vlGtb;jc>kdPH>p=IK7f z@Pz9Sw>{-rpI>nAo)0Z|E153{PVHRty*1dq3A)qH%!$IKhmAi)yKeb1Hc(MB{Id#i zrwK-8T&vlWmeBl)H<aLA-}TP+AEQG2yF8_i*~fdo8BycD>)7pIAaf4&H<ginQpY7p z@?|C3_|8^bF+cIE3cFIZlZM-jrGt|V@r<%}NGR?03f}HYUnRJrJrO#qPfCp$u-_{g z$Pj^tBOs<@?JIwHe7?a<IbbJ11e|_9$a+(L9AqW*crkT{P-FyH+#|E}M{&>Z3hiGM z_q3{!c7CfqZ!ca&)>g6_bb4^YCR=S&RjtmW(*4p*xk%1;lm6<Ge)!{(4GpP}XI9`J zp9{QmbV;nyndj9ZsJeZQpJ_deT_ZPd=n;2#O3|H<(<87}UJdKMp!tVZaC*;fB$Jv} zU8(YI($e1>i}PtZd{&YW9#zkb^pnzY^HR=%hIWaVH<ernK-qZ2LO-Br_5G2-XQMY1 zJofJM($i<avHcIDn3(8Hrx?yNd}F;dYiY<5SeR&*5Okw~V4VTj6Z%l!#i>TYcXjkN zWRm;5I?YBD0i}O3F`;~6omHl>RZs+42V@7Kl9eC5es}+&ePYMeNa9%s-P$B<m85&= zLMqKrhDg($qn@$+^9>RbJ!)xKsYV<?SkCW|VSuuT7ZO^;!tFilb1(@AVaKNFt#;}a zHgV*08_0&w0-?f6a&;%xskK^fG&q@qvp3$QWI)#DO_F+p{8Y-I42<tqe^Y27*=o@; z>>~$pJc~5wACScwTuUe;omh+avSp)LbJ0+m*I3Zn;H~-VALnJurw012?LYZAab*2T z9y&^;wqCe%Yw-G$`!?yaD-*UWP}br0Dg>9Vl^4K^H%DEx#vZAC7<F{-6>yjOOztNK zPaE+in$<P(_yHMAo6*SVg$^6NB^Pcf5a>$X+fI+w^+b=HscS*wo}LRzxke2>g|ezg z!;KV9+Yirx>-F%nSD~I-w;h=zu*e)*@m^BV?K<q!F1j%AeD_-W@hTh(j3IEg7pC(L zZ70v$^_=Bttrv<11hcQj8xeHQj*2A*%|13GYUpG~)z4Bpo9E=x_<4H!%qH5Pe04xb zvl!0n&{PG+A7BLy8BI~;@CJyWbMeRK6(1T%%&(<Z&`z}pm;nqyzeh(cj<^wNHb42b z9-(Pc{jkfy5%b9$QO%(^;*>asLIk1>yWIjq<S?HbGej*VpdG}|5cA8CNu(GvmwNL# zVn-sdzG8q_LfA`!3L)%f$&R4D#b|*uX`d0QkE|%{yt}m#c0YewKU3Ymw9LPa>i%o1 z0;LfoyCasVlyhE^SmM>(E;(8*Tv#r^>ZGu&*K}u-{EDNIujOD%GP_WARXP41jvqUP zF<P~7n}wr{l&$goD8ru2pw=Y_9eJf}+mwPWOewbvKHEYq*sfc)EiXdMFrX0mBBg@7 z=e-W8I1ZXx!H$wt&^o?<K5v+uJo7Y=4STRYu<Ve+yYiEVwpG0?zs;bZw6ohUf254C z1ah(x$>5hc^zZXNsuZ0m04o}x9akU9)Rv}F6<2n*<|>5&A#RGEgVP>|JvBofO6m^p zq2_psDTdazS<44k>aG|WCE0H`eSGoR=8>@Eel_{`mvPK%Of(@UuKyxzO~={G5m`7c zguud5$o$fv8c^h9QEtv1&gIp^#5+MdMm3gsqgx>@oD9wbfLD!)*@t|gId#%)xgkg5 zRlMikrAW1F&wOsF95BN+=+UU0B;C&AZWaO$a8N)bKxuoj(dpiiJ1U<W#G4cZ8%ixy zH(Z~vu+3&0bQnE<mT_No;<`9&1WjY2)SrEIy+7-<mwR{PqRCImBqie11Ms9;ab&v+ zZ4yEw_8P!;h6?O=CLxrTEQQU?HgHM%r{lN~43`5HivF;Ri%2PM)+ZA<ce&;w2RP-; zy49>2;WYQ&mHDHCdM`<(Ltn2nBT}jjD{}AQxb+3)oJw5n>!QG>TEx;>e&eDYv*XQL zHM1Yvj6cjybl5JPo9tY-WA0OTK+W7#Pt1q8&%H@Y=l{3O4^@BY1&5caHJ^$2p=B1S zATy*>s_Mm^@N{tK9QmmGk(h4;)}5yAF4mo`h5*;i%}CiWokZX&4sfqlN5y$Jk<a!C zDTktA1+1h3&u}c}GU(=Eaq|-s3x9aGekpbT-`&4|c{RmjZM6R^zV~ONDB;$2Lf@V* zHwp0hl9l(%1?`@}R*##~7wn$t8ZYcXyJwkDJX*Ibq09pp`9w-_CE?0L8ArB865v=K zNl|evge2s++O)VyIbq8-9@a8X*p@GPre%<_eOojSrF)#j1Y$NP4#ws%h!yDFzI7D= z;(<n$0Uxiclgy!)Nl!}(?bqKYE$Q5iMbXrR-)_^9lWvRhYK0H`7PvGyiY}Md<%%P2 zKR8Gt^a$2d5pqZx#rLFJT?2_X$_=RAh9;dpbGa$u*>Rmn1?Z_F@&xw0PDkqyEh2iG zgXONxRY8F=COK!w3|Y^yZ7$2CM=sqKKJ@I$Be#&yt=zg0?A4bBr{DXJo9jv4NP06f zcnd&`s$}J*TJb$TG8+@nIO$Lpni_0h(cu66LZZKMpb_l9T}TmrG0khv+wa`?RM=x( z-D2($jTK}q%NO+<-CDJb5%GYn<m|X@<k3SNSr+S#5V^L;Otfy<Emh_}bbNwZQ9!j_ z9hJY%okMwSAA<Z;h@j#wKGM`I2ra?{-r$`N$_Jy-a|t)1FB7g7mRZctN=+g3ss%vk zi)~t8GRSdv94Jp@H>Xpdh3s&SPKj3~d_JEM7aL_E@Yg3<M7Z-Aou5)KPmuD&Uy57! zsOn=M;RnYufV>k$mPML94r(v+UXO_neGSBgjHwzu9Uz^Z$To%{aITDMt)~4Xv-z?) z1`yw~eliiK#20@j9k`SW*=MoQcdADOG@->W=RgadCWY}(3ZQ^!j&Lg8R&KwH<JvPN zxXS@l>|TB(P*QL6>9`Xk+1Z12H|@YR>V#M}#T!>kKf`vH^cNk;Kl(R$xBgwOroZa` z{mF_UmA>)rpm5E1E5;|EBS=Sl{lZxVr6mHbI8g?QA%pmmV7#hQmp;c9hK(};C7cdt z6N)AeHDLl?5u*EqtK|^&Hj-)ldJz_7O(^;p+`G3@g!6V!JL;$KGq|q}Xak0Sx~n)~ zb^`8tT>CP%q#+5VD3%k*T4cr0*IssA8z*ABXt|;0b?uKO6e&$<^e~OWr5sVRFCv}F zI_Y>&LsTr{vL!858tT)Ow$iV+oh@RD(MV>}5~yS{&I})=LtbWzs%p-Y>Q50<f>(y0 z@~x(xcE1*VaZg=u*G0$Y!3Pi3oqcf)biTg0d#UEtEjmm@#pyC}LxZ}=>$1}^27a}N zgjl%ou5rI?6CpR8&wBmMl29=!)!>RDtph4Ywe!jU&|X~mHD#UyjrZ@2-BKYp(*Eie zOwOF;CBfXa`GubV#b1=q4DY`@_D;Wf<BD;aV`rARf;$!xI1zGeu}Z5A>DGa^_RoIA z!TUHF+)GLm%KOXCH*?b{HnDPP+MBt_De*m^!a`Ei^H{rX{nojFB04a2K^)26nnc|< zJpTGQ1ezlIBH->9KbqORmlihA?~M=-qLvy>-w7gkCa}Cb`AMp<TR0Cg)BTyTMNg#{ zg2D%e(-RPTdu_LrWwJZHFr(@PS^JLI<ayXs*=W#k9*+l-80$~1`@s|bl3e}>$>qQJ z$NRql*zdl*)SIaH{_?<4)9kvJXXSNIX>LBvL+i4_$1Z9-)B}V*-X950L9j>^q|nni zH57Cf6d!b^^*AYT5zt}{qIPI~caay%Vjc;)@+61!d@pb%9jhDWFpYqm8Z3l&1eVA7 zm{=J}Nogx2_VP)B%5dbp%3NI4UBx1LDlnf#hfw5pI5i+D*=WNygv?~Sh0w8C;+@LC z=O6DXh=oxdJQOFzEfnMK=_hVh%{d3mQ(v@qL+zkDlGmT68J`hM#*cT-PYNEjn|q|@ z8a)saycV~RSLK2vATUn8fD>~eHu>Lq-CnPUBwpUS9Lb`f)5Go?J(XTCo-BNe!^ar+ za|aNtn^4%y<Srtr+Eo+jU!ckvN6Y2R$Gp4ZKDB#zjR+2l8ehg~Z#W&&H12ohjw4ez z)t&t%x%4ZD`1M#g>i8zDfe+-N9ReTjfL7=JgV7?Zo4&b~<<@6BDM1%ZzDf}QJ&gi* zw}t3lCo^S$jF7xc5?V%N=&UTbqWO2bmH#dO@wT^aU&y;?1cG@N@E>oli#X3Z)#~x@ zipprvcSR*r2Qm6Ke?d@D3BS*fw)`QeB&=TYT~IMPD8q1WZg9?9{#{YAqdDJv_DfOe zIPpg*D*t=8!Oc8u{_7U|isQSQ60|5W?}Mnt`_VvUas2!B+C>q<`PwCnk57lmNzYCN zoXEVn{_Tm}ZB;=LcFdJ-74DB$N=oU{d*70ENvGbR)|W;lZSpe|WWtW>F){~EA<jV> ztJ7cLlWH_uBDN}0Hw9G#>yCE9Ph+Bvh1&C=&y_GxrKdV)@#o(8QyhJ-{q#~+GD-^u zQKMCHrRcHuPtTGFEU@W&r0(0pN!-Dft|l(MwsV2*m={|-bVNV|Y!t)H97oXziJlTd zf!$7yg`hgzPAex;4b=?g-_5)xnFYQ};H)8V2SX+C(5h{VNobi9N_eCKKa^tuoqf~} zfh19D@`Tr4?`zd_H|?-kDs_YR04h_vGs&rfMd$?cZjo)cYI^F!b-Si(fVs%9j*ev+ z>61xMRw>s$o8wzfcCXqsyyDKLuL8eI1l3p(d2x8l4X+;Z=hxzQmVO3bPiwiwvHsb5 zUB(u~h1YZC<-PLwV^Lu-X7i1+^$4h3^?H%#<~BTtpxYTTiij(k@Ym}#dpdHy21NRE z#Io9?8mWCy)CG(Ez`G!o!iDL?<%Sdcnc-ZBrbm&c9L@h~3+c?QQ#DhANB>uI9i4wD zweeSN+J7NV7l3i2_QdZt?VkJMytSz|V<coT7FZ6a3I|QwBdblCwXQQxA*SCVR>&nU zg7*RzV>H}dELQ@~O$`~{>3Z7)X_Q5SJ8z;(e~8U~C#=Shy-WfY(WJiQOJRR^;oyJ^ zfE=Lw1I9~-f9o(3FY@vtmRQDP6wN*4GW)C&WR`4>?6x_4+$ap5*b~Td)3Prhh?W_$ z60I0`7tn26s+l6ACtKc~=UbY{kS2AuU0!pL4kJ*ikv_ZnY_QN7{A~{9wp#^icRBH0 zjVcUnawIXfQYQFTC4!r((MLVay#RgGwJ{Za8aQK`j-LL!^epwNkYc|xq=9V#nSc0j zt7$mL=YU|wUg%JGMLlnB{!6^lkuBa3J@~LpWod0HZ?Eyhi;?vYlOBlS0|phZyt=6t z>Z5AL&R5+cjF2NXODF{Mln`oh`=1=+C5el**lF#WEDq3Y`D|dae4Dz4aFHl#DNx$} z>d<P%AQjd%CS?j%vb2hGB~mDUpWAEK+THG_zSg9LHNM(tlu6*yVXLHn`VD{a;D2+b z=TDaJ|JywH@31=L{gvVJ)9<g2+So0=Tu7DtaJ{0M)*qusC-H8Ee23b-@A3&qQa$>s ztQj#yNR=9n6zH4z)`RwLG8&q|scFQy^(;Vb_Brm$!_x~rSmAuqY_L&0phHtyUq6TJ z1?^0WdX@z&v$P3lol)>u=FjvP93jn5!#<+rHeOlZmbGRt^`7qY)BLS^7SUs*73z%{ zt(8cpszlwKGte`F?!6a)x!H+}1XaUBgDoLnLHFZV={5XrWm&=T+UG&b!vPp(fY=eM za=64K6Lw`ENc<3cEm=@-w@)+lz&@mqU^E`00rLs{lBA58yeJGMvR&UvBe@Sc6tluf z_X*T+;APSY9Ua)$y_oPqou}I)%JsURzyCMj!B6}Ve-^f8d1HrT4L2x%|Fc-R8o5YE za&5e7E(LgwrAw5bt59z2$CYz!%9S`36fu8MXe>!%A*m8c2Fkr`C8uiB;x{&ktm>8) zHo}V=%kRL+g+oN(IK~QPQPW@b7r#L6KLX_b>D{UuQPn7<`eLt7HYqOEHB5_zq6lR) ziilvUfP#+8r*TkmMQlD#cX2hbKuixqX$)1E<p9zw?72!+?~NT0X~R)Y@q(Cs%OE`_ z!ru&QHRdmv1Qm7dxMLly*}G56p<rJo#G6&MH%^dEENtwyntk@eHsk5UTC%le7q9M+ zs2TArf`x^)E)z9-iiTTki|Q80fqj5D5M_{rcHb*$FjFrxY}R8-u1N0G-AA>Ur3*qY z<!R1Ov_FM?ns9xURn49v31?JJK4pG;+rawLd+ABBq=DIKbuMBh-Nh1Fi)MXE(nI26 zUyV<@e?+L7?OT<c6o37TIil?TcoJxcHWtzYUo{JjkmK7v;6$wIAvvmiNP(*emutSv zLRA}yXj6(|+u3}0|1Y86HT)6p)_>=~d|Q~lGV6O(<;!u^gwxXL&wdYJ@Uy=MFktTD z{72%!MC?)|7qb6ZJ?SW(t_}{WJPChOlp28zCDbGHuL3$R$IHi1B<PZG2B6Q?EVTYD zg7=N))B(5v1P}u;Ee2Re1;-WGWQZyh`a9_T1=xN8w!hD~@Sgy-x{>$S_)U5ru20sz zsRHCSK7WdVma&+ApEswB1qh4=t1MtX+%uQ5QIhMqJ?NgiTfp+P9XDldZR*i1^4^YE z^=J-g7Lt=@rl{#9aLVUd*UuL(5%<_xt~$VhVwAK}8NB^d?lp;;^wEk6i$!6R5A3wg zOg?ln9-DkbwO#V5(_>xOr^j9aXFhdpj2Zj%gqE~qs@wlq*woX&iZfHsLNAR?JrBRL z<a1Btld#V(Vu#Lre!2Ja$k^vsbcFu5)`sc6WUaH){b|PUr(d&d^}h_{tlR$OO>V&1 zFN4Qp-hUZlC+W`&mmS+a^R}|$?999BOYdh!ICu2Fj@CZe{&no~(Alr=uYZ33^#k|s zFfQbr!Y#Bmh<|HsI1suz!O@{~#WX_)Y{-Gg`6$FaBQF;7MTh#gLgLW9q%IsCVHJ+M zjU_FD(^8`dKCX97npa$B$2<Gbq&|kb-<KSO$|6b7kdKd}e|-PHl>dKc<^Nxh-TMjn zfZxBYmTu9+(O8Ntfz>;71F?ogxe)}G6r*RDpar<otqBxESc74Hb4qOT&0>k2PeBD< zopTd#2XRZr+vgc%#YNYjqD5V!tD11L&(9@lm9Z#1#20m9y=K#K=1qazWP7t@4KBb! zUA%L-h2)8yH950~hs7!LxECm4Et98{$#b)hmOl`TX2+A1ZaCrZtqIr*9%IMDpl4nl z)Q)VjyED<wgC_99lLa{EddMbK0f*VK<J}EV%RrJo7a&4s>tD`|N(IIch#c2O`UiU` zGQgc4bW_^6^-9Zl;y?cT|7W+hg#HA4l45EWq9?u^zDG}lhY)?b)+eHI39eue6RI6= zI7@(gDh)`z<aWYlC*u_`jUv!+dT}(7wH4X>&6V7Hx#GJknOVNzO1_SY{O(GI7`+f( z^|Nyl2Q&kcVEG_`)B%LRlqiQyk`$KG>?!NOr6l1<)qy5_JS9~~)wf5R54*$ABWh!Q zlHPy8mtXMZ9|&J4CLmK(#yNE}1^qGX<{>u@<pz9_(-8|{zu^TkX|kTAnak0FA*!j= zMs?ZFa0-Eiqc<MPqMu87jUw`kG~$j2B2kyXj4AQX;)yoHC!rJfOopl_?wfrcooFW^ zmP~e7{Xy`h<(~^*iqE3I`7XP@`7SSXSzaz9csGcbBRT1Sjnjo8v2#lPXrsJUoS`qU zGk7lSv$#jvf7BkoNsn5Jzof_U*Ui~_Tkc=KGBNZ^di;k-kADtMz8xo&W)O&Md$*(@ zVefNZ-Tt$zg|9o5UyszP=JPPdqx=S}?c(u9>2;ywx8(w=$D5R5M#t~qlEBab;aKR$ z7VV1akFAUUDPMQ-AM$le?c*&RCvjunj+5Lu>~@{>_qawaC{djx|8QCdu7}vyFIp}> z{l!ugwi{1}?SD_~Shi5Cs`n)DR)7J*Cp$qRe>17obVpV=3%=wsjw=-UUUAdU#;Od+ z1o-z30sqh8fDruua>%_WrghNWIoBjt?RLsYcTIf9%{e&otrjLrfP>7PihLLU5NsGW zzo9zP-*T+@nNLT|+i7S2c5`GrfK`qpzVd)Rj@h#Rk#dgP0UZEb3~@}4q3-LJk9<Ly z6P13sdw)qsUV`wN*pkFPotzRtQL}rUX`zrwA5KP%K&Hf*$-PY8Cj;m0I(9`)EzQIz zvOis8UI=PiR7gxle_TPprU?!XsVBJV*i*<EX7D%BP$&C0Zk``6V|Q<G_|kifCI&4% z3f(lUk#Do!9*QvN?!)Hbi%<c_gF)L7!dv#~$)Y$(jfxnC?3ZmN6de>4MfOd8U79vi zHn3kKU!F#fOJGybIiA5fEUUpQLG-yoK)0lHzRW+4QzaO(MKbGxhby{#szQ)ZwV;qS z1v8gUQL50K!5S+eQ|;5jC&L$?Pwc8<9aEx=RMn!Qusrf(?~$?J99RFz$J`b2;l}jf zX>crjYUBgxF<#8){`@g-T#9vj1DvBu9fLRCmZ?}FET_qUG|8_y#SoG;zZfBWM`O2H z6Unhm#?L;JnG)t4#wA{`qe(M76}4Z^N+4s*tZl^1+dXzYQ1vOfkb66`k7MIvk-nzW zZG%<RV`=MqhFzjT_bys(J|McL+t<`8`YEO`y^a!GlTLlUT`@AMC-l*ai!Xv+-@x`n zP6(7Qz1j{t`x)$qblDoCc?0vfOMQvYL>sQN`eCL)wnow>e`!cOP*4+jd(ik&rsYst z%Y($XniuPrH@h<0CPp-ul<@BLjUS(RTesZSKU(*m`NTmxMg9L6ktin7RfIhjA`<Jw z>A6S5ok$v34+wes^$zm<m$lsx66J-66ITn4rSoQqTpR@KAEHy{wL{tFU9S$QBKB55 zo91eQKO8EqP}xb6G+0cBd$BDQx-TF+DRiY_`T;o#If=}I$sg~X!6Gf7;j|5EZEYAh zRk>+z4WQ{SOIa10Cw-aE)U@)k3^b7^n`tsu`u8FQ%OCM>UneF~+Au<%y}9D=Sn-y7 z6|k<kR&Y;fBHpR*5pRMA1*ZnYv2=^s609Tu1#WtGN8L20LrnV8F*vZbkS$~=yn`lA z6vDj&l2=R8()`TqEa2F9gml?HxI08n1OROIoKub8m<-z!ZA)haSPo>WQ{a+NMKOn9 zbq96Is<$mv$msgTk)GMukKzy_4Yz06)?3u|g)8i7M|S74F!DCg!=czc3lkxK*)aT* z$M|oldz<^$Y6JR<hT$Wdh0?%=;nvHSzBLT%9p6JYbCW(RY(YE-)ZqbjC%<sh<lAH? zhG?I&+YY*NvjQAz(=1jd2OVYtPUj92Fx%x3R}vRRlFTrn6qQK7QZlg@<eq3Y+tptb z{U7I^c9m%Pdpc$IuY5c#k61sXa3d}zk>Kkfc%^bA;qwQP1}P=in~Oi)(ultG*|BB{ z_X%d-J0#*eH##>XR1S$d=kw&{dSMkWPbT{CZCbp~YGmI!Ntf=m2W7V(^hvZo6}~w# zo`zFNda}=p8l{+}{TQcPIea8ZUteYuefYMQTDs1&N<3qgLlouEYGIuLmX++EYEO*b z4rEhpbl&86cm};W;<fG6o1+_}-@Z9UOVk<6^*<Ukm={=nYA`>v?(JYfxc9mQ4`Q26 zPN9ZOiB?fira_{;Us?&+=>}iubemo8#`ec_T6q&I0e|}}2O-LV)#oxB%5*lJgM05p zQiB|{1{Sja;a9WEt3cP76kJDO9C%#rp2KPDx|a@X&R%se)XTV`IT^x{5Oo~2Y*Kkn zJ>RO|7<z%%1Ycs=?h=Bn=~7Dwt9!C@r1}ziZNZt#U0J4QuJkUL1-k5?>Ds+_5n62L zR0;5|l?FS!%a~66W?##Uuhe5a@VylZ7=(klk_R07oe9r`JxV+mlPb^7H&YMD9g`k! zxL1!OmA#)Dd61E->2a!MwC=ATZ;_#RP8;Y3OTpwlC^A^>g`C)F)9i0u(M4%Jyt42q z`mwce)ZMk0sz03*$AH}P`a$HGXOGUG85EMZl0Nlk+_T^hfp>o#_xyKpPvv*5aA0ft zLSyi=LBuk>gI9kdj<_1%i6h#&r`JFIAdY~`x<4^T^x-o<n4`N3%#l}!#W&^%Fb+(2 z{);%f9e@LpfB3Z)n4@}zmJ8M?mQ!L0(UsNRYZu{j`;f4fZ(}pLzbQ#sBDgWx2M32j z$$R%E)7cJb>Y|Adn(x-OL}Q)7#d5wC4N^-LqldBM>J5pKo~c&4_=9c`ThS`*Dvt&i zta<S&0%Yw-SLNo0RAtAy>Zcb17YfJg&OE;q{<^i$@zQ^cU2ysue(M*z!%}xF`q3{I zvVC^jR)`$bE<7wS_|V%&8{TQ#-@AHWmISjlt+wJMh)CnT*u)6vZQ)XfHKT+3cvjAk zrn^k)IEey*$~ky0_9l^<8M<y}L=O~@gcaQ?(yWopu%zoECC#YV{gYf*m?=xk{iFjF zHe&oxpG|`tV88$-09}RUGWIH#c+hpciJ$}B8yV{cQJ^PD>=m-|5(4ItRIa)=7At{t z@v$lZfX+3yfw{>BS4jIo)}|CadoChw4&%R;su#h9K*R>MNlBi&WhnOZk%8C@nG$JU zwx#4`JIQc=V-d;S+#m0aH1|N^qA-)LN4?*y+Z5%c5(&UItuAA^n@0y>QN3HOsc0RH zMsXH`@us}c^-Er-&Cj&pFJkW(vG<1)d%Bf?wGYr6mRMw0mY@vHWd$O)Z$1_X(Qez& ze+-VqGPzo^L@YukkNqL>h+HGlT5Q*J3K?Cn;1??co+69*<L`r1mV4SmgidHC`^&2X zbYMQGE5fh1%q${Ex*AyDgt)B~(3rou=Y5Bj_%yd1x#;iKC1?J1{~Hv`c?)gw2j;)E z$zLu|NjUV^^U2VKe6o_L>k2tL19*oJB-dBjzWdQKv7MqzhiUF|-3ewrWy|AfT%pBS zI=pM(^w<yb;FnDKOQ!roLkPc<2c|S-htM@i*C)|Ha*A$l2Na3V?X4jxN8+lIgpgbY zT1y)2lrs?R@zH={vAh$-asx|>bXg=OS$R~Rhf-98mjMuMR#5%%aT508(WgGF#^O!a zy)2ORM1z2Ya8EjlJ*K$cc3#ek(WJ1W4%(0*fg>TGFO=xvu$$Cc@uvGa&});B1{7Dp zL~Vy&*%$gX|6`&!UY=%Xbjl(moqWQ$<}Yjt|G$EYz8XFY;}Xh)_20%NYVZAK@0aoW z7SXl%5z!^Cs9XIbqPs+?w?Y}?|64>C|NhkXh%Wn-2&-RtM{7P9(S<^4mpCtr|1HM! z%?YInTmf~)MIc&C26aXcHTGdZLs()vUc2Kk2|_eEPAp-@(^I9F6vZ}=_obvOTPEi4 zNo6fkl4$t^Mt#}cW6%~eL#pJqJEBIr(35u}$VeF|3B8zevK4^LnFJ$sJ=oR^d!L<1 zJPBf3q`9&Z$C%t=SEXF=egNrFvA%GglfPC`G9l%HQ+s}FNc7pKKl&GbrBQ#SQU8GY znE%p+^`FX^|C&O_@jnFZNS*mJq2m))UnixDAFl%qRi{fl8ogq<7?H<xE*BdOnk9uG z`SedP8FkVkXzqCz$vFL89V<2ub996YnqLocg?)OVB2YU{dCl`5jlI9{$S*wd55gmV zvQ7R{CjSA-q$+R~kOx%1^F`8FcE1$@f&}~MFSF=$EMCsxxCtvBov=v491Nv5SV4|R z7SX1;9d{Cnm2AxFcMed5#LYbyBbg`Z23j(S1QIO)fGQD@-K8Cthf<2MvcSocK&sLP zKu3n#KWvqRlpx5l;SeYUa5_$`r<6CW+6;+w25_TZQc{*`2_-^U2oMG2baS7SH<lrH zNq11_TOd${>FxZuW$;7Nm}wM^<SUeNSJJ(V3f9@D!saN;+2QgNlzYf?x>P{H=N3$w zP+d2{O4#;jm83#YA&ZRFvI$J`!sCPnS49DjPkGof2KFQ8ZgVdjCs`#_x(gO#*V8RN zl&q5~)&|r{wn;0Qut^ZV2FL;a>(8$d*W&LS#1pEG#b&n5PJd0aVOeQavY2SZ><Km# zIthDaj^I)^qLr1bj-YW$+H~eTe<A}w5W`8y;X$5#lp{Aji|-qsU7k-3FN|EzoLs}g zCFuDR)RBme&-Dn*@M|@pH*XBpLoJ?lizlqqfj_V=G~l#{I6HWFCrf*PbhDJG8{rsg zlh&G_)#P6^&@US352t~Cx2NAfNJc=rBUr+O&~F?M-wPrUyNrs^c^5)O&P8kT{UM}q zEK1JsS{^P_0tW!Xc<Mm_iKGI;gyW>Dtq|j>79I@WI}XUvupE?TDCl6%SnEay@Cl%A z0s>$s+E!#&j+5|}Y=pF=9c}!`%bl0c14`i}3Ie0uQ5(}^^P=xQSeJ1Tj?Ph@N`Vm? zNmv)TKCsi+WPBX0Yc}hnu>o*H;4nx*hbw09=#9@Lp+HjqeN*vHR|_<j%6)Ar)w?`d zmmOXRXorV`8);Nfp4W}U@?urJ&xSe7YwzdY&`O~1NO7FXzG_h$bC_IN78eMu+y8Y! zd~8141@a!h|124yg`70yL#M$##o5Dhyc^92P_v`=V>TNm>m-=37Tynbgjn24y44P; zedx3+De9Wau8CU{ufIa}Ef43C-tDNtgEQ`J0?0tzOS4(X>Z_T_2j<lwK(Q?YHvM`p zF)%kJm6`xE`yd3R(aq=U>0sNB&xq6m<!2pSgPuMyKN`v6{%7*+TX8E~ud2Y44-p=X z-?cvrKc~&nmUjquH8;#e3((8JQNeS`nv%^eU5yue9;1X`M)=++|MzZ2|L-=!PAZKT z*;H4Ue{OMa-+#3N(Whoz8q9~eBWa3IBF}KDHr`9AQM$W12R3EZ!Kfw!;_P8kDxR*7 z<StBg6&?LP)m6X)r@HzykN=qJB5*Xfg#DHi`h{nI;n{yQo^4%A7bc`F`2Nj}pxUr7 z$NWp7lFQaZsxIP)ev<4u&?y9=2O*Vmi4jPc1PKt1lO%S)#I@OUK>gOK2C_@p@$-O7 z848Vy;x69RW}r7f&KDY}-j%Q2=pT$e$z<_RR*UY9Cu`<{Wgrw0a7fm2(UPhpE3F%~ z0EWf>)a9*Z6`8bFFRTNyamU!FPU-C&@<UBzC%7L;4TlIv`tdI&2VV#~2M8twyGSo0 z7cD78L!)RWujZ#;8{e!(>#yhr-&E#6vIu(`(vN!o;)P-ra1Kyby7$>4bvX$_#<A0V zvSCrgj^_f_%S(XXaSkV$1TbRzuTL~^g}3Z_k5_8;eIfp#`2!4QTjgg5;wskuz5S0q zG|*AFVdegb2U_<t`e8o%xuj>i0%K#GV!(Zhx6@L_O|Va2`v#!MLdxWbdpLbz>OwH4 z#O$6RVwtdk4^T{pt%cK2($Fbfkm|?dXgd-Yrql~vgoFsmb!5yxIJ`FwRzN~aGFyV^ z+Y#MKuVzW5cjWzdW<64ctz|=)M~1^cwf@<7>%V0k($DkXe__rUWR^AE+aCOV{(ER5 zKKw}O8dEG!3(mzra>xq%C82s^A5lAK?;!hU$fCmiL?MU?*VR<6c^Nz$zA%72*W+#= zwlIKAc3&94ewnj$VE|hn%N6SOw;cZ2;V1`O1_kLA-wq7-GAxP3&IA??3^_1#$%Nv? zq}k8}D8wO$)^_=vx-Cg)Rb{dl3x||}qmW2)f5P2kL?ODi$%Qg!NHIF=a?1rRSE!KF zaqYL~35a659by_@_MqHrAE!U|rPsIfw8k0Vv8VN#kjf42vi!z?tzKo~?Nysbq!QtE z_C947Q?ka^a5Q4j!yTU%BgEV@-o1Ek9OMiMx@fcH-7dP=#WY7AspXWI4J0bZt1EZ+ zE{E&JE0n}G&>~%BD%UimIZ>_qDxvFcC2XM9jh%veIo`ODuf6@`(zUsE51^LF*97l* z7X^1Z>9riZ8d+khV=tpeRAO_O3FsSlGi?N;tc?v2Vd*Tbr9t^x4o{SwkgGd(#KlPB zwk2L#KLOwJ1*g=TVKH1!f?_Pk0^AkDxb<u$j0%nmPV<FZD`M*yGP;Fe^I1|>D34?z zH3f^uXGJm{;*3wx9T3YIEXvNwHFo$tdh9HvU>%R4(jB^;f$AyJ!@0-P%uAOQIO-w4 zxTYW?ne~}c7c2dlPAat5+0q}gE%y*u{u)~Zd05=R`R-gzi|0Bq&ko^pR$>p%VV;8B z4Mczvb*6;JL}}mFq0<G^4X*h^Z@?m+s2g9jtOtTF4T2jomRQ|KqJt{B(h_AwM?>A% zZ_E*F3e3@NuKR5aK?(Z~Ja%H;@dWqa;H~Hn`+`+brTr~0_LyI>%i2TO%ZEgB-aitL zt`xp|%C#jbrih?7aP-}U)z*rXm`ZN=!;2Ls6P2SYE4cw={lg_-`9+<na7Fq|ZHs1M z$5;G~sjkx>G#BrDEOUDAnjEFPS5t}~JXa`h%;FvT<fz#2OF;kDXz=&0EB|U@`PNAO zpHa#M#iu1Qd&3So%2FR(U*viItrjSZF|Xl0eU~E2uG)i#Pj86YttxPF8m(if$tSS` z@!Z%l>(TD|N)!~FfUXoi*9iOSpdh42Y8t<_e_0xbM|gKlyA9ZoTc)#o(e)t|_R&T# z8PgEJBtPNB`HEP7?E#OAgbv6fD2s^g+#Zd+*eSe5c?cp+qmvPM8h2+QxcN**C@0?t z04x0=dKY77CK&hvB=wST#Mg!u!d|w5u*l^3=>{VqPupjqh4ClUY91;~#e=6(=RRg^ zgs?u>VwOuHzX}n4f5l=p{NC=A!=ESGEufQrGvE}nKd*yODs~kN`*2BO2qo6T5taQZ z1Gj3ER5F0Aw)-w8cNNiA3~y9js6=F+=MCW1TE5<fCLCV2(0>jP<kA9HkKzXQLr`+m zaFWGWD)v)8em0Im1~;YJQEu_!b18ONRC8EX?n~5^ZE0C1&Nus!eB$;-lCV)i1o_Y( zF~>gsQ?Tz}WmC%BP3YUY^4r#L>&j`=-}(zpo_`x4UOo1GfOy#(`s%rzxDYHCc6=qv z7s(cZ5^t}{;#6!^8c^8WQD08vpmtx@*(zL57xBUYsOlE~?jO~>zwVk}cg;WOt|{1Z zYEcyU3YLpmk*uFbPp6b0K~m|c_leUjH}J`=+aS<z;)j&Es)d7RnGv5<#K)766-zeC z@hT;t>l>6#bWv`mIAh}BqJ=b$zg`(2e@8+!l98vI-OVS-eZ8{uKEekFw5UOqiAlC- zZp#S;r1J1Z%Yt0y-CXk*mDwv);Y<{8YyBs(*RjhN(Yi_dC<x^ahyJdYDb7<Vfrk)A z-O$L6PfwABYzEp^*6>owPL6<4tq|7iW24BZ&}q?3QuMdeDx^Ma>C2g|u1(Z+yg`6T z)4={jeCU2Gik(gChvX&QWCG?%VtbNKt53RG<R)>i44aFvSB;cj0}Ig0VqBoQa>e1M zNxH@>sqbOqE|8(hYHsydv%6R{xmhr=>aCukIP}wl1F=^vpwqCM7KquK%y)qYk|Qj@ z(wYp5QOBM8hu`|yO+Blfm%2Iqej*ztbmmYB-*AvEmH-?my`Um!{4BnorN2j4r1zjl zIH}mDZO<I%<;cu~jD6rHa-3ze*kWm>WOOeKO2t|9!~nuTAAn#ze0eo~nIEzjvGP#I z8AJL)reWXpLrEa6OhPX{=u9_&FffLl43+r~hO`OSVk&~JHeVg=<w1s<)G}eDaTulp zF^Vg>^8RhmR?(|Wax*D$Ik6WYo519lT)K{a%`OqL`az=yDbAt3xRu=q3mWy7sC;`c z`w{STw2LB+w93Gj9z~hqH0%;9P0P;{QhK{;{{=SYYySAqLAqptOHAscqM6AG(vk<i zSvS7={<(GI6JYUMyLxYh1o}_q>SzAKxsh7*&AHLG*cl%AXU+`(Op`67$^fJQ5IT<4 zCiSMoFPv4m9CkwzR^8#a-8jDC5KIr8t$Kj7IjC%z8aW-&*PN~7$h2zNS=ySo#FR(K zGw^FWx>Vw2&)ad0_JWn-^J(&(gB{t{8Rwl8&JR+{9c(G-&kVKKp7N~mymu<<v@2UQ zy=v6qcb_l&LER6Z@1}H@4?pVFr6-_Zz54Gy-{wn)7ks{7v<F&qmxsI@J$hlNoxNy_ znDf=zpt=*Tr#IhwwsYhO$8YHo=WBIghc4|JF(37)_>d>z{z1jX>^=9=ofm^T_pk5v zk*SYbRqRr@G!k+bB^DZ>eUSgIx4~VouVBsxJwE)Xc&$(6rXs1k*F;W=Y`ih|Sof@H zLf_oir$;^uReJ9iI&z*FJ#W2Mih?5<7Spl5M#XCe<@`&$eI@+YFeReBymm@1(c0uK zzYoWSNzU?NNh)=L-6&C6f8>Fgs6-#Krffosxc*e7JO(GXwkX4@JZ7WHn6$LI)rX5K zSmJ{+IvT!4>Dqooyh+{(%a>u=kG6`q=#;zRR$1W=`J?&F-D}MQ{URj~t{gmW=bXGD zV0-K1t+W$9*;ZDY0==lKpq-XOB?V(|-GbX#FbQR7XSZ{Bvgf<*-P_4WwX7oG-q;mT z93HC<^}^F*7}C;0$B))MTeM2ZN3f^lm`sZI1B`@3ef<7{tM5WKo!5W%K&lGOjkheH z^mQ>4EB!KZAxKCuAlQzBdvFeF=T0?yWkRqk??`l9R9(?(f7(%aO<#u)_9T}g)ZcXX zNm0R+Hw$~Gkp15B9g>&;bhYa7H=V!wWvTEeb0*A=FYSLCc!mUmF2L69U2Cv0i$H=y zd)(7+X`Q){2+x`{m5`9$Q2lYufacpXmc!T8xhvWzh6k;TO$kCvp~N^*D{a$jA3L<< zy(PqqUN7dZ!b<3pmOu@6X+7{*Dzpuqo7F+KA<#DIQ&yNKFaZLK4iQE$03KQ|cGIWl zp008F&Yzq^miEN1v%ciD_mRNc_;k$BlIbhlD?!stM!e}r@84WeqaS{Qa$(Qf{=M(+ zFXBg3IC*^7bHeI6-y~hLVqza+$80}Z?Stv3ZoT`nv38qOO+M^eCwSENB<a?i`-=_j zLmy4gEuBmB+&NtLbtq)xHrmvQ4QqlAtgE>>6?YeFdwtu<nK4(oB&r~K$~OB>ccai2 zHHUSf%Z$h?Ld>Nq84zWY6{+BSyuyr&%{wx0r<|kqq$zuI*2MoK?>(cM>bkbkokj`} zb_!KW0s#VuhNe_WLV$pjPz6K{ML<ObMFeXS0t76Cq9US(BA|i>Ma7=bu^=ES_D~e; zh>D0JC;B|!_ulUq?{m)h&KT#{`MpPW_L^(1xvq7sIj^au%|la$lN2gpbvFAcbjZfC z2RjmMvh=u=?RrB&@HvY~0K$bW;~v(y7ClsW{qWf=+cYj_abk0RT?Gj}uE_eB%T#@$ zI**8p^}RvJ|7;PT=YL20^TdPG#Hq7eVDcDs)yiyTgK!gvL3vGSwsme(C31N`%6V^i z;cAowi5(JnbkK@+NGbUJl3d*kdR9p3{E&5)U2gi&J-MhM`t=M^t+NF$)v+z!fZ9bu z^kN`%kaxyK4qFfeLW3-G4F;<Gj|G7>2Jf_>GM>l9G=Vycm8Bu~HuIhE%}t}L1Z)=7 zl7gX&81PW`eD*<7(XF(m%CgQRPjyEUu#G-S&n?%WVvM~Y;xFX8j`LU#$=QNIn9fvN zn@iToxhnG~J;?&W3y(>DVD2xg!o?!sDyAO_X>JWg<mCX@Kpb{{o*A`BWULw-nClAQ zrf3HNeXwv}IIC16CYEt0uPMSN-k6{$0iZv`9O($T-0=}M*<4>uOs8$yj8cV~0e0_0 z%X*1`^CAl#H)Vv}r&K8Liv)Mj9&ozmOQ^3L@0VdD$5@KBx??f~E_AdA8??sBfGIkA zz0mjzwQHW?CJe2gWc)g<E1=f#ig7Z-*i0b~3Xdn)vMHKSuyrwINDzbKs=yj~4wzsv z)g}l*-Jz<T&&G+ogh+KnNhG-_r_Y(C)3qbp<4KGPE9o6G)A^KF?_s;*ISjX=nkt$P zRzDc5XxgC`UweI6x-Y6(aRw?9dZajjd0Lc9E6V~;(N*e<55g+BMBpT*1*V_yh@231 z8t5kh>+V3%co3j%0~S7TZd2>qDP9==w6NTVwbq74!JoOm{Ba>k1zHF5sqMm`DkTD3 zWCYkl=+CVqArY75n-IMVwc<la<Sr&7WlOgREmPmmY(1DRhI{x558W^C$~H++gXo+m zjcU>tmrn5Agty>kQVDAlMr|_<a+w^2G>J|b!X|&%U3T6FNvHD&Z<><`kOP3<d|*d& zzo>#pcPO*q;Rm=!5kGV`?<-Qvb&4-O#C;NJ)Up&3L7xML-8M6laF+XbP6a|m@5l&o z93I8h!{Tx+;b2Hf{JApjqF6>WH~z+ctTXgm?IC9w1gnn<vFNhdyFgE0Q%G7$*ao8P zS1jV!`R_9p?mvEA7`bHK3`xHZPn4ShV2L`b^e!7iTX*~Vg(&|1{YPtl5!S|-7VLQE zVYo`Z*e$}jZv%V(tN2NW);nLnAMC3Mym<P$w&MC0TKnsZ7xH$lZxJqk)`-5izGvTt zhUC<z(wMDR$NWESd;0UmbkC(5-|v3f_4DUTK%-fP444qi`=vkyHn(W^Og#AICA4BJ zI?rF1++PZR;+XKDVdy$;%cZwZ-5`={{ASmJFDi8HIafwU$i-BAYP2sw<J5I*=lf6U zPe-4mFG}%VB9Ccp*b`KeS#1}#d1wMVws|P?e9X^HdcId;ZH_-}x4ZgvD(Gjo`EKW9 zytQPP>>WGEH(x#l9j~`sUp{uekNhwbc60ys6*-xZ%YN*lcQtz~YOb&>f*Kc#HBcd? zkFWV@3!0KQd%|zHO0QnUG5bTWkhpf2(DUS5_!wu1evV|}3~B|;#u)d8bxV||A>e;q zFiSGxNv#g=`6fT~^bOG|MHL@t+E8Z6p1HcLZXp*1dBy-XjeC*pHPX$KR1Y@`nuhn3 z6zZn@xTVqf5R18<xc~i%Qqg?2<<)4gvTP;Lmdl<)n5y9@E1RFf9=D&uOzvko3ajt# z08|_SWfz7}WAzUYSyMNjEx||->aT#O-{UJMAzg6X`*W~!ro5AFCbzu}Zqd9KOe_Z> zepra<B!B~Iu<9XTmsl05VE<YM0yREzg~}(6hK%F?a%+h5BRB%$;P(xDT*9wEwD~;| zcSRbCWuUK7?4TsIOT?_5BtX*34F{uejMW-_C_{<RAs)pG2V;BHPI6#1B-}f$rMd&w z%Om0jo{#6FKpPB{o`{vJQbRyD65JoY3rPibfa<~&xJD3JBS_`30{d<mxS9i|cd5=9 z6IXu)4PL3^KU>F-gZ0v7v2)&9U0y*58wBqmQVzg08!>s(Bmoo)O(DJPRW}I3joRYw zaxg|T)N2y*Xa$T|h=%fP5HV~pE&pV5z6ZD~tx`=oZgwsy7a>O^MS$zI46e{{JrA$} zirwFhflldiC@CjzlzT2zgot4}$686LxXR#!6=R#mY~ipNIKl>wT7+wzP;VH8c1~*5 zvsrduz>AuDlBDQkNyd*9yBcHRT{JY58x={-laGT(NjMh?{h+O0O&I7PVRX@gpyH5K z=D65#s%Ayhge@*L1^yz4H7MDmQ3$~ev5)DbEl4DsJ_n_)MwA`eiGVB=Qox3A@a8fw zJB0(ClWemaL?Ieg@MHwyG5<R+0!)KC1M1S!!Ub=@pcKxjWuOgu+uN9hTA&BEPuxQV zl6uwfXhJ5%e|ik;ApsjuiO}Aa_*6I}1T;EnhmEnS<iR(F?;<8@tzad(OQC^2%UYx* z>ET7qhj4>~DmWbUiWp-mHgdCHO>9J82VrJBi?b}~=y*ZZft@?40J8*kl&eNdfm+aD z$G`I)@S&yn-22mD7Y(TdgB<uuY+vkrjz6{{D&ZSuwQl0QWnl1^SVSuJ={U_8z2~8$ z&Uie6AXSA*Ag0rxx41Bsq+ZWsM~nd1ml@_xz#Jn%FP_y0dz`0Z3@}Fpo_+-zM!{J4 z-V80AHEC-wbQLyLbw3N&$x}HtjGe2+C9KY|G6l$6jxfQM7c2n(Dex{a<aIA!16PhM zRIgOTXXBRDS!lHJR4q~s33S!B9MzqQJQwLvun|_k!O5n<ksqK4g$v^5-g*PB<XL~G z9cOu$^+3ulhl7r0FleuZzQky(aqZ|u%IS-n@QwcEHJ+$7pf_fNSE^xEPF~?Kh=iJW zr5acOPy-P9#ikfnqBl-FfvYe|j3u1bT1ex^r9DKDo}?^@CB7F6lQEl3G;7nMYSS$j z24~i`71nNxnn&kpy)3Nu{#=_~2ovgQ=33(OP7&#Iy>)xuI%RRwpfnUTMJ1klvUJ<Y zva*xqS56*#a&oXSeT$9Crj(OGjVEP`RelGZS{8FEk%aV9Rx>cGk|wux78}@abNy%r zEKNad_SW+6g-73V-chFGL<5&%(r=XE6Chb<J*qtVwG%m7u)fo2n1(Ey265Nv+qY^4 zF*;A28PB#gB;Xo$R5S>lEE&1tww7|b2k&NwF;Qi$Z?mJ^WTb7J)_S8y7_wY^_*=Su zU&HhBThfgq@?rSqMQ5AsO+{H}Q;ju)6HUAik*1!U>Bp@l#crLQk!pCmL-%M-gm@Zk zm1<ntqH1M^RRAtPB$T_&>-(8sBcPt*2!ae5o9o1BE?tDc*)L*5XjCp;*4XI071C0| zG+MrRLu@>O!FN7rev%BCpRyk}1Z)beze~2VxqM{nX!^J<*q63EqW8E-;rU$&zQd(B ztta6AVGlj4#kCwzG+1t<i}yYq=5xgNEvX7Y)|ddi7LJk#@=FBB8bnOt=Kk2@lh)gZ z1&mjoUNN~_H$y3}@>c2L_R$J7W6t1k5qKQ@9z86n^DMp*`c$a0lA~6y;1!*=Tzv%x zU4AU15Epnsyr%9jJ=Eh!aFWqg*vrM<tjXNQ%gcq$F;Q0Q?wJAJ;N|a!U{-(%f{g6# z#h3jA-MF;57W7rAnnsy#re)Ldx@}+QPIzlH*6`keMo)KEZqp461C20^+AWcKG23pC zRD)!f)1ZD!Pf}9G=52AR!WEjF261=j$B3%UH#p#oIl!0MK|w_RSFt<6;^H>^3o8If zK)FsL@Sl&Shk(zoK%JQJh09hVa1c?idLk%K{+4&i%6!5FayJvJIX&Nj7kP}7R%iua zBnSH%EsQ{DJqah{v?7vme2Mkpla>Bd`Sa5_j|teBaWJ6QT3<i(`OKQYLx_-wqyQPV zh<o*6Z+M8_`A@1i%W}3RNqs19VcI4*R#Lt|7wtmdjvw3n`=``Dy9|`8If&yNm*e*L z%AoWd9}cEf%0cw)iJA+NbBc~afonpqrBJf99$C6@DNe-Ox9VAdRm%D*vfYud85%Yg zN1N9Eurl3DgKJ9F#v(ya((*0OTDQ)}VM&ELifgD}pp<jn)3s>Z9+azz3PP?P4#E@8 zb>aD4>$a($?1il$Tz%~#3|m|arSHOiR?UCfLcpo%bNnmcgBO*zzC#hU^G%y9fcv94 z@oEG_=;iLci1rE8m>TXm4S8+`e2wv%pJLbusGV(6v8dT%J#^hX#bD_~ZG#L7hN>Of zv%UMZyfxmKQ682|!@VEg_x+rxe{UxkBnlT?PK!<CcE|crPOchDO_~6|i76g5(QY-I z7ACt`Dl(nB(&xeGg)vmW&^eWl{k*w1_t+XikND`p*J!S|5fo?Z#_73PwjI$Iu9~v& zx{DdCZ|!SABeROSXJk=f><P1_iyGz`YxS*r@(4m#$I%p>jH}ci6^p>a`UCT=%;*oJ ztvtq3ary?KHcV)wZGC8i#SgpN-7tCtEEN&7_OJ_UU64F96;X1B5%kq#(TByN;?obv z2l85b9>$$1`*6%#K1i|Z)d;#2Zf7LATmMsa`x(5}_xeG``i!`ztq0a$AVQw_nLp{< z`}Ew-!5D++irFPgppVvlZrEMXkbX#i>~u=o2knko7kFd+&nFwTFFfnV;QG`X53Z*V z>^x(Bo6t44v!Oj7yuV#LKBXS3ny&n+4Z$W&+n{p26n|TtQq+m4ic{+rgP!!4Q4E!y zC(iZL`=xy^<3I2JHF6CI(41QVAMUq$<R+CFY`nJRnXScq&qB@n&uev#4e8w&(tj~z z_<M+CIBdLRn6h%%Y}YXL*s$e|;rTCy8>^Q<xJCLEO?w$n0qqUDP4Q7>O#20Tk3Veu z5(HfOX?DnUG!M7Ma3%W2>C;{-x6hs)I!>36Wvj3@5Bzt6l|EOVtLtdj_BQMrV!o)t z^<DMb<IXw!Xdx8enPlz0e?w;F=v@MC;vINiT!?@A+WYeg{Tmi=4nUm{o$|-ol5%{P z>FoOXYU`ZdD-8xf=Dhxx|Jwf>Xf**19swO@!Ryb}&THfBc-A5{joC>WCsX}y8;ZQz zHd>6U<>VtOS_XSN*WML37^+Qhsd=Er4~`uoNX>R8b53Q<D+2j(bYNcNvh$uNC)4oi zVQQBYkhsn2N0)%2<X1$#N@pcjI%xV*yZ85-SSTGUQuH7`2YdzN2#^o{0UHq<3AWG^ z8?!FQ8ZfoM4T^7em8_h;jElO0D}@?FYa*TBswWGP!Co4LG8onFVDfxW?;;H<Yu1{! z_k07&Q&><*Rr@69ClO*dj+}!5*dRpY=*OQcM+q@wiXA*m6qsrT1biWFe0qU2HwAKn zJzjqVlS=g?710D0+z&eYrMUlD%6ZM0oLT<ZsaD90HK5K*uX+A-%NV%&vf9N7@VhyJ zJ+cyQ53bI^Xf%GBZN%AivlpDV326IbpSpMbqc7tYz)cd+%-g5Z_%-_a#sgY7s^*&7 z6>kjrlZc>i$<3T#Qjw-j@tXt7cuV`cLZ|L<u4_QhuU59)Qedu?;|#t0%q6NXy411L z;I`lGh|g14{=|{s?=#9Xt_qHy-6V;mVH@Fkkm>XE^N|bT1GOu2tpTfrKu^yN{CuFS z0CJd!%gYZ(^da0|fw<yBwgb>z3hLd_PL~r^`zMa#BA|`?zt-Em!p>Cycp1by;Zj2& z{?bC=6Za!iwjfkRh$!rbO1^=Gd=0*}mkE0RG&s5Hu7-^U0)Yb<1%BEPN&pI!02NnF zq0$eIsWe?x4QLY?eyJMXVt_)hCv}3$z1eomW30o$uY3<$uec%94SDTX=CJ-nbtZU% zdC1wMazMA=oCA^r#2^@2moM@~{G#jFc;2c)`P73IcSabX;oT<J@vqhBMymp2Pn0qb zq<sDJ8`<-geT=?BLw3dMU3mZOjL+`i^_a9Igpm2`ZSwaEA7eZA8Mx=@N4{Pq+yYN- ztgr6TQl_Isf4l~?KfIm-i|aL|AM5QmpX;DIW}O50(7BAJgXPP=Z+LP2oj}%5L>JvS z|0eh#4?@m2VHLIf%8YHv);*W?v*Xx`pXndx2i0-cwX}`*#e2Bko4vG#d$ae^rB8;d ze(#tO?>qZm@@v~O*(aZ?%QoJeQK3j>ADzb~=Fi}x3#lUsSz@<`P<ts;b>V<I10jF1 z&$iLHe8OYuW2=-!2z1@gLI=e+dTOsq-piWiRyTUh+Zft?6HFa#^fn3{D762!i*k-_ zvh&NE>r!mo1l#<$(AEt3vnsfQdbZ7W>48yDvTwolWSHN=s{`l!?C!A&iUJ1WH~SY1 zu&CK)ebwg!)V7pa_7H<3D(-1cJqrPx9{rqfM{X`Jo;v|F{My*z^-a*!r&-+e<_76Q z8_`+DRt!ii7iJTg=kW$%3%yJ(gj!%skM<Avdb&D<L|)otUkRg*4}^S0g>9i0go|!D z1S2+Eg+Gifk|4Ae&EFE9xDIpr5e&=ObAR0LXbB^3)syg`^;vt^PT#NXy!fnJnEV!i z=*SMhKOd_qX+nbeSt6||kPc^MGZ#k0u0ee6*F56(aFtmW6G~2>{&2`rqJTYkwrS^z zPrO}lM>=e)e`%k`t^J@R8%dd9i#*hKO~2&M{!Dws<(ovXWpEA|whqpYh_DFSm(I;I zU$VCw_KPtdei8dZw}QJCZyYGR6M5pWZWPF!J1q8_L|uF!b9!^_V6#)+F&kG*dzG=E zdo02mE-|BQUO7zXtrPHTj|JlyR6}8gqfh?vxs{g_m%B~ouE29*)+(;E+gQ<%VQlxY z;_@2jiwE{=NpyuACyU$?<L<^2+ypM%6zN5$j%6}2HJeybEn{j2&p>`{lz%%nZS?$S zw~i*B`|xp$Q2IvBFQHIZ0Q#}Rvciq|^l|lqaxHGwf^rX$8aJdxuR`@1=go&&uq+NG zTxoNsFEb39U@t6N6SGDbPe)lob}{PanK@#8dY&A=estBqiL1L&3M1q=TqS^a+555? z#laB`M*tcbC>h376+JBoTZAoV&H>-(BIm9Ob0kS%_-VWqXH0j8Bo~+lH`CeuT8x6y z0@|5~?wL?#fmjlwW6@}&2L>|=_A)uGGsg>ySalGL%;-0ji=|1m*5$o2ur=8W^p6!S zD`#yJqI_&Ql>*mSdDi8dbAW9$cVUX$WIV~6T~C8N5yzl<K1aFeH+q&_vock6@o^IN z;i}*#Oi-z98t=`4Q0a&OMIH$im$HogPsXauClTl58W4^o%5YNjnlxEFe?y;^RDSp~ zc+T~!n>u-fM`0E*Yzw#=rg#zAS5k=oQPH;JUZ27Tn+LjMNb@Qc2k&u=S?4*y;T|!@ zW_dL(yC+(cD03)cE4&vhDeX6@^2r5CyO%;}5bH7*G#I-X)O}WownTR<^my$gWXB3E zbiF*<w2KTtm7RTf*<IIRc7bagHXl_BM1w`S_0_7kI9{HP#`6-F6elR;)QlW2fB&f} zqn})$_S|Jn=KzrWi49Z1#qKG72-obEl{wONj(kLujJ}X60W$?!2*#8eR+utT0`ZQ~ zDk7?H#2C>V2x&IndA{(d?@H|=yjoSow`d=?$)KYAo_s4M^%%jB_W8g42zYX35FHK} zJ9*Zsq_VeLO&|t!vVEGEZ0n>G2Y1DU9x=<(E*>nZB{=T$^?6LVJ$TBzi3LBRDum1- zCo3r-4;<i`Z+ur?DLa|9SAPEZw|c_jOrDjk4Ag!Vx*XSj+SCo{*zo*8#lsHV9e%Jy z{MRnMpAOYkp2#wHpXBXkny1>)hZ1d{)}LR*7yHlGj;nHjBYrn(U`ByuR~h@f$NO?s zyz;|`n!PPf-9I&YaPblxWF1m}kIlN3*^n8k{uvz|-B(;v9ScaB;9TtaSoY}VmB*?X zY?^hTfDS{JeuRY6R=r5O-3*4j-fjA;^m^JU5<3V2o04B0@U3wa5PC0=-Yd|D92dh9 z9>oTY67fd{+r>T&+5Xj)J~swC9HJh?@7mKa@4L=YrzM9rX1<Rz)_&aO?X{`sz}&TX zv&E0Q13LotRk*I!9~0hMcCinwLN2zBdwhFgzirbE*95I^C#;R}JfCoG5y{i<CitRI z%G(QS&wqE<X^sD$?q9}s$92y>Ten%LnjW2oP6)eD`1H<(7OLB)$9{Qk@);DvVeuW~ zJzK-RO5(g0_^I;LP(vz5KL4`xeuV9(9zLYj)W7P}xtX53{XxD4=aPaQt_(z35|@Tg z2oC9}SiJ2*4pfI<UNTvr<fLQ^9;Oy?W2<VOy2P7nEz;0$seS@2T^nLL4sPehR$Quy zKNA*<zSFLrjB3m^CFSBhh1EKjK;F;LcZI0xLagad^x~ZE6+#8L$`JBYI~3|XSD-K< z2n(at*K$HqVA#8c<YV5+jUUAG3rsUVdp<jMsOV&G%VR?egxW3<s1_|ty*VuMZkCjI z6x}gcH{HUX`q_MD{K49syk)It+qfIZ!rX>~-51=7I7g>jOzb`!*AI$qlVIq(@|3J! zcpPGJ)4l}XA5Om14eO3piN+k?G~94)d3X34<e)jf{AC6$;w_q#X_(ik)0VRIN!JV| zTH$1Uf;16<U7>0BY1_dYO9({{RVE!nRX|5fTl5W~^`%nN_3`QAqBGEWP%*=ijl-LT zBFSPC*n<V1Wa9b#nAH<qeGxNnWva&>8fGRg-h6o`GFfIa!a~#f@#qZuxsj(W)nTS^ zh5F)tW6Eg8&-pug0<(Ykn+~x&bn77Of^ygU4Ret!GmtNq449xzwvQxkQs+p%j2}F5 z%rlxVM3xVawe_sy@V9&vhjK1i;E-cXftKh|iBg|aOxu&U0JhgDi=UHP502C1z4c;H z5QOL5DN~=|@ri8xg1Xa)V2F;+J^}!Fo0nr#RIEw_EZNs{EbM_$W2mdP)9uSDo93_Z z$-5-5)_H$Gy-=Jby)t-(NFgz_L*;%$MLSbVQa_{Iokj1X)VGOXM0<56x+XMFv>26J z%T-+oaek=UVte>}JSH!ei7E=hzLuT6qBxKlWchGLwcJH#&S6KhwXiiokSE{M>fF@o z($?xa(CRkYy5wuCJG_lfY-3Q`nD%WRtTt9?n`eBRS6Z95u#H{P=2P9~+tjwSt<7(s z&408l;A>kTyq!aA52CaO+qZ|X+CxLz!{Xb+)7qB_+apTaBdgn^n%bAQwMP%MuNZA# z`L%r&yn{>Zh@o`E+IPgUI^sh+R>yZFq;(_;JCaH|)>L<_ZR%Lp){#8Wv3|5;!`F_D z@Xi!sXDX$0lYQrAR%cph=a%@+^t8^c!p@A6&dlo0ZB3oq+d6j)bnYDO-1W6{H@u5S z?BY|p1omB7tS(__S9W|?PFh#4uuD|Zl~>)B-_$j?r>$%6K-a#}uKi!T3gF#hVs{~> zyU4z~nAKep+I=9t`(Rr4Az^oEN%!IE?y{!tBW>N~1KmeQyN`YCJ`TSnA>OK>+^V#{ zRmHkh9eV3T{H>a_TeZSlbtSh>R^K|+bnA56t@?pm4WqZte7$uRep^bs-AK88j<|HO zUGc9d-NZ~#HqVaXLD(>37a1eJ{MGWP3+i&U=JonwQ=MXHTT4?K^M}}0zx(#e&-lf{ z+f<7?Mv-?+(0&IZWF@73dOvPjq3tg>-+6CBJXm+9c-oJ)&d<F2j!LSHZk}I~?p^A3 z`Q5L$M-;cgHsZkhJI6wFwIQ~T@0>HPXBcE@KX)a}6$IgzGH(yHG<Mb#Rx!>Tj;J*D zTL6aK8Ay{q7{xY?&R=%&uIKrsb5ZKWcpj6E(n^A;vBfX1N_XPw<dnNnRXs0g*e@|; z6JY~9b!j5=gbo;3Ako9}+zTSIOi*{DhHxno_=zV?y?rgZE)bkpMW`bnlU#<-$G(gB z8)yqZJBoDPA|Mk2qtep^nJG46vBL~MOsWTw+TGAq)dKk|jGf%NnXo+3JZ{CRO@NDs z2&pJFP(Wr%iU>508l?66ME0Ruy6yMf3#Q%BIvOR@JWWvhW9wlfPT!aMqg$Q$s*XY{ zj3!#A#REiQn4-uCmC$Bn!MNcUC-@wM2P@#_V4mdY%B;sqg3>2N6q-s}X~lj{?zTFl zKgioCMduTOfAfii2)BY}KHa~mn740<dY&bbry;3LCIGbHKH!_B?`7fb)8(0w2gzw< z2x*`N1l9m1$lk0?bX1}YDP#-cKpr*4#Mv76g(Y&h3xi1Ez7e6;=Zqp~d$&)b9BH`$ zq(zFz#)q*FP>y|zTXYX*AQwgCQNV!{m92T*mnj)lcK&((rI5N(l>%;dpK9J>$qh$_ zNM*|fOkSY#ZB=h7(k_XwC4m%hC=ilLG)*nAE=<S~u4~X&_!Yb$^3wK&XGdm5^cquW z$JPzH7Bus;lT_w7b^V_+d)Rh}Gvtdj$2?8N!;*}Mg>)1R54bs^i`N9clmwL|36Dpi zSIV-*Za2M|LH_5(3;dP^gM#&YEIrHad?NrWN8rNd@a0<^k8&T>rIannIP&2!ywnYy z?qGNZhavRBepM7sM^icC@{(r$rS3<9wZt8*kAWR>^p)HbK7v$wwqEni;}?SU*~mzg zX-`n?%o^Df8*Jz#%1$+ckx7D3a~wckrp+TUK+z6^;G5ykh<o;Us?fiQBDgA$L4<~L zzgU_0FXO2L{Cyl#2yI}sr?R9n{Id*pn71#K<nkOJYKVH===RiKJx?QLA5q~_t4ZA8 zkUeKKeKIrh;=xk5hB#|uh7jqnVi6uFQ>Q{W*#V`HkE%ITc3xCib~z+ZKl{N<eF$WN zzY#!q+VYodSJ{F>n^+z$f@T%>W^W^9YbhRHnuTaBk2J@*LmWeNbXqos<et3{^{QEg z#KC58a^qItzXnBS@^Yi=Ac9x>HjE2zh>;sLfi3ix_Fqt$<2_<_E=DC6Mg-Cv?^7go zT8Gt7<%w#RXKx%2&@P1(k#n&xAkVHVcF+;YJVZ7oPpd2R_tSdS3B3X^NSMMy4)TL+ z(Wx<zR5_qQgJ`Aj=S>4Oq(GE_`+OR>w;Do_E(~&s*5(ammjP$jKv1?$bIzL~+(I5w zqGy=GPo918s&`M(NQtV5JX614g4Z|>J*8F3-=}y%xu|{`7*6@=pS7Zdbw<AOO^Zt; zk-Vp;RnHdDuEmS01a8GUu=EJGFRw%Uy?k3Bi8=gpi`v7r9=mk|{Iq&rslQ_1Fc?qv z2)VezB~_}mebhIq9GU46aqX2;_v+4Pub%GhJG05|(Vf_CiT}I$=jkUjD0j}!OLG7( z-$>a*i?3Pzb8vM+`s?@_)uh)=;Z=7NrV>8T1MZf*hA{4!qMA0Dfm*Pl<dr>N)=JaN z{ABDq$*E&oRqni}_+>sc+qOVE9Xsx)D_q0_Z!}S791}Z2<4L1TV(3z*<u4M?H;wP< z7~lJFeBbNw{Zr!wDsRMEZwk%c6fJs_OQG`ux{sy$9@P>0Y#1*K<ufE}Aa%D-{Ig?- z88E2S0n$+x>2xV|fY^lsIGT@Crj>PxEAn%#43{LcgLv|Moq56R(nez##tMEcVlYV2 znPp<P^8NQuKo@AR&^GNPGrn^-^w$p;i*pI>yVQOf^zzmsP(`|_7)NQ|h=2L)CLLin zC&6>qf(8ugWQlP&M(05OhesQaxAQIhroMbHc<H{Iq)T%oiMg%2nIk`1rMbeKhEUy$ zZoDCx`*~zck|ytg0<zO(v9o4|>;#~xr*;Iv@00kc{1gUwjYpEQVMa?AeT|NCSl96H zqL07n&Zf%25tJea0P4ANaKut$gq)8e9E<2miD}7&&SUOiGqc<BP(Ddb8PGT;#+>c= zb$kNI)+Dpi%N>g#h<zq*Qv~iN&pQV+=6-xh?62hI8*ZK1>;pZ(+i!!MdTJqg2~n>L z=W!iVMtgQcHIkp`q@KX=mo-k^uCQS}5;C(V?R;9QfSS3Ph7%Lg`^%+s!&C1r74SO* zBzozG+G3+{6?<L%=_pzya2+{38)wDwe0qNFwc+%oPr&2jhmeL5RwOuVrw1<3l{;yk zefOx%+5xIqzNGeCqAKwD$qB|Klt2BS(`l|8F%HmIj`$gXC{3~v3wg@qKtp?ZudpQ- z8CcF^2N`?jTh3p}Vz)^0_n|GyNfoIh5Os>V;8!P)>74@&U80;<3cA#kY$y?b<_2cZ zVQ1F85s!Lj&w^7fdCGasv(=m-q(}%k1l=m=heI$}UX_*x{HSHg%K#8(ZaY4<F?l&8 z!GiLhq<9&+J7ezKpApN2>*qeJ-r~vm%8XK|)((Y17{+Rep=VcV3uO0C?5HFuT!vAZ z$+7Lt)Do&R{)AU&G#kTP2x?Q-vsXXc!!+_4ws+LeEpF*XW+ML~qyInY>;Ij5lF|}7 z099#;56ZdMr_!<+S#W|SC8KgEFZ*wrWTA0hKG7)Fk6k&^kxg8%%P)i1k`F@l_W$Z6 z#ry7?_jA_jGStj(uW4A)K;-A+^xf7AiySK|V{h_ju}Sm`&^G`4B?$dN%H+t+)3ck> zSb2Rf>AQdVh9AfXrHArkEOcfqq{pA`gf1`^PTza!zH5on!=+oZd6(0QJC3XgmSHsG zv|m_fDqh}zIl;G;=uEXL4ZyPn%Sz+BHAqzZ9IMNAaxj{~etsxz(o0isI+z_36&pk_ z^TO_!3B9zDzbpT@;SJ98hT-dZf0||dm>k8y{?W^j3cLV7Ku>9b4N40*rZOe+EEL)} zTEy{W<ft-Sg&7<eI$zbnuPrIXq_Y6}i%%R69PP^1L0OL0O~!PK!DTJ>mpNwcLLGP= zI9SojEH(<|Dc;;CsR_yOw645~;g%CdZo%;>#L=GOi1WtwF|m|Kh5xL&`j4~oKRx&> z{q=wJ;O|8LAN}G#{>T46UZn$E0%(A%(j}C+!+*O=$@wI#Wpu;@3rG61C{Q*CG#=xU zrrZd~azfUqNZ)C4zkV_Gdqi6X$Hcn;#yI8}LlfRTLWZlgNSHFuQrhYs_>~YvV740{ zW8gedM^|%p(OK>E;AB6;?r?x9YKu7Zc&PlhUxveJZ-n#0b4{m=D;7XfGf)|=zB#s8 zOWl^Rw-2mY4yncFr{rwy^+c$`iM<mKBr&Jy+JbA2Ed-;2f>y6^M<?^33rE}nYEG^u zL9-8g*y&r7kPH{t0-|3-*_V+HxT&IM#nlPV2AjmJj~|W*!=d^Vu|e0748Quw#4-Tq zHq&#c#~oYQ<u?57)ni2Y9LeX#FZPJP!^Rpk)AQT+2Vpw3=tZtO$`U^BslDm2BS|67 z>sXZmQE}j=BQ_kA>@KwKQe=U)C86;IeBuL7J%_rLN!qW)WDYHP@Tn*KT8u1@T2nWi z2Xu`Y<sG1N5OCXm$GCltPat%Z@k1}VDI5e~7=5)oL7_7A#tGp&@Dyb-eiKFLuEo>m zge;kk6CcYgG0pPd6iH5j?tHWAK-a!ZXa=-Y_r*bYngw`xJycd*oElE$A)6m`$D4*f z88{9Y?Wl|M&YDuGm3;eVBCY^PQO7sO7<a}+><{M2J)O&FV0xRpTYdr=B#Wz!=bxfV zQi~)(e5*9E?{W08U`+h!v!^-%#8E73UAn&(M+U<v^LK&Yzm!@wbB?#XAp>`-PZb<c zqwxrX30AzS+gM^!`2AB;0F{><^zrg?R+q9Y9c48i_+%?9pzlAmRE!DA0R*+?tVpr@ zR11894j6$_@BKA)6Nn<i_q0^)9Vxvv8XA;&*Q38hG<ImJ(iyD=BM1Il%alKL!!*EA z>7=v&c2b7G9B)VzbB2_A*ejHnoyuv=Ru7~<bEJ)ULiFLzqwI6lGOV#fS@hu|E?a1c zs9~o<;kR>57+QCn?8f{>8o{T&T1*@SnAY&-!(sBr_xKp$#rZmKC2Fe!x8m<^`(pB_ ze&x;IYE}nLAD=V3S7~}O{X@sa4MypMdf&;prCT1S)4RcqE3?d}0%mU)E{JK!CF=#a zX4J3h5RsQ2`{j^$_W;T8Y|}H%55t#Y-A4xeE;qfoUl*cGaCcsRN0modXtp!Tz7uMG zwSSQhee_MBLEtjMc;J@L50!0>G$4nMGw|lj2~TUC$^0w>TFH`K!7jIXz<+h6{hvbI z-+-k9^a6&;BI`fv*+;DGXG@Y}4Nx`g7-@_LAFE+Tl+r5OMVbrsgms0+t@{zkbk|g9 zb+>>Lc<P#tBqmF2Ja5~RN@2oL>*X7U@0=VpV<?qYqF6X%VII+(&ZET$vM{w~Ryehw z{<vIFC8Un_BahCn!kV(F93CvU7y&PzW`jZio&6S|&C^_sEYxv^*9k~+7$O>tl08wj z?EuLgp(l%EvQ<q`)O;$P1XlqLfTZ3apgmk1j37?5)zVQU%v%zVE}85;18oA{&Li;! z&{dYXU7~OYXa{E6f+Ug04KzVFbv^Xsy}TumB2uUl&&?CNW{+vx--hHE8bGClHLfHX zElH5()U;^)-tk+3SR?Sx#~WM&XxIfp{qdt*zdZ+l;9MRr86xtS`xS@hBFM{Rkm1X< zB(|l5OUCF&I~FnsZ<le>36@<vrH~V;B>l_Rt)<HiwFYALz<1JNd$Btel^*}x-Tqjg z1k6)f|03YR{cC-KxtcPX_6pH_H3Vs|5<9o%>)0tPF&e8n3vik|R)ujDem@T*RMb^c zx<m+gO3IJm7*hy5JXXK?GXVl|*4DdX!5ix+Rm;MF-Gy~+WvV;1xOz5;%sN$7-gpLK z4GX{AWmmpV1xa+;V0XCvlL0GFH3~h4!+*%VSs9D&aqHs`xfifBT}f=sbqo_Y&g$3g zzJV6!9Hd>m?4A)jx75Gft)hZ7lK;=4{6`NnRE|;euZNZWS&Y<)Hnadmz}weJEB;+= z(m3p4x&_>j*TwWi;-SjJw_Jc=<-lChGBSEA>6!}=DZI-?u@EA3UBDleFdo#>R0~A; z-e%{+jVoCwSzYT1Xzp+_dq~hyy}-Sl$XP>0@{N_~x=b9%mtu~hbWSS^5jcd|ALkv@ zKhia6@*4f5OT*7@#KV?HH##K0{C`?0|1bA^iV{E)|Gl=9hli9FAzgDmT%yw@9YSkD zL#iG7q?PS^bnI5D@%clreNY!cy(7T!5b0eiC31Ll6kd-^qD$a1q}seiDEkN;Ln&+k z05V=kEpSX5!WK*UFcmD+B9<bfLvz*jt9&(4&=YhOqNpYbw}pf*Ri8BgmmZWvHfd^b zQWP>QufhCccs$sax8mA1<P@QIp`gka?tD$Syz!-biyE={eM&lsRrgze?%m>Pp70iw zu8Ja09ACr#J<a#Dic%<c|Bg+3ZT>y^MNZl3jUSbe{DVvyl9)hJ$RIEGB3o)^&%ER# z@uE}gmA{PED|OB^=jd0m*g44Z5YK5D{bd})3Z7A5_1!dG3D?WlTc;p$G_87U2gi0S z*#hw-+Hf$Nf@lWpt<T84q%SL~p`I({+{d1m)ZtLnt`Y|h{U71X6i_ISWq%GSe^3aq z?gSkRF`%hMcX7B7A$p!|lbu2i)3LDijcx{HFbIh*0~%AwFbqDb9!0JgZGq{8#&X7k zx$Y_&6e@>PET>~^%hf^~Kg(phY$ifag(z6L1alq3@kfF5Fa%r+r2wI)WOWAcne9$; z{;ixK#NH3z3oKzstKfR^_}Py)ug*>zNO<yf9#^5i5f7KjKQS-z=YFhvy74%mwt1fA z>)KM~vE`t<aQbK9r)#^mYaT=OReWXc7Ha%@x>b>dDLT=L9Z)^Yzp>kVvA6x@?^%G- zd`?=;+sPmanoo?8YNSOS+B8}oBNhmNN_-fY{dtSxOZMP}EWF5>O`0kjzrWNzhB-^0 zdi!tu{x`V)%K^>*Z6@Uj298lKJ*;ag^M5bBN>3NmJf<HF1oAW~Y*g}KMLd!p=7@ny zjH}rYia)--AAsc$Q68B2J~SRrb#Vwvvo3_*O`yT)g`|pCLHppk_)!uBo>z-LfeoFY z^Ov20Wm={&FV1H)qBRvKLy+Kd`T<l5Z5y5pLntR}(2D*^<uKd^HNKS#%fV8)DKbge zkUIpavxC>zV%B;H{S)m<m!HFEnlsC2{N9&0cMDzYuKC5<w{+H_?N++kSGYs!X4j}N z<|Q%*e+$0H$>{WVebwk=zZ0Du-FrG$5Z*s})&%UnXCaiiP5@h8*Tj8VAIB+C@D+2@ zhs_r7<Pb6XUadR$X;G=F(UKgI`*Fedoy5_t2e_!r&c{l%i7y%|L@@wUdA2@X0_f@g zDMfE4RsaWfN};F^A3RDiR>_AnLrEDafSTdJ2~M0QpER=9HY&a^(Q$bEzd5SDGWhBL zMIwLUGF2>O;Nb)e?N1cUMrbhgyEweoJRRi9J6$$It$9W+0rg2i)g400K6pg;xf8sD zR;rHAs2sip-xp4Od~&mS;4x@eub)or>-H*hdYxiAkH@Ptv(o})F>69a2Le`x4Ss#| zFi)w+JX<F14?PDS#Z0v2T0RMc_5_4l+OCThpitNkUF3?R05QKOz6_VuF4sM;MJMx= z;yc>{#ckt6uT>(fxrcDMT?MoWdQ=<+VFI<z%50J#Ye~<+0bg#_%6h4N2Q=hWfGNoI zV1n~bo#ODJ2(=2YKs9$hLx6dSX|VKLVkhJcEj#&X-zm4zhaZ#V#dD?=Es~%ti(p5; zg++q+s#o{V29lKwi5kUO$6kJOF6`&bhet-c(aO$Te3W4q-F=ou>)<0}Nuk>e(m<l+ zQBKiNP6<k;aJSK^9J0`<^RCE#RB;YOzqv48;ZDQQAqYy(A#pxoc0?oV_n?wV^l9`4 z_k%ya+$(f8Bz0p*JgIge+CXAbH21YQYkR;pbD#w7lNayqJsD@j#H2d)Lb$=YuOY<2 zMWd{wQ<1Bc(m+zdmW@oxiNas{nLG_O8rS?V?65^I#A|9Z-E~esr3+*9>~hP#l;5oy zM}j|ofv8y3OLR*#o@dHV5bI^UC3DksIYWqHje2jzB>Bpb6pr`}q&~Q;7c*Tr!9blb zkQP*q?mPvaReA1Xh(bp9C1l1&Ay%)k<j@K$1}khkF2?Z~Dmu?{u3GQkfURyZ8&4N} zyz+KKbKaFBs9p-In$JCoF-roN*^hJwAgIp1{~jgHfe9s*^M{%Hu8fkT)L|hVPk~!T zi$I~AkJh#g<x9DYJiL;@Ny1gNz=+bOH6uaBFvvocprWQc{3#6$o2fWDq!oj&^TmvR z4^(n>xTRCi(0G`onwg)z+Limq-NoL;3pB?AEAGRJlIj5d=T%|Zv%I7<YU+3Z|5wtc z=&lf1@9w#2{x#G?>*!0fGaur3oXVTcZW`CPDT?ZsyJxX&KesACb%+&nzALCrd9~AO ziBMEeYlB=SE}`{)zlY4`<287{q=J@LFh9hL_ooH&8*N~mD#b)`i*KfvfP7BjhM4<e zTw*{lgr@@PIhV8L-&i6gQKRxNmgjFMBq?`{e~~%=I=6BpIRa=P)s+v%<magBE+Y0S z*E^^|_ARH<JiUY%r+j^%bMYPsSXi>XlQbV7SVdy$SR^4&Y^yq4qFXt3H`@v6rDjQL z?<qGdPzfvhLPg`DHiOaKC5roXWGw+(=e!~eLZPOOOJlO~&YQ7z?R364|49?!DN1bh z9nf;xgm`_Fx+di14YegYl>=`+nL%{G1WhRuK;e-y1`=tDi6~3|k>Rwtf~S(5=znJL z{k@l?jnHMhLD@xEOJ6x+TL%#4unu3Rx_`=Cvg%E@HfM#ajTR#R5i&!Sx?V49;z)bJ zyBB^F$K!pBPGN-xSC7+oIZ=~Dfd)=flb?!hs9#0Te!A~|{_{f|J$BYxFo2lIx<?1Z zFg2YA59r<M#Cz_=73W$)MqWL7?Ea-<QtqKXX(B^HX_9;HYV@MPKoWn8EPh`Q-C#Ax z#-Sr0T8?Ye<?fZsmduK!Euk<>Z#VsDa<C4}k6v^XL*N5U<np5_S{{pbaS5R?#6KuF zV_+E20xbXcKE;(~W6e>P(QFPAnFAu2kr~D@ZF@8qDq%1V(J9hj@@I0YyNjty6NtSK z*wTDW>yD;r8Vd!{LUs@xi)&TXNeRlXV6kRsyj3>FbZv={?vyOKxTcD;AE<RyYB)8W zB%BB+TI4hN#E10oFvBGcAafD-2_$x1^Qo!v<?5EfC`Sb&+f#G%vH?>@$q+={o1iL7 z3FXFQ|DH15aIJK5B>Oj(6Txt@=`Y93eRGjCXN?^Y|NL?Lny#kG#S$BhX#Xb{BI{M> zJhiAZJc=HfX!oo0&kWG1j{6#<MxS?IsrW*WK0fo}HMBDE)1!?>S*L|(JvRLAEO5+% zd17f1sq^f9z&`(8<K-Eby>z0~JH&Bf<4efQVr!O)?)J}{0YV~8Qs7RcPcm51CuKaP zLJJp#nBAHCl+FmNW?*PMaSKN6z1<V!JTH4~G^uXcihS@S>Cj#)At%n~*budx{!jRB zqKp;)Lg{}IRmN}|U5TjlqcfxmIaaCVo2I1tJo52&c>BQ`e=jFPYu{=Ly$J9<3QvA3 z3<gj+mZ9YlWCA>oxF|#nikaMeB9@^;<O(YD4?%N&w^5a>_)#X=%(^*kT(%o&FLs1f zdgPuoKV{qI%cyA;kai_}9b0&slZ9xVD)~cpst{>Z*6pvSZthC|{Bh^wWs(&ap-*Dz z7mPPV=Oll?jCa!e!#l$fzvm5Zw7aPvxNsd&`k3ZkTcDe6)^K^%&7IKn$?|vKjof!b zbw{}=Ku5p@cI5H>=CYGK&2t(8-TO1Vg6^L>w18bHrdjuM;Lm!;7UotQ9cVCQrsS8m z@OMkMo)PQZU#xT>o%ipyl3tI0w`6l^1>f7Y@B36JHuC4LzR2OBR)!DK(JGF5S?a+^ zu22I*tPuV$&;A>BjDfF8&;A2cr~Uxd!Gu2yD#6kZ#U$lrs|MBq6~pkhJrqNXnBAv9 z??G#Dl2F4YY6T?RZ^C6JAj+X?pQ+~HhB~u<!=-l|X(w8C&&?Qg)qRHFIsSVFJ<+*o zr2WJkd?wBpdZ4`uQ@d8v(x+X?8yuP$Ig|yxR~vk2l91VGG<a!t%7!%bMKQ4Z*QU4g zH}T{$q6L1~ZKB60%NUx3O0ocGEsbhwLDQECTFg4Y>|ju))Q7-Wg(eZlADr%i8QPai zQh4WhdrLL8x&25*WbI^ntojv!gRfILa?kP?HHe2f%knm-^ypi$Uf=24AlyZ;{`MC2 zZ!r4z{A319E6L<PyU{kKDI##pfAytjWpMrrjJD^^*(TUG|M4EQ-PF_4iMY1iT65pd zchLb*1?jwGuX%4LU7)rQGipAO)hbX~9!x4cUkhkL{Y$|KeqCUe5o!U2Z&z{WBx+gG z3jWY3MkQCyRGXJRKe966p7THNIsW5$_0M<y>prUx@IjFphuhG9RIOQ5kSxklHCeQm zU8wAWM$pu&FSQ|~Kz)zk_Zc=Z9=lPq6)YX52`k%j*@9;gL1rpKdy|=;hbC%x<*FJa zSDA#&5q<)-oIC{zc@=J_*ZXC-tb7p@QJQgBd>YV18Xb#h1d~}=Tt=C2?F1>W3Htcr z`qLMOpItWnbn))#N9$VtKRTuwD+f$edMSYFS58bQnVSvZp#(j@E-@L6H;0##nx!$V zFruNrkpa!|+%tzw;-Q9zI&*$AgE`7Z3!b}w(|q@i+Ya4SZsw)+78A#B?t*$w+Lsm$ zLBP7GD_<WG#vneL?!V(453Isste9f<(5AJ%yMNI(ym|uG0_SIEW}kN2nYy1><LPrH zUsn%iK)Gu8=2(RMkduXegcaZ+x?$cLyIK;cq(7k%*uDD15saDuZS?ClCmW*!s@e`7 z`T|SbqY+jvb3N38JO=a0*cEZfZ2c3pfBN75&4dFG4W(-WD3)^k`i{yQFHJZB8&8r+ znEY8dYe(tCsuoRis&e<S=`@6p=?T>tT!e~PZ`LioD~N|CSjTN*QO}#AbM-ea`KOC1 zuZ|$<e_y=x?~9d~A5?;WAchme#8ZMDDLSc@9?DzK+4GKtLd<@wkE5#%SjjAc;xM37 ziYKFFKH^GRGc%h}Vxl`dn$!aCQg-|N$MwvA9MS*u;6HL0|M9`!0QMhW^)KqmMQOD; zAh29XT`AYBnIDQ6A&p_=K%LWggA?4AY?#3!AvLJV3s3UNn2*{t+9fvjKWLvhA@Rvo zvV$N{R4G5WFtA9PDfLix^2x#&V5(6$hupqDD{L)!(_h1R^<GXQypd!(p|O}Xn(H1m zSOu>9HiJ+0ZH&LYDa?u5*0y(T>o$rFyYg;f!m9puI+O8`koh=voL1TY=z<BP7}eJc zzy-b-Q8bzR?qx#?f>LJ;@OjX^7mhign_((CSSMAPxKi?}{De&%-7Pp9&^)`!@<ryn z*K`n#G{{yz7=skF1`cAEL@yr1lEa0-=WvoJyTxuhT<z;vpwWx#$hqg6w^qsO#_!)& z849kVYub)<?p^4PKwTn*HhtgsdG_`mJGAtrSENIU7|>OZka%BYR4W8eO$YUa#PDVV zVa?%XPX(6o)8h47i--!rBh6A+wiESGF?6GjVt5a&W84^s#3_6<K{~H$zteCtqG0(T z1Q40wIA{o5)(cUiN@NraStf%Z$wE>!W{pEUr6_DkC?^Sq)(y#o<0jCD)NzrVUCf6O zJ`i|{q{b_`-?7$XIUbA(Sid%R?C`czj|%|edkgvzCtY-HIo!aU=MMjnH@-CUW2Sz! z-Zvi$37MB+QF9t+zou|w$D21**q{{ZzC6Q|iM~}12Zaz4P!d6@l{$}V)I<RixzHrc zw>TR9!IG|~afej{v>1oiH?Ep2X`v@*ad^<d*gbF0%t@T<0PVf(UItXxNd^Qs#;~ra z?ReLVQqxb7FV)~dQKaPxRki_~*hY8$&60E;xwxcG215Yc^(~L4S_2tkTkd+fOskFI zQIYqw7jic;qXhyF3QrcTd7^dN=bzZ-fAZnK&aDshEBEHbe|`85K{wnc%R*^r`B78I zt+`lDE&FL{EK5MJimJ{C8ex$1LrL$)gJcHo`pzZMd4<Ne_bpgudxuIe?k-c`I9#2# zxw@y!6(^wUkoa_KAg6}S;EbRN$kRHW%}po0uo^aXq2rAnxu8{?*<Nb!NVv!&^4L-I zun?m>m2r1Ahns*9Ps<s|)8d%uy*m*%?&@aL49eX3h98eKOGnOZf$iS;r{U!R@Dv^7 zc#;P45gh#-ek^Q_hWgUq1{NUv{%u30@M&Xn0_5^)*fPC{pRddx?=X0YeUq{EZOhHX zRXxuy^{2d6)1X?=D;Iw%{eABIFUn_0`oWHvJz9x6XO9CctBvO=plbz2lV*7Fri@1V zuL}f2B|c1r)co62B!+ReoM;}P@5<)<FU_FFzg*_OnQD^9Ux@A@P-2{jB(V@vOpCi! z?sLB8?h(h$Z=ZFauf2Et&vN%|s_Uy_7pJSy8u@?@%!hi^_rj?MrwNymgMt&+Ejzos zDfx}%#A=WFKfOVZ6a#y~`AX#~+@UNCQ9ppLIZ@Q`@+J?qS&jTxGsv`(PL{%AAb1Lq zDuZ|o-!8S&Uhyn~r_z;U38}09bEUG_B`qa`Og{ie8&c_iG=mCG8Q5}SkqiKFexs^U zK)Fl=h0mXRw@guph3?2(dVJRvfVu>Mn)}&Vz}u?S3^Jd42t_djfa=V*FJpl~Hh8-I z_VKe?bOSi*JrNvyF%&lgsFV_w%7)7j0Q9T5LZD{Y&VWSe4=RL2Xc&Omlr2HR-uY7w zFf?<hm28SKc|8ps4j&fHznIYn!^+2p_uB6o6#`!R5`~BDz<Aug0|O9|cuT0VHUT$F z2GOKn<MG+&7)>udgWcA=5}2dJVoc<=^#9OWxWi(sJni9{v7;HUPmUeiG4*EbI8ViL zTq4w3J6<6&J2hUpchTGNDzTU4n`&iu`8Ox-^Xs4tvr?(Ch*T$SS-SJUw%`NSVTX?Z zRtq9mvl^V|i0?cS(f=1$@8QjM{QmtX@9bEK89RtQ8hdME)Yee7x?<F(vFXr=t!V7o zHdIlRP>QzNSS>Azs?r&XYIV@6(&gv#`Q6`hf6x5~<Rm%geUjJfc|ESjGk}T4$G)fw zZ4Pt~a~Fuq3Gu0n{uqM3CC~H83a@A1?5@UD3-#X^{<UUxv!f~8`o0!H1DXFLXR7T! z+O*}cG<9-s8EBdIP()_)uqeuS$<>;N_i%_7S*rkKB^gvVInZ?dwux&CvVr=k3y75f zII2uJ+tw!ow>1x}T&@yEI<di4Jis|Rm`8)u8Pez2az_wl^9r2Ct^(u`Lij&xL${&o zM->N0{mw)+UDA0Kf{0-IGK7SxDB9NZ9>whs4q%rCrDea{44`G$+&Q$Ibrs`|Q*4ep zT=PBY+cVjjm(bCO&IPvyxG#p`xRychN5fR_7NTUzcQKaF2`yDk?PqVW8U1)RCvr+7 zR}KMJHOdgYr#kX^+9Cc<F=HC|BmLR$sNrwD8B6<fnP@x@_luxL8vdb7k{z#AU(ogf z;+fMY?JU`lPI|Y%nK^!2o`?~-%+HQUkR`VNeZdggX=&=fy5r0j#9H#fubF#2Cg{O2 z84mLyZu3onRo_52$#O~+FKzkQAG-g~^91PI1D&D50%yKmdh7dJMA55X`UN-BfS3_$ ztu6g=eJjP>t{)mf8AMZQ2;;E{0a0ODoL6b46vqh`I{19Ej>9l`rGZMK0-GiycNdI( z1p<Tn#Whr{jLnw$sf|_W37RhcRSF+In8CMO1%iWx<<jw4)ORw7H1p0H*xNf5!XqHY z>0@A+LOA&gm11c?(oR=v#Jex0b66^q34~xO_H22oNF4_uzB$<EHfg|rni8V?*y_=0 zqOK^lCRJCj`VO4~{l39LNQaYoO-2~P@u9q-7#ta0k*X`a4-tS%wF))R6=KU3>JEW0 zCMraY@{7mt+a$@>V9Vii++%Kd#SPB7Ip|wUt~t1Wh9Y)D>=hXu{>h!U5f0f;1fTGy zS)%jHAtl+5jybQpLpNZyIA(wRou~dnMMMZ!u^;wksb7ZCeMkA$9>~ASk_u3|iMTf% zA1zFh9HZ$O&lSLw8kII;yLU77it!BZGjq6d#KHa53nk99{<k#a;^irJ8NbxBbhll< ze?65qBJqU$yrSBMjSyoc&7U9tL0|OlR1)_Ug!guDCZQ8ApiQ(JpG`NQ_mg1}OlesE zWXe|&^5sA(8UHxrpwfshj7AxJy@ZE}sT9Cu%e^1pE@cGweM4)}c&*0m7}xu$F&Z>a z>`_`~l`Dncn6#h`<3jc4T&YuPC+4!mrk@TMq9lmmQOu6Eb+S+*kxSmF9qu0QBS8H} zAd+sAY2akdbUEDe!S^8y@njbA<q>k<0}|PJg(?uG(!XYwm|@DMGlCK&-M=y^HzI#1 zyYXCJ4`w6OcUi2I<dH$%5N4XG)Klo_Q8Lf*=XZJvxx8m^$DxNf4BuppgaLoBd=+Xg z(xeUcb?oyCqo4QIrcR}*(zW14w%(8ZO6e~zRLH{H5yo}C@Zs-o59|-S!!NJbyqgq3 zF={Z&49|fcC?VWZ6TFh5vbJB6TaBWuU*R`WzyH{BbXWtfo?I|4FdiUw)AA%x-9he| z5`0!)4=b4Z@Lc81ONc0Rt027M@sP|5?>Fvxz7Z(vV%%|0>&h8lV-15iK~ahG2alQ@ zUFOE!GKDNhdSjIg!$;)o%QM~SVC#D=O>+67Cz^cpq+gbgcp6_=CgF`P#SM)Tx3Y>A zEit@Q>h3AZm#_7_4;S~P?o7x>i(Zzz_TF3|CpVctHiVRT&r<T&WR^>3t=RbL0n=Yo z%>2$eW#<nLM}AG0XMkB(7$02Dm`v$Zyl${{{^(ZqYo^iVM?=MMnG}fpjBU}`XeGVo z^YYhh&qUXC1<TdJvHaQF{I}Sd&YzAHJ-Yw?dmKOg*r!0#-}964dTm8{+Cp_<YWMTA z8?TOkjyz*J_w;ytSKE!^@WFtWZ(X`?Kko}Ia=k-bF+km(|Bo~1$kc*|!OgFG&Y+v7 zZ-r2YPcQ;2qA&b@_0Oee;0_-x8w9Sx>48z`+~UNtfHyo(dLBf*rWNh5k(UdtWR))q zUnqjUliWSn`zYb_m((+_PF{A<h#5U6Tyzn-tp22TLS3^U;k<Y8){E+Qq(p@ND>9aZ z@5gb)-4pC<pg21X3<Y${_2U;_4Sdz^EoEYq_t1)b|IWlimo1y0ua?z+k%Y)!td#0l z-77Ku=oh3ewKx5|a@16D3O&VOiHueW{w@6g!zeI#e%x334@c!+T-k}cpO_cT?kOyO z7s-yUwm(4Lx!Y)mm>}WP)B15vYg)#g3$<(2^L`|bZIS#eV`cz3XC)s$`qJWk(9ik2 zBciEg%>J`qBnEFY=+k8yf=CMjf&bzQII)=6d*U#-FrpjLq&mJPRAFuxdj9v9FteW> zZlb&J{I{ybaULKIB=9T|&wMBF97XG~e2liY#I<nas2G;Sn26@=TJIBV%{kfrb8kH9 z|KQ2y3Lw%?9SID?>Ddu~rn)wlWHt#_qu4e2Thb^{VDpUZO;u@<eK?g|t>8NW(7~&T z%0YCE@@V9C%vE7X<pa3;p?y?5F)7F*J^`i#0?3qeXnlAphDf5po3u~c6H}a7NnSMA z;16E~mD6XK`g+P3U=<6UWB4>i?kkVircm6iVvXx8j9>>n=?60r2#T2b{$;IOR{ENB z@cH5+&rhCK-<vC1rNiE1Jm;|9J?Zq3h<&Tro?385IpmBSDAyJn1ooBKoywHj$V@TH z9yiEJ!}*cH*^+YE#dF!*14(MzVwKxjm%Va$5jnr=BkFr{o&;vs;&OZ+=5*MFx2}p^ zEyq?HUAR3LiCKtAiMr6yePJLttZPJ+lZaJgUKs4jEr3HRmG<4+78^xgkk`%|OU%2x zlI!Ckir);C{28iOkUL?NzvPv_l9<0*p8v5Y|I=Llm+ky@+{JH37dO2we(%ZqC!+ai zHR7F@koVR_kT?@CW<tH0@FXU(f{E^B^3F5)cbJ&$Y{95-hDU*DQUR`_K%%!mYQ8{b zrvNWrC~sUy@GewJDpU!PRJYXn6OEnyrnZnE`r6GOHK*rfRfO4<E7DcM(qb?nrG=XH z8X6x0P{BmQ>qWPfu~!&H_VWQcfkoyanEj|?oLqrAstCK`7qwC>s^IIGDr8Vma;c-l zy%#%P3zkzV_VV^aA1KwHEinx#rj8be8<(66!A9Q7yFC#4=;}#R0wSv2SkN#irYJX> zVqLAEd9K$UEG8{9AJns0&OfDkt^sbTuT6q$1{N5CveYjRi0#|Z{P*lcf;|>`_=GWL zpJ^%JEU2a{T<&LuS$r4&Rw%`MB+nFHiJ8)P6vL>W)(}R~i?3Vf3mKh^GMZQ{snMxC z_+9U@ccu0%N3C^mZz?R#KZSbISW8Y@W>Wujx*={I{9sp)oIr=2ohmB*9*~c%oIP+j z&sSWH<*EKn@cT|Re?K6@awyH#TVsHs*elZYSvXL&>bl|X=ur*MJ_7xUKzqn!lAs(> zf9#}T{igOtjHyf~6taZy=Uj5cn4-|s{-?+7@rY0+qPGMBCsT4~bfBAB8-qT;g2^oi z{Gp&`^dvMM0Y5xLUi3E&VP3&50lGt8HbJHV6dmD!{i^Hx6p*H2F+O(j8E>sf2AiyK z(VB*<7KC-+^ya>ZfYUq0N6A?p(X<SIZwp86z9g30+d;SlT?cePe@w_K6lA4Ijg@_B zpdW*<0ePx(tTeb*4GA#YIG8^hC?AFj><*ge3jv;Nb4r@kS0Un+XVAeeL`#vWG1EGf znVU2TZG)C?WnOz#d#&-EU|X?H;!VH{k5C~V)1`wCC?kTns@sI9=BIU;^MDpz55Q|f z7PO2xW?IY6nxwPF7)NdT!3ehBQ3-Q3x@!U(2%x3@vjkcPq2D^ML}P%OZmrTGef4+8 zH92s@r+^p}LFG8Xr{HNnwG`Q^bs<d<EO22n1>jyAFE)LrXZA*~S^J~gX%W5Vr@qS{ zz&-?o6bXLk&<RJbrzXfNvlG$kL4noj0PEl+j*FH8!jFFJNP@Z1@(ltFHv14b@C=Nx zJ{Q7uZ+H#}PM&q%WWU^vIRWXf+B)4P_yTZttCpyQ$b#TB{ILn$W?en!v6JisHdJZd z+=(RS#Dx;6@GGY;x4&=`3TqePfw<8<DpO4)W)pNfEkf}KdnS;8fmSLZ9P#JK%SJeQ z2a&7lLWA$An8IoL5$hdFGgq9~tYk@EN}Tq8P{4`7n7n>t0;Ur%Nmi%b`sZ!t(}_@F zQA(}J2bTbNmE}Kq#OyraMe1^6BW##df|b1)9+D0967KA#id4D&w3^f<ZFV3mSb(g< z@y#WucpOaa0of4)7;SbYVd|bfb?O)d_HP=Z&jf(1+f45euo7lDbaK^nL%+XS&XSq; zdn1|Mb#EFI>L=9bvS~hhy~BMCJXwOEals>KuS-9*H%n@_X9CNgLA$HYFFZ4g<Z)MF z!QC%(yoj;k`kY9ZG*yc2%dKmTs61j%1GikGgoU(8aZVq<%9<L`AMrC(uepixQWFyb zDi7eL@E|Ep$Jrop?!dr07y{K+3(&h#S9n9KU2MG8xJ)6FmgUgYF1U#z|1M+g+Yo(} zdQ!CoQ2ZY7R8sn1g8J2O#RU*!Wt{ZQX@a0CMrtpXV1YHlfJhIbYky@>RJfNx<>6r> z6sy+MKPbK>*c7GSJ7BBH0gk3>o&(GJ%nvPSH>l+lId>f8fAo-7$M2TT$h8i^v|TBA z6{8WCyCZtFJ^#{&y?IAP7e-3Yjta|<mgZj6SPX5;I9qG>sP5>a`m>K3s~<Jpebn;m zQR|;aY^lc`W{*3i9%rqN-tc&Q`|jgwPI)gg^EiJ(o@`@U;g#5=F|2r=0(NXHH$+;D zHZC}hKPucODl~p}ym)JDx^YZCW&90q$O|*<-Ht44*Ky*;`07~jf(G_oi||Ug;0LKE zS+^#(vLD-ROeo4d`6ZRNU0vll_2lv0C*ST)>|WdF|6$^llptU}scBe1Sf?!!5Is4Q z_x@mcq@Q#dB}+dR^J~)Iz&?D`p_aEjCC4Q;FX;Q}(nUUF#V$>Vn>&!!1vgT!T;9E! zC2FT8&!@TGFD6X_tZqu+s;9krrlqH*SF5K6p-^~=>rI7dTd}9J{uDgX>0qW;G6-5J z(sTPAf~=oB6GT#^V&;^w4}-A>{*K#4>@)uue`Q(c`^SV!AGN|K69PeT(9ZhrhKZFW za3!KcxMrK5^MtC3P|)XbyJM744p@n+<uIG%#(~6G*;AQ_n=y#}!f|V{2nz~8F-&m5 zh`AyVDww%`ySemp<KoBm*-$X~PiF=iY_taV9-@@i6`cb=ngp!iMkPm8IQl=V&JiA+ z_BWrKJ^Nz3dR99k!3LCa$?`0b3+RC$4<7>Z4RHU-c&BG3)7=PzkN&53hs&$%W~6*y zJ<Q7yteM)c2;%R7UK%zOva?JqGR=8vu(s)N^&y}|G-&&^Pf%KH%RZ;x`3)yLTXVsx zmj}@En)k;W=ouMW#KJO)OcOX%#~`>G2pT}s*M&lyt>L*Tji+)BMH6rA-9{ldGd)z^ zNXl{how%xOz?pDl1!5V^=6cneC(~e2`c9!7suK&@Vnt2{nLfz_7yZqMXoi0aASX5I zt4xG|Cl<%NF6_Q8b7qvDtGPKLucr7q)$7&pKI}N3LnYnd73KIVH;d(!@vx$?@`(<y zg5L56i)A|_<=?)EN6%J@xXy|ctUUM1jeme8r>ez@UvT~M{?1k8s&5E3^>}e-{A!lP zg;KlX20;zM?$Y@Vuq5fj2gbpG8;cUy4}(S@M8*P%^Q(s9*vg3y3O7s6x?pQp@@ntp ztcB;Y@-O^0T6_JxVl-nkc;n-I!&>2&ND>wI6c<|aDfH3hPh<B!O}zOu`R~)T%;y=4 z&$Gur&n16;aryJBd!OID`ON+Ic~Ry|8$9^6$|Kg;<B$B0yDyIl`#t$0BfRT{``_6o z5rhYy0LTBI+-?s6v(8MxlN#~lfwXKPWh0u`o{lyX!%t=!$#MNM`T50@^^hA^IfXb} z<lH*eFGm>a|3D*&#<I$iH>DdbtSeY$%Go2&j;=3HmZ_T55!wY89~DWRbol>sJFlCe zuOD?aKX0QRrf-*1_Sjt@*&=r&Whmz|-kE6qd&8e{5f^NExT)|YqKw%7v8%T<EvM8> zGoB*389c?YE7FQMy?7mzMcs3KkM-`kzK?5Di3J04aDz*w;h<mNph)H1mUZe}ZF(?R zo#nU6tr_MyaPFwt*<Qi+7q`zJ#7S?vT_5a=+OL(cEtg3!!ttv%f&DbC$3oP#c7u=` zz4Q-C8dk9Jdwsuut{eK#9cqN3g>Zz#o+l<S>$#4pSq3P-1%u<oSIcD!%lw(O<&#q> zvy2**_7tN+^$jagll|$(;|e;ljCkEwKVK&R*Y)2V$d*=QT75hwdibo~Z1B6hOUFpE z0%}Nl3cN47zBo*ylbfbM;#FaylZ*xic~#l#{Rp<=!T`_nlJ%pg+Uym8=j?TEC0d<D zw~UC)_K?g}Zlp=_)V6ahZO1n<06s&z=?4g=ijGwoflXyp;E)&q2|<f{q7;b)3XewJ zC^<s;a@M<R<$+DtK_;S$mKWu!vDv~nq8v)Gkhd_aAeS&bs+3W;OF=3Y$4+O$w^5`p z<(#AVY}tZXd3(X5E97QH%~)n8ff+7nk7dT{gz~6+c{WQxZU?GifNFBKux|B&9oj!O z`ZGEyC(%wp>(fG(T$Nod5-n3M(IyWpaYyil$gn*d&0Mp+5ZKYrPC4i>`b|Br;U{+B zrEhi&sEaiK<$FGkfht}$A&(Nw5_2E$e)+~>ko}}9hIsFX6sEN$o5-Osx;VcPL{e<@ z14MqTAN<PY<D4vct#Y+=9?5E2ib7B)6G7AEUCc!64M_){x)B!aB-J;)2c?U{yS1fs zM;4%bp>`eCkL}Z_b_9)8$6I40VL5v_vmVy^Nr9icdqwE(aUTI2F{2t3=F0?^0R;$) z0NvCH^g}uyxgLU03ufs&&Sz?-$Q5<cMr1V1zKkHwkmQ%8o1O%rcyx4C`sD)J;#1_( zIkXYE>~)Ym_U8>YAY^xo6@)zgHEM+4^z4@&sN7kM6(J1r-V)(Nc^mLX+o)qmuuyM- z@do__xxKR*_K^uq5-v=$l*`rrE}hZI?g6E9EHnfhtH{yITA1t=f^WLG-50VT>*8wY zGgQb9m%mg+lt95S%o->B`NF9(KI?+Kx&2rt`jChe7U~F+gVyUjXBV;>KItu<{}1@O zI>^9nh6z=A4Io+%rSjaRpQb)$5q6i@X(3&#vn!5Q1j~?DeoS3Nyzd8zue`4t76$}% zjS7XgpZAJmMxu@9t5ZXXRzIZ&P}kP-;omT1UM~zRodIq3Apv;4#?;yQR9PrK+nm6F z)%y*sZ#5`eL^RmzmiK@927=fdkzvL-ky0)t)r|~9Wq<?^0;1VUl%}&zyw_C7-vy<` z0k|Pn1mpA!&R5=)aCosF%0Gn=Re2Ikv?C++9%hv|cO)efy!Ux?RHVtZ(8km>p1t*T zflo96b>^W{Qi6<6cC`YgiB=D&htj~tmS|j9DvvoE;lRwh=*DIc7?Xg0tR>ouk%nTv zH&P<**=(6Y%4L*Y0wMp~70_P?)t~rmXJi<rw$O6HJs9c5-wZ?OQSWm>jJh;x{M`XJ zS>bsj^+2Kkjw)T|)onCe!v)BzWu3U0BFwrr%9PG05rEtmXe^J?Sdz&8MngK5H}h$0 z1S#XS)g)zd1s@%)7E0517YR6py7KA>slnk{vz@I%uPfP(NM#|IBb4{x6u5yP1B0`% zoVHIn^5tnkDKS6+7_oC7iNSQCm+_~}(SDpFna;T%H<YOTa3gN(^f7Cg9OeyL)Dl39 z(-j7E9WIs<=rXVjJWq2|pyA6|VU%L4=pM#={QC`Yvj+sGeT2_5c}!8-dz-M07Jm!% zm)~~@ipH(!7xqBEt9-8(F!rFQes4^CGNjfIElgqDiF!qZ=&fF`{u5iB_Yj|99{ykl zmoP%7RK<20^zrB?2S&%sGS0Bgt*%@v0;7DE-_z<#(|CfMe8Wwr4wxE!G_6pyWX$sC z{oRsC=lV^o-DsK3%e*o7dy>b$=Xq)+b$w2XI3xU{lHNBO^)=)U;q8Lu5JZDA0<)k< zzWgF)_7BF+@f=$ey;H6}ajrc#$m!jUA+O=08{v5gN8d?4F?wjm-@y#3PL;>)jM%w! z6qb!GDVgq!Qt~^B8=RKaj_f@0n&>F?ove3w=KPpC`|an0KjvDFarQPNWPUm;P+wqY zcl_#-2UgJIx+1$`JaU4p(mNakK1x1NQriN`Szjjp-`vios@E;#z~gAJTB*{i_)UAK zn5%~4d%4}Or!1G~*Q;l16_-fU^m;v{#_Lz*7?T-xepgG7bC^O*m~x!O4_A<t@CyUO z;c|zVX4JQjK9axZMqIXvPu(CMay03;o4?_t@r>x}|KeG?$E{o4;}PDvrq3HoDG?9( zjKTzl?hk*tb^G~vr1kkbGq){9bCB|%qfh*LRWT8N=RdA*!=2Y}qqce#)g{0c9LP$I z!Qfb*jNjVJx0s7YcfkDEl*f`vcqT;Az*XI*ctt6tb*oR(f*I@hXGvw((_r`@HHuV4 zf)t1K^ENpe5P;tYc+0T24o!T&{Pgs)=59Xfc+4SzqpSv9j=qXvNlfhiSMMnoZ`Y>C zeEreL<<Cu={*(omwBZ$jpKU53e4#M(tmP3>s~ov%VVwgYGC!YGElV%5m5a-QN}dk0 z37FnI>-hI8eZSr_*BjsY-9zAB-GvY33!p+?4>1{Xsm4VZd45dr`7famMb0EckJAs0 zW?J(K)@AEa9&2F&Z#3Js#$+P?{b09!<7%6$@S@lF@mn~+N&sr?%fjruJcb^MlNOT# zY6MR1k;1emcKsm1Wac4Dc+uj$uV!0wPyQ7KT|6b!$Uz#Kd+#1J2UQu(aATPCly8c( zOgp1-tT8U_k4OR3E*I=rX$Q?ZNpJG}(QKi?KBhT!dg#Gvmxgo5Ec&aUIIoA0KZmr9 z@wzL@V9rCx-cb~XM?4C!3J0O6c*K!+I$Z^Bg;e;nE?3ER3BOt()74WYT2L{Fo?J%P zL!ROBN~}6$6l4g`B_X5~Q2^8N`-0JHUF3%#!_9U`R}@%`h)icHCof8<w+o@jqUaPq zm{GXm&shDrbhCui@*3a_3!&~W&9+8Gtt<bEM*3XCM{$Af7(;L(vUn0f34mS!P`y{9 z{8?aSCeo7>qp^gLrN?rw5oh0@KHigMfyj{B^-bipMrAM!Wr{LXr_9x?;kuK6`!p&X zL(jlSYAeQ<a={uZ?p4hFjGlc8eyI9oS*B9z^M_fTiP8C9-bLxcs%}D%1-CLqIdqUk z;R8l&wD;{qnR~ZR`>0@)JTFX)oa$~AM~lg3_oP2b%$u|e1$)Lpw+}uW$vv8tx0n?^ zg`~VS3SKbE|7aApyqee1n6-wx_+U2wYHa?v%EfJ5=%$LpR(bx;_QeagF4k=3sqIa3 zl9<(7=FY4<JO~oMlDS<U+LCc<<q$JIJ}B%~ATSvu)mtF5*D$bCATM4>FfLT`E>uY> z+>=sh^cHH(7ZP_0b;OJGb_$y7@*;LSpq><Hz-*DlP7z7G*wVPzdMC)y5JQ{{bm%R1 znlE<QDW-^*xEYtYdzW}5m3UQ@`1F<>%?|RbC5B}bBp4J0cozkVr`aZn7<8A0&zDB- zl+wh@qK(U9z02a0$`X4^5A|a$;6cedWpwd!hH-hCcX>uqc~(VvPH%bc{N6V!XNp%8 z8dns1SCl4Ilvh+#_EuESS6tqyV2M}Oss^mUe9yS5Kx%~57k$3ypSsm`WNAZs@<8;h zlTuFY;EM%Sr@8<+(h)Z5cnVm!9_4eVwDjsu;I-Z(Dr8KPIL^4gTAEwgx8kj=Q}x<Q z*(j>&_Iwy`f7QJm?~C9gdAsE5TgwL@?!C>1lrpROuZT$Fdv9StW?{!?{P1zMirFMe zrd9unv7BIIh|G<hsOL(!eTkP>N9BfkFKaOTzKDyhe-QhIs$PPNY@x8*6_w(%-lNOa zg!N+%;3JdXm5`=VSSU+(3tL+QHmLzle3SBD$kfOZtw;q=dYYK5h(1dLM+-vpi8}ti zxYm9{(<ued9>R_yYk3}fa`*zd5o;ceOSc4^8kHSyN<Y#TdrMX#qp_ab(h>_*a97cu z2ZqGCG9?L$N~p$)j{AUitR}LcC=Q#+MQpwE=9Sap6@=C%;&=+K`9%q$!H~dqhMk(I zo~y@+BvIAL2K+7+!<z!WHx0Laj#QisbNGq#^Q%+uxm;8tG?aBg;dDL7z^ZQ$ld-O; zMR5kEtAHtKCdovJA{jUh7RKwU`>XkJApCO5vTWgdhT@<-FnDHf464kS#tJS-IJipU z_U8BnUYaDxY(L!5>Uv~*ON=}wDGE5j06$B^_F+{CR7|uV#$r(d<WOJR<cHd{CE~C3 z=tATsb?t^BkxNJ>9_6{-6f=#AV4W4|RL>!q9XE7GWa@6zn#hqTQ{Oap)KE6uy$?hD zQ->Rh34OzWYtZ1CAc#Ljy^6NCvZ7Vw19-+F;pxXTsrxQ55n5EMKk^#=hlv~VFqPc^ zqUK9!x$f5LbSVKYye~#pj7f1KBK6q7xmX~15*5l7y{c;yMfFp~IGzqgnX$D6EDbfO z$V?iL!0E)n5SyDF99N)y5YieI8;}~;?~6Rc1!v>onruX0@gc_;g#J1_uH5EY93q-a zUPwJ(7j2_LwD(>@+Th{QjfSJzd1j7>M+!)n1-%3@mTv6E5Le_G5Fl!8tIjqRA0*pF zC7xE3JZu8FssMsaw|`b9)BMQ0x)x)5cb02<d?nCK+MP@ew2N$Ofsr&LU3=l%k--IY zxu6$O#srML4YlW52maBZdF~|CZ_@tVO-~iS`isrh7HhWPasao>g|?-F*WJ{6rh2oM zk+O$?6NQ&Rwc734(4{ko#>b>W;{HdmU{QkN^&)^w(5NCA)Gt7p7)xggr*vIMbvR1B zQ-2=_mH4<zivzjx4xva_3_~BJd<X9zf?CE|1yR+UIS|{Kp0i0YFCSaKUQ-SI0St!e z^133EK|nGHWyTV|>W|9d-23v<aeXay$x$z#0}m{Sm*67aJvMQZ2QitzqjzA?;0>)w zX&h@`62~r|i^yg|x0dXO6hOwq%Ejoj8XOziq+J9FAW~85vCg{dU@w~e{SwJIcOoTj zQ0Y^Ts)mC)FQnWbB~%CGvk?;X&TN`~+aYi7-7(u_h7y5f2v85|iVW$Kx=CEHBFNSu z+^KqCNRe_Zlmft&ZsRCf6rmhRn4}vU3<X>YS@7?-2V+%WE`y0~Y?r|XR78sjftBfL zYE8+NJ@EA4iR%x~j6ICgwt}71GCfO^d`e<65uOl3G2}V78C0K@raB&MuFEbYj`AG_ zgmL>c@36lZ%6>@z15}jOWcFluT`ifymDd@MK@Kb;-ws)ZGa+kkz$qHC60dQ22qG(m z@>rK_b!*dQO^8EL*Zlfy1F9e9js?hpLK=i5=;|tXkBgND3kIq#Y>2l1x+b<Elsdcz zY1SP~@wuk$fup2PUB}cF0K&Ue!IAdk{!uE*BvDCfE7u;YzL%wOy0YsU@g%Gs2?$=m zo04Qa=NkR=eWbNpW-<nZ&RH1Vz}-m4exIp&_eio}QE5=II>4{><RVybswrytgcw;$ zqd+XPU|LpLX{6xUa7v{Z*7I$Nyf79}_tkyyTTtX$Lg0c|=rv4$w$Fvir!?1RFU~xp zf3LGDoeFkEW>Wm<O0oF~(y>s_2Y36@9{Lr*0?f7)6t@`5DY8?9*3Ub0%s%hBaere2 z?}=sqvpX+3&Xwy5zAWFE@A>T4%6F{h@5}ZZrRpB9%745}4|%3p50KVhIb&W=o4=kp z_Imc*>$yv>U-Z3xF%EU!<v=~xU%%3P^X}N2m2+=aFTMGA<4t`%kw|*8CjE9J54L&i ztrrs#^5IqJ)~i3S-~Rji79_(3EV$6)TzE1Ud6|p8$K`#)<)7dl$S74_WS)jYM3Wc( zx9eM6W_0^p;8;%}GHEgQ7G3dnnP8p*Z}(!z%0(56ckcCzV|f<)@*|a8-kG(YH289K zBqhYqMZx%Ti0PYmc3NkQMxzgRFGdVkR(vMf+&isvdC4O=V806n1r{kZSTfLAhIuV} zMlO5jV@wXbd=FXCR$1}SU)ulWl4E-_gTcC&7o&i9XZvR5bbi38F9*8Z)Ta#J6IxY6 zk1vMbd#}4Yaqhb+!uuiQzN5YG$GY|qoL~D9K2_0xOSlhFH9_q{H&R5l%HL<TzR%IB z0YD7(@1T4lN|9B|H;UnD7h<=vGSsdH+&KI}PHbP_(JRR!HOZ@2^O@INgmIu`J-pS6 zsrc4u6O}NnXb=zrfkt%1+waK`zQu>35&NPL8-koGz=gRZ=f3u=^yjY*wt9FzL~3#% z2S})AU$j3MLNuUB>Rioes&q65`}4@>;z4-fWTrpK_3<Kvz=B`11;539nfS4`eDD4H zNR?af+q!Db<isLKUXoW*4ewY1LCm(fxU=X&2-6R^4@Q8j?)_4}y;6~0V-j5ZX5IeZ zy5H_9l1PLc^GBWyOYSa8#<iu`gBW^5<QbOQkA(A6g6EXh@9=d-U7{Oq!!D$L`Sy7A z8;Ae<cH);rF-Jib-X5<TGHKQ`cux}#mOw%*Sjt-uO~N^eT~S+wG`NAa0drA;crNmA z|GLNdWv?fMJQr=z!PJnE<lOgXHa9x%11NhC^uC}8b0961ip=?{jBjYk3lmAa@>Bc% zl4$1X+WuAhNnlnRwWN#+VK$Mt$g&&YKs+jn1DF)%%vfg9*pTS;?h##-7<I#cQaYIl z*CwIDL68C>@+{+fjO>L&vhT_du2jmNs+PS6|Djei(j9_t!_l(`{NQ=_-6M7>lBanN z$sVEn&{j<4kkTo@X*8nP_79V;;rc_m?EW9KiF0ugD#BdRNI48?0Jo|Y0;-Yw4+{^i zBl<2v`-S;@>sBWhph#XhC$`<x01G67HzDK(uMb&*ZKA`4?W3>S<8Ah|od4tc9;!I> z-sQ6SxqncJO=S!ie?Z2(oq#~5Vihu0IVq4VVKrzqrGRNYo2Jxq;OLxd`W&C6o>WAl zzWh^uoL6FcJM;QsreIsES#~txQK7L98YboSAE=s7_Kp3F%5<G$l?mUdVe}EO?43fD zL>l)&hQib1=2PsN*|GASP>YDdug8luu=g{hk8Fj%FxnN-jU4OLS>kU{_HTUkEG=ZF z`cUGV+_RhO(-p4Ck(Uw_!tS0AJMnPO^}SWzEw27d8mk+y=$vvY_s_PjTQSw@l)<*K z-{8pF#irTjX;#>mzkhcTw8mN*<ZJszwOU)pcbTv@$nVCNe7)}tssw7^<XEBaf3WLl zY6I<uYFmSj0H0MbR28D)Ul;%XxW3b-hVv_#T8gPFY5;Q0`aiC3J_WR)h@QqqEAFDT zj=gA53s&!5^dD^p)rQUMLj^AGISL{rOC66DD#lI?%a`JB{>SyL>#YAg;HI<T+caGl z<M(^6Z_}@Li?XHCj@F`-{@ev9<chr;5}C(l(}`lkcT#WafLPxmT0`lQaISe&7#8kq zxZHW@;C`6CyQ{5Ym;0fEHu{GTd!Foi=I$S>KkMb6HtBfe)Udwiv4rI=&lBe(3bd)2 z=d|(v1!Moq5KHWB_(X!Q{!hSe$7YeizR+@`k^ieV_}^eGtOR)!`QP2OLrq6VJC+?p z)S#DX|1TIj%d33|lwEFFq;~94=XKj!z#a)&=-dNiy~-}DJfbs5Q18JUX~(U19;ql^ zGnL1;ZoKRU6s0~<gj-+VNjx7q`nbF8#1#k{x&E_zuS`=BylFMo)BY}%!T0a?`}I%n z9+%GxVleVU9PnQiNhp_0Umj~bWcrstCuNBcEcRC44tA28nqt;md{jH={KCS-Ip@2H zlTRTc1jD^DO_wEM1*0o2#}rv6botAxr0&QcU%8r*yU9I$XSTnu^2py%kK^WSuD^SH z<>38$e}8X(UwixH{{7uu5L|^zhl&PsQ;<rHdtj`=Ucn&dfXc!i2OqqUjtgvD$dHO( zUC6{|s4Qj?N`n{wE5ykm>>Z4d(rK7OLE7Gd3=|=j1w;akGzGNEo^=hW%z*+3DWvyI zo@P8frBJnwNI?KL#zIA!h3tN~YuEE@g|DQCU%MZP)IW5=urkTA7>Md#Myun+6%#_6 zRErYSw_<0i-T#R);KYg#DJZ#EQXR?kAC7>sz6=UR+YJON<bNiso~$}tPgA_689A>= z_AaCZlpF79YS1S|)9X>89Xm%5rylH%g0I9?CIww49mA*aXbh>O5UwqO-j%+p-~b9$ zgoOc*m<&!>nf7fiLz2bXu)09IHKNo|E4mz78CK6Z)?WPPmn8g%v|_(>W8K1#>N(!_ ztLT@$)Mb>RV6hrp&dgZQ9_k&a+-iQE)~}Sk`Jx{t#-do}4#iV7IyA;WLQYkr0S1qH z+N8W<RVOhOTi>Fc_Hh1oIZ)~l_-o(I#rzA`dR^+9_tJQl{P3NPi6dY8cKAC_-Tw@e zrny3d?iQhij_Qo^;?wZ`u)BVowjr4w4rIillrw-Z4woP0H60sb6RMExL75tj{=qyA zB!^ZLaDJU!@ZiPxz#EPA-R6W>uIDfV4?Maj89|!pB}*Q`PgAWz^_x-9L1GL0Ct8!3 z%RrkEwZI7~iJ)!R-^f=RXksVFvbb_OyJ6Z;dpuj-blbsRnHWnOQR@nK%aK2Fs>5Eh zi(m;+yV=6HAmVzDGpcrTsW1cEU~PF;`Hbn4JBns!Nsp8oXQoH*EH=mtNH@1I9HiU^ zNDR5Ea1E5IaVH){z}dN7_!ZUCy!Ug#g(?h`@#uF_VVUK_|9(vZ#&pZ`%R(S{yypdX z0vN)?!&IaD;bRfQac!y6&H=Wj<wv>k8a;!mlU#-syB52j3RPFqh902HqpauB6cVZ0 zb4*YGfD>2WHR*>H{zyRtUrhl~e6x6HfM^t5N^21VJ>*miH+$DFXH)={;eCW+VFqVi zu$ctbA}?{ynt!?nwW|-NKQXP9@xZ|xvgFQRvtwXArm|I>xO-mPerXaG@jGG>lA$8A zLJC&LuB4@z66F+3um%Ul=m=~NlvkCEl3(W_)0R@^0*R@jDcsB|uCF+$9WFP57cR;g zRGpz4+uJQds_8@gN*t8q7`?1COHMg)73wnN3s(vz@3|bZjA#s@@mJQ%L>BPcRUR5m z8W!R93`%Rn2wKzL-u`B1ZZg9GXR`5%j5&rWO&-BSit_ky>{gAU)9$(tVJOsHhLBsd zP&)qPQ>Avup7;+zEw&Vl9kCK&f?V)1WInsV4kSsJZ&Km%c6Da9tRA0`KJD@goG&`B zwU+5>B1hn@LD^X^VlLSMFn;pg!{I<xBO3tOei(NI?GsQu2GiI?qD?+=fk@=+cfB06 z5^jLOZF*)NC2z`jvzj(NBd2<jmZM&)ndQ=BEtSa0#!ql#)k#NQdDv&l>D{QPLjnRG zT$|(ZGqw2TWjk>>oo5>?TlgJ_D!~_STwE)ZUEVJm!v?ma@B-{PrMrnFv|SIUDlNbh zV?xVxw@wKN#xbD$a?UQe0h&y3KlBhdwXfnp)1e#o=m5hk(cN-RP2s9F&%vm4(N;_B zv8+|zY7ANrN{KL~3l*qrAon3Ve5}~P^6{K(=e@0@OE=fF_7yxoJ_~A$AXYDUQ3%yF zfQX+RpzI=-ej~~c=6gr=&KsloA31x^6$xhcp=`fbVn4EloyPNko@4!oySF@-`td0H z1)=4-$5!qQhrq{=|1SH9gw9zjC*r{lGxB0pTqvKheVX_j%g3}QRh8-slW3vZxp>)V zEs}0bns7pNvpA|*Wfv^wy5RfaE5_0_Q{|`WcDDs(_#Vs+qv(vpx9>P-ZziJF!B$nY z7tpVE1v$GJwL-n+=?ckgM**QHf_ipA{9j;4P*3Z2Z4d#%NSD#J+7Y^tEuj!iq1Op9 z=_*lAOY5CRuNn)f!fL+hq8KZ+q9If{w;H;@;n}MK79VQldR!lwK?wW5hZP4sn?YHw zrx=Iros3l?39w0RTqDTkE0*5u`|X9noq5I2;$kJl^(txC#SGK!afB(TGrFL`B>@my zbK_oTAb*{387RH}=m()zMFJv*ALb8Yml!9I91Xvb#ND0SL|!>h#o50g$)61?T{Sr% z>@F+8`<|kYl5pgPPIrqr7Y_BsJHdLN_Z1hnN^Sf)yfZO%?@sYaTQ&=7czbW+RtNBr z`1#D(25HY;f4O|u6e`966$TQYh|aup`ng;0K43q*y2bkv4~Xgai+rv#u+KfLccRBt z<`<Z^T4GVjPK4<ON<|sbGbOv@9+pjP)|+0Evjc0~*r)X4g7@E#UQce%c2E3hJ@a>s zDsX3R4~*@o`uoYX?cj^&e>VlLbJ0#cmO_gb3B6DMeu;l_=Jn6~gnMg!U+KGdxPM)? zIbzA{83)Z4#m;X(P=B+Ld;ac{!oi*1i(p<)mBNZFD4;?5_q_;lZW;1c<(jQEEJ%g% z(enfp%-##wFZO*3I{5p=%YR!vPx`(jJo)|R_rITaP7Danv34TGuJe)X?tLrT2g2)} z-<iC4Z?oax-;YQ3?}XZ!*!TeuowR?yuL|7XU41B!{O!X1Kdbxi{~ABIt<<yo*LmG+ zBkUSrAXQi3K|V(|k}3GoaOLl=7=2Bd4l<&{z39m8#Py%a-)#4FS)PTboIhN1-gYoj zpdaqUrc3msNX@0lY^UIH40$64!Hc1k$WSR~s5PdD8=V)}HpwxdX(^|ekyCz)Sz=OB z)O%9R=29)TQ%Sfq%Mpe%mk|e~{8kQzB`AyHOoM3WjS}}>nC9-4?va@8Ri6I!IYTlt zO=R_yfmn*`s-Qulo>)z)PkBaYPe%Ai#!;m2@t#OWBgJ!m8IIr6{1P(`&1IaO%S_(R zRNT(khofcP0(hUwmlZ4J>BN}0W<>8cX3}xlg+|%QDp|H!%C6JeRUEV#9C1sZ0DE{| zAuZDonO&Ti(^#HE4$cl0%xv>B^c%D~MMcN3A-d1gG#9c~+_1roIrp|NaBz&4V5Qa( zX;~VC<zbUYgckap)~~tHb~2~mC~pRrJJ=&~d_+l^8d*g`)d@ozXb4lPRV9eGU=lc7 z%p>ao4JmOD<U*S9s7r&$uli<P%tNvy$Y7C0jUs5T9x=T`t*h`{QZTm9D{l{sElkW) zX6Cs?1MCr`nXq4gf>k9KkO3j;X~;7Qs9r84hoy_7TU@vH$Yq`|Btc5?Fj>5r>?Am! z&STFuO!ot_Zk=-7J*fos&Vl!4qW1#!-VELk%z9r#$HP1g9BADTvY8Hl`3z+W0#xyk zu{5|-@&3BWVm~@Mhl8vmIo!3>aifu(=x7?-C`&XaFF-sLls=6s-V4~>jf&%H@?_Zn z5MX4(MnBcx%f6sT6+!we)rvY)EdgagLZ_0@Ig^M+5LB&{C+Gukij%Dm<ISD~q;3M6 z16fllpa^f~-PNLK@5=h#J;NI&e!j4nV<pBxUME5fmSEPTl57fu2m)UGfV0@;Zg_*< zVTc+ND5*eutizj$2wSR=FctWs5cS%P(Dk4+a=xe`>C#*X<N603%zUAsF+>bgox4jz zcaAzz?DuJd&`=wly);)3wEx<=-k>UY&ux_raz8f-qYV%&{D4A1q0Wr(n$e=G6_?<r zS<*e10CpuXW4x-1GACA9lfcnbbOsx&fkBB5LEI~N9w@+@ImeF(K?xkF%!|TC3`BYF z?}H1wsRENrLaZC1_H!w^-9_<UEadI0rcEqfAGhEB$o&|rC41;4*P5XsG>K!y&q4O$ zVR{tklOc%RkZJR}o-799ZEyDUM=g!XqZ4ZLyihTearI*GC9}%<`RlBpN<foia-~<~ zQVqsTP-NdNRsutZO~&wFQw8Wi*y5hID16F@W$b`OT(8fOC=1_xl;-W*7}Rw2g2{FA zd}G&E<1^Lk#ka2`L$2$s3NvqC$a1Kx_G!Amdc8+QxaL<yWoT1tWlp0>hJAa}_0yQ_ zUrjx?nKpCjM6YHNxw+#Jrn|Cv=tX9G&h=Vj>_4$AgdKh2MayI*ed<@s^v6Uh2Re`N z4RmPSvCVP9wZNy&aSU6Rd|Fpdx2{&Uer!79I0=ma`KnFAXH42YCcs|=VV{?^{kq-u z=SADUUu_^sHekwzzHDnkK;staGs>8W=j`#HY<|ghjA^^zk#^xT?V>N)KVQTrrwGSA zYR5}<$eVT$j&vxU=}@WaP`lHi@v=kfcL!1OrjF@NMTTPQZnQGB<J5?+_*p<X-YdrR zxms<h>XTb6?RTd(0ihNlmA59upc)+@H8QXxd}Xm&?+nJ^jH=N~&AN`8Zv=HM&eW4k zV}4q87SAf!zLc>yt!@$OV*lto`P(Oery&a6>gkw;wH0(dqwM}$?QLjG)LMnBTPGCT zy``k);n@u;>kb`|b`{jS6|Z1;rdw*G2kY5oC#2O1&>-)6tRy@0^m>Ah^jta9vk7=b zH38}0_8EWZWj?-v_AT;p>=o;mJ~Sv@?F}gqzEm$)Qt3zZXQP9tMybsJZc<y8c<@Lu z^qQ~=%9K#AjnR)*>yayIi&Ha?R;yp4H`D@OVsw*s>FCWkYk{sLSdik(ONB;tLd#ZA zz5Jy^3%LoB3NAyYL4g-)2a<?FLSiIpIMwL2Bk=Ho!S$PWMPt+|6K?CeMgcWJ)&OMV zh%iW^>&FUxtr-yDXgM-%92gv%MR}Pp3Der3e_NE+R2BZ7?oRc-oq!9*G&GB2CAgPK z(ZO{A`qe35DjnTfd{={R%sXiBei~T^g7PSt$R*sJW<==E8_o;?wW$&2mUmm;5o*sU z#26g;x3b?<*E@c2FEbwIy{V+j@~JDjtI6~+R~8ZRH_TT*9{=rn0+0R57BH4(W9q^4 zO6Wv02^~Q#RZ)YHT24+u5Ser|CIEF~H;#ygqV_27XCfBw6h?38llQJvdKg6_6UfAa zPF0?`?(eu|WwxdOo}U>$M?J6;cQJ|>v@wg&Vk4^YsJnxqn(JWU0CG<Yxr+(UxEZA` zCDNgLOf}Bbo`TFE7B+I=6A+$YI@ov+eu;!W)+w?A*U@Cz)YDN`#0$ZAkbSIKI*mA? zVH3Qr1zjdRfa&Z7ewSRG{5nzU0SAIu7xh>dzx~+X07BT)(CT{m4Rot24pbJ8YJpL2 zupvj69g`?WbvgE5D|k{l5G~pTUEglaGs2p8N5!~ENe>ljDmsv!TS<Z7i0}pyij6<e zd^NbbuHrNZ?TQJn*_}j0(b3T)$d&@iB>;7&*fH{%W56=fngl&VL)kM2+lrAPlw(uw z#`Dq0Vh|)6<82mWmO-PK-Gm5(AYyF9we=IbX5iD4Coi(C0Q}?iVq4A0dmO1T2|nlj zAb^Mm=dw_`7>KEoe-PcVoDDIGL3=tln6Z^)i!@BxchP+4APnNep#W_TO8SSZOdRT7 zr@Po}vF4<_vM`FdK3_mV-q!cox`T4tGWs2Uz<V6R4?>4<Aa-i*W+cs64n)Cze-(>V zmkT>s0+k>g$B6dPoGtZF178IZS~PS9=)`Bs>HV0we4@V=Q6wwF!D`G#pHvb>qWaN| z4R`%KOU&m_>O<-kk1I_Y)4n~+EP>N#UfFR-784>%K~~X$1Q5@=GiE~L5MM>OnlSWz z5!w{wQ)}ZB66<s8B%p^mXwL=LZq2GoJ+Dv&`7?P6=z9wQXqP=sp2-uq4%C6%#F)B4 zRAloc!jxsgKa8|{4ZvIcZHG|BOo-$lAob(vc|NCXY4p7@^=UyxBP+DY)#K_zkdZ=& z9NtWgqh$iyrw1BrRWc(o$=Z`Aj#J?E7!)KPod=rqw>SDQ!!=Sqj2rK;^>vjkwFsm; zDUrzUPr~)^^Ylx)G^PiKh{||p@wJdgF&Qn~=foTE(5w_L#76bky))VU2g>F6OZazs zD7-sHKph=|?8DD>QP5Q^V18zaMuMu2n>K<V%FF|kgQ)B4_Vu8^W<1E62vy$n?c#)P z3<1WfISFA71X=*C5a@JKDI7T1JgtOdkGd`>$KPcAsSPRjkIv9k)4ByT6zjOPix~U@ zYlDG{O1(rDSb`+%Vo5OAq1gIfjT^H@TpM1T_^e3>pvR33Yr%NhliJjV14j-<JKa>x zRH7@8&2?1tLx4N8chpG`cfp9E(m^#2U|X}e;78Ds|M+sGA|pdmdQw}fu={40;^mEq z1GT|zqH411fK#k}%nC*Nrs9JRhbT7WOC%t{1_w{y3flz~Ud!Fr<6-?)ewE-lpawFi zqjNC=x78I84eKvtAPYR-+I6OIbItd{8@@-n4zx#=4bIO(Y6#legO~iLJS4}?o<5%m z&Tub?%<72IS^S~g9`E?Jz54pr$0>P*Kbyh#v5`-3)SfNYq9U)`O76neSpl(xCzzD| z_)ZUL_nN&Y1)hC>JLm0o?(TNJ><)APPT`52;`2MDS9Wsu!z<rzS6|uoC&6pq?v$VS zRd@bZ{gq#h_kT5A+zI8tgO~#|$v_b0ch}orEmwZ`2<-T?+l5k24~YF4*#Bqf#GeP} z|BPJu^XUGcfrn5h)}M*Df1W(~Gjrna?D@ZQSN=YKlCHY@s&5Mc;R^igQ2OUp1MfJs z=H}J%aX0h1*ZIC*Kl4^^6qq!vo!E_-``4Oy-4mR5Y(ECnpJ6Y=fbq##ms1ujGx($} z(r~Ve)_Xp$<8?;Naa6wa!Nxfi(q280f^GaNb^5CPf6Fv?+=j)=r2Gejvt0itVArcX za8a6kIoP{U(V@iQltnr^CeXRg)p<p@^6;8R>#;r^g3qSEU8&3AT&Uc%l6`Z;4Hsvh zXPUEZai8A|S3Tcjif!LL5=ko6bmK(wIbIY0Nj%o~pE6C2f;QXxCp}xX=_$}`QB5!Q zdRFwZ@3h83siss(RKV<wWA8787q>imT(#@*tSQ~003oVoaT)WuGxoz%XEA}ZmyYgy zW3`)3h*rqMR-6lc#*6|&#|4D;3dz^Uryyt{rTWxWHUpX^4A?mxBm)mn7-b4;l@9L7 z5s|v~5=zw9Z#2m_h6q^G8kGzL*PyFVW@I|1DaJPg?^Lmb5TP)&?g~9nKWHMTr$A2c zwDXd)*qP`M*w3qn^wr&U^K#S#qx8bNpb1M;r1wUrDJHxYb7_JyKFt1Ni$v;Du}f(7 z5KPIXpHD>9gIOmeN-TF16y2+a6q0YYeg~2FBn$D$nDIv5kbvPR?NSA6?JlOreoyre zq!9`W6pVY*GNp08HbSC-bpPEFOE;=q;nDIQh=@9Y>0jb(@-hu;Pw7oT*gbj`AcV7E z5=sbe$TsIf&;_9`;A@(`N8dMIoqGaC-mvncF20ORah&&Xj<^!Hu1K5`EQh2BlOZBj zc8V|&?Yc>4LASH8r^rKf+y#gd<pU%`)U43esK7@*(#8Av$!>L@pH6aVB1Y}`nX1aZ z---$G%mrcRQ2Z%|quxS|i7aJ4RoI4W2g@>b8MVn*cuQ3*^YN&-R%)F{>be^J)=cbS z?`n8=KvBZ!J;2FRW%@Y}Za!f0(B1Nyx7MNS9H^i6`~n~458fvCqr+=*pOpt$5oP5> zeutFs2nJ{TVhFKz8%rmT{diW?z2egWlbkuUEKKCk2YgjOq>a`k;BOU4kE|sWN>meJ zg7(40x?*Rg|BtWtjB09O*LIVcUVzX;PeSO$P^F2XN;iN43St07K*UfK6qhEU7cuk* zr~#>h7&-`I0*HX90YR`VR}fU}SQl2ltoMD--rqiFkMoxw8G}D_%=ujReccZtwjlO- zG;r*Fc4Z>JjJRCMP`#ZMxYC>Q#x7|R<F%{)<Gay9dH0f-+JNC|1$wrO;g)&}j}mve zvM_Y5Q(++YIZIC0aSdGIX}Sn4#|MDwO36>?yNkla{S=okA3u4Vo}&hxUYWdbW+(}4 zx~;aiaFg}E91ZeJ-=i7d79HiePzJL&Y%B(h^s`xFP3}q<RDlpY1`d^bI@pjEEESxx z(y%$XG9T^g9BfZxk0T17ET~#me~hO?p8Ma8-c1F|#}Ht;_%rAL(z#1Vm>XLR^@}~I zH~?F}YF-&3{QRm^3D?GRG!#)WF)1qGX2Is2-cLRTKolp4qMVMBaEMk6uomxbXFFJf z7}f?!QiD3ybAnx#wDZy&G1SuQ7Hm@tyDNnN-596?g?n7=nrn))A@f@2zPMPo8|D6~ z5_!zpVw)Vd-r?EOMD!*2IPTDgB3-WkG1pF&vJ-8F)80{6v5W5RPhOsu{;93;#inHI z^Nyn6`We*s^=%H30i1V4C*tL11=m-!gQs2hv!8_YY(Lo<_N};x5J&=*F&M{naUjWw z!rSYkx!v2^XT}Z7g1tq$#k)eI49j0?!}7CO{d43^du+Wz5{fJQHr_BzU@hKzpUjeb z_n|Wbs6L6R_sR~-YO7TY+*zP3q2Upn5I7mHZk}NC_X)4WR|BKfOzOEeQ2l+6cX4$1 zLKn@5(Y<Q}qCRr;&gu00t>=_!`S<tppawA+JD5G?Yo)bXmup=PL1&t3z*s%ESg)N| z11fsw8a8Fc`s}w0thztfxcNq`-;t_7^X^(l_uB1h6Vz-A+<dc}+bjR_svV7{^DVwv zuL2t`Iq+57VH81JP|rhG&e8eSy|9BJH&n~j%jVk-+-A+k_3yk~q}ZmpWjb}mF8J#G z`S#Qs2gAQy4IchFf8`V`o({7Q8Bww}NpOpge0erx-1>gUnJi<po%RoZHPZ^6|GR&p zC6S9ofG_+9k16mX|1H1^`(N;wKNSpCM<4x<+EIeX@=BOYoL<QP<BhR8sj6@OA8*VQ ze|B325xQ=VWH;YyqFwYlv^q<lZV3FRe=`5vFB1g){MxIx?Ln9P>AF1<JQm8@Df7L$ z;LBwR9*aGxC;~4%9%4c;&zpm8prr87udVhHJa!YiM^%Xj?tCWk#{8#$66QPKLgq>H z>`*Eh;kUm(hh%OGy><R=AUSsm;wgG^d$8~QUxEyYH)g2+!?HxhFBwr8`1C?_(ffkm zwX0uVFLoXL>&~^ozu${T3pTX24-b9&w0f^~@7;g(PyP#!A(}j9YDeGVG}=ULlrFYx z1g`eEkDXx1<T<0I&kF#IZajYkji*xqI5ATU#%ORP@)V$kUY7?HQ-OSd5EFUI@aq8* z%kXNNGXl?TuA^F(P$eP>t{{Q~tY!<dpmH{(0^n^9k7_KJ_B8JsxM%MvSXRGQmYb3* zq0lG}l#yY;wIQ;}ZMYExC{iTM0h!wF_i=0YXgW=wN^?Gw_B?H*2>86dj7GNSIkNzb z0p}9kiC9jl8r8F@EIH`gy>eoLK3K-YQh(Is+%zcT9Q35v#iZm7KO;};1Y<Q<wQVC$ zm?57O>7`&_Pj^1`%jztf8uM^+xm|<X|JUhXUz)X1)|WiQ(3%whqTQ9&0l^yJ8%gE* zJbFC(PrHLa0mtiAYlBV1B>;73x&$sm@udi{7V(2kD6KI{f%c_KAP6k!bJEQcA|2;K zDM=FndQEGL%P7OOOOH+p66o*w$2D)YcAhdH6n5TCVtdKW?QR{J)JT5)7WE_R^>Tko zMQG&o^}2)dtRLW*Op`<`7{DqIQ8GZvVWL{NK{sR6xTK6Wg0;61k5N*8a$3>y6N2vf zUR|?VOpVtX6HR<07=_3%7M;;?g9I^5C6WS>F;4Nah8rU}#9qC&jR6U!<Wojr^(*EO z?KZLylA|@T1%g!YV6ZUsE&>Y*8zg|9xn05ZKnaNi>YtL*p?s-zb!IZ!u4^_q!)!5f zQrv18<zpbMDb6sd|IGHKB=$%6Sj>w{GEoNjT5pTn$Yq#b>s)}Z6^HR^Y;D}qJVU;Z z=j=c(IdNSJUQdznmean(88s~G=D2LC=73yHQpYHTX5%Zfz|ug!AlJl`IZClMbD)!1 z(AV1GCJKma5B<+1ZED_QVb_s?X#*6mA+se1Z@c7%cjUs^UB;^vD40ow_A$q>9*Ozn zG@(LYZiaG7ZGmH&Q0YUI%cd3T75QeuUY}McsSQ&ntj`;!d>#ZC2@>Z-)C*CA0yky6 zKQ;`<lI@m^FO$s*$Yh~HHRw?mUKXt>h)`^zv$W!tfUWV)z#&l<*_xXF$=?VOCvxi< zjzMdFu2mp#Sf+OV5I==PWWu7Gb{rMGqm6*_DWFqkDMWYQml;N=2t*-egvb?VcJN(Q zj~62}aS;a+nf2Q0_dN)!Ytr^yr&Ff9D<0E4PUD)h)Dt?!CMJ@l#l4`;Tg)Zmmy~W; z0w$_6uuzZ4gu<9btm)_MP_C1F6C;@HwFF2<(ElhBQI~#hE>Q1|z&DWDYAMCpDqI0X z^ePial|_fS2^7w)W(eF}H}ZW$D2i5VOoXwgj!z@h3F?f~d%2d8T8ESSg9}sHEr9qn zCgFcR1#9~_LBLbQ3PtmsxC4Sb^LGMNhldM!E%kIXV^r>D7*wuoAXi`iUUna0{BwH; zRkN82=?H`xDijwu@Bn#>T*9YIvMBkox>Iwn^yhimv#I50j(wCUrE+mrv=l)4R_nOc zB^Fu>$&=qge^BsqpQxPB?W{&Ma6x4{`;M{79K=p4F~re`<~2sG$B0VyhZz;ZDr6Hf zTRS1vNOM|%Z1aFvy9mIz#~-<;xh<qKylHowP|2Mu%-q3QfO|6KTc~c*5>~WZf)`uG zP#BY$@3Fz;6*=%+pWZ>;QYj-Qw%EX=$khBGaY^gng_$bROPMTm0?<lr-F<lMey?T< zgxjhAEM%?4(^aUT4jVB{N%Z%i70K}^%apI69tA#OZ!aCX@V!4HYP?pan*l{T@H14$ z$}pDaVwDD&V`Py4X3`v*p)1G@Z@w?nONGgl;4tppOsUb_Of>o?;K>J&$97zn^Zvlv z8UGa8;qqGN1UN_414!Fs>BfGk=;W-4*`?F@?#LA~Nc&CX@p%wjI)Np5n7vXRC)_ap z&VgPJC@O^OW|=XB837SY+1sG;Pf5G}3i<p-YP^5ks{8RS(567aAGsr2SlB$M{ptqb zC(6<e0zuWU(%~Zq$0<zNJe)#1tc(kj0^s>^mdhvb+^V;6#Jk>-dcou7@olLDkB%gW z^d`ES-bu=yEiXfK4QR5clV5m>OeWNj0+x#5=Zt+Icw~bgXMXP`s9)y!=+*h>`-HHi z`tzU!8!(dn=LMyomqUIGh~V4%E|g9-`{_#bqCQaGRut1!gZW81Y8OAYloztEtNhXl z{Gt6f_c<Bq=SJAA$5x1QBh})qSutWrs6!<3oohH6w2i0m#}ALARmG^tGOl!r_u(}q zk5iV><?NBr?aX}HE5k=FqHH1_eVN)(2yz9oo!&Z4U6OaEEhJRDIk5HDM)<<_T-Hh$ zZt4E!OT{;yp1v62KLiP$r8y5DiOQgcg?v!@a!Y^zCPfWz7#_)0-_3!BT=0P@qn&PU zce4Fkbx&}v-0{hKM?RiZj)l2By8GBt_fy^nJu?>j?08apb#d35mF6F|1I{LKY^6Wu z_5-XHADg;)lY@KY1R$9(YHe%!p4Xw<hn_0mT`v^HMmH7=t>|t4HWm8&Blqsm^UZg^ z-AVubiFax!-tQ=GX0xWFEoc-UbocxH!T%kPJ^9;vZK;e3f|?gPeYw7U_~V(o(51a4 z22`6-xyFC+*v9w8yTf1m?*4k0zVSmW!DH(;xBvcFec>k%GlD0%Ht6tck#08Ef4;b$ zNeW|0z0vzdO=6s&tV?1tcqU-Ogi5@1X-p)SiSB1&7n#!QOdOtt&4nrSLtpnL=tr`A zosKv5DURiwBGsOf2B5$6SpUIe{cPh!Hl~?{k0B|A9N#xX0K{I<B`1ls&h)?V7?(*& z^Hhyd{9PeI`NuTU<ZbY5-?R*!|H5N<rrYAl*EyL->N1%hPi*~=X_tm`;AX}A3y<OY zvs4zdAjIRj3yjEI`F%DP=)~;!{u~J&i(Ab$OUz7+!6oB!%Ad-oHlG4&b51Vi7HzEO znjmulLM{y;#?2a<Ic-AScS@<tH7d^apUCCd<kyGfyQZ<+kvZjDzz75%jf#PH=atXq z`8Uh)xH*9_`B(c38ujzaLP&-m!66iEHf6K;2y`3aSkwgEHa7=F%pby^o}I`UZq65Y z09rWcH9jIE$1R0ZSlm~5do@pFb6Vn!2?{ywTWma*1b%3PRCtDLBfvZbXdWo`Bo8QB z%O4<s%n9~Zl1n2^>X-na3M_qa(YHAmdkXmBVn7qq$OAB=^#LX3da2x~yWE1+#bV8u z8LuXkHP&<<d@XVyzy|3Nl3~7K9@2^jKrP{oa@YZoNk0uDzd=R$z#x$#Ob!K8F9O^| zC|4YGoPbiLK}SXCd)@lDWI%aVp}4ZRcA{8I(m#o16CY?H&Ar`Q0_XW?9V#S}f@#Hh zTk|noCKM>~h@_+DMbPg7m{tM6p?G!)kS=_Pr2tY%h>{q6ig^3Uk@&I^l8<wFKet@c zKRJ|}AJ$)_Au88t!DMp)QwDOL01p6_(Mmne?vJ;oV)B{rYaC=c1(Qv~xbaa90?9ij zcA5?|p+XvY*n1WZ(~|3IsiYdJlQ&to#lO60SIzh_W~gn++vd|JK~~y03>V~CP1(Gc zk4a`i9TlLr=3tEiRJ#iFBn->lpg@h*z!EcB3n;Wzu=5}U&}3@s3v{IFz{0O-x^-N& zV>RCgF8r>nA-^oTMnOt{s;OYO)Pt;IZP6Yehz39Sul34i4pOHVH7cMfn}ZL79I8Q7 zR{_v64uC%TU5vtiIcBHFzF;3y{&S#C>ugOKikD3xHHaiPb9kEomHzU;RSKL;g9>Qq zj9~b%SSnx*%%NkOML;kE&0R)5V!~-<Xx0Eig4UY&Xe~ZUKmg@ZG0AI?eruif6_*U| z1>@t5AusDt0VV4eTds+q4orBj02Lib>97r|rlgsy)nJc-(-~#t5%i=8drf2^FNWWX zvX9|IS~m!wU2)VWxlnLwT|Bjs*2#^jYSB<B*&pZZOT_8ZaHX$W41r|-brZFHgjywX zZUBk)w^5yZyj^ZxbaP$R@z#ckmdZG#?l|1D+*ScP@9L%E{WGnQ53Rzgwm)pzdTbQO zujck%YMcF@!}*qd;cDv*!<uuuTkk!*d~5e*R?O+!hKhF$vz{DpKRD5Lz`uPWzx^FL z^VL-A!~Dz9F(+=NURkgD4;~xJfzg>TZxH;Oa=Ucr<<Jj-ZVb38C<{45po-wWln#Z^ z4yE)Ce07KFV2Apn4$U9`7asHO^Z~*5(f9yOg5UV7X_8V9Tq-mNz5#}OuI#cK>~eV2 z<@lrPIpWm4o0<A0kS~Z+9@X7mgWW!ly8V81({6QpQ@i~a<(poxa5H(qgFRu7dcuG7 z(A9b)?R)oy_C}}o##Hyl4fe)A>P={k8tOC~tRo)MODubO82OP5@O0ZQ9SzY-J^bQu zBjj))8+S7)P7qC!?li>)kbVW}-oYnQQ=>}MbgtXBA5!akldD~FtH_v?eEe3Q=SLIr zfN}F~y^K(ctb@4iea2q~`h)ctQZFP&B#T=CgVw>c!_~NJq>|q3RQgBKkaMo4yzzxc zM{S-SDH}2SA)8&dFm!RZUVShrz*A=u6a3U%M>0!&zVT9cYB6`?b?>!XMxY#nuX253 z)qP5k6lT)3fm=f<!P%m8&nD|@b4KyD?$%Q(#yQ`Pmd#!p{&>x&e^8obAT0(p!vQtA zbq-s*^P!n8nFC(|=a@6p<bb$HNe?8_SO8J1Axm{?>p{$*iJPEuz-Lb!r<El2F-0(b zk^s6ULoheR#YkV&y%<T#HZyGBt((m<*RNCafB+gy;ij$x+vj<4)fO5cH}CQ-78F{p zS^V#S>v{wsh31LNAleEnHTl9C>ZU@H4(aBlJ2&<3R+!XP_1jGoq(6@5+K&z}fw>Z> zJt3vwR{zLRb18cj+vrU)vxhci*m>3T8U|3@DVQxA8Q^p=ri>F@d6AM_s$Zsq5`Z9D z46w1-+LB}CW3gGc!ZLF+sS;xI+1U~%e<*$g(BW(b2;i5!lUHYTjue<Eu=QU%Pmz{k zN8;mC>`8_Jmh$E#Jku6WC82^CMHyg5@}YX|Be#@>_oq*gnO-h5%XC4ogBUqX2}+_l zUuB~Eq9*kTh(U&<a?+ORD5|mo_MSH4eix?q9@3Oz_4I_4I11}?1JJ}ldNR&i@Qf&Y zM-C$cvJbGuVUK~JqjdZ4$-4(=z>zlOC}IC?CfcpjF`}1>(FRG+MH}NF0L7s;(y5t; zQH4&Y1y9608k)3l-bN$JQukR&@F<<?82T!z9|r?$F+P%Cd<ZyZhUAwAxA8n&`RG<Y z5WtD>nZq0axdmh*hnN^=CUOvmfLfb#$fyQ4K&=5_P%uqAK=L_}&PU-n+e#Rr&3wpJ zH%JDvKHL&hLwB#ILd-yhTdA%GQB{TH2v0hui0<@AGW>3_$NEvP=%Bv~L*JZ^t{^~# z;}h|jyS5U*tRRf`sDa}?3eqCt&w<L+dQ=w(ni7OL#&b9=*fl6ZI5PqZs9yAY+m9WI zOJHE42&iU)e~AcXDgbi>Ba1k|_IY3qfGTY9HxanymnMAp4B?4U+n7*UUhMZWgu=6P zo0!|}H#m+Fmj(}c6O?Dcs-RuuF|Yy-+{;7SizZ&j2VU6%1s-5mte`J5fbKENWBVg% zpF(X3s4MGRXx+%@ie2Zj_KroxXj?#3>A;4^j&#b70UpW<2WjN*;E2Hu6!X+>#3<j^ zbPb-@MHzL$UKT+rap*l%sHhVa%fm$I2JP=bkMG}9aJzTq8u0uY%>`s5e;MOP1!oYj zp5mxKI1gAy(Rc2p>QcSkd?CLjN?8u1irG+WO**GTN1k_+eFoJwk20kL`jpYrWzc5P z?nD8k;|ti9gHijv!<ZLpOF{Z&($(exp^j}mXJ;c7>VgBe@=#H4p+`oitTx=wmrl(d zc%*%~6mB8_moQ?D1a4*oKll!@2Z7T=2nShi9#^t2q(b8z&kdK`{J|;FPCD>dJJ3?` z(IZqig$^9+nfxWB3nl+51=}nDzDyv=JQv@c=%XnQlTAVo;jk6ryVWAFBM&p)6PYTG z%=+%!#JOP^y==u?e)_hzDE#);=orijfJ{M8cS&S;(6R29Wi*T}?XXaU&?bQtsHkxq zHiq)-dV|e~b`X5*VVD?tz&+5Pzc5e7KIS1!#b5#skYOYiiygaYk~r_vj}BNN<&Ea= z2tvX;c}qy%ebKl8T}6Nv!LjeLRu@P?^UT<pFA&T~!r+ElpKTM^grlI-N!Xiuu+1jE zOm<WP-?S(MnqIt8Y#gzeuECC@RT3L}_mZFLnuU%1a2k_&qF}b6hab|1&JY}HELbJ< zC(eMh7%rs4O$dhSd;n{BM2{(X3L5p3?4Tt?VbCQ22u|ZJ$Ex+ou)*p~2iTHJ2?o*! zCu{J4@u2ft1Nx*QN!EWE<asj)l}GR(;_jqRMC$m9Y7)}<#_bAAm84sPB#<<xHj1!Y zHhJP#$2WZeibpqz)guQ4Uw;~@E%p{T)Fx!;-;QU+6{=(7ICOl!$?K2cdMa8%Zy(BC zdzN_lbDZ)k>-F76c;PyjLb204PGWAbg{;2Go?EL|FW|na{W?8EY&&>iEWPE#*59)J zzsKzG%*b2~n+@~#zZJk6!y8JU-WP(1R31o<3`g4}J{A8DJSM#((SO;!NCVak`jE(T zKBMDXVVp)Gj+SYAo|p7b8gCXF#@`t`TN*L0e&|GRF=R&!t<L4NlH2heu>p<V=d827 z?}(Gk++7a3aeU{&pmx7UblY0eQV3z|;Q2qRdi80UkvGkuwE*(0u1`B%SRMR6eE5%F zza{+>2AvXumWP+7twoOigU8g5y;qz9#>X^T`AA6x+2IsiWB2En*#_SW(k66NHUI2h zO{lr<hxms*8;AZHKNtFU!jo%%Y``_c))`N46l@xJb5!Re2M9LxDRw^KLx^`JosbIc zO?>y~wNnVK@Skbo>2jle?@A&*zofM8J#~j-eeC;}w}0KdaJ}!_^rcO$dz&+)(Q>qg zHxDybuNCr>V;p~JW>TC{dPAqL_su51qk>Uy1QPHZKpBPiUF5sUZ+A_!!Bqa(K9)_* zHL9<a{>iV!sdN{QDWppJC-T9rSKQPWyusteanPBou;tJRC#?&a=3XC}pRd@yLGO-$ zVJRUj$+3b$^pXD#!A-If_667*NctzY#m!@DQ>JG{4J!65PZCUNBt@#0cv}JFs|uN) z@pX|oBER8Bltq7H6S7tI!8Lu%_U97OakW_#Gdu?>WxYy(;_BrE6Ql-v;tp^CMZZnT zW!3!Zi&=$L_pQmUmce^2?wIp(_gyFChQkvh;O;TCQ3#*VH9{7ypBw>^w-XSuVBWA6 zk1Qy;XHMRkX%)81v(Ad9b7t&F@R5aIW&^*U4$b>}91{zRLqr^Qc_4FXTt-IP^LbTt zQmhaWYW!dc?0(#HERz(Sn3)&;W;!bum8rO1Mm&lS7Ety$d<uKvzE6V3zP#S4!&29% zK$snk$jl+fKX8*(4%2s2HrCe%xM8|ta;1j4c%{n2C&szbC7PH8B?Q=#a`%uv2sUye zcAu?XmUjGo@A2z|@++d!o4SL8W!vH`kx{uV&#QJ?$3#32%w3FtMpC{Bp}46<n3Q*R z><A(#Zr6<rNg{q!$^GOyD^t;Qm(DF2Ja`<V971c?;T+PKo9x_*_~o0rDeQA5Wz+o| z9Ho%l`bx_ZdR6$a+T<gsT8uwbD*JEl4bJZTMRK{KjTxM4Wfvk;h-@Di=kDirJpDNB z$^D>n$5VPs`r9M+>HEMTPnK`VMs`4t`dL4(mL>;Kgn1#Vc_Rvb)&^OAE^J{s3}2>9 z&))f5*SUhuW3M7tO`cs1zuMbJg&*A%K4O@;9wLh}q8vil^M$6A4o9gqsSPQQ{!9Z} zajr~Fr2Ht)MTQOn5dB1aqIk?$M9q}wYM?EzKm#~^bH0^lJQf=HKs}A!e?o8)^}u!0 zQ)c#V4jW<757Iks2A4CgRceW0VIK1_hdo&Ek{Gxlosb=Pf(a>FgsaZEqj8yZTs2|D zkhBd=M>1sxxude<D^;&DVS6Glkp!pBt_Syku!EFrL6~0GqSFVUn&NKJUX0e<=MV3| zJw$w^V?Db;$gY@dv$FmSOnj&6ZM?gB8Xvvm1hXi>=DvDA4p^w+omqJGSOzw5Ymd|i zZ3@Au*@G@Gg`~suL`+|GgsJiASD^#~7#l=jDk_Z;3^$lgXm|{JRUn4W)}DuZfB+f1 zBp5p;y(^9D9o}2IXL#&>_IL{`xe-k^3<39y?-WS)!`$`o&zmeMmz0pq>PVJ9`e(nD zJRN<`$ln71zx2z0jy}KKsrx1TlRBg*YYY64K5FFiOp#*~LF)z;>A|C^dd}r2X0_Cs zPR$mY=Uue@tlu)S!zH2QQa#z$pe5kytj5XH=gizLl_5PZRgmimJ;od+<KbK%mVEJX zWD9ltOGjKs*_qd4;Q==uUTi>TUfO=dcZa>#PTf5{kmXrJ?*Y5^E2@g7Ec5A*FIA)! za@STj5XAkbr9O3+t0~Dy8Oh`ak5|NCqxhUoUq3$7e6feGCtK!{1j@eY*xPa8+L;JG zU1gec$LrbEHg|K3GU4$OHjepL1<HUwynny9@5Z5oBZHw&zTWS<4ohHU*@rz<TIj#| z_OfdDqwE=z7t)Tze2~a|PmhnAbX<(@&Q!MQyQ2$(f58r?-LMb;Sg|nl;>$ayp$AQO zcnjBFTz=+4x7@4UaDVvk8;4KY26&gOdtFy=+2q##?AnIXq5xsK=DQ<XoV(~Me5pXC zg8qB{fgsVyg@RN6h4Ho{9h{tRpcD-Q2-q1R4<!#k9mq~kYtc$-*0j%}Iu}Gfpng=q zA>E*YHMKA8uw5G)%>}#z>h(FKY-uacvdouqq=FoT69GCCKzBW>=u7)-)A`I*&LH^z zqmdg8I^_Aubu7!~c4zMT=cVmZs-E4e>;5<LaWeLq)EI^RIUSI_=-jiBx_LF5li#U7 zF1?(WVUSs6e7u`6+n{M?vlIR0%Hmy~OM#~E)s%$_Ek}Gj5d`7vs&`1k>4&%*`#RGV zGMDHhSWP`D@)|{$Re-2T8lVfW?#rM0!+><;{L_fZ8WU}{0`)^gIKI;7*+#B{&s3PA zPjFkv&$8aU5`UKT<CA~3z5I8}?Fa#jjlw36hv5|_SSaIu<zi$XeRedw*tVm9WRF*v z#q`Dm07+A3m7>Tmu}!7>=XP!0wQHuBP?xG}nId^&a4I1(CX|)p<8Kn5Yo0hiSt+0L z^@H9D$5rXuPH$x!*+Nx^H&g%#yQ9N`8pco-FnuxRE=c0EPK367zhD%h?8*q0QjYIL zV<nBNQE7ELfe9V=G;m@Vx~2%RekGLs7y}Xh0RnHlSqQb_ePdxve0DjbOxAGWaw|GS zAwoZ%<6LhV#&ANC*E~niuqR_L_Q-Y!)G^8)JQgZ>&&Gk3w(k3J<PtA)TL{W_n&gS5 zv~^Bf)k7gU*uHu>tj)N9h%md+R_ZNhaY8U|dWQ}vl&PO9k>IJA02jo8)lRH+UN=44 zw8=90G`Yl5n^|!*v1Hn+2Z<g*G^IQRDq7~&MvU{x5x1@l2na1{E4!A)DAhae`A|I9 z)<z6J!k2HLtEWlKp{MPf4E{oW=SxEXt4)==yXC;^Ta=sXs_owI1Q58{XJ=1L^@>~; zq;*H>xKv;KJw$fPPde1(Gy&|4CeoR0{c?-|U-HgCb(f5-{T&$fKUO=vq&b!rz2s{G z7K^N~o$qB>*v<fJ4~WFB#{JX$923vS8~$DxxwwxIy{8@LGBc;sWJe7Lx_NLzTfEN{ zs$mGj)*4?YI^7MItY^tIt~*ai>r=<L)6Grob~`OwBa)Gjz@%}?>A5v#Ni@!+A2R9I zk#f(uCt58*eS{#?jI}T?RNl&MnNYd*rdVPHZ=<A>AP1k0NTm#dTrl$eW?1z??ud_8 zAxG}zc3Cc4ZOIm&FlO4boqv<^M+%?qSI?<)G8mX}LP%n;0XDVD3RNJz05eD+Gg6WV z_t_h?O=4E}B4`#<+vC52vHp?RYpWT!5`{vGRcVwouNpo486u$z#EFs2w<Y%sbc9ZF zV-lD_BB89X+Oqf6#t9o9plc2*bo{&7rH{`$0m9-4Zh$ss$ZJMnPk^FsaVv4iZ3g*& zyhM^MA#jf+Q*apxTF<Qrw-KWB@Gd#xs{4jE9~y<0Ivz^X7d8LR5K6}|JWsq58}Dl> zaQ`VOcZHN-vujZbvr_O+2X`YZDJ95#E%2SyN~j0o+@0iF*!x<r+R2z};aJ(@C)0$K zp91!aHKuzT5v=FOl2k<j#Q_h9RFD%I8y2syg}b9+cn;<YXrpTIYB%Af?)ZB8z9I(O zMAH2GvzuO7-@J@^*MBqNc$cNEXNk!}ev2Ym7(CeKhJ^Cb30M=CEglggWLF}1jlO9# zS%{bay1}w26P+%h3zKp^rXHN@R6a=&>K>QP7?`HRf2es9j<O2$(@d1@sTE|2|9DSf zWI^L930FfcJkesV$g_uCVLPGacifRt=ZslDrI_!B=OdC=gxK#k!o%M`H#HHFsFL~u zva}2K+WO8bf-E$B4D51|ukmM+z&^nTqod~$VZ{VP{pRX+_x})Rl69GM$yWl^QeW2h zfmh*6TDk(bT<Yk|1bU1V`!%`JEQN*QJg3SF^+$fv6Q#OzSV*~~U=y!Iw(lGXF9z-* zPKXMknHN>^1qOO4aW}g`U%GgIdfkHJ*oPt|3-^i9=#kXvgO@<Ci-woCWtNt{-Dn0m z>5EZ8>7AMxTpi*AA~H3t;Gsit5a=!u?Ln2;V3D96-L&0kl5OS)Q%+9?#e&<6)x?eP zy7fF*$DKO?d?xfvt?!lNts@tUn{Q_6bVxzKI(3dy2XuqXyy!lCCAbF%>}6CorS5Po znKYJokj2zg9}dUkD+sDVVIdq!{*-nQ%bl+FK5$`nZ{_8`M+tXi-OQ6%M<<Q;S`el@ zjuxDgN7@KwzZLk~2`;{E8`}bUUbwBd>s&=z<~E1pC}a%-gI@B4g&mi{^2*#*r*#B8 zyTU&@Ax{lkgU84dxzH6dQ>jhoM&tet8th}_i@KE*OFv=JPO_qU*S8IWgG#d7za#fq zZQ}}e{ULCPJ^1i~Ius(uy;XWa?b$Hx!PNhlf3Un<Xe60`*gd;?t-EovRHR~I1hz)n zDrS<v)KMpU5GKGX0uY?mT8Ryrkk@nqL2QkkK)$%1_G=F^bvR3NMh4Dm71a1IN-R_o zZmKPrk-f)0{Y+cJ2;Q%*M5oY6fBbgJ<~`gDYnqzwrIWq=M!B%CGr~Tjj;~IRj}Hxd zWIdqc`-XNly*s}<6mrbGFzTd(im<-u(IL*4!MnKk$JErLzl<+m`*eD5Ubp^jbby8c zHY}H>_48?uSK8H^%)={J+ipG@>bmZ~`GXKUB*t%S|HiQlKUDN0){M}^PYnuA`n)^r znay7^x3oJMXSP10ZQ3z!biw`84#eXXMZL5;l|>iMRX%*?xLNp{O~oGD6NL{F3nPCY zO380sdF~@K7*q4)6HE<?8013b9>cNjGtBGet=}eZ_@#<C8m}<AXzASAqX>297@xAV zh2q~w8Ww)7?Hx$JDJ2DTZ?8khiXawk%(lj$C^@uE=HOK`j3&NN&K}3qOq)TP7K*I{ zDC2ptd_b#tSVbUaQTKQNw*KxqN!#tFWbgiH(+|HNnBZWhO3ajfQzvgly>Er?$WRFz z!5<)uNJWDSHR9Qdwb#eY+#`-hQUQE3Lu$hy29&vnMw%Bgvk+mR3$t?19uZZBZcF|3 z<9q0{zY9M|quqJfc=|<^9=_593G2WBx9g$oj)2qYSULkahC@hrQyU2D&p>v7;6f4V zx<51A4I&9JT$S{U2pVy^dKw&AqvG_ezVxpPY!k$(EiW`>%z!Zt(jEt#+H5%p!r1ee z;|!z~1p>Fh=7^7%@{k=2q<{&p1fkWFrG!kl1Xt<8O>fh&i6Yn!`6%67cE8@K<QMG7 ziR63HhiM0548>_446tN^W-|rLUxR$ThY4QOm6sqh8q!GMT@Au`(y@gEY?X-o#udvG z0Rx;(#Q@}Jt)|h2NP)mRymv7nQ(2b2Iol-nRQ6FIecOrnRU=0VHcbaI&SP!qX9f!_ zdYI@^kX;Q0n<6?PyJVFpNr}^8enE0SE^3C!Ib0lxJ^;?Xnv)mVoVVozF8x4;gtt7V zA|^&MOcPPVID`p>!e{EHQ?Vh7u;V=J2>o~?A5di=L-av|IP|SzL_Hs9reSmhs9pk$ zLz4<#^Kz<VS9qKn3pq7DL9*dtAFrLdO+~n@725M~%J6MX6lfqG(o4Z?6Tx-~Fj`s0 z;z(>T73wO6+onj3Q{d^VMU^~^C*_PU{Y+_E%BP#`AGvAkn-vKZJkm+FctXQaw)El# z$>^$LFv`pjSsV%o4lF6En|X$AuOqEyodFnmCNE3&H#2CJ;a-zvzPnO4sq7AHIkPji zeEUG6hF<wdKRa|XJs7on*JMf5WXk?;yAGVK$my$~&Q~OOrZT<-u5;t|iQ|$7Qs@j= z6bL@mo5;#5cSoGk<3M`Hq3HuDW7hC}6s{~WK7?7ZH4C;+d}zy!<N|}EZXoE{3Wzri zN>HkLcvPu+Af@40)un-|wg*-1->Ud3)t$E0-MgxLk5%`dt-d-?J@i1Lg{u~*)Qs5H zqy#H`0v9$dD}VTazZr|y2ZaXc9+-^9dlbtO>*PK!ML;T)NeI~o)^tr-qlyjUxuS@u zZ{<~EyU63;w2dRQd}g$#cZFJfsM$|EXW-1%ZZs(EkbBS~S0OxSTo)>S0Dd|dH8B|x zQhfHMr%|<shU0S;BUwd{M0sQtN!!2n$Ic6HJ<l(;kj8h)nVppd8!FygQU~mk^wFsp zw1w0wbs0NFxi}StDHY(V0-jl$a6iz%Tu~uHnIo$L5bB<EME>?9=~mSkT$R)At25Ka z;YEgW0-eG-LxK}<r$+-TMD~ec^Ds%F(Mp2?R;H`V3((*|JEn6fyrWT#r_i?_2uo7> z(QuC91RSahMLh=_Gr>d#>Y%eGRRp~D$Ng*}-T%<2Dw2me8KO6w<fon|_#8LdSaSa; zC;M^)Fr=kho6`-MU;?ip?5eym&I<o@Q-VC@KC$`TQQS`8+=CuJ;!>y_T)uxZT~lIK zYc!O&;xZwS?B#vUNp^;vKtrG$6%5EnD8qtqX(XJPN=r#T*lQMkWvm$cxn6b&&{>nK zss$I)F##cjE3W!Sbxb#}SzEEew^Nl{mWX=%{e%c0DN?;Y2@FVB@GO9m1-Oxb@)}si zP5qWX;T933NikrSLlPhEZzF<QWUXX+04<TK9ta|%2qYzg&zLJKGr@-R4hJe5jlL{~ zLX;_Rp#W~D=(yfxJxSP<M+fLUOtT1Ezd=CtieZU7Ob^vWivk}Lof1lVrXUPw9&6nX z#PcwJ(xmcnz_Wm^+ai>fys4?ci2P~uceGU#0W}|kY2iaQN!TTw@=lHl2v8INrBI5v zN_C$Xb(t{S#Li|$RJ3N73!@y;L@{om`8ILPL;8%g%{$3zstdJ1p9MB<O^r>K)QQlC zL_j426TpE-%EMd)$PNNr!qK-f@Q?k$QY7g9DXDyh*?<5Nm<$asg(uRnQGwP6NvL@$ zT$!WpEap5lH#FFRF%?7G#1;vH%_m2JPZv?b9X8QB;bSy^k1j|Y11&M&OYkn4k6OT? zj5vsK8d7V6idO8gIwt^H=~$9NczIg?-^Kl>#^6QiX5jff2?8_~XPvbMsZPiA5I}p@ zAm8_U_WL)2Ex?6TGv0A%bO|z%?q$S-ORE!3u2IICsNgOjzrZ0{fNTX}GX=;RF#vxJ zHWxeI@`hvw!n>)+gA>SU4zy)ve+^FV_Gh0VOL*2CM4o{<Wxs8U$oa?Q@VDar>d!Pe z3AExMZ$@Fo65_|W?yO*tOT#|lz-u>`8VLwf_TWYl+6Cu`9Kz1iLf$*W8&d#LAd<`s zN`P*=O)=5=0JdFo_3uV!a4=N@U8_OtEm82bsu80T9_cg;l?ko^nTn}s@&?D<fxpk< z@%RE`SCZ>Cduobvo0e-EdCeXo#}H7(y^;c0Dg_fMcF9;%%Vh+sT0r4WvZEJA+eGL< zt_M{hoSSW2Vbjz>TQWF6qtCuS#K5bL0|p$`E=!YY0%$;l5GJ`NWS}yl(8FG4hSMYP z8cIDMO{GGrnP^pxyC;L&DnQ0DFv2!X2d3}g$jQn=E&GVh**SQ#4r+l)tf__)_^441 zG$MJ*LNE}+!SsTl_Ov~K1UKPOrVO_h3RIfoVM`#Mqk`}5^2%TW(M+0wr0(49-AaXA zc7<wgHk8luSJr`^U+!To2ghr}_6soBIsg78>iou7fFaHH7!D{AOC|DcTGs&MwJlZi zCst?fxcpRK3)@lbfVHGR9Yl`ymY6OM6#j))NW}!uDXTvqhav?uJoNA<h|C_zU$$OC zWNj9}kv-t%Ibg^K?8$Vst4F%7ZFy$3wSo^hT8_3GVrotX&(uKUA<+GNOfypoV4|(~ zkh~*O68xee4k_P{%_rpG1KcxscPwag?tczf)PfD=0COipBCSoUZ!4ZEZ|$$K^h{QZ zsjM$J&c0M&wB`(x1<*&8(f7j!HDrH4l$U!NWu3sO#SgdH8qV}=m4h43cYxJtxA&~! zir2wLApNkBJ(o)4V;|~%KOTB{Ll|~$kE(}I;dQ-2{gI0^I^p8j$A-OrXD>yo3YsSJ zwY38Ne54?Y?bwQPmsO|jre$=DsVcwE!A)doYGNX`v)gJ|JQe@j9yAT-L}jd!)!Df{ z#s0W2#BfsuS(x0DZ^VO2b+JGPV(%z~YDWK_1uo-YsA~<;W==@iWpl@6%kX9Elgl>e zm+gj^9iA-P{8n_WjX4<CU#N=<9D%$!kfi#`fUqWirnpAaG4^$6tff<IVA0c6m1m{y zD}{}<-BTB5TArD?h-s#=-ua5pUskx(#vUutyL&12z)8he$BIpwD~)HL?L5joL_h$7 z7bW8_m``5(G5jLa6p?juHGAXyYVPoA{*%?h->XHMFFB4cOTu54oqSpGZdFzYr;CpO zAj#0;{v;lJQ+Vs2*|6sDgyQkIHeJvM_p`G8jOO9W=Jo`l=GlFcH+_CM1q7Y!9bVFX zPCZg?8`P`_Wi*5**6Y66>h|U^JT+M}H4F9T)}1$ht-L7`%0DKj{aNv5Z}8juPka~O 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 diff --git a/.repo/screenshot.png b/.repo/screenshot.png deleted file mode 100644 index b53f52efdc430123c37f98d7e63908d2c769ce7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24443 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 JuKx9{{tao^FdzT` diff --git a/.repo/screenshot1.png b/.repo/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..dfca16eb640d02776f1afddd957151d195dd6a35 GIT binary patch literal 31778 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 S0?b_Rd-5{M(iKvsLH`Aa#a|2n literal 0 HcmV?d00001 diff --git a/.repo/screenshot2.png b/.repo/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..9f296dcd985afd754c3ea311e983d6b26045b005 GIT binary patch literal 30456 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 Iw;IO(11V$|)Bpeg literal 0 HcmV?d00001 diff --git a/.repo/theme.png b/.repo/theme.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4d8a181260b2437b748cf7f1eaf1a476329297 GIT binary patch literal 70450 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⪻{y-hysNrmpVftwOq4EFncCw-fDRm!kXKh*6$u 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 literal 0 HcmV?d00001 diff --git a/Luna/Windows/SettingsWindow.xaml b/Luna/Windows/SettingsWindow.xaml index 752dabd..956811b 100644 --- a/Luna/Windows/SettingsWindow.xaml +++ b/Luna/Windows/SettingsWindow.xaml @@ -5,7 +5,7 @@ xmlns:utils="clr-namespace:Luna.Utils" xmlns:models="clr-namespace:Luna.Models" xmlns:controls="clr-namespace:Luna.Controls" - Title="Luna" Width="420" + Title="Luna" Width="380" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" SizeToContent="Height" BorderThickness="1" SnapsToDevicePixels="True" Closing="Window_Closing"> @@ -22,6 +22,22 @@ <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> <utils:ObjectComparatorToVisbility x:Key="ObjectComparatorToVisbility" /> <utils:GreaterThanOrEqualComparatorToBoolean x:Key="GreaterThanOrEqualComparatorToBoolean" /> + + <Style x:Key="SunPathStyle" TargetType="Path"> + <Setter Property="Width" Value="16" /> + <Setter Property="Height" Value="16" /> + <Setter Property="Stretch" Value="Fill" /> + <Setter Property="Fill" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Data" Value="M25,50 a 25,25 0 1,1 50,0 a 25,25 0 1,1 -50,0" /> + </Style> + + <Style x:Key="MoonPathStyle" TargetType="Path"> + <Setter Property="Width" Value="15" /> + <Setter Property="Height" Value="16" /> + <Setter Property="Stretch" Value="Fill" /> + <Setter Property="Fill" Value="{StaticResource ForegroundBrush}" /> + <Setter Property="Data" Value="M459.782,347.328c-4.288-5.28-11.488-7.232-17.824-4.96c-17.76,6.368-37.024,9.632-57.312,9.632c-97.056,0-176-78.976-176-176c0-58.4,28.832-112.768,77.12-145.472c5.472-3.712,8.096-10.4,6.624-16.832S285.638,2.4,279.078,1.44C271.59,0.352,264.134,0,256.646,0c-132.352,0-240,107.648-240,240s107.648,240,240,240c84,0,160.416-42.688,204.352-114.176C464.55,360.032,464.038,352.64,459.782,347.328z" /> + </Style> </Window.Resources> <WindowChrome.WindowChrome> @@ -59,7 +75,7 @@ <RowDefinition Height="*" /> </Grid.RowDefinitions> <controls:WindowHeader x:Name="Header" HasUpdate="{Binding Status, Converter={StaticResource GreaterThanOrEqualComparatorToBoolean}, ConverterParameter={x:Static models:UpdateStatus.NewUpdate}}" OnClickUpdate="WindowHeader_OnClickUpdate" /> - <StackPanel Grid.Row="1" Margin="32"> + <StackPanel Grid.Row="1" Margin="24"> <CheckBox Content="Enable automatic theme changer" IsChecked="{Binding Enabled}" /> <StackPanel Margin="0 16 0 0" Visibility="{Binding Enabled, Converter={StaticResource BooleanToVisibilityConverter}}"> <Grid Margin="0 0 0 16"> @@ -69,11 +85,17 @@ <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <StackPanel> - <Label Content="Change to light theme at" /> + <StackPanel Orientation="Horizontal" Margin="0 0 0 6"> + <Path Style="{StaticResource SunPathStyle}" /> + <Label Content="Light theme time" Margin="6 0 0 0" Padding="0 0 0 1" VerticalAlignment="Center" /> + </StackPanel> <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding LightThemeTime, UpdateSourceTrigger=LostFocus}" Format="ShortTime" /> </StackPanel> <StackPanel Grid.Column="2"> - <Label Content="Change to dark theme at" /> + <StackPanel Orientation="Horizontal" Margin="0 0 0 6"> + <Path Style="{StaticResource MoonPathStyle}" /> + <Label Content="Dark theme time" Margin="6 0 0 0" Padding="0 0 0 1" VerticalAlignment="Center" /> + </StackPanel> <toolkit:TimePicker ShowButtonSpinner="False" ShowDropDownButton="False" Value="{Binding DarkThemeTime, UpdateSourceTrigger=LostFocus}" Format="ShortTime" /> </StackPanel> </Grid> @@ -83,33 +105,45 @@ <CheckBox Content="Change system theme" IsChecked="{Binding ChangeSystemTheme}" /> <CheckBox Content="Change app theme" IsChecked="{Binding ChangeAppTheme}" /> <CheckBox Content="Change wallpaper" IsChecked="{Binding ChangeWallpaper}" /> - <StackPanel Margin="0 16 0 0" Visibility="{Binding ChangeWallpaper, Converter={StaticResource BooleanToVisibilityConverter}}"> - <Label> + <StackPanel Margin="0 8 0 0" Visibility="{Binding ChangeWallpaper, Converter={StaticResource BooleanToVisibilityConverter}}"> + <StackPanel Orientation="Horizontal" Margin="0 0 0 6"> + <Path Style="{StaticResource SunPathStyle}" /> + <Label Margin="6 0 0 0" Padding="0 0 0 1" VerticalAlignment="Center"> + <TextBlock> + Light theme wallpaper (<Hyperlink Click="BrowseWallpaperHyperlink_Click" Tag="LightWallpaperPath">Browse...</Hyperlink>) + </TextBlock> + </Label> + </StackPanel> + <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightWallpaperPath}" /> + <StackPanel Orientation="Horizontal" Margin="0 0 0 6"> + <Path Style="{StaticResource MoonPathStyle}" /> + <Label Margin="6 0 0 0" Padding="0 0 0 1" VerticalAlignment="Center"> + <TextBlock> + Dark theme wallpaper (<Hyperlink Click="BrowseWallpaperHyperlink_Click" Tag="DarkWallpaperPath">Browse...</Hyperlink>) + </TextBlock> + </Label> + </StackPanel> + <TextBox IsReadOnly="True" Text="{Binding DarkWallpaperPath}" /> + </StackPanel> + </StackPanel> + <StackPanel Visibility="{Binding ChangeType, Converter={StaticResource ObjectComparatorToVisbility}, ConverterParameter={x:Static models:SettingsChangeType.Theme}}"> + <StackPanel Orientation="Horizontal" Margin="0 0 0 6"> + <Path Style="{StaticResource SunPathStyle}" /> + <Label Margin="6 0 0 0" Padding="0 0 0 1" VerticalAlignment="Center"> <TextBlock> - Light theme wallpaper (<Hyperlink Click="BrowseWallpaperHyperlink_Click" Tag="LightWallpaperPath">Browse...</Hyperlink>) + Light .theme file (<Hyperlink Click="BrowseThemeHyperlink_Click" Tag="LightThemePath">Browse...</Hyperlink>) </TextBlock> </Label> - <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightWallpaperPath}" /> - <Label> + </StackPanel> + <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightThemePath}" /> + <StackPanel Orientation="Horizontal" Margin="0 0 0 6"> + <Path Style="{StaticResource MoonPathStyle}" /> + <Label Margin="6 0 0 0" Padding="0 0 0 1" VerticalAlignment="Center"> <TextBlock> - Dark theme wallpaper (<Hyperlink Click="BrowseWallpaperHyperlink_Click" Tag="DarkWallpaperPath">Browse...</Hyperlink>) + Dark .theme file (<Hyperlink Click="BrowseThemeHyperlink_Click" Tag="DarkThemePath">Browse...</Hyperlink>) </TextBlock> </Label> - <TextBox IsReadOnly="True" Text="{Binding DarkWallpaperPath}" /> </StackPanel> - </StackPanel> - <StackPanel Visibility="{Binding ChangeType, Converter={StaticResource ObjectComparatorToVisbility}, ConverterParameter={x:Static models:SettingsChangeType.Theme}}"> - <Label> - <TextBlock> - Light .theme file (<Hyperlink Click="BrowseThemeHyperlink_Click" Tag="LightThemePath">Browse...</Hyperlink>) - </TextBlock> - </Label> - <TextBox Margin="0 0 0 8" IsReadOnly="True" Text="{Binding LightThemePath}" /> - <Label> - <TextBlock> - Dark .theme file (<Hyperlink Click="BrowseThemeHyperlink_Click" Tag="DarkThemePath">Browse...</Hyperlink>) - </TextBlock> - </Label> <TextBox IsReadOnly="True" Text="{Binding DarkThemePath}" /> </StackPanel> <Grid Margin="0 16 0 0"> @@ -118,8 +152,22 @@ <ColumnDefinition Width="8" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> - <Button Content="Test light theme" Click="TextLightThemeButton_Click" /> - <Button Content="Test dark theme" Click="TestDarkThemeButton_Click" Grid.Column="2" /> + <Button Padding="0 8" Click="TextLightThemeButton_Click"> + <StackPanel Orientation="Horizontal"> + <Path Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" Style="{StaticResource SunPathStyle}" /> + <Label Content="Test light theme" VerticalAlignment="Center" Margin="8 0 0 0" Padding="0 0 0 1" + FontSize="{Binding FontSize, RelativeSource={RelativeSource AncestorType=ContentControl}}" + Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" /> + </StackPanel> + </Button> + <Button Padding="0 8" Click="TestDarkThemeButton_Click" Grid.Column="2"> + <StackPanel Orientation="Horizontal"> + <Path Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" Style="{StaticResource MoonPathStyle}" /> + <Label Content="Test dark theme" VerticalAlignment="Center" Margin="8 0 0 0" Padding="0 0 0 1" + FontSize="{Binding FontSize, RelativeSource={RelativeSource AncestorType=ContentControl}}" + Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ContentControl}}" /> + </StackPanel> + </Button> </Grid> </StackPanel> </StackPanel> diff --git a/README.md b/README.md index 770aad6..bbaca13 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,64 @@ -# Luna - -A super lightweight dark mode automatic switcher for Windows 10 - -**Features** - -- Set light/dark theme activation times -- Toggle app/system theme based on activation times -- Change wallpaper to light/dark activation times - - - -[](https://github.com/adrianmteo/Luna/releases/latest/download/LunaSetup.exe) - -## Install - -You can download and install the latest release from [here](https://github.com/adrianmteo/Luna/releases). - -**Note:** Windows SmartScreen might show you this warning screen. This is because the setup file is not being signed but the app is 100% safe to be run. - - - -## Description - -I've built this app in my spare time to resolve my frustration with Windows 10 for not having automatic dark theme switcher. This may be included in the next releases of Windows 10 but for now here is Luna! - -This is a super lightweight app built using C# and WPF technologies. It creates task schedules for light/dark theme times. There are no running processes in the background and there is not need to start when Windows starts. - -3<sup>rd</sup> party libraries used: -- [Infragistics Metro Light and Dark Theme for WPF](https://www.infragistics.com/community/blogs/b/blagunas/posts/free-metro-light-and-dark-themes-for-wpf-and-silverlight-microsoft-controls) -- [TaskScheduler](https://github.com/dahall/taskscheduler) - -## Command line parameters - -| Parameter | Description | -| --------- | ------------------------------------------------------- | -| `/light` | Switches to the light theme based on the saved settings | -| `/dark` | Switches to the dark theme based on the saved settings | -| `/clean` | Cleans all task schedules created by the app | - -## Future plans - -As time passes I might add new features (or contributions) to complete an experience that Windows 10 doesn't have (yet). - -## Contributions - -To make this app better for everyone, feel free to contribute with ideas, bug reports or even better: pull requests :) +# Luna + +A super lightweight automatic theme changer for Windows 10 + + + + +[](https://github.com/adrianmteo/Luna/releases/latest/download/LunaSetup.exe) + +## Features + +- 🎉 Change Window light/dark theme based on set times +- 🎉 Change the Windows theme to a custom theme (see image below) and this includes changing: + - Background (image, slideshow or solid color) + - Colors + - Sounds + - Mouse cursor + -  +- 🎉 Change system or app color theme +- 🎉 Change wallpaper for light/dark theme + +## Install + +You can download and install the latest release from [here](https://github.com/adrianmteo/Luna/releases). + +**Note:** Windows SmartScreen might show you this warning screen. This is because the setup file is not being signed but the app is 100% safe to be run. + + + +## Description + +I've built this app in my spare time to resolve my frustration with Windows 10 for not having automatic dark theme switcher. This may be included in the next releases of Windows 10 but for now here is Luna! + +This is a super lightweight app built using C# and WPF technologies. It creates task schedules for light/dark theme times. There are no running processes in the background and there is not need to start when Windows starts. + +3<sup>rd</sup> party libraries used: + +- [Infragistics Metro Light and Dark Theme for WPF](https://www.infragistics.com/community/blogs/b/blagunas/posts/free-metro-light-and-dark-themes-for-wpf-and-silverlight-microsoft-controls) +- [TaskScheduler](https://github.com/dahall/taskscheduler) +- [Extended WPF Toolkit](https://github.com/xceedsoftware/wpftoolkit) +- ThemeTool.exe - a Windows internal theme testing program used to change the Windows theme + +## Command line parameters + +| Parameter | Description | +| --------- | ------------------------------------------------------- | +| `/light` | Switches to the light theme based on the saved settings | +| `/dark` | Switches to the dark theme based on the saved settings | +| `/update` | Silently checks for an update and installs it | +| `/clean` | Cleans all task schedules created by the app | + +## Build + +Clone and open the solution in Visual Studio. Right-click on the project and click `Restore NuGet Packages`. + +If you want to build the `Release` configuration and generate the setup executable (which is done automatically by building the `Release` configuration) you need to download and install [Inno Setup](https://jrsoftware.org/isinfo.php). The output setup executable can be found under `.extra\Output`. + +## Future plans + +As time passes I might add new features (or contributions) to complete an experience that Windows 10 doesn't have (yet). + +## Contributions + +To make this app better for everyone, feel free to contribute with ideas, bug reports or even better: pull requests :)