Skip to content

Commit

Permalink
(#5) Show error message when serializing fails
Browse files Browse the repository at this point in the history
  • Loading branch information
Magiczne committed Jan 6, 2023
1 parent 0f10fde commit 22185c4
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 10 deletions.
1 change: 1 addition & 0 deletions JD-XI Editor/JD-XI Editor.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@
<Compile Include="Models\Patches\Sys\Common.cs" />
<Compile Include="Models\Patches\Sys\Controller.cs" />
<Compile Include="Serializing\DeserializationResult.cs" />
<Compile Include="Serializing\DeserializationStatus.cs" />
<Compile Include="Serializing\Inspectors\DrumKitPartialInspector.cs" />
<Compile Include="Serializing\PatchSerializer.cs" />
<Compile Include="Serializing\Inspectors\PropertyChangedBaseInspector.cs" />
Expand Down
6 changes: 3 additions & 3 deletions JD-XI Editor/Serializing/DeserializationResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ namespace JD_XI_Editor.Serializing
{
internal class DeserializationResult<T> where T : IPatch
{
public bool Success { get; }
public DeserializationStatus Status { get; }

public T Patch { get; }

public DeserializationResult(bool success, T patch)
public DeserializationResult(DeserializationStatus status, T patch)
{
Success = success;
Status = status;
Patch = patch;
}
}
Expand Down
9 changes: 9 additions & 0 deletions JD-XI Editor/Serializing/DeserializationStatus.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace JD_XI_Editor.Serializing
{
internal enum DeserializationStatus
{
Success,
NothingLoaded,
InvalidFormat
}
}
12 changes: 10 additions & 2 deletions JD-XI Editor/Serializing/PatchSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using JD_XI_Editor.Serializing.Inspectors;
using Microsoft.Win32;
using System.IO;
using YamlDotNet.Core;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;

Expand Down Expand Up @@ -56,11 +57,18 @@ public DeserializationResult<T> Deserialize<T>() where T : IPatch
{
using (var reader = new StreamReader(openFileDialog.FileName))
{
return new DeserializationResult<T>(true, _deserializer.Deserialize<T>(reader));
try
{
return new DeserializationResult<T>(DeserializationStatus.Success, _deserializer.Deserialize<T>(reader));
}
catch (YamlException)
{
return new DeserializationResult<T>(DeserializationStatus.InvalidFormat, default);
}
}
}

return new DeserializationResult<T>(false, default);
return new DeserializationResult<T>(DeserializationStatus.NothingLoaded, default);
}
}
}
12 changes: 11 additions & 1 deletion JD-XI Editor/ViewModels/AnalogSynthTabViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
using JD_XI_Editor.Managers.Events;
using JD_XI_Editor.Models.Enums.Analog;
using JD_XI_Editor.Models.Patches.Analog;
using JD_XI_Editor.Serializing;
using JD_XI_Editor.ViewModels.Abstract;
using MahApps.Metro.Controls.Dialogs;
using Sanford.Multimedia.Midi;
using System.Windows.Forms;

namespace JD_XI_Editor.ViewModels
{
Expand Down Expand Up @@ -78,9 +80,17 @@ public override void LoadPatch()
{
var result = Serializer.Deserialize<Patch>();

if (result.Success)
if (result.Status == DeserializationStatus.Success)
{
Patch.CopyFrom(result.Patch);
}
else if (result.Status == DeserializationStatus.InvalidFormat)
{
DialogCoordinator.ShowMessageAsync(this, "Error", "File was saved for another patch type or is corrupted", MessageDialogStyle.Affirmative, new MetroDialogSettings
{
AnimateHide = false,
AnimateShow = false
});
}
}

Expand Down
11 changes: 10 additions & 1 deletion JD-XI Editor/ViewModels/Digital/DigitalSynthTabViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using JD_XI_Editor.Managers.Events;
using JD_XI_Editor.Models.Enums.Digital;
using JD_XI_Editor.Models.Patches.Digital;
using JD_XI_Editor.Serializing;
using JD_XI_Editor.ViewModels.Abstract;
using MahApps.Metro.Controls.Dialogs;
using Sanford.Multimedia.Midi;
Expand Down Expand Up @@ -110,10 +111,18 @@ public override void LoadPatch()
{
var result = Serializer.Deserialize<Patch>();

if (result.Success)
if (result.Status == DeserializationStatus.Success)
{
Patch.CopyFrom(result.Patch);
}
else if (result.Status == DeserializationStatus.InvalidFormat)
{
DialogCoordinator.ShowMessageAsync(this, "Error", "File was saved for another patch type or is corrupted", MessageDialogStyle.Affirmative, new MetroDialogSettings
{
AnimateHide = false,
AnimateShow = false
});
}
}

/// <inheritdoc />
Expand Down
11 changes: 10 additions & 1 deletion JD-XI Editor/ViewModels/Drums/DrumKitTabViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using JD_XI_Editor.Managers.Events;
using JD_XI_Editor.Models.Enums.DrumKit;
using JD_XI_Editor.Models.Patches.DrumKit;
using JD_XI_Editor.Serializing;
using JD_XI_Editor.ViewModels.Abstract;
using MahApps.Metro.Controls.Dialogs;
using Sanford.Multimedia.Midi;
Expand Down Expand Up @@ -89,10 +90,18 @@ public override void LoadPatch()
{
var result = Serializer.Deserialize<Patch>();

if (result.Success)
if (result.Status == DeserializationStatus.Success)
{
Patch.CopyFrom(result.Patch);
}
else if (result.Status == DeserializationStatus.InvalidFormat)
{
DialogCoordinator.ShowMessageAsync(this, "Error", "File was saved for another patch type or is corrupted", MessageDialogStyle.Affirmative, new MetroDialogSettings
{
AnimateHide = false,
AnimateShow = false
});
}
}

/// <inheritdoc />
Expand Down
11 changes: 10 additions & 1 deletion JD-XI Editor/ViewModels/Effects/EffectsTabViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using JD_XI_Editor.Managers.Abstract;
using JD_XI_Editor.Managers.Enums;
using JD_XI_Editor.Managers.Events;
using JD_XI_Editor.Serializing;
using JD_XI_Editor.ViewModels.Abstract;
using MahApps.Metro.Controls.Dialogs;
using Sanford.Multimedia.Midi;
Expand Down Expand Up @@ -125,10 +126,18 @@ public override void LoadPatch()
{
var result = Serializer.Deserialize<EffectPatch>();

if (result.Success)
if (result.Status == DeserializationStatus.Success)
{
_patch.CopyFrom(result.Patch);
}
else if (result.Status == DeserializationStatus.InvalidFormat)
{
DialogCoordinator.ShowMessageAsync(this, "Error", "File was saved for another patch type or is corrupted", MessageDialogStyle.Affirmative, new MetroDialogSettings
{
AnimateHide = false,
AnimateShow = false
});
}
}

/// <inheritdoc />
Expand Down
11 changes: 10 additions & 1 deletion JD-XI Editor/ViewModels/Program/CommonAndVocalFxTabViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using JD_XI_Editor.Managers.Abstract;
using JD_XI_Editor.Managers.Events;
using JD_XI_Editor.Models.Patches.Program;
using JD_XI_Editor.Serializing;
using JD_XI_Editor.ViewModels.Abstract;
using MahApps.Metro.Controls.Dialogs;
using Sanford.Multimedia.Midi;
Expand Down Expand Up @@ -84,10 +85,18 @@ public override void LoadPatch()
{
var result = Serializer.Deserialize<CommonAndVocalEffectPatch>();

if (result.Success)
if (result.Status == DeserializationStatus.Success)
{
Patch.CopyFrom(result.Patch);
}
else if (result.Status == DeserializationStatus.InvalidFormat)
{
DialogCoordinator.ShowMessageAsync(this, "Error", "File was saved for another patch type or is corrupted", MessageDialogStyle.Affirmative, new MetroDialogSettings
{
AnimateHide = false,
AnimateShow = false
});
}
}

/// <inheritdoc />
Expand Down

0 comments on commit 22185c4

Please sign in to comment.