From 2a2e052b53960045f8d68f6795f9bb194e39d82c Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 24 Nov 2018 15:27:18 -0800 Subject: [PATCH] Remove PrinterConfig reference from PrinterSettings --- .../ApplicationView/ApplicationController.cs | 2 +- .../ApplicationView/PrinterConfig.cs | 3 +- .../ApplicationView/SettingsValidation.cs | 34 ++++++++++--------- .../PartPreviewWindow/PrinterTabPage.cs | 2 +- .../View3D/PrinterBar/SliceButton.cs | 2 +- .../Settings/PrinterSettings.cs | 2 -- .../Settings/ProfileManager.cs | 4 ++- 7 files changed, 25 insertions(+), 24 deletions(-) diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index 3ac24ed7c..57c6c3a5c 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -2024,7 +2024,7 @@ namespace MatterHackers.MatterControl printer.Connection.PrintingItemName = printItemName; - if (SettingsValidation.SettingsValid(printer.Settings)) + if (SettingsValidation.SettingsValid(printer)) { // check that current bed temp is is within 10 degrees of leveling temp var enabled = printer.Settings.GetValue(SettingsKey.print_leveling_enabled); diff --git a/MatterControlLib/ApplicationView/PrinterConfig.cs b/MatterControlLib/ApplicationView/PrinterConfig.cs index b8a93c634..53cf9f269 100644 --- a/MatterControlLib/ApplicationView/PrinterConfig.cs +++ b/MatterControlLib/ApplicationView/PrinterConfig.cs @@ -114,9 +114,8 @@ namespace MatterHackers.MatterControl this.Connection.ConnectionSucceeded += Connection_ConnectionSucceeded; this.Connection.CommunicationStateChanged += Connection_CommunicationStateChanged; this.Connection.PrintFinished += Connection_PrintFinished; - + this.Settings = settings; - this.Settings.printer = this; this.Settings.SettingChanged += Printer_SettingChanged; if (!string.IsNullOrEmpty(this.Settings.GetValue(SettingsKey.baud_rate))) diff --git a/MatterControlLib/ApplicationView/SettingsValidation.cs b/MatterControlLib/ApplicationView/SettingsValidation.cs index 41e26c1bf..bbc808323 100644 --- a/MatterControlLib/ApplicationView/SettingsValidation.cs +++ b/MatterControlLib/ApplicationView/SettingsValidation.cs @@ -38,8 +38,10 @@ namespace MatterHackers.MatterControl { public static class SettingsValidation { - public static bool SettingsValid(PrinterSettings settings) + public static bool SettingsValid(PrinterConfig printer) { + var settings = printer.Settings; + try { if (settings.GetValue(SettingsKey.validate_layer_height)) @@ -257,19 +259,19 @@ namespace MatterHackers.MatterControl } // If the given speed is part of the current slice engine then check that it is greater than 0. - if (!ValidateGoodSpeedSettingGreaterThan0("bridge_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("air_gap_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("external_perimeter_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0(SettingsKey.first_layer_speed, settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("infill_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("perimeter_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("small_perimeter_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("solid_infill_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("support_material_speed", settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0(SettingsKey.top_solid_infill_speed, settings)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("travel_speed", settings)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("bridge_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("air_gap_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("external_perimeter_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0(SettingsKey.first_layer_speed, printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("infill_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("perimeter_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("small_perimeter_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("solid_infill_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("support_material_speed", printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0(SettingsKey.top_solid_infill_speed, printer)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("travel_speed", printer)) return false; - if (!ValidateGoodSpeedSettingGreaterThan0("retract_speed", settings)) return false; + if (!ValidateGoodSpeedSettingGreaterThan0("retract_speed", printer)) return false; } catch (Exception e) { @@ -317,9 +319,9 @@ namespace MatterHackers.MatterControl return settingData.PresentationName.Localize(); } - private static bool ValidateGoodSpeedSettingGreaterThan0(string speedSetting, PrinterSettings settings) + private static bool ValidateGoodSpeedSettingGreaterThan0(string speedSetting, PrinterConfig printer) { - var actualSpeedValueString = settings.GetValue(speedSetting); + var actualSpeedValueString = printer.Settings.GetValue(speedSetting); var speedValueString = actualSpeedValueString; if (speedValueString.EndsWith("%")) { @@ -333,7 +335,7 @@ namespace MatterHackers.MatterControl } if (!valueWasNumber - || (settings.printer.EngineMappingsMatterSlice.MapContains(speedSetting) + || (printer.EngineMappingsMatterSlice.MapContains(speedSetting) && speedToCheck <= 0)) { SliceSettingData data = SettingsOrganizer.Instance.GetSettingsData(speedSetting); diff --git a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs index 2e3949581..02601d321 100644 --- a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs +++ b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs @@ -529,7 +529,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow UiThread.RunOnIdle(async () => { if (!activelySlicing - && SettingsValidation.SettingsValid(printer.Settings) + && SettingsValidation.SettingsValid(printer) && printer.Bed.EditContext.SourceItem != null) { activelySlicing = true; diff --git a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/SliceButton.cs b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/SliceButton.cs index 6203c6a9c..42b0ae951 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/SliceButton.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/SliceButton.cs @@ -99,7 +99,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow if (printer.Settings.PrinterSelected) { if (!activelySlicing - && SettingsValidation.SettingsValid(printer.Settings) + && SettingsValidation.SettingsValid(printer) && printer.Bed.EditContext.SourceItem != null) { activelySlicing = true; diff --git a/MatterControlLib/SlicerConfiguration/Settings/PrinterSettings.cs b/MatterControlLib/SlicerConfiguration/Settings/PrinterSettings.cs index f776dafe6..ce26f5a0e 100644 --- a/MatterControlLib/SlicerConfiguration/Settings/PrinterSettings.cs +++ b/MatterControlLib/SlicerConfiguration/Settings/PrinterSettings.cs @@ -93,8 +93,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public PrinterSettingsLayer StagedUserSettings { get; set; } = new PrinterSettingsLayer(); - [JsonIgnore] - internal PrinterConfig printer { get; set; } static PrinterSettings() { diff --git a/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs b/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs index 5e0af419c..0a75afd4a 100644 --- a/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs +++ b/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs @@ -680,7 +680,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private void Printer_SettingsChanged(object sender, EventArgs e) { - var printer = (sender as PrinterSettings)?.printer; + string printerID = (sender as PrinterSettings)?.ID; + + var printer = ApplicationController.Instance.ActivePrinters.FirstOrDefault(p => p.Settings.ID == printerID); if (Instance?.OpenPrinterIDs.Any() != true || printer == null)