mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[GUI] Added a window to edit AaruFormat files basic metadata.
This commit is contained in:
235
Aaru.Gui/Views/Windows/ImageMetadata.axaml
Normal file
235
Aaru.Gui/Views/Windows/ImageMetadata.axaml
Normal file
@@ -0,0 +1,235 @@
|
||||
<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:windows="clr-namespace:Aaru.Gui.ViewModels.Windows"
|
||||
xmlns:controls="clr-namespace:Aaru.Gui.Controls"
|
||||
xmlns:localization="clr-namespace:Aaru.Localization;assembly=Aaru.Localization"
|
||||
mc:Ignorable="d"
|
||||
d:DesignWidth="800"
|
||||
d:DesignHeight="450"
|
||||
Width="680"
|
||||
Height="600"
|
||||
x:Class="Aaru.Gui.Views.Windows.ImageMetadata"
|
||||
x:DataType="windows:ImageMetadataViewModel"
|
||||
Title="{x:Static localization:UI.Title_Edit_image_metadata}">
|
||||
<Design.DataContext>
|
||||
<windows:ImageMetadataViewModel />
|
||||
</Design.DataContext>
|
||||
<Grid RowDefinitions="*, Auto"
|
||||
RowSpacing="8"
|
||||
Margin="12">
|
||||
<TabControl Grid.Row="0">
|
||||
<TabItem>
|
||||
<TabItem.Header>
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Image}" />
|
||||
</TabItem.Header>
|
||||
<Grid Margin="8"
|
||||
RowSpacing="8"
|
||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,*">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8"
|
||||
Grid.Row="0">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Image_path}"
|
||||
FontWeight="Bold" />
|
||||
<controls:SpectreTextBlock Text="{Binding ImagePath, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8"
|
||||
Grid.Row="1">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Media_type}"
|
||||
FontWeight="Bold" />
|
||||
<controls:SpectreTextBlock Text="{Binding MediaType, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8"
|
||||
Grid.Row="2">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Size}"
|
||||
FontWeight="Bold" />
|
||||
<controls:SpectreTextBlock Text="{Binding Size, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8"
|
||||
Grid.Row="3">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Creator}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding CreatorNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding Creator, Mode=TwoWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Who_created_the_image}"
|
||||
Grid.Row="4"
|
||||
IsEnabled="{Binding !CreatorNotSet, Mode=OneWay}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8"
|
||||
Grid.Row="5">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Comments}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding CommentsNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding Comments, Mode=TwoWay}"
|
||||
AcceptsReturn="True"
|
||||
MinHeight="200"
|
||||
VerticalAlignment="Stretch"
|
||||
Grid.Row="6"
|
||||
IsEnabled="{Binding !CommentsNotSet, Mode=OneWay}" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem>
|
||||
<TabItem.Header>
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Media}" />
|
||||
</TabItem.Header>
|
||||
<StackPanel Orientation="Vertical"
|
||||
Spacing="8">
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Sequence_is_not_set}"
|
||||
IsChecked="{Binding SequenceNotSet, Mode=TwoWay}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Media_number_no}"
|
||||
VerticalAlignment="Center" />
|
||||
<NumericUpDown Minimum="1"
|
||||
Increment="1"
|
||||
Value="{Binding MediaSequence, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !SequenceNotSet, Mode=OneWay}"
|
||||
Width="120" />
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_no_in_a_sequence_of_no}"
|
||||
VerticalAlignment="Center" />
|
||||
<NumericUpDown Minimum="1"
|
||||
Increment="1"
|
||||
Value="{Binding MediaLastSequence, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !SequenceNotSet, Mode=OneWay}"
|
||||
Width="120" />
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_no_media}"
|
||||
VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Title}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding MediaTitleNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding MediaTitle, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !MediaTitleNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Media_title}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Manufacturer}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding MediaManufacturerNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding MediaManufacturer, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !MediaManufacturerNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Media_manufacturer}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Model}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding MediaModelNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding MediaModel, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !MediaModelNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Media_model}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Manufacturer}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding MediaSerialNumberNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding MediaSerialNumber, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !MediaSerialNumberNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Media_serial_number}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Part_number}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding MediaPartNumberNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding MediaPartNumber, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !MediaPartNumberNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Media_part_number}" />
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
<TabItem>
|
||||
<TabItem.Header>
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Drive}" />
|
||||
</TabItem.Header>
|
||||
<StackPanel Orientation="Vertical"
|
||||
Spacing="8">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Manufacturer}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding DriveManufacturerNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding DriveManufacturer, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !DriveManufacturerNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Drive_manufacturer}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Model}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding DriveModelNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding DriveModel, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !DriveModelNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Drive_model}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Serial_number}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding DriveSerialNumberNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding DriveSerialNumber, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !DriveSerialNumberNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Drive_serial_number}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Firmware_revision}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center" />
|
||||
<CheckBox Content="{x:Static localization:UI.Title_Not_set}"
|
||||
IsChecked="{Binding DriveFirmwareRevisionNotSet, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding DriveFirmwareRevision, Mode=TwoWay}"
|
||||
IsEnabled="{Binding !DriveFirmwareRevisionNotSet, Mode=OneWay}"
|
||||
Watermark="{x:Static localization:UI.Watermark_Drive_firmware_revision}" />
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<StackPanel Grid.Row="1"
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<Button Content="{x:Static localization:UI.ButtonLabel_Open}"
|
||||
IsVisible="{Binding !IsOpened, Mode=OneWay}"
|
||||
Command="{Binding OpenImageCommand, Mode=OneWay}" />
|
||||
<Button Content="{x:Static localization:UI.ButtonLabel_Load}"
|
||||
IsVisible="{Binding IsOpened, Mode=OneWay}"
|
||||
Command="{Binding LoadMetadataCommand, Mode=OneWay}" />
|
||||
<Button Content="{x:Static localization:UI.ButtonLabel_Save}"
|
||||
IsVisible="{Binding IsOpened, Mode=OneWay}"
|
||||
Command="{Binding SaveMetadataCommand, Mode=OneWay}" />
|
||||
<Button Content="{x:Static localization:UI.ButtonLabel_Close}"
|
||||
Command="{Binding CloseCommand, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
19
Aaru.Gui/Views/Windows/ImageMetadata.axaml.cs
Normal file
19
Aaru.Gui/Views/Windows/ImageMetadata.axaml.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Aaru.Gui.ViewModels.Windows;
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace Aaru.Gui.Views.Windows;
|
||||
|
||||
public partial class ImageMetadata : Window
|
||||
{
|
||||
public ImageMetadata()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnClosing(WindowClosingEventArgs e)
|
||||
{
|
||||
(DataContext as ImageMetadataViewModel)?.CloseImage();
|
||||
base.OnClosing(e);
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@
|
||||
Command="{Binding OpenIbgLogCommand, Mode=OneWay}" />
|
||||
<MenuItem Header="{x:Static localization:UI.Menu_Connect_to_AaruRemote}"
|
||||
Command="{Binding ConnectToRemoteCommand, Mode=OneWay}" />
|
||||
<MenuItem Header="Open device..."
|
||||
<MenuItem Header="{x:Static localization:UI.Menu_Open_device}"
|
||||
Command="{Binding OpenDeviceCommand, Mode=OneWay}"
|
||||
IsVisible="{Binding DevicesSupported, Mode=OneWay}" />
|
||||
<Separator />
|
||||
@@ -38,7 +38,7 @@
|
||||
IsVisible="{Binding !NativeMenuSupported, Mode=OneWay}"
|
||||
Command="{Binding ExitCommand, Mode=OneWay}" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="Image"
|
||||
<MenuItem Header="{x:Static localization:UI.Menu_Image}"
|
||||
IsEnabled="{Binding ImageLoaded, Mode=OneWay}">
|
||||
<MenuItem Command="{Binding CalculateEntropyCommand, Mode=OneWay}"
|
||||
Header="{x:Static localization:UI.ButtonLabel_Calculate_entropy}" />
|
||||
@@ -55,6 +55,10 @@
|
||||
<MenuItem Command="{Binding DecodeImageMediaTagsCommand, Mode=OneWay}"
|
||||
Header="{x:Static localization:UI.ButtonLabel_Decode_media_tags}" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="{x:Static localization:UI.Menu_Metadata}">
|
||||
<MenuItem Command="{Binding ImageMetadataCommand, Mode=OneWay}"
|
||||
Header="{x:Static localization:UI.Menu_Edit_image_metadata}" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="{x:Static localization:UI.Menu_Window}">
|
||||
<MenuItem Header="{x:Static localization:UI.Menu_Console}"
|
||||
Command="{Binding ConsoleCommand, Mode=OneWay}" />
|
||||
|
||||
Reference in New Issue
Block a user