Jeremy Pritts b8da7b2a92 Bump NuGet references
* Resolves #801
* Related to #797
2023-05-19 21:40:38 -04:00

351 lines
19 KiB
XML

<Window xmlns="https://github.com/avaloniaui"
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:ar="using:AssetRipper.GUI"
xmlns:cc="using:AssetRipper.GUI.Components"
xmlns:i18n="clr-namespace:AssetRipper.GUI"
mc:Ignorable="d" d:DesignWidth="1400" d:DesignHeight="830"
Width="1400" Height="830"
x:Class="AssetRipper.GUI.MainWindow"
Icon="/Resources/GUI_Icon.ico"
Title="AssetRipper"
TransparencyLevelHint="AcrylicBlur"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True">
<DragDrop.AllowDrop>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="!IsExporting" />
<MultiBinding Converter="{x:Static BoolConverters.Or}">
<Binding Path="!HasFile" />
<Binding Path="HasLoaded" />
</MultiBinding>
</MultiBinding>
</DragDrop.AllowDrop>
<Design.DataContext>
<ar:MainWindowViewModel />
</Design.DataContext>
<Panel>
<ar:Background />
<Grid RowDefinitions="30,30,*">
<TextBlock Grid.Row="0"
IsHitTestVisible="False"
FontSize="18"
VerticalAlignment="Center"
Text=" AssetRipper"/>
<!--Top Menu-->
<Menu Grid.Row="1">
<!--File Menu-->
<MenuItem Header="{i18n:Localize menu_file}">
<!--File->Open File-->
<MenuItem Header="{i18n:Localize menu_file_open_file}" Command="{Binding ShowOpenFileDialog}">
<MenuItem.IsEnabled>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="!IsExporting" />
<MultiBinding Converter="{x:Static BoolConverters.Or}">
<Binding Path="!HasFile" />
<Binding Path="HasLoaded" />
</MultiBinding>
</MultiBinding>
</MenuItem.IsEnabled>
</MenuItem>
<!--File->Open Folder-->
<MenuItem Header="{i18n:Localize menu_file_open_folder}" Command="{Binding ShowOpenFolderDialog}">
<MenuItem.IsEnabled>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="!IsExporting" />
<MultiBinding Converter="{x:Static BoolConverters.Or}">
<Binding Path="!HasFile" />
<Binding Path="HasLoaded" />
</MultiBinding>
</MultiBinding>
</MenuItem.IsEnabled>
</MenuItem>
<MenuItem Header="{i18n:Localize menu_file_reset}" Command="{Binding Reset}">
<MenuItem.IsEnabled>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="HasFile" />
<Binding Path="HasLoaded" />
<Binding Path="!IsExporting" />
</MultiBinding>
</MenuItem.IsEnabled>
</MenuItem>
<!--File->Exit-->
<MenuItem Header="{i18n:Localize menu_file_exit}" Click="ExitClicked" />
</MenuItem>
<!--Export Menu-->
<MenuItem Header="{i18n:Localize menu_export}" IsEnabled="{Binding !IsExporting}">
<MenuItem Header="{i18n:Localize menu_export_all}" Click="ExportAllClicked" />
<MenuItem Header="{i18n:Localize menu_export_selected}" Click="ExportSelectedAssetToProjectClicked" />
<MenuItem Header="{i18n:Localize menu_export_selected_type}" Click="ExportSelectedAssetTypeToProjectClicked" />
</MenuItem>
<!--Language Menu-->
<MenuItem Header="{i18n:Localize menu_language}" ItemsSource="{Binding LocalizationManager.SupportedLanguages}" Click="LanguageMenuItemClicked">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem Command="{Binding Apply}" CommandParameter="{Binding}" Header="{Binding DisplayName}">
<MenuItem.IsEnabled>
<Binding Converter="{x:Static BoolConverters.Not}" Path="IsActive"></Binding>
</MenuItem.IsEnabled>
</MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<!-- Unity Version Menu -->
<MenuItem Header="{Binding UnityVersionText}" IsVisible="{Binding HasLoaded}">
<!--Unity {Version}->Download-->
<MenuItem Header="Download" Command="{Binding OpenUnityDownloadPage}" />
</MenuItem>
</Menu>
<!--Introduction Screens-->
<!--Drag-drop prompt-->
<Grid Grid.Row="2"
IsVisible="{Binding !HasFile}"
RowDefinitions="50, 80, 650, *">
<TextBlock Grid.Row="0" Text="{i18n:Localize config_options}"
FontSize="20"
TextAlignment="Center"
VerticalAlignment="Center" />
<Grid Grid.Row="1" RowDefinitions="30, 50, 140, 140, 140, 140" ColumnDefinitions="*, 400, 400, 400, *" Margin="100, 0, 100, 0">
<WrapPanel Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" Margin="20, 0">
<CheckBox IsChecked="{Binding IgnoreStreamingAssets, Mode=TwoWay}" />
<TextBlock Text="{i18n:Localize skip_streaming_assets}" Margin="0, 7, 0, 10" />
</WrapPanel>
<WrapPanel Grid.Column="2" Grid.Row="0" HorizontalAlignment="Left" Margin="20, 0">
<CheckBox IsChecked="{Binding EnablePrefabOutlining, Mode=TwoWay}" />
<TextBlock Text="{i18n:Localize enable_prefab_outlining}" Margin="0, 7, 0, 10" />
</WrapPanel>
<WrapPanel Grid.Column="3" Grid.Row="0" HorizontalAlignment="Left" Margin="20, 0">
<CheckBox IsChecked="{Binding EnableStaticMeshSeparation, Mode=TwoWay}" />
<TextBlock Text="{i18n:Localize enable_static_mesh_separation}" Margin="0, 7, 0, 10" />
</WrapPanel>
<WrapPanel Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" Margin="20, 0">
<CheckBox IsChecked="{Binding IgnoreEngineAssets, Mode=TwoWay}" />
<TextBlock Text="{i18n:Localize ignore_engine_assets}" Margin="0, 7, 0, 10" />
</WrapPanel>
<cc:MeshExportConfigDropdown
Grid.Column="1"
Grid.Row="2"
OptionTitle="{i18n:Localize mesh_export_title}"
SelectedValue="{Binding MeshExportFormat, Mode=TwoWay}"
Margin="0, 0, 10, 0">
</cc:MeshExportConfigDropdown>
<cc:AudioExportConfigDropdown
Grid.Column="2"
Grid.Row="2"
OptionTitle="{i18n:Localize audio_export_title}"
SelectedValue="{Binding AudioExportFormat, Mode=TwoWay}"
Margin="10, 0, 10, 0">
</cc:AudioExportConfigDropdown>
<cc:ShaderExportConfigDropdown
Grid.Column="3"
Grid.Row="2"
OptionTitle="{i18n:Localize shader_asset_export_title}"
SelectedValue="{Binding ShaderExportMode, Mode=TwoWay}"
Margin="10, 0, 0, 0">
</cc:ShaderExportConfigDropdown>
<cc:ImageExportConfigDropdown
Grid.Column="1"
Grid.Row="3"
OptionTitle="{i18n:Localize image_export_title}"
SelectedValue="{Binding ImageExportFormat, Mode=TwoWay}"
Margin="0, 0, 10, 0">
</cc:ImageExportConfigDropdown>
<cc:SpriteExportConfigDropdown
Grid.Column="2"
Grid.Row="3"
OptionTitle="{i18n:Localize sprite_export_title}"
SelectedValue="{Binding SpriteExportMode, Mode=TwoWay}"
Margin="10, 0, 10, 0">
</cc:SpriteExportConfigDropdown>
<cc:BundledAssetsExportConfigDropdown
Grid.Column="3"
Grid.Row="3"
OptionTitle="{i18n:Localize bundled_assets_export_title}"
SelectedValue="{Binding BundledAssetsExportMode, Mode=TwoWay}"
Margin="10, 0, 0, 0">
</cc:BundledAssetsExportConfigDropdown>
<cc:TerrainExportConfigDropdown
Grid.Column="1"
Grid.Row="4"
OptionTitle="{i18n:Localize terrain_export_title}"
SelectedValue="{Binding TerrainExportMode, Mode=TwoWay}"
Margin="0, 0, 10, 0">
</cc:TerrainExportConfigDropdown>
<cc:TextExportConfigDropdown
Grid.Column="2"
Grid.Row="4"
OptionTitle="{i18n:Localize text_asset_export_title}"
SelectedValue="{Binding TextExportMode, Mode=TwoWay}"
Margin="10, 0, 10, 0">
</cc:TextExportConfigDropdown>
<cc:ScriptExportModeConfigDropdown
Grid.Column="1"
Grid.Row="5"
OptionTitle="{i18n:Localize script_export_title}"
SelectedValue="{Binding ScriptExportMode, Mode=TwoWay}"
Margin="0, 0, 10, 0">
</cc:ScriptExportModeConfigDropdown>
<cc:ScriptContentLevelConfigDropdown
Grid.Column="2"
Grid.Row="5"
OptionTitle="{i18n:Localize script_content_level_title}"
SelectedValue="{Binding ScriptContentLevel, Mode=TwoWay}"
Margin="10, 0, 10, 0">
</cc:ScriptContentLevelConfigDropdown>
<cc:ScriptLanguageVersionConfigDropdown
Grid.Column="3"
Grid.Row="5"
OptionTitle="{i18n:Localize script_language_version_title}"
SelectedValue="{Binding ScriptLanguageVersion, Mode=TwoWay}"
Margin="10, 0, 0, 0">
</cc:ScriptLanguageVersionConfigDropdown>
</Grid>
<TextBlock Grid.Row="2"
Text="{i18n:Localize config_screen_drag_drop_prompt}"
TextAlignment="Center"
VerticalAlignment="Bottom"
Margin="0, 0, 0, 50"/>
</Grid>
<!--Loading prompt-->
<TextBlock Grid.Row="2" Text="{Binding LoadingText}"
TextAlignment="Center"
VerticalAlignment="Center">
<TextBlock.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="HasFile" />
<Binding Path="!HasLoaded" />
</MultiBinding>
</TextBlock.IsVisible>
</TextBlock>
<!--Main content-->
<Grid Grid.Row="2" IsVisible="{Binding HasLoaded}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="500" MinWidth="300" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" MinWidth="800" />
</Grid.ColumnDefinitions>
<!--File browser-->
<TreeView Grid.Column="0" ItemsSource="{Binding AssetFiles}"
SelectionMode="Single"
SelectionChanged="OnAssetSelected">
<TreeView.ItemTemplate>
<TreeDataTemplate ItemsSource="{Binding SubItems}">
<TextBlock Text="{Binding DisplayAs}" />
</TreeDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<!--Splitter-->
<GridSplitter Grid.Column="1"
ResizeDirection="Columns"
Background="#ccc"
Width="2" />
<!--Right half of main content-->
<Grid Grid.Column="2" RowDefinitions="*">
<Grid Grid.Row="0">
<!--File content-->
<!--Placeholder for if no asset selected-->
<TextBlock Text="{i18n:Localize select_asset_to_view_info}" TextAlignment="Center"
VerticalAlignment="Center" FontSize="18">
<TextBlock.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="!IsExporting" />
<Binding Path="HasFile" />
<Binding Path="HasLoaded" />
<Binding Path="SelectedAsset" Converter="{x:Static ObjectConverters.IsNull}" />
</MultiBinding>
</TextBlock.IsVisible>
</TextBlock>
<!--Tab list for when an asset is selected-->
<TabControl>
<TabControl.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="!IsExporting" />
<Binding Path="HasFile" />
<Binding Path="HasLoaded" />
<Binding Path="SelectedAsset" Converter="{x:Static ObjectConverters.IsNotNull}" />
</MultiBinding>
</TabControl.IsVisible>
<!--Basic Info Tab-->
<TabItem Header="{i18n:Localize asset_tab_basic}">
<TextBox Text="{Binding SelectedAsset.BasicInformation, FallbackValue='No Asset Selected'}" />
</TabItem>
<!--Text Tab-->
<TabItem Header="{i18n:Localize asset_tab_text}"
IsVisible="{Binding SelectedAsset.HasTextData, FallbackValue=False}">
<TextBox IsReadOnly="True"
Text="{Binding SelectedAsset.TextAssetData, FallbackValue='No text asset found'}" />
</TabItem>
<!--Image Tab-->
<TabItem Header="{i18n:Localize asset_tab_image}" IsVisible="{Binding SelectedAsset.HasImageData, FallbackValue=False}">
<Image Source="{Binding SelectedAsset.ImageData, FallbackValue=null}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</TabItem>
<!--Audio Tab-->
<TabItem Header="{i18n:Localize asset_tab_audio}"
IsVisible="{Binding SelectedAsset.HasAudioData, FallbackValue=False}">
<Grid RowDefinitions="*, 40, 40, *">
<Button Grid.Row="1" Command="{Binding SelectedAsset.TogglePause, FallbackValue=null}"
IsEnabled="True" HorizontalAlignment="Center">
<Panel>
<TextBlock IsVisible="{Binding SelectedAsset.IsPaused}" Text="{i18n:Localize asset_tab_audio_play}"></TextBlock>
<TextBlock IsVisible="{Binding !SelectedAsset.IsPaused}" Text="{i18n:Localize asset_tab_audio_pause}"></TextBlock>
</Panel>
</Button>
<TextBlock Grid.Row="2" Text="{Binding SelectedAsset.PositionString}"
VerticalAlignment="Center" TextAlignment="Center" />
</Grid>
</TabItem>
<!--Yaml Tab-->
<TabItem Header="{i18n:Localize asset_tab_yaml}"
IsVisible="{Binding SelectedAsset.YamlTreeIsSupported, FallbackValue=False}">
<TreeView ItemsSource="{Binding SelectedAsset.YamlTree, FallbackValue=[]}">
<TreeView.ItemTemplate>
<TreeDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding DisplayName}" />
</TreeDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</TabItem>
</TabControl>
<!--Export Progress-->
<TextBlock FontSize="18" Text="{Binding ExportingText}" TextAlignment="Center"
VerticalAlignment="Center" IsVisible="{Binding IsExporting}" />
</Grid>
</Grid>
</Grid>
</Grid>
</Panel>
</Window>