[GUI] Reorganize media dump window.

This commit is contained in:
2025-11-20 14:14:25 +00:00
parent f6477270c5
commit 63ecc65ad2

View File

@@ -37,9 +37,12 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:windows="clr-namespace:Aaru.Gui.ViewModels.Windows"
xmlns:localization="clr-namespace:Aaru.Localization;assembly=Aaru.Localization"
xmlns:controls="clr-namespace:Aaru.Gui.Controls"
mc:Ignorable="d"
d:DesignWidth="800"
d:DesignHeight="450"
Width="650"
Height="900"
x:Class="Aaru.Gui.Views.Windows.MediaDump"
Icon="/Assets/aaru-logo.png"
x:DataType="windows:MediaDumpViewModel"
@@ -47,112 +50,161 @@
<Design.DataContext>
<windows:MediaDumpViewModel />
</Design.DataContext>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Vertical"
IsVisible="{Binding OptionsVisible}">
<TextBlock Text="{x:Static localization:UI.Output_format}" />
<ComboBox ItemsSource="{Binding PluginsList}"
SelectedItem="{Binding SelectedPlugin}"
IsEnabled="{Binding FormatReadOnly}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Destination}"
IsReadOnly="True" />
<Button Command="{Binding DestinationCommand}"
IsEnabled="{Binding DestinationEnabled}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Choose}" />
</Button>
</StackPanel>
<CheckBox IsChecked="{Binding StopOnError}">
<TextBlock Text="{x:Static localization:UI.Stop_media_dump_on_first_error}" />
</CheckBox>
<CheckBox IsChecked="{Binding Force}">
<TextBlock Text="{x:Static localization:UI.Continue_dumping_whatever_happens}" />
</CheckBox>
<NumericUpDown Text="{x:Static localization:UI.Retry_passes}"
Value="{Binding Retries}"
Increment="1"
Minimum="0" />
<CheckBox IsChecked="{Binding Persistent}">
<TextBlock Text="{x:Static localization:UI.Try_to_recover_partial_or_incorrect_data}" />
</CheckBox>
<CheckBox IsChecked="{Binding Resume}">
<TextBlock Text="{x:Static localization:UI.Create_or_use_resume_mapfile}" />
</CheckBox>
<CheckBox IsChecked="{Binding Track1Pregap}"
IsVisible="{Binding Track1PregapVisible}">
<TextBlock Text="{x:Static localization:UI.Try_to_read_track_1_pregap}" />
</CheckBox>
<NumericUpDown Text="{x:Static localization:UI.Skipped_sectors_on_error}"
Increment="1"
Minimum="1"
Value="{Binding Skipped}" />
<CheckBox IsChecked="{Binding Sidecar}">
<TextBlock Text="{x:Static localization:UI.Create_Aaru_Metadata_sidecar}" />
</CheckBox>
<CheckBox IsChecked="{Binding Trim}">
<TextBlock Text="{x:Static localization:UI.Trim_errors_from_skipped_sectors}" />
</CheckBox>
<CheckBox IsChecked="{Binding ExistingMetadata}">
<TextBlock Text="{x:Static localization:UI.Take_metadata_from_existing_CICM_XML_sidecar}" />
</CheckBox>
<StackPanel IsVisible="{Binding EncodingVisible}">
<TextBox Text="{x:Static localization:UI.Encoding_to_use_on_metadata_sidecar_creation}" />
<ComboBox ItemsSource="{Binding Encodings}"
SelectedItem="{Binding SelectedEncoding}"
IsEnabled="{Binding EncodingEnabled}">
<Grid Margin="12"
RowSpacing="8"
RowDefinitions="*, Auto, Auto">
<StackPanel Grid.Row="0"
Orientation="Vertical"
IsVisible="{Binding OptionsVisible, Mode=OneWay}"
Spacing="8">
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8">
<TextBlock Grid.Column="0"
Text="{x:Static localization:UI.Output_format}"
VerticalAlignment="Center" />
<ComboBox Grid.Column="1"
ItemsSource="{Binding PluginsList, Mode=OneWay}"
SelectedItem="{Binding SelectedPlugin, Mode=TwoWay}"
HorizontalAlignment="Stretch"
IsEnabled="{Binding FormatReadOnly, Mode=OneWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</Grid>
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8">
<Button Grid.Column="0"
Command="{Binding DestinationCommand, Mode=OneWay}"
IsEnabled="{Binding DestinationEnabled, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Choose}" />
</Button>
<TextBox Grid.Column="1"
Text="{Binding Destination, Mode=OneWay}"
IsReadOnly="True" />
</Grid>
<CheckBox IsChecked="{Binding StopOnError, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Stop_media_dump_on_first_error}" />
</CheckBox>
<CheckBox IsChecked="{Binding Force, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Continue_dumping_whatever_happens}" />
</CheckBox>
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8">
<TextBlock Grid.Column="0"
Text="{x:Static localization:UI.Retry_passes}"
VerticalAlignment="Center" />
<NumericUpDown Grid.Column="1"
HorizontalAlignment="Stretch"
Value="{Binding Retries, Mode=TwoWay}"
Increment="1"
Minimum="0" />
</Grid>
<CheckBox IsChecked="{Binding Persistent, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Try_to_recover_partial_or_incorrect_data}" />
</CheckBox>
<CheckBox IsChecked="{Binding Resume, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Create_or_use_resume_mapfile}" />
</CheckBox>
<CheckBox IsChecked="{Binding Track1Pregap, Mode=TwoWay}"
IsVisible="{Binding Track1PregapVisible, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.Try_to_read_track_1_pregap}" />
</CheckBox>
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8">
<TextBlock Grid.Column="0"
Text="{x:Static localization:UI.Skipped_sectors_on_error}"
VerticalAlignment="Center" />
<NumericUpDown Grid.Column="1"
Increment="1"
Minimum="1"
HorizontalAlignment="Stretch"
Value="{Binding Skipped, Mode=TwoWay}" />
</Grid>
<CheckBox IsChecked="{Binding Sidecar, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Create_Aaru_Metadata_sidecar}" />
</CheckBox>
<CheckBox IsChecked="{Binding Trim, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Trim_errors_from_skipped_sectors}" />
</CheckBox>
<CheckBox IsChecked="{Binding ExistingMetadata, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Take_metadata_from_existing_CICM_XML_sidecar}" />
</CheckBox>
<Grid ColumnDefinitions="Auto, *"
IsVisible="{Binding EncodingVisible, Mode=OneWay}"
ColumnSpacing="8">
<TextBox Grid.Column="0"
Text="{x:Static localization:UI.Encoding_to_use_on_metadata_sidecar_creation}" />
<ComboBox Grid.Column="1"
ItemsSource="{Binding Encodings, Mode=OneWay}"
SelectedItem="{Binding SelectedEncoding, Mode=TwoWay}"
IsEnabled="{Binding EncodingEnabled, Mode=OneWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
<!-- TODO: Image options -->
</StackPanel>
<StackPanel Orientation="Vertical"
IsVisible="{Binding ProgressVisible}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{x:Static localization:UI.Writing_image_to}" />
<TextBlock Text="{Binding Destination}" />
</StackPanel>
<StackPanel Grid.Row="1"
Orientation="Vertical"
IsVisible="{Binding ProgressVisible, Mode=OneWay}"
Spacing="8">
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8">
<TextBlock Grid.Column="0"
Text="{x:Static localization:UI.Writing_image_to}" />
<TextBlock Grid.Column="1"
Text="{Binding Destination, Mode=OneWay}" />
</Grid>
<TextBlock Text="{x:Static localization:UI.Title_Log}" />
<TextBox Text="{Binding Log}"
IsReadOnly="True" />
<Border MinHeight="475"
BorderThickness="1"
BorderBrush="LightGray"
CornerRadius="8">
<ScrollViewer Padding="8">
<controls:SpectreTextBlock TextWrapping="Wrap"
Text="{Binding Log, Mode=OneWay}" />
</ScrollViewer>
</Border>
<StackPanel Orientation="Vertical"
IsVisible="{Binding Progress1Visible}">
<TextBox Text="{Binding ProgressText}" />
<ProgressBar Value="{Binding ProgressValue}"
Maximum="{Binding ProgressMaxValue}"
IsIndeterminate="{Binding ProgressIndeterminate}" />
IsVisible="{Binding Progress1Visible, Mode=OneWay}"
Spacing="8">
<controls:SpectreTextBlock Text="{Binding ProgressText, Mode=OneWay}" />
<ProgressBar Value="{Binding ProgressValue, Mode=OneWay}"
Maximum="{Binding ProgressMaxValue, Mode=OneWay}"
IsIndeterminate="{Binding ProgressIndeterminate, Mode=OneWay}" />
</StackPanel>
<StackPanel Orientation="Vertical"
IsVisible="{Binding Progress2Visible}">
<TextBox Text="{Binding Progress2Text}" />
<ProgressBar Value="{Binding Progress2Value}"
Maximum="{Binding Progress2MaxValue}"
IsIndeterminate="{Binding Progress2Indeterminate}" />
IsVisible="{Binding Progress2Visible, Mode=OneWay}"
Spacing="8">
<controls:SpectreTextBlock Text="{Binding Progress2Text, Mode=OneWay}" />
<ProgressBar Value="{Binding Progress2Value, Mode=OneWay}"
Maximum="{Binding Progress2MaxValue, Mode=OneWay}"
IsIndeterminate="{Binding Progress2Indeterminate, Mode=OneWay}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button Command="{Binding StartCommand}"
IsVisible="{Binding StartVisible}">
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Right"
Spacing="8">
<Button Command="{Binding StartCommand, Mode=OneWay}"
IsVisible="{Binding StartVisible, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Start}" />
</Button>
<Button Command="{Binding CloseCommand}"
IsVisible="{Binding CloseVisible}">
<Button Command="{Binding CloseCommand, Mode=OneWay}"
IsVisible="{Binding CloseVisible, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Close}" />
</Button>
<Button Command="{Binding StopCommand}"
IsVisible="{Binding StopVisible}"
IsEnabled="{Binding StopEnabled}">
<Button Command="{Binding StopCommand, Mode=OneWay}"
IsVisible="{Binding StopVisible, Mode=OneWay}"
IsEnabled="{Binding StopEnabled, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Stop}" />
</Button>
</StackPanel>
</StackPanel>
</Grid>
</Window>