diff --git a/.idea/.idea.Aaru/.idea/contentModel.xml b/.idea/.idea.Aaru/.idea/contentModel.xml
index da89e13c4..21c8e5104 100644
--- a/.idea/.idea.Aaru/.idea/contentModel.xml
+++ b/.idea/.idea.Aaru/.idea/contentModel.xml
@@ -1,28 +1,27 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -71,13 +70,6 @@
-
-
-
-
-
-
-
@@ -88,12 +80,18 @@
+
+
+
+
+
+
@@ -102,14 +100,6 @@
-
-
-
-
-
-
-
-
@@ -117,11 +107,19 @@
+
+
+
+
+
+
+
+
@@ -180,6 +178,13 @@
+
+
+
+
+
+
+
@@ -200,19 +205,10 @@
-
-
-
-
-
-
-
-
-
@@ -221,6 +217,7 @@
+
@@ -238,6 +235,7 @@
+
@@ -258,8 +256,8 @@
-
+
@@ -269,11 +267,11 @@
-
+
-
+
@@ -287,17 +285,17 @@
-
-
+
+
-
+
@@ -317,12 +315,19 @@
-
+
+
+
+
+
+
+
+
@@ -339,68 +344,61 @@
-
-
-
-
-
-
-
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
@@ -425,7 +423,6 @@
-
@@ -437,11 +434,12 @@
+
-
+
@@ -463,9 +461,9 @@
+
-
@@ -495,6 +493,13 @@
+
+
+
+
+
+
+
@@ -558,11 +563,11 @@
+
-
@@ -582,17 +587,10 @@
-
-
-
-
-
-
-
-
+
@@ -649,6 +647,13 @@
+
+
+
+
+
+
+
@@ -661,28 +666,17 @@
-
+
-
-
-
-
-
-
-
-
+
-
-
-
-
@@ -690,13 +684,16 @@
+
+
+
-
-
+
+
@@ -732,11 +729,13 @@
+
-
+
+
@@ -744,11 +743,14 @@
-
+
+
+
+
@@ -788,8 +790,8 @@
-
+
@@ -798,8 +800,8 @@
-
+
@@ -808,8 +810,8 @@
-
+
@@ -836,8 +838,15 @@
-
+
+
+
+
+
+
+
+
@@ -855,11 +864,11 @@
-
+
@@ -882,34 +891,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
@@ -917,12 +909,18 @@
+
+
+
+
+
+
@@ -1016,6 +1014,12 @@
+
+
+
+
+
+
@@ -1040,12 +1044,6 @@
-
-
-
-
-
-
@@ -1128,6 +1126,8 @@
+
+
@@ -1143,6 +1143,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1155,18 +1167,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1175,14 +1175,14 @@
-
-
+
+
@@ -1205,12 +1205,10 @@
-
-
-
+
@@ -1243,8 +1241,9 @@
-
+
+
@@ -1256,13 +1255,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
-
-
@@ -1296,6 +1305,7 @@
+
@@ -1324,17 +1334,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -1343,6 +1342,7 @@
+
@@ -1350,10 +1350,6 @@
-
-
-
-
@@ -1361,6 +1357,9 @@
+
+
+
@@ -1443,16 +1442,7 @@
-
-
-
-
-
-
-
-
-
-
+
@@ -1474,6 +1464,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -1507,16 +1507,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -1554,6 +1544,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -1644,8 +1644,8 @@
-
+
@@ -1679,16 +1679,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -1700,6 +1690,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1882,16 +1889,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -1902,6 +1899,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -1920,14 +1927,6 @@
-
-
-
-
-
-
-
-
@@ -1935,6 +1934,7 @@
+
@@ -1942,6 +1942,13 @@
+
+
+
+
+
+
+
@@ -1951,20 +1958,11 @@
-
-
-
-
-
-
-
-
-
+
-
@@ -1973,19 +1971,13 @@
+
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -2019,8 +2011,8 @@
-
+
@@ -2028,7 +2020,7 @@
-
+
@@ -2051,7 +2043,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Aaru.Gui/Aaru.Gui.csproj b/Aaru.Gui/Aaru.Gui.csproj
index 81b99036a..64d25f042 100644
--- a/Aaru.Gui/Aaru.Gui.csproj
+++ b/Aaru.Gui/Aaru.Gui.csproj
@@ -349,6 +349,9 @@
ConsoleDialog.xaml
+
+ ImageInfoPanel.xaml
+
diff --git a/Aaru.Gui/Forms/frmMain.xeto.cs b/Aaru.Gui/Forms/frmMain.xeto.cs
index 2f43ba47c..84492e1de 100644
--- a/Aaru.Gui/Forms/frmMain.xeto.cs
+++ b/Aaru.Gui/Forms/frmMain.xeto.cs
@@ -191,102 +191,104 @@ namespace Aaru.Gui.Forms
if(selectedItem.Values.Length < 4)
return;
- if(selectedItem.Values[3] is pnlImageInfo imageInfo)
- {
- var image = selectedItem.Values[5] as IMediaImage;
+ /*
+ if(selectedItem.Values[3] is pnlImageInfo imageInfo)
+ {
+ var image = selectedItem.Values[5] as IMediaImage;
- // TODO: Global pool of forms
- treeImagesMenu.Items.Add(new SeparatorMenuItem());
+ // TODO: Global pool of forms
+ treeImagesMenu.Items.Add(new SeparatorMenuItem());
- menuItem = new ButtonMenuItem
- {
- Text = "Calculate entropy"
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "Calculate entropy"
+ };
- menuItem.Click += (a, b) =>
- {
- new frmImageEntropy(image).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ new frmImageEntropy(image).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
+ treeImagesMenu.Items.Add(menuItem);
- menuItem = new ButtonMenuItem
- {
- Text = "Verify"
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "Verify"
+ };
- menuItem.Click += (a, b) =>
- {
- new frmImageVerify(image).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ new frmImageVerify(image).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
+ treeImagesMenu.Items.Add(menuItem);
- menuItem = new ButtonMenuItem
- {
- Text = "Checksum"
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "Checksum"
+ };
- menuItem.Click += (a, b) =>
- {
- new frmImageChecksum(image).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ new frmImageChecksum(image).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
+ treeImagesMenu.Items.Add(menuItem);
- menuItem = new ButtonMenuItem
- {
- Text = "Convert to..."
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "Convert to..."
+ };
- menuItem.Click += (a, b) =>
- {
- new frmImageConvert(image, selectedItem.Values[2] as string).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ new frmImageConvert(image, selectedItem.Values[2] as string).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
+ treeImagesMenu.Items.Add(menuItem);
- menuItem = new ButtonMenuItem
- {
- Text = "Create CICM XML sidecar..."
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "Create CICM XML sidecar..."
+ };
- menuItem.Click += (a, b) =>
- {
- // TODO: Pass thru chosen default encoding
- new frmImageSidecar(image, selectedItem.Values[2] as string, ((IFilter)selectedItem.Values[4]).Id,
- null).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ // TODO: Pass thru chosen default encoding
+ new frmImageSidecar(image, selectedItem.Values[2] as string, ((IFilter)selectedItem.Values[4]).Id,
+ null).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
+ treeImagesMenu.Items.Add(menuItem);
- menuItem = new ButtonMenuItem
- {
- Text = "View sectors"
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "View sectors"
+ };
- menuItem.Click += (a, b) =>
- {
- new frmPrintHex(image).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ new frmPrintHex(image).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
+ treeImagesMenu.Items.Add(menuItem);
- if(!image.Info.ReadableMediaTags.Any())
- return;
+ if(!image.Info.ReadableMediaTags.Any())
+ return;
- menuItem = new ButtonMenuItem
- {
- Text = "Decode media tags"
- };
+ menuItem = new ButtonMenuItem
+ {
+ Text = "Decode media tags"
+ };
- menuItem.Click += (a, b) =>
- {
- new frmDecodeMediaTags(image).Show();
- };
+ menuItem.Click += (a, b) =>
+ {
+ new frmDecodeMediaTags(image).Show();
+ };
- treeImagesMenu.Items.Add(menuItem);
- }
+ treeImagesMenu.Items.Add(menuItem);
+ }
+ */
}
// TODO
@@ -360,8 +362,7 @@ namespace Aaru.Gui.Forms
{
logo == null ? null : new Bitmap(logo),
$"{Path.GetFileName(dlgOpenImage.FileName)} ({imageFormat.Info.MediaType})",
- dlgOpenImage.FileName, new pnlImageInfo(dlgOpenImage.FileName, inputFilter, imageFormat),
- inputFilter, imageFormat
+ dlgOpenImage.FileName, null, inputFilter, imageFormat
}
};
diff --git a/Aaru.Gui/Models/DumpHardwareModel.cs b/Aaru.Gui/Models/DumpHardwareModel.cs
new file mode 100644
index 000000000..cb2b973ca
--- /dev/null
+++ b/Aaru.Gui/Models/DumpHardwareModel.cs
@@ -0,0 +1,19 @@
+namespace Aaru.Gui.Models
+{
+ public class DumpHardwareModel
+ {
+ public string Manufacturer { get; set; }
+
+ public string Model { get; set; }
+
+ public string Revision { get; set; }
+
+ public string Serial { get; set; }
+
+ public string SoftwareName { get; set; }
+ public string SoftwareVersion { get; set; }
+ public string OperatingSystem { get; set; }
+ public ulong Start { get; set; }
+ public ulong End { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Aaru.Gui/Models/ImageModel.cs b/Aaru.Gui/Models/ImageModel.cs
index a78cf0bfe..700b11911 100644
--- a/Aaru.Gui/Models/ImageModel.cs
+++ b/Aaru.Gui/Models/ImageModel.cs
@@ -1,5 +1,6 @@
using System.Collections.ObjectModel;
using Aaru.CommonTypes.Interfaces;
+using Aaru.Gui.ViewModels;
using Avalonia.Media.Imaging;
namespace Aaru.Gui.Models
@@ -13,5 +14,6 @@ namespace Aaru.Gui.Models
public Bitmap Icon { get; set; }
public ObservableCollection PartitionSchemesOrFileSystems { get; }
public IMediaImage Image { get; set; }
+ public ImageInfoViewModel ViewModel { get; set; }
}
}
\ No newline at end of file
diff --git a/Aaru.Gui/Panels/ImageInfoPanel.xaml b/Aaru.Gui/Panels/ImageInfoPanel.xaml
new file mode 100644
index 000000000..e1e9ac76c
--- /dev/null
+++ b/Aaru.Gui/Panels/ImageInfoPanel.xaml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Aaru.Gui/Panels/ImageInfoPanel.xaml.cs b/Aaru.Gui/Panels/ImageInfoPanel.xaml.cs
new file mode 100644
index 000000000..f26daf756
--- /dev/null
+++ b/Aaru.Gui/Panels/ImageInfoPanel.xaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace Aaru.Gui.Panels
+{
+ public class ImageInfoPanel : UserControl
+ {
+ public ImageInfoPanel() => InitializeComponent();
+
+ void InitializeComponent() => AvaloniaXamlLoader.Load(this);
+ }
+}
\ No newline at end of file
diff --git a/Aaru.Gui/Panels/pnlImageInfo.xeto b/Aaru.Gui/Panels/pnlImageInfo.xeto
deleted file mode 100644
index 4582bad53..000000000
--- a/Aaru.Gui/Panels/pnlImageInfo.xeto
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Aaru.Gui/Panels/pnlImageInfo.xeto.cs b/Aaru.Gui/ViewModels/ImageInfoViewModel.cs
similarity index 60%
rename from Aaru.Gui/Panels/pnlImageInfo.xeto.cs
rename to Aaru.Gui/ViewModels/ImageInfoViewModel.cs
index a25b45362..283c3565e 100644
--- a/Aaru.Gui/Panels/pnlImageInfo.xeto.cs
+++ b/Aaru.Gui/ViewModels/ImageInfoViewModel.cs
@@ -1,294 +1,151 @@
-// /***************************************************************************
-// Aaru Data Preservation Suite
-// ----------------------------------------------------------------------------
-//
-// Filename : pnlImageInfo.xeto.cs
-// Author(s) : Natalia Portillo
-//
-// Component : Image information.
-//
-// --[ Description ] ----------------------------------------------------------
-//
-// Implements the image information panel.
-//
-// --[ 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 .
-//
-// ----------------------------------------------------------------------------
-// Copyright © 2011-2020 Natalia Portillo
-// ****************************************************************************/
-
using System;
-using System.IO;
+using System.Collections.ObjectModel;
using System.Linq;
-using System.Text;
+using System.Reactive;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
-using Aaru.CommonTypes.Structs.Devices.SCSI;
-using Aaru.Decoders.CD;
-using Aaru.Decoders.DVD;
-using Aaru.Decoders.SCSI;
-using Aaru.Decoders.Xbox;
-using Aaru.Gui.Controls;
-using Aaru.Gui.Forms;
-using Aaru.Gui.Tabs;
-using Eto.Drawing;
-using Eto.Forms;
-using Eto.Serialization.Xaml;
+using Aaru.Gui.Models;
+using Avalonia;
+using Avalonia.Media.Imaging;
+using Avalonia.Platform;
+using ReactiveUI;
using Schemas;
-using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
-using Session = Aaru.CommonTypes.Structs.Session;
-namespace Aaru.Gui.Panels
+namespace Aaru.Gui.ViewModels
{
- public class pnlImageInfo : Panel
+ public class ImageInfoViewModel
{
- readonly IFilter filter;
- readonly IMediaImage imageFormat;
- readonly string imagePath;
- frmDecodeMediaTags frmDecodeMediaTags;
- frmImageChecksum frmImageChecksum;
- frmImageConvert frmImageConvert;
- frmImageEntropy frmImageEntropy;
- frmImageSidecar frmImageSidecar;
- frmImageVerify frmImageVerify;
- frmPrintHex frmPrintHex;
+ readonly IMediaImage _imageFormat;
+ IFilter _filter;
+ string _imagePath;
+
+ public ImageInfoViewModel(string imagePath, IFilter filter, IMediaImage imageFormat)
- public pnlImageInfo(string imagePath, IFilter filter, IMediaImage imageFormat)
{
- this.imagePath = imagePath;
- this.filter = filter;
- this.imageFormat = imageFormat;
- XamlReader.Load(this);
+ _imagePath = imagePath;
+ _filter = filter;
+ _imageFormat = imageFormat;
+ IAssetLoader assets = AvaloniaLocator.Current.GetService();
+ MediaTagsList = new ObservableCollection();
+ SectorTagsList = new ObservableCollection();
+ Sessions = new ObservableCollection();
+ Tracks = new ObservableCollection