diff --git a/Aaru.Gui/Aaru.Gui.csproj b/Aaru.Gui/Aaru.Gui.csproj
index 5b14b5275..5caea1759 100644
--- a/Aaru.Gui/Aaru.Gui.csproj
+++ b/Aaru.Gui/Aaru.Gui.csproj
@@ -19,305 +19,305 @@
true
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
%(Filename)
Designer
-
+
Designer
@@ -336,9 +336,15 @@
EncodingsDialog.xaml
+
+ Designer
+
+
+ PluginsDialog.xaml
+
-
+
diff --git a/Aaru.Gui/Dialogs/dlgPlugins.xeto b/Aaru.Gui/Dialogs/dlgPlugins.xeto
deleted file mode 100644
index 745c7e6ea..000000000
--- a/Aaru.Gui/Dialogs/dlgPlugins.xeto
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
\ No newline at end of file
diff --git a/Aaru.Gui/Dialogs/dlgPlugins.xeto.cs b/Aaru.Gui/Dialogs/dlgPlugins.xeto.cs
deleted file mode 100644
index 151e925ad..000000000
--- a/Aaru.Gui/Dialogs/dlgPlugins.xeto.cs
+++ /dev/null
@@ -1,511 +0,0 @@
-// /***************************************************************************
-// Aaru Data Preservation Suite
-// ----------------------------------------------------------------------------
-//
-// Filename : dlgPlugins.xeto.cs
-// Author(s) : Natalia Portillo
-//
-// Component : Plugins dialog.
-//
-// --[ Description ] ----------------------------------------------------------
-//
-// Implements the plugins list dialog.
-//
-// --[ 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.Collections.ObjectModel;
-using System.Reflection;
-using Aaru.CommonTypes.Interfaces;
-using Aaru.Core;
-using Aaru.Partitions;
-using Eto.Forms;
-using Eto.Serialization.Xaml;
-
-namespace Aaru.Gui.Dialogs
-{
- public class dlgPlugins : Dialog
- {
- readonly ObservableCollection filesystems;
- readonly ObservableCollection filters;
- readonly ObservableCollection floppyImages;
- readonly ObservableCollection mediaImages;
- readonly ObservableCollection partitions;
- readonly ObservableCollection readOnlyFilesystems;
- readonly ObservableCollection writableFloppyImages;
- readonly ObservableCollection writableImages;
-
- public dlgPlugins()
- {
- XamlReader.Load(this);
-
- DefaultButton = btnClose;
- DisplayMode = DialogDisplayMode.Attached;
-
- filters = new ObservableCollection();
- floppyImages = new ObservableCollection();
- mediaImages = new ObservableCollection();
- partitions = new ObservableCollection();
- filesystems = new ObservableCollection();
- readOnlyFilesystems = new ObservableCollection();
- writableFloppyImages = new ObservableCollection();
- writableImages = new ObservableCollection();
-
- grdFilters.DataStore = filters;
-
- grdFilters.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdFilters.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdFilters.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdFilters.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdFilters.AllowMultipleSelection = false;
- grdFilters.AllowColumnReordering = true;
-
- grdReadableMediaImages.DataStore = mediaImages;
-
- grdReadableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdReadableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdReadableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdReadableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdReadableMediaImages.AllowMultipleSelection = false;
- grdReadableMediaImages.AllowColumnReordering = true;
-
- grdPartitions.DataStore = partitions;
-
- grdPartitions.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdPartitions.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdPartitions.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdPartitions.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdPartitions.AllowMultipleSelection = false;
- grdPartitions.AllowColumnReordering = true;
-
- grdFilesystem.DataStore = filesystems;
-
- grdFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdFilesystem.AllowMultipleSelection = false;
- grdFilesystem.AllowColumnReordering = true;
-
- grdReadOnlyFilesystem.DataStore = readOnlyFilesystems;
-
- grdReadOnlyFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdReadOnlyFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdReadOnlyFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdReadOnlyFilesystem.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdReadOnlyFilesystem.AllowMultipleSelection = false;
- grdReadOnlyFilesystem.AllowColumnReordering = true;
-
- grdReadableFloppyImages.DataStore = floppyImages;
-
- grdReadableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdReadableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdReadableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdReadableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdReadableFloppyImages.AllowMultipleSelection = false;
- grdReadableFloppyImages.AllowColumnReordering = true;
-
- grdWritableFloppyImages.DataStore = writableFloppyImages;
-
- grdWritableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdWritableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdWritableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdWritableFloppyImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdWritableFloppyImages.AllowMultipleSelection = false;
- grdWritableFloppyImages.AllowColumnReordering = true;
-
- grdWritableMediaImages.DataStore = writableImages;
-
- grdWritableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Name)
- },
- HeaderText = "Name", Sortable = true
- });
-
- grdWritableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => $"{r.Uuid}")
- },
- HeaderText = "UUID", Sortable = true
- });
-
- grdWritableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Version)
- },
- HeaderText = "Version", Sortable = true
- });
-
- grdWritableMediaImages.Columns.Add(new GridColumn
- {
- DataCell = new TextBoxCell
- {
- Binding = Binding.Property(r => r.Author)
- },
- HeaderText = "Author", Sortable = true
- });
-
- grdWritableMediaImages.AllowMultipleSelection = false;
- grdWritableMediaImages.AllowColumnReordering = true;
- }
-
- protected override void OnLoadComplete(EventArgs e)
- {
- base.OnLoadComplete(e);
-
- filters.Clear();
- floppyImages.Clear();
- mediaImages.Clear();
- partitions.Clear();
- filesystems.Clear();
- readOnlyFilesystems.Clear();
- writableFloppyImages.Clear();
- writableImages.Clear();
-
- foreach(IFilter filter in GetPluginBase.Instance.Filters.Values)
- filters.Add(new PluginEntry
- {
- Name = filter.Name, Uuid = filter.Id,
- Version = Assembly.GetAssembly(filter.GetType())?.GetName().Version.ToString(),
- Author = filter.Author
- });
-
- foreach(IFloppyImage floppyImage in GetPluginBase.Instance.FloppyImages.Values)
- floppyImages.Add(new PluginEntry
- {
- Name = floppyImage.Name, Uuid = floppyImage.Id,
- Version = Assembly.GetAssembly(floppyImage.GetType())?.GetName().Version.ToString(),
- Author = floppyImage.Author
- });
-
- foreach(IMediaImage mediaImage in GetPluginBase.Instance.ImagePluginsList.Values)
- mediaImages.Add(new PluginEntry
- {
- Name = mediaImage.Name, Uuid = mediaImage.Id,
- Version = Assembly.GetAssembly(mediaImage.GetType())?.GetName().Version.ToString(),
- Author = mediaImage.Author
- });
-
- foreach(IPartition partition in GetPluginBase.Instance.PartPluginsList.Values)
- partitions.Add(new PluginEntry
- {
- Name = partition.Name, Uuid = partition.Id,
- Version = Assembly.GetAssembly(partition.GetType())?.GetName().Version.ToString(),
- Author = partition.Author
- });
-
- foreach(IFilesystem filesystem in GetPluginBase.Instance.PluginsList.Values)
- filesystems.Add(new PluginEntry
- {
- Name = filesystem.Name, Uuid = filesystem.Id,
- Version = Assembly.GetAssembly(filesystem.GetType())?.GetName().Version.ToString(),
- Author = filesystem.Author
- });
-
- foreach(IReadOnlyFilesystem readOnlyFilesystem in GetPluginBase.Instance.ReadOnlyFilesystems.Values)
- readOnlyFilesystems.Add(new PluginEntry
- {
- Name = readOnlyFilesystem.Name, Uuid = readOnlyFilesystem.Id,
- Version = Assembly.GetAssembly(readOnlyFilesystem.GetType())?.GetName().Version.ToString(),
- Author = readOnlyFilesystem.Author
- });
-
- foreach(IWritableFloppyImage writableFloppyImage in GetPluginBase.Instance.WritableFloppyImages.Values)
- writableFloppyImages.Add(new PluginEntry
- {
- Name = writableFloppyImage.Name, Uuid = writableFloppyImage.Id,
- Version = Assembly.GetAssembly(writableFloppyImage.GetType())?.GetName().Version.ToString(),
- Author = writableFloppyImage.Author
- });
-
- foreach(IWritableImage writableImage in GetPluginBase.Instance.WritableImages.Values)
- writableImages.Add(new PluginEntry
- {
- Name = writableImage.Name, Uuid = writableImage.Id,
- Version = Assembly.GetAssembly(writableImage.GetType())?.GetName().Version.ToString(),
- Author = writableImage.Author
- });
- }
-
- protected void OnBtnClose(object sender, EventArgs e) => Close();
-
- class PluginEntry
- {
- public string Name { get; set; }
- public Guid Uuid { get; set; }
- public string Version { get; set; }
- public string Author { get; set; }
- }
-
- #region XAML controls
- TabPage tabFilters;
- GridView grdFilters;
- TabPage tabPartitions;
- GridView grdPartitions;
- TabPage tabFilesystems;
- GroupBox grpFilesystemIdentifyOnly;
- GridView grdFilesystem;
- GroupBox grpFilesystemReadable;
- GridView grdReadOnlyFilesystem;
- TabPage tabMediaImages;
- GroupBox grpReadableMediaImages;
- GridView grdReadableMediaImages;
- GroupBox grpWritableMediaImages;
- GridView grdWritableMediaImages;
- Button btnClose;
- TabPage tabFloppyImages;
- GroupBox grpReadableFloppyImages;
- GridView grdReadableFloppyImages;
- GroupBox grpWritableFloppyImages;
- GridView grdWritableFloppyImages;
- #endregion
- }
-}
\ No newline at end of file
diff --git a/Aaru.Gui/Forms/frmMain.xeto.cs b/Aaru.Gui/Forms/frmMain.xeto.cs
index 81dcd9980..cc2cf28fd 100644
--- a/Aaru.Gui/Forms/frmMain.xeto.cs
+++ b/Aaru.Gui/Forms/frmMain.xeto.cs
@@ -684,8 +684,6 @@ namespace Aaru.Gui.Forms
protected void OnMenuConsole(object sender, EventArgs e) => new frmConsole().Show();
- protected void OnMenuPlugins(object sender, EventArgs e) => new dlgPlugins().ShowModal(this);
-
protected void OnMenuStatistics(object sender, EventArgs e)
{
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
diff --git a/Aaru.Gui/Models/PluginModel.cs b/Aaru.Gui/Models/PluginModel.cs
new file mode 100644
index 000000000..18ef880fa
--- /dev/null
+++ b/Aaru.Gui/Models/PluginModel.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace Aaru.Gui.Models
+{
+ public class PluginModel
+ {
+ public string Name { get; set; }
+ public Guid Uuid { get; set; }
+ public string Version { get; set; }
+ public string Author { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Aaru.Gui/ViewModels/EncodingsDialogViewModel.cs b/Aaru.Gui/ViewModels/EncodingsDialogViewModel.cs
index 9017af113..cc8f59ad0 100644
--- a/Aaru.Gui/ViewModels/EncodingsDialogViewModel.cs
+++ b/Aaru.Gui/ViewModels/EncodingsDialogViewModel.cs
@@ -13,7 +13,6 @@ namespace Aaru.Gui.ViewModels
public class EncodingsDialogViewModel : ViewModelBase
{
readonly EncodingsDialog _view;
- string _versionText;
public EncodingsDialogViewModel(EncodingsDialog view)
{
diff --git a/Aaru.Gui/ViewModels/MainWindowViewModel.cs b/Aaru.Gui/ViewModels/MainWindowViewModel.cs
index b4e56240a..ef7b667c9 100644
--- a/Aaru.Gui/ViewModels/MainWindowViewModel.cs
+++ b/Aaru.Gui/ViewModels/MainWindowViewModel.cs
@@ -15,6 +15,7 @@ namespace Aaru.Gui.ViewModels
{
AboutCommand = ReactiveCommand.Create(ExecuteAboutCommand);
EncodingsCommand = ReactiveCommand.Create(ExecuteEncodingsCommand);
+ PluginsCommand = ReactiveCommand.Create(ExecutePluginsCommand);
_view = view;
}
@@ -26,6 +27,7 @@ namespace Aaru.Gui.ViewModels
public ReactiveCommand AboutCommand { get; }
public ReactiveCommand EncodingsCommand { get; }
+ public ReactiveCommand PluginsCommand { get; }
internal void ExecuteAboutCommand()
{
@@ -40,5 +42,12 @@ namespace Aaru.Gui.ViewModels
dialog.DataContext = new EncodingsDialogViewModel(dialog);
dialog.ShowDialog(_view);
}
+
+ internal void ExecutePluginsCommand()
+ {
+ var dialog = new PluginsDialog();
+ dialog.DataContext = new PluginsDialogViewModel(dialog);
+ dialog.ShowDialog(_view);
+ }
}
}
\ No newline at end of file
diff --git a/Aaru.Gui/ViewModels/PluginsDialogViewModel.cs b/Aaru.Gui/ViewModels/PluginsDialogViewModel.cs
new file mode 100644
index 000000000..add9b9d48
--- /dev/null
+++ b/Aaru.Gui/ViewModels/PluginsDialogViewModel.cs
@@ -0,0 +1,118 @@
+using System.Collections.ObjectModel;
+using System.Reactive;
+using System.Reflection;
+using Aaru.CommonTypes.Interfaces;
+using Aaru.Core;
+using Aaru.Gui.Models;
+using Aaru.Gui.Views;
+using Aaru.Partitions;
+using ReactiveUI;
+
+namespace Aaru.Gui.ViewModels
+{
+ public class PluginsDialogViewModel : ViewModelBase
+ {
+ readonly PluginsDialog _view;
+
+ public PluginsDialogViewModel(PluginsDialog view)
+ {
+ _view = view;
+ Filters = new ObservableCollection();
+ PartitionSchemes = new ObservableCollection();
+ Filesystems = new ObservableCollection();
+ ReadOnlyFilesystems = new ObservableCollection();
+ Images = new ObservableCollection();
+ WritableImages = new ObservableCollection();
+ FloppyImages = new ObservableCollection();
+ WritableFloppyImages = new ObservableCollection();
+ CloseCommand = ReactiveCommand.Create(ExecuteCloseCommand);
+
+ // TODO: Takes too much time
+ foreach(IFilter filter in GetPluginBase.Instance.Filters.Values)
+ Filters.Add(new PluginModel
+ {
+ Name = filter.Name, Uuid = filter.Id,
+ Version = Assembly.GetAssembly(filter.GetType())?.GetName().Version?.ToString(),
+ Author = filter.Author
+ });
+
+ foreach(IFloppyImage floppyImage in GetPluginBase.Instance.FloppyImages.Values)
+ FloppyImages.Add(new PluginModel
+ {
+ Name = floppyImage.Name, Uuid = floppyImage.Id,
+ Version = Assembly.GetAssembly(floppyImage.GetType())?.GetName().Version?.ToString(),
+ Author = floppyImage.Author
+ });
+
+ foreach(IMediaImage mediaImage in GetPluginBase.Instance.ImagePluginsList.Values)
+ Images.Add(new PluginModel
+ {
+ Name = mediaImage.Name, Uuid = mediaImage.Id,
+ Version = Assembly.GetAssembly(mediaImage.GetType())?.GetName().Version?.ToString(),
+ Author = mediaImage.Author
+ });
+
+ foreach(IPartition partition in GetPluginBase.Instance.PartPluginsList.Values)
+ PartitionSchemes.Add(new PluginModel
+ {
+ Name = partition.Name, Uuid = partition.Id,
+ Version = Assembly.GetAssembly(partition.GetType())?.GetName().Version?.ToString(),
+ Author = partition.Author
+ });
+
+ foreach(IFilesystem filesystem in GetPluginBase.Instance.PluginsList.Values)
+ Filesystems.Add(new PluginModel
+ {
+ Name = filesystem.Name, Uuid = filesystem.Id,
+ Version = Assembly.GetAssembly(filesystem.GetType())?.GetName().Version?.ToString(),
+ Author = filesystem.Author
+ });
+
+ foreach(IReadOnlyFilesystem readOnlyFilesystem in GetPluginBase.Instance.ReadOnlyFilesystems.Values)
+ ReadOnlyFilesystems.Add(new PluginModel
+ {
+ Name = readOnlyFilesystem.Name, Uuid = readOnlyFilesystem.Id,
+ Version = Assembly.GetAssembly(readOnlyFilesystem.GetType())?.GetName().Version?.ToString(),
+ Author = readOnlyFilesystem.Author
+ });
+
+ foreach(IWritableFloppyImage writableFloppyImage in GetPluginBase.Instance.WritableFloppyImages.Values)
+ WritableFloppyImages.Add(new PluginModel
+ {
+ Name = writableFloppyImage.Name, Uuid = writableFloppyImage.Id,
+ Version = Assembly.GetAssembly(writableFloppyImage.GetType())?.GetName().Version?.ToString(),
+ Author = writableFloppyImage.Author
+ });
+
+ foreach(IWritableImage writableImage in GetPluginBase.Instance.WritableImages.Values)
+ WritableImages.Add(new PluginModel
+ {
+ Name = writableImage.Name, Uuid = writableImage.Id,
+ Version = Assembly.GetAssembly(writableImage.GetType())?.GetName().Version?.ToString(),
+ Author = writableImage.Author
+ });
+ }
+
+ public string Title => "Plugins";
+ public string FiltersLabel => "Filters";
+ public string PartitionsLabel => "Partitions";
+ public string FilesystemsLabel => "Filesystems";
+ public string IdentifyLabel => "Identify only:";
+ public string ImagesLabel => "Media images";
+ public string FloppyImagesLabel => "Floppy images";
+ public string ReadableLabel => "Readable:";
+ public string WritableLabel => "Writable:";
+ public string CloseLabel => "Close";
+ public ReactiveCommand CloseCommand { get; }
+ public ObservableCollection Filters { get; }
+ public ObservableCollection PartitionSchemes { get; }
+ public ObservableCollection Filesystems { get; }
+ public ObservableCollection ReadOnlyFilesystems { get; }
+ public ObservableCollection Images { get; }
+ public ObservableCollection WritableImages { get; }
+ public ObservableCollection FloppyImages { get; }
+ public ObservableCollection WritableFloppyImages { get; }
+
+ void ExecuteCloseCommand() => _view.Close();
+ }
+}
\ No newline at end of file
diff --git a/Aaru.Gui/Views/MainWindow.xaml b/Aaru.Gui/Views/MainWindow.xaml
index 42bc4d91b..e0303e487 100644
--- a/Aaru.Gui/Views/MainWindow.xaml
+++ b/Aaru.Gui/Views/MainWindow.xaml
@@ -20,8 +20,9 @@
diff --git a/Aaru.Gui/Views/PluginsDialog.xaml b/Aaru.Gui/Views/PluginsDialog.xaml
new file mode 100644
index 000000000..9821d6c98
--- /dev/null
+++ b/Aaru.Gui/Views/PluginsDialog.xaml
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Aaru.Gui/Views/PluginsDialog.xaml.cs b/Aaru.Gui/Views/PluginsDialog.xaml.cs
new file mode 100644
index 000000000..dc604af0d
--- /dev/null
+++ b/Aaru.Gui/Views/PluginsDialog.xaml.cs
@@ -0,0 +1,19 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace Aaru.Gui.Views
+{
+ public class PluginsDialog : Window
+ {
+ public PluginsDialog()
+ {
+ InitializeComponent();
+ #if DEBUG
+ this.AttachDevTools();
+ #endif
+ }
+
+ void InitializeComponent() => AvaloniaXamlLoader.Load(this);
+ }
+}
\ No newline at end of file