diff options
Diffstat (limited to 'win/CS/HandBrakeWPF')
-rw-r--r-- | win/CS/HandBrakeWPF/App.xaml.cs | 11 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/HandBrakeWPF.csproj | 8 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Properties/Resources.Designer.cs | 9 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Properties/Resources.resx | 3 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Themes/Controls/ComboBoxDark.xaml | 372 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Themes/Dark.xaml | 101 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/UserSettingConstants.cs | 1 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/ViewModels/OptionsViewModel.cs | 43 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/AudioView.xaml | 11 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/ChaptersView.xaml | 5 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/OptionsView.xaml | 3 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/SubtitlesView.xaml | 16 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/defaultsettings.xml | 8 |
13 files changed, 552 insertions, 39 deletions
diff --git a/win/CS/HandBrakeWPF/App.xaml.cs b/win/CS/HandBrakeWPF/App.xaml.cs index ce31b066d..a091dfaf9 100644 --- a/win/CS/HandBrakeWPF/App.xaml.cs +++ b/win/CS/HandBrakeWPF/App.xaml.cs @@ -108,8 +108,7 @@ namespace HandBrakeWPF }
// Setup the UI Language
-
- IUserSettingService userSettingService = IoC.Get<IUserSettingService>();
+ IUserSettingService userSettingService = IoC.Get<IUserSettingService>();
string culture = userSettingService.GetUserSetting<string>(UserSettingConstants.UiLanguage);
if (!string.IsNullOrEmpty(culture))
{
@@ -122,6 +121,14 @@ namespace HandBrakeWPF }
}
+ bool useDarkTheme = userSettingService.GetUserSetting<bool>(UserSettingConstants.UseDarkTheme);
+ if (useDarkTheme)
+ {
+ ResourceDictionary darkTheme = new ResourceDictionary();
+ darkTheme.Source = new Uri("Themes/Dark.xaml", UriKind.Relative);
+ Application.Current.Resources.MergedDictionaries.Add(darkTheme);
+ }
+
// NO-Hardware Mode
bool noHardware = e.Args.Any(f => f.Equals("--no-hardware")) || (Portable.IsPortable() && !Portable.IsHardwareEnabled());
diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj index 1c1fbc871..fcd89d65b 100644 --- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj +++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj @@ -502,6 +502,14 @@ <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
+ <Page Include="Themes\Controls\ComboBoxDark.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
+ <Page Include="Themes\Dark.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Themes\Generic.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs index 8a9b7e42b..353beb922 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs +++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs @@ -2633,6 +2633,15 @@ namespace HandBrakeWPF.Properties { } /// <summary> + /// Looks up a localized string similar to Use the Dark Theme. (Requires Restart) (THIS IS AN EARLY PREVIEW. IT IS NOT YET COMPLETE!). + /// </summary> + public static string Options_DarkTheme { + get { + return ResourceManager.GetString("Options_DarkTheme", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to Decoding. /// </summary> public static string Options_Decoding { diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx index 05ca13d66..37704b92b 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.resx @@ -2014,4 +2014,7 @@ Where supported, any user presets will have been imported.</value> <data name="QueueView_ExportCLI" xml:space="preserve">
<value>Export Queue (CLI Only)</value>
</data>
+ <data name="Options_DarkTheme" xml:space="preserve">
+ <value>Use the Dark Theme. (Requires Restart) (THIS IS AN EARLY PREVIEW. IT IS NOT YET COMPLETE!)</value>
+ </data>
</root>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Themes/Controls/ComboBoxDark.xaml b/win/CS/HandBrakeWPF/Themes/Controls/ComboBoxDark.xaml new file mode 100644 index 000000000..5e3431a77 --- /dev/null +++ b/win/CS/HandBrakeWPF/Themes/Controls/ComboBoxDark.xaml @@ -0,0 +1,372 @@ +<ResourceDictionary + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"> + + <SolidColorBrush x:Key="ComboBox.Static.Background" Color="#414141" /> + <SolidColorBrush x:Key="ComboBox.Static.Border" Color="#606060" /> + <SolidColorBrush x:Key="ComboBox.Static.Editable.Background" Color="Black" /> + <SolidColorBrush x:Key="ComboBox.Static.Editable.Border" Color="#5D5E60" /> + <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Background" Color="Transparent" /> + <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Border" Color="Transparent" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Glyph" Color="White" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Background" Color="#43474C" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Border" Color="#7EB4EA" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Background" Color="Black" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Border" Color="#7EB4EA" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Button.Background" Color="#1D5791" /> + <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Button.Border" Color="#4B77A3" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Glyph" Color="White" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Background" Color="#2164A8" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Border" Color="#569DE5" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Background" Color="Black" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Border" Color="#569DE5" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Button.Background" Color="#2164A8" /> + <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Button.Border" Color="#569DE5" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Glyph" Color="#BFBFBF" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Background" Color="#282828" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Border" Color="#A8A8A8" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Background" Color="Black" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Border" Color="#A8A8A8" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Background" Color="Transparent" /> + <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Border" Color="Transparent" /> + <SolidColorBrush x:Key="ComboBox.Static.Glyph" Color="#B7B7B7" /> + + <Style x:Key="ComboBoxToggleButton2" TargetType="{x:Type ToggleButton}"> + <Setter Property="OverridesDefaultStyle" Value="true" /> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Focusable" Value="false" /> + <Setter Property="ClickMode" Value="Press" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ToggleButton}"> + <Border + x:Name="templateRoot" + Background="{DynamicResource ComboBox.Static.Background}" + BorderBrush="{DynamicResource ComboBox.Static.Border}" + BorderThickness="{TemplateBinding BorderThickness}" + SnapsToDevicePixels="true"> + <Border + x:Name="splitBorder" + Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" + Margin="0" + HorizontalAlignment="Right" + BorderBrush="Transparent" + BorderThickness="1" + SnapsToDevicePixels="true"> + <Path + x:Name="arrow" + Margin="0" + HorizontalAlignment="Center" + VerticalAlignment="Center" + Data="F1 M 0,0 L 2.667,2.66665 L 5.3334,0 L 5.3334,-1.78168 L 2.6667,0.88501 L0,-1.78168 L0,0 Z" + Fill="{DynamicResource ComboBox.Static.Glyph}" /> + </Border> + </Border> + <ControlTemplate.Triggers> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true" /> + <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false" /> + <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false" /> + <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.Static.Editable.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.Static.Editable.Border}" /> + <Setter TargetName="splitBorder" Property="Background" Value="{DynamicResource ComboBox.Static.Editable.Button.Background}" /> + <Setter TargetName="splitBorder" Property="BorderBrush" Value="{DynamicResource ComboBox.Static.Editable.Button.Border}" /> + </MultiDataTrigger> + <Trigger Property="IsMouseOver" Value="true"> + <Setter TargetName="arrow" Property="Fill" Value="{DynamicResource ComboBox.MouseOver.Glyph}" /> + </Trigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true" /> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.MouseOver.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.MouseOver.Border}" /> + </MultiDataTrigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true" /> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.MouseOver.Editable.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.MouseOver.Editable.Border}" /> + <Setter TargetName="splitBorder" Property="Background" Value="{DynamicResource ComboBox.MouseOver.Editable.Button.Background}" /> + <Setter TargetName="splitBorder" Property="BorderBrush" Value="{DynamicResource ComboBox.MouseOver.Editable.Button.Border}" /> + </MultiDataTrigger> + <Trigger Property="IsPressed" Value="true"> + <Setter TargetName="arrow" Property="Fill" Value="{DynamicResource ComboBox.Pressed.Glyph}" /> + </Trigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true" /> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.Pressed.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.Pressed.Border}" /> + </MultiDataTrigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true" /> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.Pressed.Editable.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.Pressed.Editable.Border}" /> + <Setter TargetName="splitBorder" Property="Background" Value="{DynamicResource ComboBox.Pressed.Editable.Button.Background}" /> + <Setter TargetName="splitBorder" Property="BorderBrush" Value="{DynamicResource ComboBox.Pressed.Editable.Button.Border}" /> + </MultiDataTrigger> + <Trigger Property="IsEnabled" Value="false"> + <Setter TargetName="arrow" Property="Fill" Value="{DynamicResource ComboBox.Disabled.Glyph}" /> + </Trigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false" /> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.Disabled.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.Disabled.Border}" /> + </MultiDataTrigger> + <MultiDataTrigger> + <MultiDataTrigger.Conditions> + <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false" /> + <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true" /> + </MultiDataTrigger.Conditions> + <Setter TargetName="templateRoot" Property="Background" Value="{DynamicResource ComboBox.Disabled.Editable.Background}" /> + <Setter TargetName="templateRoot" Property="BorderBrush" Value="{DynamicResource ComboBox.Disabled.Editable.Border}" /> + <Setter TargetName="splitBorder" Property="Background" Value="{DynamicResource ComboBox.Disabled.Editable.Button.Background}" /> + <Setter TargetName="splitBorder" Property="BorderBrush" Value="{DynamicResource ComboBox.Disabled.Editable.Button.Border}" /> + </MultiDataTrigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + <ControlTemplate x:Key="ComboBoxTemplate" TargetType="{x:Type ComboBox}"> + <Grid x:Name="templateRoot" SnapsToDevicePixels="true"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="0" MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" /> + </Grid.ColumnDefinitions> + <Popup + x:Name="PART_Popup" + Grid.ColumnSpan="2" + Margin="1" + AllowsTransparency="true" + IsOpen="{Binding IsDropDownOpen, + Mode=TwoWay, + RelativeSource={RelativeSource TemplatedParent}}" + Placement="Bottom" + PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}"> + <themes:SystemDropShadowChrome + x:Name="shadow" + MinWidth="{Binding ActualWidth, + ElementName=templateRoot}" + MaxHeight="{TemplateBinding MaxDropDownHeight}" + Color="Transparent"> + <Border + x:Name="dropDownBorder" + Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" + BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" + BorderThickness="1"> + <ScrollViewer x:Name="DropDownScrollViewer"> + <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled"> + <Canvas + x:Name="canvas" + Width="0" + Height="0" + HorizontalAlignment="Left" + VerticalAlignment="Top"> + <Rectangle + x:Name="opaqueRect" + Width="{Binding ActualWidth, + ElementName=dropDownBorder}" + Height="{Binding ActualHeight, + ElementName=dropDownBorder}" + Fill="{Binding Background, + ElementName=dropDownBorder}" /> + </Canvas> + <ItemsPresenter + x:Name="ItemsPresenter" + KeyboardNavigation.DirectionalNavigation="Contained" + SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + </Grid> + </ScrollViewer> + </Border> + </themes:SystemDropShadowChrome> + </Popup> + <ToggleButton + x:Name="toggleButton" + Grid.ColumnSpan="2" + Background="{TemplateBinding Background}" + BorderBrush="{TemplateBinding BorderBrush}" + BorderThickness="{TemplateBinding BorderThickness}" + IsChecked="{Binding IsDropDownOpen, + Mode=TwoWay, + RelativeSource={RelativeSource TemplatedParent}}" + Style="{StaticResource ComboBoxToggleButton2}" /> + <ContentPresenter + x:Name="contentPresenter" + Margin="{TemplateBinding Padding}" + HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" + VerticalAlignment="{TemplateBinding VerticalContentAlignment}" + Content="{TemplateBinding SelectionBoxItem}" + ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" + ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" + ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" + IsHitTestVisible="false" + SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + </Grid> + <ControlTemplate.Triggers> + <Trigger SourceName="PART_Popup" Property="HasDropShadow" Value="true"> + <Setter TargetName="shadow" Property="Margin" Value="0 0 5 5" /> + <Setter TargetName="shadow" Property="Color" Value="#71000000" /> + </Trigger> + <Trigger Property="HasItems" Value="false"> + <Setter TargetName="dropDownBorder" Property="Height" Value="95" /> + </Trigger> + <MultiTrigger> + <MultiTrigger.Conditions> + <Condition Property="IsGrouping" Value="true" /> + <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" /> + </MultiTrigger.Conditions> + <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> + </MultiTrigger> + <Trigger SourceName="DropDownScrollViewer" Property="ScrollViewer.CanContentScroll" Value="false"> + <Setter TargetName="opaqueRect" Property="Canvas.Top" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}" /> + <Setter TargetName="opaqueRect" Property="Canvas.Left" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + <SolidColorBrush x:Key="TextBox.Static.Background" Color="#FFFFFFFF" /> + <ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="{x:Type ComboBox}"> + <Grid x:Name="templateRoot" SnapsToDevicePixels="true"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="0" MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" /> + </Grid.ColumnDefinitions> + <Popup + x:Name="PART_Popup" + Grid.ColumnSpan="2" + AllowsTransparency="true" + IsOpen="{Binding IsDropDownOpen, + RelativeSource={RelativeSource TemplatedParent}}" + Placement="Bottom" + PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}"> + <themes:SystemDropShadowChrome + x:Name="shadow" + MinWidth="{Binding ActualWidth, + ElementName=templateRoot}" + MaxHeight="{TemplateBinding MaxDropDownHeight}" + Color="Transparent"> + <Border + x:Name="dropDownBorder" + Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" + BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" + BorderThickness="1"> + <ScrollViewer x:Name="DropDownScrollViewer"> + <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled"> + <Canvas + x:Name="canvas" + Width="0" + Height="0" + HorizontalAlignment="Left" + VerticalAlignment="Top"> + <Rectangle + x:Name="opaqueRect" + Width="{Binding ActualWidth, + ElementName=dropDownBorder}" + Height="{Binding ActualHeight, + ElementName=dropDownBorder}" + Fill="{Binding Background, + ElementName=dropDownBorder}" /> + </Canvas> + <ItemsPresenter + x:Name="ItemsPresenter" + KeyboardNavigation.DirectionalNavigation="Contained" + SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> + </Grid> + </ScrollViewer> + </Border> + </themes:SystemDropShadowChrome> + </Popup> + <ToggleButton + x:Name="toggleButton" + Grid.ColumnSpan="2" + Background="{TemplateBinding Background}" + BorderBrush="{TemplateBinding BorderBrush}" + BorderThickness="{TemplateBinding BorderThickness}" + IsChecked="{Binding IsDropDownOpen, + Mode=TwoWay, + RelativeSource={RelativeSource TemplatedParent}}" + Style="{StaticResource ComboBoxToggleButton2}" /> + <Border + x:Name="border" + Margin="{TemplateBinding BorderThickness}" + Background="{StaticResource TextBox.Static.Background}"> + <TextBox + x:Name="PART_EditableTextBox" + Margin="{TemplateBinding Padding}" + HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" + VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" + IsReadOnly="{Binding IsReadOnly, + RelativeSource={RelativeSource TemplatedParent}}" + Style="{StaticResource ComboBoxEditableTextBox}" /> + </Border> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="IsEnabled" Value="false"> + <Setter TargetName="border" Property="Opacity" Value="0.56" /> + </Trigger> + <Trigger Property="IsKeyboardFocusWithin" Value="true"> + <Setter Property="Foreground" Value="Black" /> + </Trigger> + <Trigger SourceName="PART_Popup" Property="HasDropShadow" Value="true"> + <Setter TargetName="shadow" Property="Margin" Value="0 0 5 5" /> + <Setter TargetName="shadow" Property="Color" Value="#71000000" /> + </Trigger> + <Trigger Property="HasItems" Value="false"> + <Setter TargetName="dropDownBorder" Property="Height" Value="95" /> + </Trigger> + <MultiTrigger> + <MultiTrigger.Conditions> + <Condition Property="IsGrouping" Value="true" /> + <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" /> + </MultiTrigger.Conditions> + <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> + </MultiTrigger> + <Trigger SourceName="DropDownScrollViewer" Property="ScrollViewer.CanContentScroll" Value="false"> + <Setter TargetName="opaqueRect" Property="Canvas.Top" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}" /> + <Setter TargetName="opaqueRect" Property="Canvas.Left" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + <Style x:Key="ComboBoxBaseStyle" TargetType="ComboBox"> + <Setter Property="Background" Value="{StaticResource ComboBox.Static.Background}" /> + <Setter Property="BorderBrush" Value="{StaticResource ComboBox.Static.Border}" /> + <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> + <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> + <Setter Property="Padding" Value="6 3 5 3" /> + <Setter Property="ScrollViewer.CanContentScroll" Value="true" /> + <Setter Property="ScrollViewer.PanningMode" Value="Both" /> + <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> + <Setter Property="Template" Value="{StaticResource ComboBoxTemplate}" /> + <Style.Triggers> + <Trigger Property="IsEditable" Value="true"> + <Setter Property="IsTabStop" Value="false" /> + <Setter Property="Padding" Value="2" /> + <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}" /> + </Trigger> + </Style.Triggers> + </Style> + <Style BasedOn="{StaticResource ComboBoxBaseStyle}" TargetType="{x:Type ComboBox}" /> + <Style + x:Key="ButtonStyle1" + BasedOn="{StaticResource ButtonBaseStyle}" + TargetType="{x:Type Button}" /> + +</ResourceDictionary>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Themes/Dark.xaml b/win/CS/HandBrakeWPF/Themes/Dark.xaml new file mode 100644 index 000000000..a68fba433 --- /dev/null +++ b/win/CS/HandBrakeWPF/Themes/Dark.xaml @@ -0,0 +1,101 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> + <!-- + #252525 - Dark + #363636 - Mid + + #414141 - Light + #606060 - Ultralight + --> + + <SolidColorBrush x:Key="Ui.Dark" Color="#252525" /> + <SolidColorBrush x:Key="Ui.Mid" Color="#363636" /> + + <SolidColorBrush x:Key="Ui.Light" Color="#464646" /> + <SolidColorBrush x:Key="Ui.Ultralight" Color="#606060" /> + + <!-- General --> + <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="#252525" /> + <SolidColorBrush x:Key="{x:Static SystemColors.WindowTextBrushKey}" Color="White" /> + <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="White" /> + <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="WhiteSmoke" /> + + + <!-- Button --> + <Style TargetType="Button"> + <Setter Property="Background" Value="{DynamicResource Ui.Light}" /> + <Setter Property="Foreground" Value="White" /> + </Style> + + <!-- Listbox --> + <Style TargetType="ListBox"> + <Setter Property="Background" Value="{DynamicResource Ui.Dark}" /> + <Setter Property="Foreground" Value="White" /> + </Style> + + <!-- Toolbar --> + <Style TargetType="ToolBar"> + <Setter Property="Background" Value="Black" /> + <Setter Property="Foreground" Value="White" /> + </Style> + + <!-- Menu --> + <Style TargetType="Menu"> + <Setter Property="Background" Value="{DynamicResource Ui.Mid}" /> + <Setter Property="Foreground" Value="White" /> + </Style> + + <Style TargetType="MenuItem"> + <Setter Property="Background" Value="{DynamicResource Ui.Mid}" /> + <Setter Property="Foreground" Value="White" /> + </Style> + + <!-- StatusBar --> + <Style TargetType="StatusBar"> + <Setter Property="Background" Value="{DynamicResource Ui.Mid}" /> + <Setter Property="Foreground" Value="White" /> + </Style> + + <!-- Text Entry Controls --> + <Style TargetType="TextBox"> + <Setter Property="Background" Value="{DynamicResource Ui.Light}" /> + </Style> + + <Style TargetType="{x:Type TextBlock}"> + <Setter Property="Foreground" Value="White"/> + </Style> + + <!-- Tab Control --> + <Style TargetType="{x:Type TabControl}"> + <Setter Property="Background" Value="{DynamicResource Ui.Mid}"/> + <Setter Property="BorderThickness" Value="0"/> + <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> + </Style> + + <Style TargetType="TabItem"> + <Setter Property="Background" Value="{DynamicResource Ui.Mid}" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="TabItem"> + <Grid Name="Panel"> + <ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header" Margin="10,6"/> + </Grid> + <ControlTemplate.Triggers> + <Trigger Property="IsSelected" Value="True"> + <Setter TargetName="Panel" Property="Background" Value="{DynamicResource Ui.Mid}" /> + </Trigger> + <Trigger Property="IsSelected" Value="False"> + <Setter TargetName="Panel" Property="Background" Value="{DynamicResource Ui.Dark}" /> + </Trigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- ComboBox --> + <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="Controls/ComboBoxDark.xaml" /> + </ResourceDictionary.MergedDictionaries> + +</ResourceDictionary>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/UserSettingConstants.cs b/win/CS/HandBrakeWPF/UserSettingConstants.cs index 014c9ef23..c12a756ce 100644 --- a/win/CS/HandBrakeWPF/UserSettingConstants.cs +++ b/win/CS/HandBrakeWPF/UserSettingConstants.cs @@ -72,5 +72,6 @@ namespace HandBrakeWPF public const string AutonameFileCollisionBehaviour = "AutonameFileCollisionBehaviour";
public const string AutonameFilePrePostString = "AutonameFilePrePostString";
public const string WhenDonePerformActionImmediately = "WhenDonePerformActionImmediately";
+ public const string UseDarkTheme = "UseDarkTheme";
}
}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/OptionsViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/OptionsViewModel.cs index 06629ece2..1fcb2379e 100644 --- a/win/CS/HandBrakeWPF/ViewModels/OptionsViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/OptionsViewModel.cs @@ -111,6 +111,7 @@ namespace HandBrakeWPF.ViewModels private string prePostFilenameText;
private bool showPrePostFilenameBox;
private bool whenDonePerformActionImmediately;
+ private bool useDarkTheme;
#endregion
@@ -521,6 +522,17 @@ namespace HandBrakeWPF.ViewModels }
}
+ public bool UseDarkTheme
+ {
+ get => this.useDarkTheme;
+ set
+ {
+ if (value == this.useDarkTheme) return;
+ this.useDarkTheme = value;
+ this.NotifyOfPropertyChange(() => this.UseDarkTheme);
+ }
+ }
+
#endregion
#region Output Files
@@ -1469,6 +1481,7 @@ namespace HandBrakeWPF.ViewModels this.ShowPreviewOnSummaryTab = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowPreviewOnSummaryTab);
this.ShowAddAllToQueue = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowAddAllToQueue);
this.ShowAddSelectionToQueue = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowAddSelectionToQueue);
+ this.UseDarkTheme = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.UseDarkTheme);
// #############################
// When Done
@@ -1671,7 +1684,7 @@ namespace HandBrakeWPF.ViewModels this.userSettingService.SetUserSetting(UserSettingConstants.SendFileToArgs, this.Arguments);
this.userSettingService.SetUserSetting(UserSettingConstants.ShowStatusInTitleBar, this.ShowStatusInTitleBar);
this.userSettingService.SetUserSetting(UserSettingConstants.ShowPreviewOnSummaryTab, this.ShowPreviewOnSummaryTab);
-
+ this.userSettingService.SetUserSetting(UserSettingConstants.UseDarkTheme, this.UseDarkTheme);
this.userSettingService.SetUserSetting(UserSettingConstants.UiLanguage, this.SelectedLanguage?.Culture);
this.userSettingService.SetUserSetting(UserSettingConstants.ShowAddAllToQueue, this.ShowAddAllToQueue);
this.userSettingService.SetUserSetting(UserSettingConstants.ShowAddSelectionToQueue, this.ShowAddSelectionToQueue);
@@ -1713,21 +1726,21 @@ namespace HandBrakeWPF.ViewModels this.userSettingService.SetUserSetting(UserSettingConstants.EnableNvencEncoder, this.EnableNvencEncoder);
/* System and Logging */
- userSettingService.SetUserSetting(UserSettingConstants.ProcessPriority, this.SelectedPriority);
- userSettingService.SetUserSetting(UserSettingConstants.PreventSleep, this.PreventSleep);
- userSettingService.SetUserSetting(UserSettingConstants.PauseOnLowDiskspace, this.PauseOnLowDiskspace);
- userSettingService.SetUserSetting(UserSettingConstants.PauseOnLowDiskspaceLevel, this.PauseOnLowDiskspaceLevel);
- userSettingService.SetUserSetting(UserSettingConstants.Verbosity, this.SelectedVerbosity);
- userSettingService.SetUserSetting(UserSettingConstants.SaveLogWithVideo, this.CopyLogToEncodeDirectory);
- userSettingService.SetUserSetting(UserSettingConstants.SaveLogToCopyDirectory, this.CopyLogToSepcficedLocation);
- userSettingService.SetUserSetting(UserSettingConstants.SaveLogCopyDirectory, this.LogDirectory);
- userSettingService.SetUserSetting(UserSettingConstants.ClearOldLogs, this.ClearOldOlgs);
+ this.userSettingService.SetUserSetting(UserSettingConstants.ProcessPriority, this.SelectedPriority);
+ this.userSettingService.SetUserSetting(UserSettingConstants.PreventSleep, this.PreventSleep);
+ this.userSettingService.SetUserSetting(UserSettingConstants.PauseOnLowDiskspace, this.PauseOnLowDiskspace);
+ this.userSettingService.SetUserSetting(UserSettingConstants.PauseOnLowDiskspaceLevel, this.PauseOnLowDiskspaceLevel);
+ this.userSettingService.SetUserSetting(UserSettingConstants.Verbosity, this.SelectedVerbosity);
+ this.userSettingService.SetUserSetting(UserSettingConstants.SaveLogWithVideo, this.CopyLogToEncodeDirectory);
+ this.userSettingService.SetUserSetting(UserSettingConstants.SaveLogToCopyDirectory, this.CopyLogToSepcficedLocation);
+ this.userSettingService.SetUserSetting(UserSettingConstants.SaveLogCopyDirectory, this.LogDirectory);
+ this.userSettingService.SetUserSetting(UserSettingConstants.ClearOldLogs, this.ClearOldOlgs);
/* Advanced */
- userSettingService.SetUserSetting(UserSettingConstants.MainWindowMinimize, this.MinimiseToTray);
- userSettingService.SetUserSetting(UserSettingConstants.ClearCompletedFromQueue, this.ClearQueueOnEncodeCompleted);
- userSettingService.SetUserSetting(UserSettingConstants.PreviewScanCount, this.SelectedPreviewCount);
- userSettingService.SetUserSetting(UserSettingConstants.X264Step, double.Parse(this.SelectedGranulairty, CultureInfo.InvariantCulture));
+ this.userSettingService.SetUserSetting(UserSettingConstants.MainWindowMinimize, this.MinimiseToTray);
+ this.userSettingService.SetUserSetting(UserSettingConstants.ClearCompletedFromQueue, this.ClearQueueOnEncodeCompleted);
+ this.userSettingService.SetUserSetting(UserSettingConstants.PreviewScanCount, this.SelectedPreviewCount);
+ this.userSettingService.SetUserSetting(UserSettingConstants.X264Step, double.Parse(this.SelectedGranulairty, CultureInfo.InvariantCulture));
int value;
if (int.TryParse(this.MinLength.ToString(CultureInfo.InvariantCulture), out value))
@@ -1735,7 +1748,7 @@ namespace HandBrakeWPF.ViewModels this.userSettingService.SetUserSetting(UserSettingConstants.MinScanDuration, value);
}
- userSettingService.SetUserSetting(UserSettingConstants.DisableLibDvdNav, this.DisableLibdvdNav);
+ this.userSettingService.SetUserSetting(UserSettingConstants.DisableLibDvdNav, this.DisableLibdvdNav);
}
/// <summary>
diff --git a/win/CS/HandBrakeWPF/Views/AudioView.xaml b/win/CS/HandBrakeWPF/Views/AudioView.xaml index ecb53ae4d..c51ce368b 100644 --- a/win/CS/HandBrakeWPF/Views/AudioView.xaml +++ b/win/CS/HandBrakeWPF/Views/AudioView.xaml @@ -143,13 +143,6 @@ <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
- <!-- Marker -->
- <Image Grid.Column="0" Grid.Row="0"
- Width="20"
- Height="20"
- Margin="5,0,5,0"
- Source="Images/Movies_small.png" />
-
<!-- Settings -->
<Grid Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" Margin="0,5,0,5">
<Grid.ColumnDefinitions>
@@ -248,7 +241,7 @@ <!-- Hidden Row -->
<Grid Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" Visibility="{Binding IsChecked, ElementName=advancedOptionsToggle, Converter={StaticResource boolToVisConverter}}">
- <StackPanel Orientation="Horizontal" Margin="0,5,0,5" >
+ <StackPanel Orientation="Horizontal" Margin="8,5,0,5" >
<TextBlock VerticalAlignment="Center" FontWeight="Bold" Text="{x:Static Properties:Resources.AudioView_Samplerate}"
Visibility="{Binding IsPassthru, Converter={StaticResource boolToVisConverter}, ConverterParameter=true}" />
@@ -272,7 +265,7 @@ Visibility="{Binding IsPassthru, Converter={StaticResource boolToHiddenVisConverter}, ConverterParameter=true}"/>
<TextBlock Text="{x:Static Properties:Resources.AudioView_TrackName}" VerticalAlignment="Center" FontWeight="Bold" Margin="5,0,5,0" />
- <TextBox Text="{Binding TrackName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="138" Height="22" />
+ <TextBox Text="{Binding TrackName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="175" Height="22" />
</StackPanel>
</Grid>
diff --git a/win/CS/HandBrakeWPF/Views/ChaptersView.xaml b/win/CS/HandBrakeWPF/Views/ChaptersView.xaml index f916ff503..e74a896dc 100644 --- a/win/CS/HandBrakeWPF/Views/ChaptersView.xaml +++ b/win/CS/HandBrakeWPF/Views/ChaptersView.xaml @@ -32,10 +32,13 @@ VerticalAlignment="Stretch" AutoGenerateColumns="False"
CanUserSortColumns="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False"
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility="Column"
- HorizontalGridLinesBrush="#FFABADB3" VerticalGridLinesBrush="#FFABADB3">
+ HorizontalGridLinesBrush="#FFABADB3" VerticalGridLinesBrush="#FFABADB3"
+ Background="Transparent" SelectionMode="Single">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="MinHeight" Value="22" />
+ <Setter Property="BorderThickness" Value="0" />
+ <Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
</DataGrid.CellStyle>
<DataGrid.ContextMenu>
diff --git a/win/CS/HandBrakeWPF/Views/OptionsView.xaml b/win/CS/HandBrakeWPF/Views/OptionsView.xaml index 244929800..9a72fdf51 100644 --- a/win/CS/HandBrakeWPF/Views/OptionsView.xaml +++ b/win/CS/HandBrakeWPF/Views/OptionsView.xaml @@ -115,7 +115,8 @@ <ComboBox DisplayMemberPath="Name" ItemsSource="{Binding InterfaceLanguages}" SelectedItem="{Binding SelectedLanguage}" Margin="5,0,0,0" HorizontalAlignment="Left" Width="150" />
</StackPanel>
- <StackPanel Orientation="Vertical" Margin="20,0,0,0">
+ <StackPanel Orientation="Vertical" Margin="20,5,0,0">
+ <CheckBox Content="{x:Static Properties:Resources.Options_DarkTheme}" IsChecked="{Binding UseDarkTheme}" />
<CheckBox Content="{x:Static Properties:Resources.Options_MinimiseTray}" IsChecked="{Binding MinimiseToTray}" />
<CheckBox Content="{x:Static Properties:Resources.Options_ClearCompleted}" IsChecked="{Binding ClearQueueOnEncodeCompleted}" />
<CheckBox Content="{x:Static Properties:Resources.OptionsView_ShowStatusInTitleBar}" IsChecked="{Binding ShowStatusInTitleBar}" />
diff --git a/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml b/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml index f7ed98288..1270cb258 100644 --- a/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml +++ b/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml @@ -143,13 +143,6 @@ <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
- <!-- Marker -->
- <Image Grid.Column="0"
- Width="20"
- Height="20"
- Margin="5,0,5,0"
- Source="Images/Movies_small.png" />
-
<!-- Standard Subtitle Settings -->
<Grid Grid.Column="1" HorizontalAlignment="Stretch" Margin="0,8,0,8"
Visibility="{Binding IsSrtSubtitle, Converter={StaticResource booleanToVisConverter}, ConverterParameter=true}">
@@ -226,7 +219,7 @@ </Grid.RowDefinitions>
<!-- Row 1 -->
- <TextBlock Grid.Column="0" VerticalAlignment="Center" FontWeight="Bold" Text="Source" />
+ <TextBlock Grid.Column="0" VerticalAlignment="Center" FontWeight="Bold" Text="Source" Margin="10,0,0,0" />
<TextBlock Grid.Column="1" VerticalAlignment="Center" Text="{Binding SrtFileName}" Margin="5,0,5,0" Width="75" TextWrapping="NoWrap" TextTrimming="WordEllipsis"
Visibility="{Binding IsSrtSubtitle, Converter={StaticResource booleanToVisConverter}, ConverterParameter=false}" />
@@ -243,8 +236,9 @@ <TextBlock Grid.Column="6" VerticalAlignment="Center" FontWeight="Bold" Text="Offset (ms)" />
<controls:NumberBox Grid.Column="7" Width="58" Height="24" Margin="5,0,5,0" Minimum="-9000000" Maximum="900000"
IsEnabled="{Binding IsSrtSubtitle}" Number="{Binding SrtOffset, Mode=TwoWay}" />
-
- <CheckBox Grid.Column="8" Margin="5,0,5,0" VerticalAlignment="Center" IsChecked="{Binding Burned}" IsEnabled="{Binding CanBeBurned}" Content="Burn In" FontWeight="Bold">
+
+ <CheckBox Grid.Column="8" Margin="5,0,5,0" VerticalAlignment="Center" IsChecked="{Binding Burned}" IsEnabled="{Binding CanBeBurned}" Content="Burn In" FontWeight="Bold"
+ VerticalContentAlignment="Center">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="SetBurnedToFalseForAllExcept">
@@ -254,7 +248,7 @@ </i:Interaction.Triggers>
</CheckBox>
- <CheckBox Grid.Column="9" Margin="5,0,5,0" VerticalAlignment="Center" IsChecked="{Binding Default}" Content="Default" FontWeight="Bold"
+ <CheckBox Grid.Column="9" Margin="0,0,5,0" VerticalAlignment="Center" IsChecked="{Binding Default}" Content="Default" FontWeight="Bold" VerticalContentAlignment="Center"
IsEnabled="{Binding DataContext.IsBurnableOnly, Converter={StaticResource booleanConverter}, ConverterParameter=true, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
diff --git a/win/CS/HandBrakeWPF/defaultsettings.xml b/win/CS/HandBrakeWPF/defaultsettings.xml index dd7ef6abe..22f5eb6ac 100644 --- a/win/CS/HandBrakeWPF/defaultsettings.xml +++ b/win/CS/HandBrakeWPF/defaultsettings.xml @@ -553,4 +553,12 @@ <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d4p1:type="q1:boolean" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">false</anyType>
</value>
</item>
+ <item>
+ <key>
+ <string>UseDarkTheme</string>
+ </key>
+ <value>
+ <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d4p1:type="q1:boolean" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">false</anyType>
+ </value>
+ </item>
</dictionary>
\ No newline at end of file |