2019-02-11 12:56:38 -06:00
|
|
|
<Window x:Class="mdfinder.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"
|
2019-02-14 02:18:46 -06:00
|
|
|
xmlns:mdfinder="clr-namespace:mdfinder"
|
|
|
|
xmlns:loc="clr-namespace:mdfinder.Localization"
|
2019-02-11 12:56:38 -06:00
|
|
|
mc:Ignorable="d"
|
2019-02-14 02:18:46 -06:00
|
|
|
Title="{x:Static loc:Localization.Title}" Height="450" Width="800">
|
|
|
|
<Window.Resources>
|
|
|
|
<mdfinder:InverseBoolConverter x:Key="InverseBoolConverter" />
|
|
|
|
<mdfinder:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
|
|
|
|
<mdfinder:InverseBoolVisibilityConverter x:Key="InverseBoolVisibilityConverter" />
|
2019-02-21 17:03:40 -06:00
|
|
|
<mdfinder:URIConverter x:Key="URIConverter" />
|
|
|
|
<mdfinder:SizeConverter x:Key="SizeConverter" />
|
2019-02-14 02:18:46 -06:00
|
|
|
</Window.Resources>
|
|
|
|
<DockPanel>
|
|
|
|
<Menu DockPanel.Dock="Top">
|
|
|
|
<MenuItem Header="{x:Static loc:Localization.FileMenu}">
|
|
|
|
<MenuItem Name="menuOpen" Header="{x:Static loc:Localization.OpenMenuItem}">
|
|
|
|
<MenuItem.Icon>
|
|
|
|
<ContentControl Template="{StaticResource OpenIcon}" />
|
|
|
|
</MenuItem.Icon>
|
|
|
|
</MenuItem>
|
|
|
|
<MenuItem Name="menuSave" Header="{x:Static loc:Localization.SaveMenuItem}">
|
|
|
|
<MenuItem.Icon>
|
|
|
|
<ContentControl Template="{StaticResource SaveIcon}" />
|
|
|
|
</MenuItem.Icon>
|
|
|
|
</MenuItem>
|
2019-02-21 17:03:40 -06:00
|
|
|
<MenuItem Name="menuOptions" Header="{x:Static loc:Localization.OptionsMenu}" Click="MenuOptions_Click">
|
|
|
|
<MenuItem.Icon>
|
|
|
|
<ContentControl Template="{StaticResource OptionsIcon}" />
|
|
|
|
</MenuItem.Icon>
|
|
|
|
</MenuItem>
|
|
|
|
<MenuItem Name="menuAbout" Header="{x:Static loc:Localization.AboutMenu}" Click="MenuAbout_Click">
|
|
|
|
|
|
|
|
</MenuItem>
|
2019-02-14 02:18:46 -06:00
|
|
|
</MenuItem>
|
|
|
|
</Menu>
|
|
|
|
<Grid x:Name="MainWindowGrid">
|
|
|
|
<Grid.RowDefinitions>
|
|
|
|
<RowDefinition Height="Auto" />
|
|
|
|
<RowDefinition Height="Auto" />
|
|
|
|
<RowDefinition Height="*" />
|
|
|
|
<RowDefinition Height="Auto" />
|
|
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid.ColumnDefinitions>
|
|
|
|
<ColumnDefinition Width="0.5*" />
|
|
|
|
<ColumnDefinition Width="0.5*"/>
|
|
|
|
<ColumnDefinition Width="*" />
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<GroupBox Grid.ColumnSpan="3" Grid.Row="0" Header="{x:Static loc:Localization.ScanLocationLabel}">
|
|
|
|
<Grid>
|
|
|
|
<Grid.ColumnDefinitions>
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
<ColumnDefinition Width="*" />
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<ContentControl Grid.Column="0" Template="{StaticResource FolderIcon}" Width="16" Margin="0,0,4,0" />
|
|
|
|
<TextBox Name="txtScanLocation" Grid.Column="1" IsReadOnly="True" />
|
2019-02-16 23:43:50 -06:00
|
|
|
<Button Grid.Column="2" MinWidth="25" Name="btnFilePicker" Click="btnFilePicker_Click">...</Button>
|
2019-02-14 02:18:46 -06:00
|
|
|
</Grid>
|
|
|
|
</GroupBox>
|
2019-02-21 17:03:40 -06:00
|
|
|
<GroupBox Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="1" Header="{x:Static loc:Localization.ActionBarLabel}">
|
2019-02-14 02:18:46 -06:00
|
|
|
<Grid>
|
|
|
|
<Grid.RowDefinitions>
|
2019-02-21 17:03:40 -06:00
|
|
|
<RowDefinition Height="32" />
|
2019-02-14 02:18:46 -06:00
|
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid.ColumnDefinitions>
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
</Grid.ColumnDefinitions>
|
2019-02-21 17:03:40 -06:00
|
|
|
<Button Grid.Row="0" Grid.Column="0" Name="btnScan" ToolTip="{x:Static loc:Localization.ScanTooltip}" IsEnabled="{Binding Scanner.IsScanning, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type mdfinder:MainWindow}}, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource InverseBoolConverter}}" Click="btnScan_Click">
|
2019-02-14 02:18:46 -06:00
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
<ContentControl MaxWidth="16" HorizontalAlignment="Center" Template="{StaticResource ScanIcon}" />
|
|
|
|
<Label Content="{x:Static loc:Localization.ScanLabel}" />
|
|
|
|
</StackPanel>
|
|
|
|
</Button>
|
2019-02-21 17:03:40 -06:00
|
|
|
<Button Grid.Row="0" Grid.Column="1" Name="btnClear" ToolTip="{x:Static loc:Localization.ScanTooltip}" IsEnabled="{Binding Scanner.IsScanning, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type mdfinder:MainWindow}}, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource InverseBoolConverter}}" Click="BtnClear_Click">
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
<ContentControl MaxWidth="16" HorizontalAlignment="Center" Template="{StaticResource ClearIcon}" />
|
|
|
|
<Label Content="{x:Static loc:Localization.ClearLabel}" />
|
|
|
|
</StackPanel>
|
|
|
|
</Button>
|
|
|
|
</Grid>
|
|
|
|
</GroupBox>
|
|
|
|
<GroupBox Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="1" Header="{x:Static loc:Localization.FilterBarLabel}">
|
|
|
|
<Grid>
|
|
|
|
<Grid.RowDefinitions>
|
|
|
|
<RowDefinition Height="32" />
|
|
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid.ColumnDefinitions>
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
<ColumnDefinition Width="Auto" />
|
|
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Button Grid.Row="0" Grid.Column="0" Name="btnFilterShowAll" ToolTip="{x:Static loc:Localization.ScanTooltip}" IsEnabled="{Binding Scanner.IsScanning, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type mdfinder:MainWindow}}, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource InverseBoolConverter}}" Click="BtnFilterShowAll_Click" >
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
<ContentControl MaxWidth="16" HorizontalAlignment="Center" Template="{StaticResource ShowAllIcon}" />
|
|
|
|
<Label Content="{x:Static loc:Localization.FilterShowAllLabel}" />
|
|
|
|
</StackPanel>
|
|
|
|
</Button>
|
|
|
|
<Button Grid.Row="0" Grid.Column="1" Name="btnFilterDuplicates" ToolTip="{x:Static loc:Localization.ScanTooltip}" IsEnabled="{Binding Scanner.IsScanning, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type mdfinder:MainWindow}}, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource InverseBoolConverter}}" Click="BtnFilterDuplicates_Click" >
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
<ContentControl MaxWidth="16" HorizontalAlignment="Center" Template="{StaticResource DuplicateIcon}" />
|
|
|
|
<Label Content="{x:Static loc:Localization.FilterDuplicatesLabel}" />
|
|
|
|
</StackPanel>
|
|
|
|
</Button>
|
2019-02-14 02:18:46 -06:00
|
|
|
</Grid>
|
|
|
|
</GroupBox>
|
2019-02-21 17:03:40 -06:00
|
|
|
<DataGrid x:Name="datagridFileRecords" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Initialized="DatagridFileRecords_Initialized" IsReadOnly="True" AutoGenerateColumns="False">
|
|
|
|
<DataGrid.Resources>
|
|
|
|
<Style TargetType="Hyperlink">
|
|
|
|
<EventSetter Event="Click" Handler="Hyperlink_Click"/>
|
|
|
|
</Style>
|
|
|
|
<Style TargetType="{x:Type DataGridCell}">
|
|
|
|
<Style.Triggers>
|
|
|
|
<Trigger Property="DataGridCell.IsSelected" Value="True">
|
|
|
|
<Setter Property="Background" Value="Black" />
|
|
|
|
</Trigger>
|
|
|
|
</Style.Triggers>
|
|
|
|
</Style>
|
|
|
|
</DataGrid.Resources>
|
|
|
|
<DataGrid.Columns>
|
|
|
|
<DataGridHyperlinkColumn Header="{x:Static loc:Localization.ColumnHeadingPath}" Binding="{Binding Path}" ContentBinding="{Binding Path, Converter={StaticResource URIConverter}}" Width="Auto" IsReadOnly="True" />
|
|
|
|
<DataGridTextColumn Header="{x:Static loc:Localization.ColumnHeadingSize}" Binding="{Binding Size, Converter={StaticResource SizeConverter}}" />
|
|
|
|
<DataGridTextColumn Header="{x:Static loc:Localization.ColumnHeadingHash}" Binding="{Binding Hash}" />
|
|
|
|
<DataGridTextColumn Header="{x:Static loc:Localization.ColumnHeadingHashProvider}" Binding="{Binding HashProvider}" />
|
|
|
|
</DataGrid.Columns>
|
|
|
|
<DataGrid.GroupStyle>
|
|
|
|
<GroupStyle>
|
|
|
|
<GroupStyle.HeaderTemplate>
|
|
|
|
<DataTemplate>
|
|
|
|
<StackPanel>
|
|
|
|
<TextBlock Text="{Binding Path=Hash}" />
|
|
|
|
</StackPanel>
|
|
|
|
</DataTemplate>
|
|
|
|
</GroupStyle.HeaderTemplate>
|
|
|
|
<GroupStyle.ContainerStyle>
|
|
|
|
<Style TargetType="{x:Type GroupItem}">
|
|
|
|
<Setter Property="Template">
|
|
|
|
<Setter.Value>
|
|
|
|
<ControlTemplate TargetType="{x:Type GroupItem}">
|
|
|
|
<Expander IsExpanded="True">
|
|
|
|
<Expander.Header>
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
<TextBlock Text="{Binding Path=Name}" />
|
|
|
|
<TextBlock Text="{Binding Path=ItemCount}"/>
|
|
|
|
<TextBlock Text="{x:Static loc:Localization.ItemsLabel}"/>
|
|
|
|
</StackPanel>
|
|
|
|
</Expander.Header>
|
|
|
|
<ItemsPresenter />
|
|
|
|
</Expander>
|
|
|
|
</ControlTemplate>
|
|
|
|
</Setter.Value>
|
|
|
|
</Setter>
|
|
|
|
</Style>
|
|
|
|
</GroupStyle.ContainerStyle>
|
|
|
|
</GroupStyle>
|
|
|
|
</DataGrid.GroupStyle>
|
|
|
|
</DataGrid>
|
|
|
|
<Label x:Name="txtProgressLabel" Grid.Row="3" Grid.ColumnSpan="4" Panel.ZIndex="1" />
|
2019-02-16 23:43:50 -06:00
|
|
|
<ProgressBar Grid.Row="3" Grid.ColumnSpan="4" Name="progressBar" Minimum="0" Height="16"/>
|
2019-02-14 02:18:46 -06:00
|
|
|
</Grid>
|
|
|
|
</DockPanel>
|
2019-02-11 12:56:38 -06:00
|
|
|
</Window>
|