360 lines
18 KiB
XML
360 lines
18 KiB
XML
<Application x:Class="HashCalculator.GUI.App"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:l="clr-namespace:HashCalculator.GUI"
|
|
xmlns:c="clr-namespace:HashCalculator.GUI.Converters"
|
|
StartupUri="MainWindow.xaml">
|
|
<Application.Resources>
|
|
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
|
|
<c:ValueConverterAggregate x:Key="FalseToVisibilityConverter">
|
|
<c:BooleanInvertConverter />
|
|
<BooleanToVisibilityConverter />
|
|
</c:ValueConverterAggregate>
|
|
<c:ValueConverterAggregate x:Key="ValidInputEntryToVisibilityConverter">
|
|
<c:ValidInputEntryTypeToBooleanConverter />
|
|
<BooleanToVisibilityConverter />
|
|
</c:ValueConverterAggregate>
|
|
<c:ValueConverterAggregate x:Key="InvalidInputEntryToVisibilityConverter">
|
|
<c:ValidInputEntryTypeToBooleanConverter />
|
|
<c:BooleanInvertConverter />
|
|
<BooleanToVisibilityConverter />
|
|
</c:ValueConverterAggregate>
|
|
<c:ValueConverterAggregate x:Key="NullToVisibilityConverter">
|
|
<c:NullToBooleanConverter />
|
|
<c:BooleanInvertConverter />
|
|
<BooleanToVisibilityConverter />
|
|
</c:ValueConverterAggregate>
|
|
<c:ValueConverterAggregate x:Key="NotNullToVisibilityConverter">
|
|
<c:NullToBooleanConverter />
|
|
<BooleanToVisibilityConverter />
|
|
</c:ValueConverterAggregate>
|
|
<c:ValueConverterAggregate x:Key="NonZeroToVisibilityConverter">
|
|
<c:IsZeroToBooleanConverter />
|
|
<BooleanToVisibilityConverter />
|
|
</c:ValueConverterAggregate>
|
|
<c:MultiValueEqualityConverter x:Key="MultiValueEqualityConverter" />
|
|
<Style x:Key="CommonStyle" TargetType="Control">
|
|
<Setter
|
|
Property="Foreground"
|
|
Value="LightGray"
|
|
/>
|
|
<Setter
|
|
Property="Background"
|
|
Value="#202020"
|
|
/>
|
|
</Style>
|
|
<Style
|
|
TargetType="l:ShellLink"
|
|
>
|
|
<Setter
|
|
Property="Foreground"
|
|
Value="#30B0FF"
|
|
/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="Red" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type TextBox}"
|
|
>
|
|
<Setter Property="Background" Value="#00000000"/>
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type ComboBox}"
|
|
>
|
|
<Setter Property="Background" Value="#00000000"/>
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type Button}"
|
|
x:Key="ButtonStyle"
|
|
>
|
|
<Setter Property="Background" Value="#20808080"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Button}">
|
|
<Border
|
|
x:Name="ButtonBorderTemplate"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
Background="{TemplateBinding Background}"
|
|
SnapsToDevicePixels="True"
|
|
>
|
|
<ContentPresenter
|
|
x:Name="ButtonContentPresenterTemplate"
|
|
ContentTemplate="{TemplateBinding ContentTemplate}"
|
|
Content="{TemplateBinding Content}"
|
|
ContentStringFormat="{TemplateBinding ContentStringFormat}"
|
|
Focusable="False"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
Margin="{TemplateBinding Padding}"
|
|
RecognizesAccessKey="True"
|
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="Button.IsDefaulted" Value="True">
|
|
<Setter Property="BorderBrush" TargetName="ButtonBorderTemplate" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" TargetName="ButtonBorderTemplate" Value="#80BEE6FD"/>
|
|
<Setter Property="BorderBrush" TargetName="ButtonBorderTemplate" Value="#FF3C7FB1"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter Property="Background" TargetName="ButtonBorderTemplate" Value="#80C4E5F6"/>
|
|
<Setter Property="BorderBrush" TargetName="ButtonBorderTemplate" Value="#FF2C628B"/>
|
|
</Trigger>
|
|
<Trigger Property="ToggleButton.IsChecked" Value="True">
|
|
<Setter Property="Background" TargetName="ButtonBorderTemplate" Value="#FFBCDDEE"/>
|
|
<Setter Property="BorderBrush" TargetName="ButtonBorderTemplate" Value="#FF245A83"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Background" TargetName="ButtonBorderTemplate" Value="#00000000"/>
|
|
<Setter Property="BorderBrush" TargetName="ButtonBorderTemplate" Value="#FFADB2B5"/>
|
|
<Setter Property="Foreground" Value="#808080"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource ButtonStyle}"
|
|
TargetType="Button"
|
|
/>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type DataGrid}"
|
|
/>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type DataGridColumnHeader}"
|
|
>
|
|
<Setter Property="Padding" Value="10,5" />
|
|
<Setter Property="SnapsToDevicePixels" Value="True" />
|
|
<Setter Property="Cursor" Value="Hand" />
|
|
<Setter Property="Background" Value="#343434"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="BorderThickness" Value="0, 0, 1, 0"/>
|
|
<Setter Property="BorderBrush" Value="Gray" />
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type DataGridRowHeader}"
|
|
/>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type DataGridRow}"
|
|
/>
|
|
<Style TargetType="{x:Type Button}" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}">
|
|
<Setter Property="Background" Value="Black" />
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="{x:Type ListBox}"
|
|
>
|
|
<Setter Property="Background" Value="#181818"/>
|
|
</Style>
|
|
<Style
|
|
BasedOn="{StaticResource CommonStyle}"
|
|
TargetType="CheckBox"
|
|
>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type CheckBox}">
|
|
<Grid
|
|
x:Name="TemplateRoot"
|
|
Background="Transparent"
|
|
SnapsToDevicePixels="True"
|
|
>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Border
|
|
x:Name="CheckBoxBorder"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
Background="{TemplateBinding Background}"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
Margin="1"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
>
|
|
<Grid x:Name="MarkGrid">
|
|
<Path
|
|
x:Name="OptionMark"
|
|
Data="F1M9.97498,1.22334L4.6983,9.09834 4.52164,9.09834 0,5.19331 1.27664,3.52165 4.255,6.08833 8.33331,1.52588E-05 9.97498,1.22334z"
|
|
Fill="LightGray"
|
|
Margin="1"
|
|
Opacity="0"
|
|
Stretch="None"
|
|
/>
|
|
<Rectangle
|
|
x:Name="IndeterminateMark"
|
|
Fill="LightGray"
|
|
Margin="2"
|
|
Opacity="0"
|
|
/>
|
|
</Grid>
|
|
</Border>
|
|
<ContentPresenter
|
|
x:Name="ContentPresenter"
|
|
ContentTemplate="{TemplateBinding ContentTemplate}"
|
|
Content="{TemplateBinding Content}"
|
|
Grid.Column="1"
|
|
ContentStringFormat="{TemplateBinding ContentStringFormat}"
|
|
Focusable="False"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
Margin="{TemplateBinding Padding}"
|
|
RecognizesAccessKey="True"
|
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
/>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger
|
|
Property="HasContent"
|
|
Value="True"
|
|
>
|
|
<Setter Property="FocusVisualStyle">
|
|
<Setter.Value>
|
|
<Style>
|
|
<Setter Property="Control.Template">
|
|
<Setter.Value>
|
|
<ControlTemplate>
|
|
<Rectangle
|
|
Margin="14,0,0,0"
|
|
SnapsToDevicePixels="True"
|
|
Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
|
|
StrokeThickness="1"
|
|
StrokeDashArray="1 2"
|
|
/>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter
|
|
Property="Padding"
|
|
Value="4,-1,0,0"
|
|
/>
|
|
</Trigger>
|
|
<Trigger
|
|
Property="IsMouseOver"
|
|
Value="True"
|
|
>
|
|
<Setter
|
|
Property="Background"
|
|
TargetName="CheckBoxBorder"
|
|
Value="#80F3F9FF"
|
|
/>
|
|
<Setter
|
|
Property="BorderBrush"
|
|
TargetName="CheckBoxBorder"
|
|
Value="#FF5593FF"
|
|
/>
|
|
<Setter
|
|
Property="Fill"
|
|
TargetName="OptionMark"
|
|
Value="LightGray"
|
|
/>
|
|
<Setter
|
|
Property="Fill"
|
|
TargetName="IndeterminateMark"
|
|
Value="LightGray"
|
|
/>
|
|
</Trigger>
|
|
<Trigger
|
|
Property="IsEnabled"
|
|
Value="False"
|
|
>
|
|
<Setter
|
|
Property="Background"
|
|
TargetName="CheckBoxBorder"
|
|
Value="#FFE6E6E6"
|
|
/>
|
|
<Setter
|
|
Property="BorderBrush"
|
|
TargetName="CheckBoxBorder"
|
|
Value="#FFBCBCBC"
|
|
/>
|
|
<Setter
|
|
Property="Fill"
|
|
TargetName="OptionMark"
|
|
Value="#FF707070"
|
|
/>
|
|
<Setter
|
|
Property="Fill"
|
|
TargetName="IndeterminateMark"
|
|
Value="#FF707070"
|
|
/>
|
|
</Trigger>
|
|
<Trigger
|
|
Property="IsPressed"
|
|
Value="True"
|
|
>
|
|
<Setter
|
|
Property="Background"
|
|
TargetName="CheckBoxBorder"
|
|
Value="#80D9ECFF"
|
|
/>
|
|
<Setter
|
|
Property="BorderBrush"
|
|
TargetName="CheckBoxBorder"
|
|
Value="#FF3C77DD"
|
|
/>
|
|
<Setter
|
|
Property="Fill"
|
|
TargetName="OptionMark"
|
|
Value="LightGray"
|
|
/>
|
|
<Setter
|
|
Property="Fill"
|
|
TargetName="IndeterminateMark"
|
|
Value="LightGray"
|
|
/>
|
|
</Trigger>
|
|
<Trigger
|
|
Property="IsChecked"
|
|
Value="True"
|
|
>
|
|
<Setter
|
|
Property="Opacity"
|
|
TargetName="OptionMark"
|
|
Value="1"
|
|
/>
|
|
<Setter
|
|
Property="Opacity"
|
|
TargetName="IndeterminateMark"
|
|
Value="0"
|
|
/>
|
|
</Trigger>
|
|
<Trigger
|
|
Property="IsChecked"
|
|
Value="{x:Null}"
|
|
>
|
|
<Setter
|
|
Property="Opacity"
|
|
TargetName="OptionMark"
|
|
Value="0"
|
|
/>
|
|
<Setter
|
|
Property="Opacity"
|
|
TargetName="IndeterminateMark"
|
|
Value="1"
|
|
/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Application.Resources>
|
|
</Application>
|