[GUI] Implement MHDD log viewer functionality

This commit is contained in:
2025-11-18 17:14:48 +00:00
parent 9f0109af43
commit 4e06c565d8
10 changed files with 569 additions and 2 deletions

View File

@@ -19,6 +19,8 @@
<MenuItem Header="{x:Static localization:UI.Menu_File}">
<MenuItem Header="{x:Static localization:UI.Menu_Open}"
Command="{Binding OpenCommand, Mode=OneWay}" />
<MenuItem Header="{x:Static localization:UI.Menu_Open_MHDD_log}"
Command="{Binding OpenMhddLogCommand, Mode=OneWay}" />
<Separator />
<MenuItem Header="{x:Static localization:UI.Menu_Settings}"
IsVisible="{Binding !NativeMenuSupported, Mode=OneWay}"

View File

@@ -0,0 +1,97 @@
<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"
Width="640"
Height="480"
d:DesignWidth="640"
d:DesignHeight="400"
x:Class="Aaru.Gui.Views.Windows.MhddLogView"
x:DataType="windows:MhddLogViewModel"
Title="{x:Static localization:UI.Title_MHDD_log_viewer}">
<Design.DataContext>
<windows:MhddLogViewModel />
</Design.DataContext>
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,*"
RowSpacing="8"
Margin="12">
<Grid Grid.Row="0"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_File_path}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding FilePath, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="1"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_MHDD_Version}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding MhddVersion, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="2"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Device}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding Device, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="3"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Firmware}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding Firmware, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="4"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Serial_number}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding SerialNumber, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="5"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Total_sectors}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding TotalSectors, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="6"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Sector_size}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding SectorSize, Mode=OneWay}" />
</Grid>
<Grid Grid.Row="7"
ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Scan_block_size}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding ScanBlockSize, Mode=OneWay}" />
</Grid>
<Border Grid.Row="8"
BorderThickness="1"
BorderBrush="SlateBlue">
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<controls:BlockMap SectorData="{Binding SectorData, Mode=OneWay}"
VerticalAlignment="Top"
ScanBlockSize="{Binding ScanBlockSize, Mode=OneWay}" />
</ScrollViewer>
</Border>
</Grid>
</Window>

View File

@@ -0,0 +1,57 @@
// /***************************************************************************
// Aaru Data Preservation Suite
// ----------------------------------------------------------------------------
//
// Filename : MhddLogView.axaml.cs
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// Component : GUI view models.
//
// --[ Description ] ----------------------------------------------------------
//
// Code behind for MHDD log viewer.
//
// --[ 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/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
using System;
using Aaru.Gui.ViewModels.Windows;
using Avalonia;
using Avalonia.Controls;
namespace Aaru.Gui.Views.Windows;
public partial class MhddLogView : Window
{
public MhddLogView()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
/// <inheritdoc />
protected override void OnDataContextChanged(EventArgs e)
{
base.OnDataContextChanged(e);
if(DataContext is MhddLogViewModel vm) vm?.LoadData();
}
}