Merge pull request #1105 from gregory-diaz/master
Added ability to recover a usable public profile in the event that we attempt to load a corrupt one.
This commit is contained in:
commit
636df059ec
3 changed files with 45 additions and 4 deletions
|
|
@ -36,6 +36,8 @@ using System.IO;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using MatterHackers.MatterControl.DataStorage;
|
||||||
|
using MatterHackers.MatterControl.SettingsManagement;
|
||||||
|
|
||||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
{
|
{
|
||||||
|
|
@ -201,10 +203,19 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
/// User settings overrides
|
/// User settings overrides
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PrinterSettingsLayer UserLayer { get; } = new PrinterSettingsLayer();
|
public PrinterSettingsLayer UserLayer { get; } = new PrinterSettingsLayer();
|
||||||
|
//
|
||||||
public static PrinterSettings LoadFile(string printerProfilePath)
|
public static PrinterSettings LoadFile(string printerProfilePath)
|
||||||
{
|
{
|
||||||
var jObject = JObject.Parse(File.ReadAllText(printerProfilePath));
|
|
||||||
|
JObject jObject;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
jObject = JObject.Parse(File.ReadAllText(printerProfilePath));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return RecoverProfile(printerProfilePath);
|
||||||
|
}
|
||||||
|
|
||||||
int documentVersion = jObject?.GetValue("DocumentVersion")?.Value<int>() ?? 0;
|
int documentVersion = jObject?.GetValue("DocumentVersion")?.Value<int>() ?? 0;
|
||||||
|
|
||||||
|
|
@ -214,7 +225,33 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reload the document with the new schema
|
// Reload the document with the new schema
|
||||||
return JsonConvert.DeserializeObject<PrinterSettings>(File.ReadAllText(printerProfilePath));
|
try
|
||||||
|
{
|
||||||
|
return JsonConvert.DeserializeObject<PrinterSettings>(File.ReadAllText(printerProfilePath));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return RecoverProfile(printerProfilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PrinterSettings RecoverProfile(string printerProfilePath)
|
||||||
|
{
|
||||||
|
string profileKey = Path.GetFileNameWithoutExtension(printerProfilePath);
|
||||||
|
var profile = ProfileManager.Instance[profileKey];
|
||||||
|
string publicProfileDeviceToken = OemSettings.Instance.OemProfiles[profile.Make][profile.Model];
|
||||||
|
string publicProfileToLoad = Path.Combine(ApplicationDataStorage.ApplicationUserDataPath, "data", "temp", "cache", "profiles") + "\\" + publicProfileDeviceToken + ".json";
|
||||||
|
|
||||||
|
var oemProfile = JsonConvert.DeserializeObject<PrinterSettings>(File.ReadAllText(publicProfileToLoad));
|
||||||
|
oemProfile.ID = profile.ID;
|
||||||
|
oemProfile.SetValue(SettingsKey.printer_name, profile.Name);
|
||||||
|
oemProfile.DocumentVersion = PrinterSettings.LatestVersion;
|
||||||
|
|
||||||
|
var profileHelper = new SettingsProfile(oemProfile);
|
||||||
|
profileHelper.SetComPort(profile.ComPort);
|
||||||
|
profileHelper.SaveChanges();
|
||||||
|
|
||||||
|
return oemProfile;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Hookup OEM layers
|
// TODO: Hookup OEM layers
|
||||||
|
|
|
||||||
|
|
@ -357,7 +357,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
Instance.Profiles.Add(new PrinterInfo
|
Instance.Profiles.Add(new PrinterInfo
|
||||||
{
|
{
|
||||||
Name = printerName,
|
Name = printerName,
|
||||||
ID = guid
|
ID = guid,
|
||||||
|
Make = make,
|
||||||
|
Model = model
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update SHA1
|
// Update SHA1
|
||||||
|
|
|
||||||
|
|
@ -938,6 +938,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||||
public string ComPort { get; set; }
|
public string ComPort { get; set; }
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
public string Make { get; set; }
|
||||||
|
public string Model { get; set; }
|
||||||
public string DeviceToken { get; set; }
|
public string DeviceToken { get; set; }
|
||||||
public bool IsDirty { get; set; } = false;
|
public bool IsDirty { get; set; } = false;
|
||||||
public bool MarkedForDelete { get; set; } = false;
|
public bool MarkedForDelete { get; set; } = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue