423 lines
25 KiB
XML
423 lines
25 KiB
XML
<Window x:Class="ResourceViewer.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:local="clr-namespace:ResourceViewer"
|
|
xmlns:perforce="clr-namespace:JD.Perforce;assembly=JD.Perforce"
|
|
xmlns:gui="clr-namespace:JD.Remoting.Gui;assembly=JD.Remoting"
|
|
Title="Resource Viewer"
|
|
Height="800"
|
|
Width="1018"
|
|
MinHeight="800"
|
|
MinWidth="1015"
|
|
Loaded="OnLoaded"
|
|
Closing="OnClosing"
|
|
DataContext="{Binding RelativeSource={RelativeSource Self}}"
|
|
Icon="/ResourceViewer;component/Resources/process.ico" >
|
|
|
|
<Window.Resources>
|
|
<local:BoolToBrushConverter x:Key="BoolToBrushConverter" />
|
|
<local:RatioToBrushConverter x:Key="RatioToBrushConverter" />
|
|
<local:RatioGreenToRedToBrushConverter x:Key="RatioGreenToRedToBrushConverter" />
|
|
<Style x:Key="GenericButtonStyle" TargetType="Button">
|
|
<Setter Property="Margin" Value="2"/>
|
|
<Setter Property="Foreground" Value="Black"/>
|
|
<Setter Property="FontFamily" Value="Arial"/>
|
|
<Setter Property="FontSize" Value="12px"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
<Setter Property="Background" >
|
|
<Setter.Value>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
|
|
<GradientStop Color="LightCyan" Offset="0.1"/>
|
|
<GradientStop Color="LightSlateGray" Offset="0.8"/>
|
|
<GradientStop Color="LightCyan" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<!-- List box style to have the same selected and mouse over styles even the list has the fosus or not -->
|
|
<Style x:Key="SameStyleFocusedUnfocusedListBox" TargetType="{x:Type ListBoxItem}">
|
|
<Setter Property="Background" Value="Gainsboro"/>
|
|
<Setter Property="FontWeight" Value="Regular"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="true">
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Foreground" Value="LavenderBlush"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="true">
|
|
<Setter Property="Background" Value="LightSteelBlue"/>
|
|
<Setter Property="Foreground" Value="Black"/>
|
|
<Setter Property="FontWeight" Value="DemiBold"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
<Style.Resources>
|
|
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="SteelBlue" Opacity="1"/>
|
|
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="SteelBlue" Opacity="1"/>
|
|
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
|
|
</Style.Resources>
|
|
</Style>
|
|
</Window.Resources>
|
|
|
|
<Grid >
|
|
<StatusBar Name="_statusBar" HorizontalContentAlignment="Stretch" Margin="0,0,0,0" Height="30" VerticalAlignment="Bottom" FontFamily="Arial" Background="#FFB7B7AD">
|
|
<StackPanel Height="30" HorizontalAlignment="Left" Margin="0,0,0,0" Name="_statusBarStackPanel" VerticalAlignment="Center" Orientation="Horizontal">
|
|
<gui:EngineConnectionStatusWpfUserControl Name="_engineConnectionStatusUserControl" Margin="0,0,0,0" FontSize="12" HorizontalAlignment="Left" />
|
|
<perforce:P4ConnectionStatusWpfUserControl Name="_p4ConnectionStatusUserControl" Margin="0,0,0,0" FontSize="12" HorizontalAlignment="Left" />
|
|
<Label Height="25"
|
|
Name="_targetLabel"
|
|
Margin="4,0,0,0"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
Background="Transparent"
|
|
Foreground="Black"
|
|
FontFamily="Arial"
|
|
FontSize="12"
|
|
FontWeight="Bold" />
|
|
|
|
<local:FiltererWarningUserControl x:Name="_filterWarningUserControl" Visibility="Hidden" Width="200" Margin="4,0,4,0" VerticalAlignment="Stretch" />
|
|
<local:FiltererWarningUserControl x:Name="_checkoutWarningUserControl" Visibility="Hidden" Margin="4,0,4,0" VerticalAlignment="Stretch" />
|
|
</StackPanel>
|
|
</StatusBar>
|
|
<ToolBar Height="32" Name="_toolBar" VerticalAlignment="Top" Background="#FFB7B7AD" >
|
|
<StackPanel HorizontalAlignment="Stretch" Margin="2,0,2,0" Name="_toolBarStackPanel" VerticalAlignment="Center" Orientation="Horizontal" IsEnabled="{Binding Path=EngineConnected}">
|
|
<ComboBox Height="26" HorizontalAlignment="Left" Margin="0,0,0,0" Name="_resourceTypeComboBox" ItemsSource="{Binding Path=ResourceTypeComboList}" VerticalAlignment="Center" Width="120" FontFamily="Arial" SelectionChanged="OnResourceTypeComboBoxSelectionChanged" VerticalContentAlignment="Center" ToolTip="Select type of resource to display" />
|
|
<Image Height="26" Name="_findImage" Margin="10,0,0,0" Stretch="None" Width="24" Source="/ResourceViewer;component/Resources/Icons_16x16_Find.png" />
|
|
<TextBox Height="26" Name="_findkeyTextBox" Width="160" TextChanged="OnFindKeyTextChanged" ToolTip="Enter a wildcard to filter resources" />
|
|
<Button Height="26" Name="_refreshButton" Width="48" Margin="4,0,0,0"
|
|
ToolTip="Click to refresh data from engine"
|
|
Click="OnRefreshButtonClick">
|
|
<Image Source="/ResourceViewer;component/Resources/Icons_16x16_Refresh.png" />
|
|
</Button>
|
|
<Label Content="Local data directory" Margin="20,0,0,0" Height="24" Name="label1" Width="120" VerticalContentAlignment="Center" VerticalAlignment="Center" FontFamily="Arial" FontSize="12" />
|
|
<TextBox Height="23" Name="_textBoxRootDataPath" Width="310" IsReadOnly="True" ToolTip="Current data root path" />
|
|
</StackPanel>
|
|
<Button Height="26" Name="_releaseNotesButton" Width="48" Margin="4,0,4,0"
|
|
ToolTip="Click to have release notes information"
|
|
Click="OnReleaseNotesButtonClick">
|
|
<Image Source="/ResourceViewer;component/Resources/Icons_128x128_ReleaseNotes.png" />
|
|
</Button>
|
|
<Button Height="26" Name="_helpButton" Width="48" Margin="4,0,4,0"
|
|
ToolTip="Click to display help"
|
|
Click="OnHelpButtonClick">
|
|
<Image Source="/ResourceViewer;component/Resources/Icons_128x128_Help.png" />
|
|
</Button>
|
|
</ToolBar>
|
|
<Grid Margin="0,32">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="350*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="350*"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid Margin="0,0,0,0" HorizontalAlignment="Stretch">
|
|
<DataGrid AutoGenerateColumns="False" Name="_resourceDataGrid"
|
|
ItemsSource="{Binding Path=ResourceInfoDatagridList}"
|
|
SelectionChanged="OnDataGridSelectionChanged"
|
|
SelectionMode="Extended"
|
|
FontFamily="Arial"
|
|
FontSize="12"
|
|
CanUserReorderColumns="False"
|
|
CanUserResizeRows="False"
|
|
CanUserSortColumns="True"
|
|
CanUserAddRows="False" Focusable="False"
|
|
VerticalAlignment="Stretch"
|
|
FontStretch="Normal"
|
|
Foreground="#FF000032"
|
|
EnableRowVirtualization="True"
|
|
EnableColumnVirtualization="True"
|
|
ContextMenuOpening="OnDataGridContextMenuOpening"
|
|
MouseDoubleClick="OnDataGridMouseDoubleClick"
|
|
ToolTip="Double Click to explore file">
|
|
<DataGrid.ContextMenu>
|
|
<ContextMenu Height="23" Name="_popupMenu">
|
|
<MenuItem Header="Explore" />
|
|
<MenuItem Header="Open" />
|
|
</ContextMenu>
|
|
</DataGrid.ContextMenu>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn
|
|
Header="Name"
|
|
SortMemberPath="ShortName"
|
|
x:Name="columnIDName"
|
|
Binding="{Binding Path=ShortName}"
|
|
IsReadOnly="True"
|
|
Width="250"
|
|
MaxWidth="500"
|
|
SortDirection="Descending" >
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="Loaded"
|
|
SortMemberPath="Loaded"
|
|
x:Name="columnIDLoaded"
|
|
Binding="{Binding Path=LoadedValue}"
|
|
IsReadOnly="True"
|
|
Width="50"
|
|
SortDirection="Descending" >
|
|
|
|
<DataGridTextColumn.CellStyle>
|
|
<Style TargetType="{x:Type DataGridCell}">
|
|
<Setter Property="Background" Value="{Binding Loaded, Converter={StaticResource BoolToBrushConverter}}"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Setter Property="FontWeight" Value="Bold" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGridTextColumn.CellStyle>
|
|
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Center" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="Cooked"
|
|
SortMemberPath="Cooked"
|
|
x:Name="columnIDCooked"
|
|
Binding="{Binding Path=CookedValue}"
|
|
IsReadOnly="True"
|
|
Width="50"
|
|
SortDirection="Descending" >
|
|
|
|
<DataGridTextColumn.CellStyle>
|
|
<Style TargetType="{x:Type DataGridCell}">
|
|
<Setter Property="Background" Value="{Binding Cooked, Converter={StaticResource BoolToBrushConverter}}"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Setter Property="FontWeight" Value="Bold" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGridTextColumn.CellStyle>
|
|
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Center" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="Type"
|
|
SortMemberPath="TypeNameValue"
|
|
x:Name="columnIDType"
|
|
Binding="{Binding Path=TypeNameValue}"
|
|
IsReadOnly="True"
|
|
Width="150"
|
|
SortDirection="Descending" >
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="Custom Info"
|
|
SortMemberPath="CustomInfo"
|
|
x:Name="columnIDCustomInfo"
|
|
Binding="{Binding Path=CustomInfo}"
|
|
IsReadOnly="True"
|
|
Width="150"
|
|
SortDirection="Descending" >
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Right" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="Load (ms)"
|
|
SortMemberPath="LoadingTime"
|
|
x:Name="columnIDLoadingTime"
|
|
Binding="{Binding Path=LoadingTime}"
|
|
IsReadOnly="True"
|
|
Width="80"
|
|
SortDirection="Descending" >
|
|
|
|
<DataGridTextColumn.CellStyle>
|
|
<Style TargetType="{x:Type DataGridCell}">
|
|
<Setter Property="Background" Value="{Binding LoadTimeRatio, Converter={StaticResource RatioGreenToRedToBrushConverter}}"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Setter Property="FontWeight" Value="Bold" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGridTextColumn.CellStyle>
|
|
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Right" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="Mem (KB)"
|
|
SortMemberPath="MemoryUsage"
|
|
x:Name="columnIDMemoryUsage"
|
|
Binding="{Binding Path=MemoryUsage}"
|
|
IsReadOnly="True"
|
|
Width="80"
|
|
SortDirection="Descending" >
|
|
|
|
<DataGridTextColumn.CellStyle>
|
|
<Style TargetType="{x:Type DataGridCell}">
|
|
<Setter Property="Background" Value="{Binding MemoryRatio, Converter={StaticResource RatioToBrushConverter}}"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Setter Property="FontWeight" Value="Bold" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGridTextColumn.CellStyle>
|
|
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Right" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn
|
|
Header="File Path"
|
|
SortMemberPath="PathName"
|
|
x:Name="columnIDPath"
|
|
Binding="{Binding Path=PathName}"
|
|
IsReadOnly="True"
|
|
Width="400"
|
|
SortDirection="Descending" >
|
|
</DataGridTextColumn>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
<GridSplitter Grid.Row="1"
|
|
Grid.Column="0"
|
|
VerticalAlignment="Top"
|
|
HorizontalAlignment="Stretch"
|
|
Background="Black"
|
|
Height="5"
|
|
Margin="0,0,0,0"
|
|
ResizeBehavior="PreviousAndNext"/>
|
|
<Grid Grid.Row="2" Background="AliceBlue" >
|
|
<Grid Name="_gridimage" Width="264" Height="264" Background="Black" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,4,0">
|
|
<Image Name="_textureImage"
|
|
DataContext="{Binding ElementName=_resourceDataGrid, Path=SelectedItem}"
|
|
Stretch="UniformToFill"
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Stretch"
|
|
UseLayoutRounding="False"
|
|
Margin="4,4,4,4" >
|
|
</Image>
|
|
</Grid>
|
|
<Grid Margin="338,10,275,0" Name="_resourceGroupBox" Background="LightSteelBlue" VerticalAlignment="Stretch" HorizontalAlignment="Right" Width="378">
|
|
<Button Height="36" Width="64" Margin="5,0,0,4" Name="_saveButton"
|
|
Style="{StaticResource GenericButtonStyle}"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Bottom"
|
|
Click="OnSaveButtonClick"
|
|
ToolTip="Save All : Click to save all changes made on texture configurations">
|
|
<Image Source="/ResourceViewer;component/Resources/Icons_256x256_SaveAll.png" />
|
|
</Button>
|
|
<Button Height="36" Width="64" Margin="5,0,0,107" Opacity="1" OpacityMask="Black" Name="_recookButton"
|
|
Style="{StaticResource GenericButtonStyle}"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Bottom"
|
|
Click="OnRecookButtonClick"
|
|
ToolTip="Recook : Click to force engine to recook the selected texture only">
|
|
<Image Source="/ResourceViewer;component/Resources/Icons_64x64_Recook.png" />
|
|
</Button>
|
|
<Button Height="36" Width="64" Margin="5,0,0,66" Opacity="1" OpacityMask="Black" Name="_recookAllButton"
|
|
Style="{StaticResource GenericButtonStyle}"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Bottom"
|
|
Click="OnRecookAllButtonClick"
|
|
ToolTip="Recook All : Click to force engine to recook all changed textures">
|
|
<Image Source="/ResourceViewer;component/Resources/Icons_64x64_RecookAll.png" />
|
|
</Button>
|
|
<ListBox Width="67" Height="153" Margin="4,6,0,0" Name="_targetListBox"
|
|
SelectionMode="Extended" HorizontalAlignment="Left" VerticalAlignment="Top"
|
|
ToolTip="Multi select targets you want your changes to by applied on"
|
|
SelectionChanged="OnTargetListSelectionChanged"
|
|
ItemContainerStyle="{StaticResource SameStyleFocusedUnfocusedListBox}" />
|
|
<local:PropertyGrid x:Name="_resourcePropertyGrid" Width="300" Margin="4,4,4,4" HorizontalAlignment="Right" VerticalAlignment="Stretch"/>
|
|
</Grid>
|
|
<Grid Name="_resourceInfoGrid"
|
|
Background="LightSteelBlue"
|
|
Width="339"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Stretch"
|
|
Margin="0,10,0,0" >
|
|
<DataGrid AutoGenerateColumns="False"
|
|
Margin="6,50,6,0"
|
|
Name="_infoDataGrid"
|
|
RowHeaderWidth="NaN"
|
|
ItemsSource="{Binding Path=StatisticsList}"
|
|
FontFamily="Arial"
|
|
SelectionMode="Single"
|
|
CanUserSortColumns="False"
|
|
CanUserResizeRows="False"
|
|
CanUserResizeColumns="False"
|
|
CanUserReorderColumns="False"
|
|
FrozenColumnCount="4"
|
|
FontSize="12"
|
|
MinRowHeight="30"
|
|
BorderThickness="1"
|
|
AlternatingRowBackground="Lavender"
|
|
Background="Gainsboro"
|
|
VerticalAlignment="Top">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Width="120" x:Name="titleID" Binding="{Binding Path=Title}" IsReadOnly="True">
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
|
<Setter Property="VerticalAlignment" Value="Center" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn Header="File Count" SortMemberPath="Count" x:Name="colIDCount" Binding="{Binding Path=Count}" IsReadOnly="True">
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Right" />
|
|
<Setter Property="VerticalAlignment" Value="Center" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn Header="Load (ms)" SortMemberPath="LoadingTime" x:Name="colIDLoadingTime_infoDataGrid" Binding="{Binding Path=LoadingTime}" IsReadOnly="True">
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Right" />
|
|
<Setter Property="VerticalAlignment" Value="Center" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn Header="Mem (KB)" SortMemberPath="MemoryUsage" x:Name="colIDMemoryUsage_infoDataGrid" Binding="{Binding Path=MemoryUsage}" IsReadOnly="True">
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="{x:Type TextBlock}">
|
|
<Setter Property="HorizontalAlignment" Value="Right" />
|
|
<Setter Property="VerticalAlignment" Value="Center" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
</DataGridTextColumn>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
<Label Content="Resources information" FontFamily="Arial" FontWeight="SemiBold" FontSize="12" Height="28" HorizontalAlignment="Left" Margin="7,11,0,0" VerticalAlignment="Top" VerticalContentAlignment="Center"/>
|
|
</Grid>
|
|
<Label Content=""
|
|
Name="_labelImageSize"
|
|
BorderBrush="Black"
|
|
Foreground="Black"
|
|
Background="LightBlue"
|
|
Height="25"
|
|
Width="264"
|
|
Margin="0,0,4,0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Bottom"
|
|
VerticalContentAlignment="Center"
|
|
FontFamily="Arial"
|
|
FontSize="12"
|
|
FontWeight="SemiBold"
|
|
BorderThickness="1,0,0,1"/>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
</Window>
|