mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
351 lines
19 KiB
XML
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> |