HashCalculator.GUI/MainWindow.xaml

214 lines
9.1 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"
Style="{StaticResource CommonStyle}"
>
<Window.DataContext>
<l:ViewModel />
</Window.DataContext>
<Grid Margin="10,20,10,10">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="150" />
</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="{Binding BigEntryInput.AllManifests, Converter={StaticResource NotNullToVisibilityConverter}}"
>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="92" />
</Grid.ColumnDefinitions>
<l:InputBar
HintText="输入 big 文件里包含的 manifest 文件的路径"
Text="{Binding BigEntryInput.Text}"
Collection="{Binding BigEntryInput.Items}"
SelectedItem="{Binding BigEntryInput.SelectedItem}"
SelectedIndex="{Binding BigEntryInput.SelectedIndex}"
Grid.Column="0"
Margin="0,0,10,0"
/>
<Button
Content="确认"
Command="{Binding BigEntryInput.SelectCommand}"
CommandParameter="{Binding}"
Grid.Column="1"
Margin="0"
>
<Button.Style>
<Style
BasedOn="{StaticResource ButtonStyle}"
TargetType="Button"
>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="False">
<Condition.Binding>
<MultiBinding Converter="{StaticResource MultiValueEqualityConverter}">
<Binding Path="BigEntryInput.LastProcessedManifest"></Binding>
<Binding Path="BigEntryInput.SelectedItem"></Binding>
</MultiBinding>
</Condition.Binding>
</Condition>
<Condition
Binding="{Binding RelativeSource={RelativeSource Mode=Self},
Path=IsEnabled}"
Value="True"
/>
</MultiDataTrigger.Conditions>
<Setter Property="Foreground" Value="#20FF30" />
<Setter Property="BorderBrush" Value="#20FF30" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
<Grid
DockPanel.Dock="Top"
Height="50"
Margin="0,10"
>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock
Text="{Binding StatusText}"
Grid.Row="0"
Margin="10,0"
VerticalAlignment="Center"
/>
<TextBlock
Text="{Binding Entries.Count, StringFormat=目前加载了{0}个素材}"
Grid.Row="1"
Margin="10,5,0,5"
Width="160"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Visibility="{Binding Entries.Count, Converter={StaticResource NonZeroToVisibilityConverter}}"
/>
<CheckBox
Content="只显示 GameObject"
IsChecked="True"
Grid.Row="1"
Margin="0,5,242,5"
Width="155"
HorizontalAlignment="Right"
VerticalAlignment="Center"
/>
<Button
Content="加载 csf/mod.str"
Grid.Row="1"
Width="140"
Margin="0,0,97,0"
HorizontalAlignment="Right"
/>
<Button
Content="取消加载"
Grid.Row="1"
Width="92"
HorizontalAlignment="Right"
/>
</Grid>
<Grid
DockPanel.Dock="Top"
Height="25"
>
<TextBox></TextBox>
<TextBlock
Text="过滤Asset ID可选"
Padding="5,0"
VerticalAlignment="Center"
/>
</Grid>
<DataGrid
ItemsSource="{Binding Entries}"
ScrollViewer.CanContentScroll="True"
VerticalScrollBarVisibility="Auto"
EnableRowVirtualization="True"
VirtualizingPanel.VirtualizationMode="Recycling"
/>
</DockPanel>
<StackPanel
Grid.Row="1"
Margin="0,10,0,0"
ScrollViewer.CanContentScroll="True"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
>
<TextBlock 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>
<TextBlock />
<StackPanel
Height="25"
HorizontalAlignment="Right"
>
<Button
Content="清除输出"
Width="92"
Grid.Row="1"
/>
</StackPanel>
</StackPanel>
</Grid>
</Window>