Files
Aaru/Aaru.Gui/Views/Windows/MediaDump.xaml

282 lines
16 KiB
Plaintext
Raw Normal View History

2020-04-17 21:45:50 +01:00
<!--
// /***************************************************************************
// Aaru Data Preservation Suite
//
//
// Filename : MediaDump.xaml
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// Component : GUI windows.
//
// [ Description ]
//
// Media dumping window.
//
// [ License ]
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General public License for more details.
//
// You should have received a copy of the GNU General public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
//
2024-12-19 10:45:18 +00:00
// Copyright © 2011-2025 Natalia Portillo
2020-04-17 21:45:50 +01:00
// ****************************************************************************/
-->
2024-05-01 04:05:22 +01:00
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
2020-04-16 20:40:25 +01:00
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
2024-05-01 04:05:22 +01:00
xmlns:windows="clr-namespace:Aaru.Gui.ViewModels.Windows"
2025-10-25 12:53:52 +01:00
xmlns:localization="clr-namespace:Aaru.Localization;assembly=Aaru.Localization"
2025-11-20 14:14:25 +00:00
xmlns:controls="clr-namespace:Aaru.Gui.Controls"
2024-05-01 04:05:22 +01:00
mc:Ignorable="d"
d:DesignWidth="800"
d:DesignHeight="450"
2025-11-20 20:16:10 +00:00
Width="900"
Height="650"
2024-05-01 04:05:22 +01:00
x:Class="Aaru.Gui.Views.Windows.MediaDump"
Icon="/Assets/aaru-logo.png"
2025-11-19 05:26:14 +00:00
x:DataType="windows:MediaDumpViewModel"
Title="{Binding Title, Mode=OneWay}">
<Design.DataContext>
2020-04-16 20:40:25 +01:00
<windows:MediaDumpViewModel />
</Design.DataContext>
2025-11-20 14:14:25 +00:00
<Grid Margin="12"
RowSpacing="8"
2025-11-20 20:16:10 +00:00
RowDefinitions="Auto, *, Auto">
<TabControl Grid.Row="0"
IsVisible="{Binding OptionsVisible, Mode=OneWay}">
<TabItem>
<TabItem.Header>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_General}" />
</TabItem.Header>
<StackPanel Orientation="Vertical"
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, Mode=OneWay}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</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 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>
<CheckBox IsChecked="{Binding CreateSidecar, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Create_Aaru_Metadata_sidecar}" />
</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>
</StackPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Errors}" />
</TabItem.Header>
<StackPanel Orientation="Vertical"
Spacing="8">
<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>
<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 Trim, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Trim_errors_from_skipped_sectors}" />
</CheckBox>
<CheckBox IsChecked="{Binding Paranoia, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Paranoia_help}" />
</CheckBox>
<CheckBox IsChecked="{Binding CureParanoia, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Cure_paranoia_help}" />
</CheckBox>
</StackPanel>
</TabItem>
<TabItem IsVisible="{Binding HasSubchannel, Mode=OneWay}">
<TabItem.Header>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Subchannels}" />
</TabItem.Header>
<StackPanel Orientation="Vertical"
Spacing="8">
<CheckBox IsChecked="{Binding FixSubchannelPosition, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Fix_subchannel_position_help}"
TextWrapping="Wrap" />
</CheckBox>
<CheckBox IsChecked="{Binding RetrySubchannel, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Retry_subchannel_help}"
TextWrapping="Wrap" />
</CheckBox>
<CheckBox IsChecked="{Binding FixSubchannel, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Fix_subchannel_help}"
TextWrapping="Wrap" />
</CheckBox>
<CheckBox IsChecked="{Binding FixSubchannelCrc, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Fix_subchannel_crc_help}"
TextWrapping="Wrap" />
</CheckBox>
<CheckBox IsChecked="{Binding GenerateSubchannels, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Generate_subchannels_dump_help}"
TextWrapping="Wrap" />
</CheckBox>
</StackPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Encryption}" />
</TabItem.Header>
<StackPanel Orientation="Vertical"
Spacing="8">
<CheckBox IsChecked="{Binding StoreEncryptedAsIs, Mode=TwoWay}">
<TextBlock Text="{x:Static localization:UI.Store_encrypted_data_as_is}"
TextWrapping="Wrap" />
</CheckBox>
<CheckBox IsChecked="{Binding ReadTitleKeys, Mode=TwoWay}"
IsVisible="{Binding IsDvd, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.Try_to_read_the_title_keys_from_CSS_DVDs}"
TextWrapping="Wrap" />
</CheckBox>
</StackPanel>
</TabItem>
<!-- TODO: Image options -->
</TabControl>
2025-11-20 20:16:10 +00:00
<Grid Grid.Row="1"
RowDefinitions="Auto,Auto,*,Auto,Auto"
VerticalAlignment="Stretch"
IsVisible="{Binding ProgressVisible, Mode=OneWay}"
RowSpacing="8">
<Grid Grid.Row="0"
ColumnDefinitions="Auto, *"
2025-11-20 14:14:25 +00:00
ColumnSpacing="8">
<TextBlock Grid.Column="0"
Text="{x:Static localization:UI.Writing_image_to}" />
<TextBlock Grid.Column="1"
Text="{Binding Destination, Mode=OneWay}" />
</Grid>
2025-11-20 20:16:10 +00:00
<TextBlock Grid.Row="1"
Text="{x:Static localization:UI.Title_Log}" />
<Border Grid.Row="2"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
2025-11-20 14:14:25 +00:00
BorderThickness="1"
BorderBrush="LightGray"
CornerRadius="8">
<ScrollViewer Padding="8">
<controls:SpectreTextBlock TextWrapping="Wrap"
Text="{Binding Log, Mode=OneWay}" />
</ScrollViewer>
</Border>
2025-11-20 20:16:10 +00:00
<StackPanel Grid.Row="3"
Orientation="Vertical"
2025-11-20 14:14:25 +00:00
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>
2025-11-20 20:16:10 +00:00
<StackPanel Grid.Row="4"
Orientation="Vertical"
2025-11-20 14:14:25 +00:00
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>
2025-11-20 20:16:10 +00:00
</Grid>
2025-11-20 14:14:25 +00:00
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Right"
Spacing="8">
<Button Command="{Binding StartCommand, Mode=OneWay}"
IsVisible="{Binding StartVisible, Mode=OneWay}">
2025-10-25 12:53:52 +01:00
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Start}" />
</Button>
2025-11-20 14:14:25 +00:00
<Button Command="{Binding CloseCommand, Mode=OneWay}"
IsVisible="{Binding CloseVisible, Mode=OneWay}">
2025-10-25 12:53:52 +01:00
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Close}" />
</Button>
2025-11-20 14:14:25 +00:00
<Button Command="{Binding StopCommand, Mode=OneWay}"
IsVisible="{Binding StopVisible, Mode=OneWay}"
IsEnabled="{Binding StopEnabled, Mode=OneWay}">
2025-10-25 12:53:52 +01:00
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Stop}" />
</Button>
</StackPanel>
2025-11-20 14:14:25 +00:00
</Grid>
</Window>