mirror of
https://github.com/4sval/FModel.git
synced 2026-04-05 08:36:10 -05:00
* feat(taskbar): Remove WPF TaskbarItemInfo dead code [P2-015]
- Delete StatusToTaskbarStateConverter.cs: converter was already migrated
to Avalonia IValueConverter returning null (no-op stub), and was not
referenced by any XAML or C# consumer
- Remove empty InitTaskbarInfo() stub and its [SupportedOSPlatform("windows")]
guard from MainWindow.xaml.cs: no taskbar progress implementation exists;
accepting silent omission per the issue acceptance criteria
- Remove now-unused 'using System.Runtime.Versioning' from MainWindow.xaml.cs
No System.Windows.Shell references remain anywhere in the codebase.
App does not crash on Linux. Taskbar progress is silently omitted.
Closes #27
* Update outdated comment
910 lines
54 KiB
XML
910 lines
54 KiB
XML
<Window x:Class="FModel.MainWindow"
|
|
xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:local="clr-namespace:FModel"
|
|
xmlns:controls="clr-namespace:FModel.Views.Resources.Controls"
|
|
xmlns:inputs="clr-namespace:FModel.Views.Resources.Controls.Inputs"
|
|
xmlns:converters="clr-namespace:FModel.Views.Resources.Converters"
|
|
xmlns:settings="clr-namespace:FModel.Settings"
|
|
xmlns:services="clr-namespace:FModel.Services"
|
|
WindowStartupLocation="CenterScreen"
|
|
Closing="OnClosing"
|
|
Loaded="OnLoaded"
|
|
KeyDown="OnWindowKeyDown"
|
|
Width="1400"
|
|
Height="900">
|
|
<!--
|
|
Title is set in code-behind (OnLoaded / property change) to replicate the
|
|
DataTrigger-based title logic that was in the WPF AdonisWindow style.
|
|
TaskbarItemInfo (Windows-only) has no Avalonia equivalent; taskbar progress
|
|
is silently omitted.
|
|
-->
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="8" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid Grid.Row="0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Menu Grid.Column="0">
|
|
<MenuItem Header="Directory">
|
|
<MenuItem Header="Selector"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Directory_Selector">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource DirectoryIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="AES"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Directory_AES"
|
|
IsEnabled="{Binding Status.IsReady}">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource KeyIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Backup"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Directory_Backup"
|
|
IsEnabled="{Binding Status.IsReady}">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource BackupIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Archives Info"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Directory_ArchivesInfo"
|
|
IsEnabled="{Binding Status.IsReady}">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource InfoIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</MenuItem>
|
|
<MenuItem Header="Packages">
|
|
<MenuItem Header="Search"
|
|
IsEnabled="{Binding Status.IsReady}"
|
|
InputGestureText="Ctrl+Shift+F"
|
|
Click="OnSearchViewClick">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource SearchIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="References"
|
|
IsEnabled="{Binding Status.IsReady}"
|
|
InputGestureText="Ctrl+Shift+R"
|
|
Click="OnRefViewClick">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource SearchIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Favorite Directories"
|
|
ItemsSource="{Binding CustomDirectories.Directories}"
|
|
IsEnabled="{Binding Status.IsReady}">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource DirectoriesIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</MenuItem>
|
|
<MenuItem Header="Views">
|
|
<MenuItem Header="3D Viewer"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Views_3dViewer">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource MeshIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Audio Player"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Views_AudioPlayer">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource AudioIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Image Merger"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Views_ImageMerger">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource ImageMergerIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</MenuItem>
|
|
<MenuItem Header="Settings"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Settings" />
|
|
<MenuItem Header="Help">
|
|
<MenuItem Header="Donate"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Help_Donate">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource GiftIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Releases"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Help_Releases">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource GitHubIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Bugs Report"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Help_BugsReport">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource BugIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="Discord Server"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Help_Discord">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource DiscordIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Header="About FModel"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="Help_About">
|
|
<MenuItem.Icon>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource InfoIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</MenuItem>
|
|
</Menu>
|
|
|
|
<Grid Grid.Column="1">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Column="0"
|
|
Text="Preview New Explorer System"
|
|
VerticalAlignment="Center" />
|
|
<CheckBox Grid.Column="1"
|
|
Margin="5 2 5 0"
|
|
Unchecked="FeaturePreviewOnUnchecked"
|
|
IsTabStop="False"
|
|
IsChecked="{Binding FeaturePreviewNewAssetExplorer, Source={x:Static settings:UserSettings.Default}, Mode=TwoWay}" />
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<Grid x:Name="RootGrid"
|
|
Grid.Row="2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"
|
|
MinWidth="400" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<GroupBox Grid.Column="0"
|
|
Padding="0"
|
|
Background="Transparent">
|
|
<TabControl x:Name="LeftTabControl"
|
|
SelectionChanged="OnTabItemChange"
|
|
SelectedIndex="{Binding SelectedLeftTabIndex, Mode=TwoWay}">
|
|
<TabItem Style="{StaticResource TabItemFillSpace}"
|
|
Header="Archives">
|
|
<DockPanel>
|
|
<Grid DockPanel.Dock="Top">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="5" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="10" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="0"
|
|
Text="Loading Mode"
|
|
VerticalAlignment="Center" />
|
|
<ComboBox Grid.Row="0"
|
|
Grid.Column="2"
|
|
ItemsSource="{Binding LoadingModes.Modes}"
|
|
IsEnabled="{Binding Status.IsReady}"
|
|
SelectedItem="{Binding LoadingMode, Source={x:Static settings:UserSettings.Default}, Mode=TwoWay}">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Converter={x:Static converters:EnumToStringConverter.Instance}}" />
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<Button Grid.Row="2"
|
|
Grid.Column="0"
|
|
Grid.ColumnSpan="3"
|
|
Content="Load"
|
|
Command="{Binding LoadingModes.LoadCommand}"
|
|
IsEnabled="{Binding Status.IsReady}"
|
|
CommandParameter="{Binding SelectedItems, ElementName=DirectoryFilesListBox}" />
|
|
</Grid>
|
|
<Grid DockPanel.Dock="Top">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Separator Grid.Row="0"
|
|
Style="{StaticResource CustomSeparator}"
|
|
Tag="GAME ARCHIVES" />
|
|
<ListBox Grid.Row="1"
|
|
x:Name="DirectoryFilesListBox"
|
|
Style="{StaticResource DirectoryFilesListBox}"
|
|
DoubleTapped="OnMouseDoubleClick" />
|
|
<Separator Grid.Row="2"
|
|
Style="{StaticResource CustomSeparator}"
|
|
Tag="INFORMATION" />
|
|
<StackPanel Grid.Row="3"
|
|
Orientation="Vertical"
|
|
Margin="0 0 0 5">
|
|
<Grid HorizontalAlignment="Stretch">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.MountPoint, ElementName=DirectoryFilesListBox, FallbackValue='/', Converter={x:Static converters:TrimRightToLeftConverter.Instance}, ConverterParameter=275}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="1"
|
|
Text="Mount Point"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="1"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.FileCount, ElementName=DirectoryFilesListBox, FallbackValue='0', StringFormat={}{0} Files}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="1"
|
|
Grid.Column="1"
|
|
Text="File Count"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="2"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.IsEncrypted, ElementName=DirectoryFilesListBox, FallbackValue='False'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="2"
|
|
Grid.Column="1"
|
|
Text="Is Encrypted"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="3"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Guid, ElementName=DirectoryFilesListBox, FallbackValue='00000000000000000000000000000000'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="3"
|
|
Grid.Column="1"
|
|
Text="Global Unique Identifier"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
</Grid>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
<TabItem Style="{StaticResource TabItemFillSpace}"
|
|
Header="Folders">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid Grid.Row="0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="5" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel Grid.Column="0"
|
|
Orientation="Horizontal">
|
|
<Image Source="avares://FModel/Resources/label.png"
|
|
Width="16"
|
|
Height="16"
|
|
HorizontalAlignment="Center"
|
|
Margin="0 0 3.5 0" />
|
|
<TextBlock HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
TextTrimming="CharacterEllipsis">
|
|
<TextBlock.Text>
|
|
<MultiBinding StringFormat="{}'{0}' has {1} folders and {2} packages">
|
|
<Binding Path="SelectedItem.Header"
|
|
ElementName="AssetsFolderName"
|
|
FallbackValue="None" />
|
|
<Binding Path="SelectedItem.FoldersView.Count"
|
|
ElementName="AssetsFolderName"
|
|
FallbackValue="0" />
|
|
<Binding Path="SelectedItem.AssetsList.Assets.Count"
|
|
ElementName="AssetsFolderName"
|
|
FallbackValue="0" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="2"
|
|
Orientation="Horizontal"
|
|
HorizontalAlignment="Right">
|
|
<Button ToolTip.Tip="Bring Selected Folder To View"
|
|
Padding="4"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="{Binding SelectedItem, ElementName=AssetsFolderName}">
|
|
<Viewbox Width="16"
|
|
Height="16"
|
|
HorizontalAlignment="Center">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource LocateMeIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</Button>
|
|
<!-- <Button ToolTip="Expand All (not appropriate for huge
|
|
amount of folders)" Padding="4" -->
|
|
<!-- Command="{Binding MenuCommand}"
|
|
CommandParameter="ToolBox_Expand_All"> -->
|
|
<!-- <Viewbox Width="16" Height="16"
|
|
HorizontalAlignment="Center"> -->
|
|
<!-- <Canvas Width="24" Height="24"> -->
|
|
<!-- <Path Fill="{DynamicResource
|
|
SystemColors.ControlTextBrushKey}" Data="{StaticResource
|
|
UnfoldIcon}" /> -->
|
|
<!-- </Canvas> -->
|
|
<!-- </Viewbox> -->
|
|
<!-- </Button> -->
|
|
<Button ToolTip.Tip="Collapse All"
|
|
Padding="4"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="ToolBox_Collapse_All">
|
|
<Viewbox Width="16"
|
|
Height="16"
|
|
HorizontalAlignment="Center">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource FoldIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
<Separator Grid.Row="1"
|
|
Style="{StaticResource CustomSeparator}"
|
|
Margin="0" />
|
|
<TreeView Grid.Row="2"
|
|
x:Name="AssetsFolderName"
|
|
Style="{StaticResource AssetsFolderTreeView}"
|
|
SelectionChanged="OnAssetsTreeSelectedItemChanged"
|
|
KeyDown="OnFoldersPreviewKeyDown"
|
|
DoubleTapped="OnAssetsTreeMouseDoubleClick">
|
|
</TreeView>
|
|
<Separator Grid.Row="3"
|
|
Style="{StaticResource CustomSeparator}"
|
|
Tag="INFORMATION" />
|
|
<StackPanel Grid.Row="4"
|
|
Orientation="Vertical"
|
|
Margin="0 0 0 5">
|
|
<Grid HorizontalAlignment="Stretch">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.AssetsList.Assets.Count, ElementName=AssetsFolderName, FallbackValue=0}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="1"
|
|
Text="Packages Count"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="1"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.FoldersView.Count, ElementName=AssetsFolderName, FallbackValue=0}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="1"
|
|
Grid.Column="1"
|
|
Text="Folders Count"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="2"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Archive, ElementName=AssetsFolderName, FallbackValue='None'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="2"
|
|
Grid.Column="1"
|
|
Text="Included In Archive"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="3"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.MountPoint, ElementName=AssetsFolderName, FallbackValue='/', Converter={x:Static converters:TrimRightToLeftConverter.Instance}, ConverterParameter=275}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="3"
|
|
Grid.Column="1"
|
|
Text="Archive Mount Point"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="4"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Version, ElementName=AssetsFolderName, FallbackValue='VER_UE4_LATEST', Converter={x:Static converters:TrimRightToLeftConverter.Instance}, ConverterParameter=275}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="4"
|
|
Grid.Column="1"
|
|
Text="Archive Version"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
</Grid>
|
|
</StackPanel>
|
|
</Grid>
|
|
</TabItem>
|
|
<TabItem Style="{StaticResource TabItemFillSpace}"
|
|
Header="{Binding SelectedItem.AssetsList.Assets.Count, FallbackValue=0, ElementName=AssetsFolderName}"
|
|
HeaderStringFormat="{}{0} Packages">
|
|
<DockPanel>
|
|
|
|
<inputs:SearchTextBox DockPanel.Dock="Top"
|
|
x:Name="AssetsSearchTextBox"
|
|
Text="{Binding SelectedItem.SearchText, ElementName=AssetsFolderName, Mode=TwoWay}"
|
|
ClearButtonClick="OnClearFilterClick" />
|
|
|
|
<Grid DockPanel.Dock="Top">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<controls:Breadcrumb Grid.Row="0"
|
|
HorizontalAlignment="Left"
|
|
Margin="0 5 0 5"
|
|
MaxWidth="{Binding ActualWidth, ElementName=AssetsSearchTextBox}"
|
|
DataContext="{Binding SelectedItem.PathAtThisPoint, ElementName=AssetsFolderName, FallbackValue='No/Directory/Detected/In/Folder'}" />
|
|
|
|
<ListBox Grid.Row="1"
|
|
x:Name="AssetsListName"
|
|
Style="{StaticResource AssetsListBox}"
|
|
DoubleTapped="OnAssetsListMouseDoubleClick"
|
|
KeyDown="OnPreviewKeyDown" />
|
|
|
|
<Separator Grid.Row="2"
|
|
Style="{StaticResource CustomSeparator}"
|
|
Tag="INFORMATION" />
|
|
<StackPanel Grid.Row="3"
|
|
Orientation="Vertical"
|
|
Margin="0 0 0 5">
|
|
<Grid HorizontalAlignment="Stretch">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Asset.Offset, ElementName=AssetsListName, FallbackValue=0, StringFormat='{}0x{0:X}'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="0"
|
|
Grid.Column="1"
|
|
Text="Offset"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="1"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Asset.Size, ElementName=AssetsListName, FallbackValue=0, Converter={x:Static converters:SizeToStringConverter.Instance}}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="1"
|
|
Grid.Column="1"
|
|
Text="Size"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="2"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Asset.CompressionMethod, ElementName=AssetsListName, FallbackValue='Unknown'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="2"
|
|
Grid.Column="1"
|
|
Text="Compression Method"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="3"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Asset.IsEncrypted, ElementName=AssetsListName, FallbackValue='False'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="3"
|
|
Grid.Column="1"
|
|
Text="Is Encrypted"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
<TextBlock Grid.Row="4"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.Asset.Vfs.Name, ElementName=AssetsListName, FallbackValue='None'}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left" />
|
|
<TextBlock Grid.Row="4"
|
|
Grid.Column="1"
|
|
Text="Included In Archive"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Right" />
|
|
</Grid>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
</TabControl>
|
|
</GroupBox>
|
|
|
|
<GridSplitter Grid.Column="1"
|
|
ResizeDirection="Columns"
|
|
Width="4"
|
|
VerticalAlignment="Stretch"
|
|
ResizeBehavior="PreviousAndNext"
|
|
DoubleTapped="OnGridSplitterDoubleClick"
|
|
Background="{DynamicResource SystemColors.ControlBrushKey}" />
|
|
|
|
<GroupBox Grid.Column="2"
|
|
Padding="0"
|
|
Background="Transparent">
|
|
<Grid Margin="0 0 3 0">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid Grid.Row="0">
|
|
<Border BorderThickness="1"
|
|
Padding="10"
|
|
Background="{DynamicResource SystemColors.AppWorkspaceBrushKey}"
|
|
IsVisible="{Binding IsAssetsExplorerVisible}">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid Grid.Row="0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="5" />
|
|
<ColumnDefinition Width="Auto"
|
|
MinWidth="150" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<inputs:SearchTextBox x:Name="AssetsExplorerSearch"
|
|
Grid.Column="0"
|
|
Text="{Binding SelectedItem.SearchText, ElementName=AssetsFolderName, Mode=TwoWay}"
|
|
ClearButtonClick="OnClearFilterClick" />
|
|
|
|
<ComboBox x:Name="CategoriesSelector"
|
|
Grid.Column="2"
|
|
ItemsSource="{Binding Categories}"
|
|
SelectedItem="{Binding SelectedItem.SelectedCategory, ElementName=AssetsFolderName, Mode=TwoWay}" />
|
|
</Grid>
|
|
|
|
<controls:Breadcrumb Grid.Row="1"
|
|
Margin="0 5 0 0"
|
|
HorizontalAlignment="Left"
|
|
DataContext="{Binding SelectedItem.PathAtThisPoint, ElementName=AssetsFolderName}" />
|
|
|
|
<ListBox x:Name="AssetsExplorer"
|
|
Grid.Row="2"
|
|
ItemsSource="{Binding SelectedItem.CombinedEntries, ElementName=AssetsFolderName, IsAsync=True}"
|
|
Style="{StaticResource TiledExplorer}"
|
|
Background="{DynamicResource SystemColors.AppWorkspaceBrushKey}"
|
|
KeyDown="OnPreviewKeyDown" />
|
|
</Grid>
|
|
</Border>
|
|
|
|
<TabControl x:Name="TabControlName"
|
|
Style="{StaticResource GameFilesTabControl}"
|
|
IsVisible="{Binding IsAssetsExplorerVisible, Converter={x:Static converters:InvertBooleanConverter.Instance}}" />
|
|
</Grid>
|
|
|
|
<Border Grid.Row="0"
|
|
VerticalAlignment="Bottom"
|
|
HorizontalAlignment="Right"
|
|
Margin="12,12,20,12"
|
|
Opacity="0.5"
|
|
IsVisible="{Binding FeaturePreviewNewAssetExplorer, Source={x:Static settings:UserSettings.Default}}"
|
|
CornerRadius="8"
|
|
Padding="4">
|
|
<!-- Opacity fade replaces WPF Storyboard EventTriggers on MouseEnter/Leave -->
|
|
<Border.Transitions>
|
|
<Transitions>
|
|
<DoubleTransition Property="Opacity"
|
|
Duration="0:0:0.2" />
|
|
</Transitions>
|
|
</Border.Transitions>
|
|
<Border.Styles>
|
|
<Style Selector="Border:pointerover">
|
|
<Setter Property="Opacity"
|
|
Value="1" />
|
|
</Style>
|
|
</Border.Styles>
|
|
<StackPanel Orientation="Horizontal"
|
|
HorizontalAlignment="Center">
|
|
<ToggleButton Width="32"
|
|
Height="32"
|
|
Cursor="Hand"
|
|
Margin="0,0,2,0"
|
|
IsChecked="{Binding IsAssetsExplorerVisible, Mode=TwoWay}"
|
|
Theme="{StaticResource AssetsExplorerToggleButtonStyle}" />
|
|
<ToggleButton Width="32"
|
|
Height="32"
|
|
Cursor="Hand"
|
|
IsCheckedChanged="OnPreviewTexturesToggled"
|
|
Focusable="False"
|
|
ToolTip.Tip="Preview Textures (OFF)"
|
|
IsChecked="{Binding PreviewTexturesAssetExplorer, Source={x:Static settings:UserSettings.Default}, Mode=TwoWay}">
|
|
<ToggleButton.Styles>
|
|
<!-- WPF IsChecked=True trigger: purple background and updated
|
|
tooltip -->
|
|
<Style Selector="ToggleButton:checked">
|
|
<Setter Property="Background"
|
|
Value="MediumPurple" />
|
|
<Setter Property="ToolTip.Tip"
|
|
Value="Preview Textures (ON)" />
|
|
</Style>
|
|
</ToggleButton.Styles>
|
|
<Viewbox Width="16"
|
|
Height="16">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Data="{StaticResource TextureIconAlt}"
|
|
Fill="{DynamicResource SystemColors.ControlTextBrushKey}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</ToggleButton>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Expander Grid.Row="1"
|
|
Margin="0 5 0 5"
|
|
ExpandDirection="Down"
|
|
IsExpanded="{Binding IsLoggerExpanded, Source={x:Static settings:UserSettings.Default}}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="2" />
|
|
<ColumnDefinition Width="24" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<controls:CustomRichTextBox Grid.Column="0"
|
|
Grid.ColumnSpan="3"
|
|
x:Name="LogRtbName"
|
|
Style="{StaticResource CustomRichTextBox}" />
|
|
<StackPanel Grid.Column="2"
|
|
Orientation="Vertical"
|
|
VerticalAlignment="Bottom"
|
|
Margin="-5 -5 5 5">
|
|
<Button ToolTip.Tip="Open Output Folder"
|
|
Padding="0,4,0,4"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="ToolBox_Open_Output_Directory"
|
|
Focusable="False">
|
|
<Viewbox Width="16"
|
|
Height="16"
|
|
HorizontalAlignment="Center">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource FolderIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</Button>
|
|
<Button ToolTip.Tip="Clear Logs"
|
|
Padding="0,4,0,4"
|
|
Command="{Binding MenuCommand}"
|
|
CommandParameter="ToolBox_Clear_Logs"
|
|
Focusable="False">
|
|
<Viewbox Width="16"
|
|
Height="16"
|
|
HorizontalAlignment="Center">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource SystemColors.ControlTextBrushKey}"
|
|
Data="{StaticResource TrashIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Expander>
|
|
</Grid>
|
|
</GroupBox>
|
|
</Grid>
|
|
|
|
<!--
|
|
StatusBar: WPF StatusBar/StatusBarItem and Style.Triggers/DataTriggers
|
|
replaced with a Border+DockPanel. Background colour is set from
|
|
code-behind (UpdateStatusBarColor) when Status.Kind changes; the
|
|
flash animations (StatusChangeAttempted, OperationCancelled) are
|
|
also handled in code-behind via DispatcherTimer.
|
|
-->
|
|
<Border x:Name="StatusBarBorder"
|
|
Grid.Row="3"
|
|
MinHeight="28"
|
|
MaxHeight="28"
|
|
Padding="5,0">
|
|
<DockPanel LastChildFill="False">
|
|
<TextBlock x:Name="StatusLabel"
|
|
DockPanel.Dock="Left"
|
|
VerticalAlignment="Center" />
|
|
|
|
<StackPanel DockPanel.Dock="Right"
|
|
Orientation="Horizontal">
|
|
<Viewbox Width="16"
|
|
Height="16"
|
|
Margin="0,0,10,0">
|
|
<Canvas Width="24"
|
|
Height="24">
|
|
<Path Fill="{DynamicResource AccentColorBrush}"
|
|
Data="{StaticResource StatusBarIcon}" />
|
|
</Canvas>
|
|
</Viewbox>
|
|
|
|
<TextBlock VerticalAlignment="Center"
|
|
Margin="10,0,0,0"
|
|
Text="{Binding LastUpdateCheck, Source={x:Static settings:UserSettings.Default}, Converter={x:Static converters:RelativeDateTimeConverter.Instance}, StringFormat=Last Refresh: {0}}" />
|
|
</StackPanel>
|
|
</DockPanel>
|
|
</Border>
|
|
</Grid>
|
|
</Window>
|