HashCalculator.GUI/MainWindow.xaml
2020-03-28 23:16:45 +01:00

235 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<Window
x:Class="HashCalculator.GUI.MainWindow"
x:Name="Self"
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:l="clr-namespace:HashCalculator.GUI"
xmlns:c="clr-namespace:HashCalculator.GUI.Converters"
mc:Ignorable="d"
Title="Sage FastHash 哈希计算器" Height="600" Width="600"
Background="#202020"
Foreground="LightGray"
>
<Window.Resources>
<c:ValueConverterAggregate x:Key="ValidInputEntryToVisibilityConverter">
<c:ValidInputEntryTypeToBooleanConverter />
<BooleanToVisibilityConverter />
</c:ValueConverterAggregate>
<c:ValueConverterAggregate x:Key="InvalidInputEntryToVisibilityConverter">
<c:ValidInputEntryTypeToBooleanConverter />
<c:BooleanInvertConverter />
<BooleanToVisibilityConverter />
</c:ValueConverterAggregate>
<Style x:Key="CommonStyle" TargetType="Control">
<Setter
Property="Foreground"
Value="{Binding Path=(TextElement.Foreground),
RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}}"
/>
<Setter
Property="Background"
Value="{Binding Path=(TextElement.Background),
RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}}"
/>
</Style>
<Style
BasedOn="{StaticResource CommonStyle}"
TargetType="{x:Type TextBox}"
>
<Setter Property="Background" Value="#00000000"/>
</Style>
<Style
BasedOn="{StaticResource CommonStyle}"
TargetType="{x:Type Button}"
>
<Setter Property="Background" Value="#20808080"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter" 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="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="#80BEE6FD"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#80C4E5F6"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#00000000"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="Foreground" Value="#808080"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style
BasedOn="{StaticResource CommonStyle}"
TargetType="{x:Type DataGrid}"
/>
<Style
BasedOn="{StaticResource CommonStyle}"
TargetType="{x:Type DataGridColumnHeader}"
>
<Setter Property="Padding" Value="10,5" />
<Setter Property="MinWidth" Value="0" />
<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 ListBox}"
>
<Setter Property="Background" Value="#181818"/>
</Style>
</Window.Resources>
<Window.DataContext>
<l:ViewModel/>
</Window.DataContext>
<Grid Margin="10,20,10,10">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="130" />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Grid
DockPanel.Dock="Top"
Height="25"
>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="92"/>
</Grid.ColumnDefinitions>
<l:InputBar
HintText="输入文本,或 big/manifest/xml 文件路径"
Text="{Binding MainInput.Text}"
Collection="{Binding MainInput.Items}"
SelectedItem="{Binding MainInput.SelectedItem}"
SelectedIndex="{Binding MainInput.SelectedIndex}"
Grid.Column="0"
Margin="0,0,10,0"
/>
<Button
Content="浏览文件"
Command="{Binding MainInput.BrowseCommand}"
CommandParameter="{Binding ElementName=Self}"
Visibility="{Binding MainInput.SelectedItem, Converter={StaticResource InvalidInputEntryToVisibilityConverter}}"
Grid.Column="1"
Margin="0"
/>
<Button
Content="确认"
Command="{Binding MainInput.SelectCommand}"
CommandParameter="{Binding}"
Visibility="{Binding MainInput.SelectedItem, Converter={StaticResource ValidInputEntryToVisibilityConverter}}"
Grid.Column="1"
Margin="0"
Foreground="#20FF30"
BorderBrush="#20FF30"
/>
</Grid>
<Grid
DockPanel.Dock="Top"
Height="25"
Margin="0,10,0,0"
Visibility="Visible"
>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="92"/>
</Grid.ColumnDefinitions>
<l:InputBar
HintText="输入 big 文件里包含的 manifest 文件的路径"
Collection="{Binding Items}"
SelectedItem="{Binding SelectedItem}"
Grid.Column="0"
Margin="0,0,10,0"
/>
<Button
Content="确认"
Grid.Column="1"
Margin="0"
Foreground="ForestGreen"
BorderBrush="ForestGreen" Template="{DynamicResource ButtonBaseControlTemplate1}"
/>
</Grid>
<DockPanel
DockPanel.Dock="Top"
Height="25"
Margin="0,10"
>
<Button
DockPanel.Dock="Right"
Content="取消加载"
Grid.Column="1"
Width="92"
/>
<Button
DockPanel.Dock="Right"
Content="加载 csf / mod.str"
Grid.Column="1"
Width="140"
Margin="10,0"
/>
<TextBlock
Text="正在加载……"
VerticalAlignment="Center"
Grid.Column="0"
/>
</DockPanel>
<l:InputBar
HintText="过滤Asset ID可选"
Collection="{Binding Items}"
SelectedItem="{Binding SelectedItem}"
DockPanel.Dock="Top"
Height="25"
/>
<DataGrid
x:Name="DataGrid"
AutoGenerateColumns="False"
ScrollViewer.CanContentScroll="True"
VerticalScrollBarVisibility="Auto"
EnableRowVirtualization="True"
VirtualizingPanel.VirtualizationMode="Recycling"
DockPanel.Dock="Top"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Asset ID" Width="200" Binding="{Binding AssetId}"/>
<DataGridTextColumn Header="哈希" Width="*" Binding="{Binding Hash}"/>
</DataGrid.Columns>
</DataGrid>
</DockPanel>
<TextBlock
x:Name="textBlock"
Grid.Row="1"
Margin="0,10,0,0"
TextWrapping="Wrap"
>
本工具基于 <l:ShellLink NavigateUri="https://github.com/Qibbi">Qibbi</l:ShellLink> 提供的 TechnologyAssembler 制作<LineBreak />
此外使用了 <l:ShellLink NavigateUri="https://github.com/bgrainger">Bradley Grainger</l:ShellLink>
<l:ShellLink NavigateUri="https://github.com/bgrainger/IndexRange">IndexRange</l:ShellLink>
从而能在 .NET Standard 2.0 上使用 C# 8.0 的末尾索引操作符<LineBreak />
<LineBreak />
假如你对本工具有任何疑问或者建议的话,可以来到<l:ShellLink NavigateUri="https://tieba.baidu.com/ra3">红警3吧</l:ShellLink>发帖寻找岚依(
</TextBlock>
</Grid>
</Window>