From f304e9f3d6a4bdcb0c3d692570b1e13e2cf39cb3 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Mon, 18 Jul 2016 14:15:37 -0700 Subject: [PATCH] Migrate SettingsProfile functionality to new SettingsHelpers type - Add as child property of settings scope, ready for merge of types - Progress on Issue #1113 --- ActionBar/PrintActionRow.cs | 2 +- .../ApplicationSettingsView.cs | 4 +- .../CalibrationSettingsView.cs | 2 +- .../PrintLeveling/LevelWizard13PointRadial.cs | 4 +- .../PrintLeveling/LevelWizard2Point.cs | 10 +- .../PrintLeveling/LevelWizard7PointRadial.cs | 4 +- .../PrintLeveling/LevelWizardBase.cs | 2 +- .../PrintLeveling/PrintLevelPages.cs | 38 +- CustomWidgets/ExportPrintItemWindow.cs | 2 +- .../Classic/ClassicSqlitePrinterProfiles.cs | 2 +- PartPreviewWindow/ViewGcodeBasic.cs | 2 +- PartPreviewWindow/ViewGcodeWidget.cs | 2 +- .../Io/PauseHandlingStream.cs | 2 +- .../Io/PrintLevelingStream.cs | 2 +- .../Io/ResumePrintingStream.cs | 2 +- .../PrinterConnectionAndCommunication.cs | 6 +- .../ControlWidgets/MovementControls.cs | 12 +- PrinterControls/EditLevelingSettingsWindow.cs | 6 +- .../PrinterConnections/SetupStepBaudRate.cs | 2 +- .../SetupStepComPortManual.cs | 2 +- .../PrinterConnections/SetupStepComPortTwo.cs | 2 +- PrinterControls/TemperatureIndicator.cs | 2 +- Queue/OptionsMenu/ExportToFolderProcess.cs | 2 +- Queue/PrintItemWrapper.cs | 4 +- SetupWizard/ExportSettingsPage.cs | 6 +- .../Settings/LayeredProfile.cs | 2 +- .../Settings/ProfileManager.cs | 7 +- .../Settings/SettingsDiagram.cd | 6 +- .../Settings/SettingsProfile.cs | 709 +++++++++--------- .../SettingsControlSelectors.cs | 6 +- .../SlicePresetsWindow/SlicePresetsWindow.cs | 3 +- SlicerConfiguration/SliceSettingsWidget.cs | 23 +- .../SlicerMapping/MappingClasses.cs | 6 +- SlicerConfiguration/SlicingQueue.cs | 10 +- 34 files changed, 432 insertions(+), 464 deletions(-) diff --git a/ActionBar/PrintActionRow.cs b/ActionBar/PrintActionRow.cs index e0bca2781..0088846e3 100644 --- a/ActionBar/PrintActionRow.cs +++ b/ActionBar/PrintActionRow.cs @@ -297,7 +297,7 @@ namespace MatterHackers.MatterControl.ActionBar break; case PrinterConnectionAndCommunication.CommunicationStates.Connected: - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if (levelingData != null && ActiveSliceSettings.Instance.GetValue("print_leveling_required_to_print") && !levelingData.HasBeenRun()) { diff --git a/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs b/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs index 996fd7a27..0c2fd9913 100644 --- a/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs +++ b/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs @@ -402,9 +402,9 @@ namespace MatterHackers.MatterControl.ConfigurationPage var settings = ActiveSliceSettings.Instance; // Reset active slicer to MatterSlice when multi-extruder is detected and MatterSlice is not already set - if (settings?.GetValue(SettingsKey.extruder_count) > 1 && settings.ActiveSliceEngineType() != SlicingEngineTypes.MatterSlice) + if (settings?.GetValue(SettingsKey.extruder_count) > 1 && settings.Helpers.ActiveSliceEngineType() != SlicingEngineTypes.MatterSlice) { - settings.ActiveSliceEngineType(SlicingEngineTypes.MatterSlice); + settings.Helpers.ActiveSliceEngineType(SlicingEngineTypes.MatterSlice); ApplicationController.Instance.ReloadAll(null, null); } diff --git a/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs b/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs index bcea93eca..de20c92ef 100644 --- a/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs +++ b/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs @@ -97,7 +97,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage printLevelingSwitch.Margin = new BorderDouble(left: 16); printLevelingSwitch.CheckedStateChanged += (sender, e) => { - ActiveSliceSettings.Instance.DoPrintLeveling(printLevelingSwitch.Checked); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling(printLevelingSwitch.Checked); }; printLevelingStatusLabel = new TextWidget("") diff --git a/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs b/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs index e984bea86..37c387f8e 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizard13PointRadial.cs @@ -57,7 +57,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling && lineBeingSent.Length > 2 && lineBeingSent[2] == ' ') { - return GetLevelingFunctions(numberOfRadialSamples, settings.GetPrintLevelingData(), ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)) + return GetLevelingFunctions(numberOfRadialSamples, settings.Helpers.GetPrintLevelingData(), ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)) .DoApplyLeveling(lineBeingSent, currentDestination, movementMode); } @@ -66,7 +66,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling public override Vector2 GetPrintLevelPositionToSample(int index, double radius) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); return GetLevelingFunctions(numberOfRadialSamples, levelingData, ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)) .GetPrintLevelPositionToSample(index, radius); } diff --git a/ConfigurationPage/PrintLeveling/LevelWizard2Point.cs b/ConfigurationPage/PrintLeveling/LevelWizard2Point.cs index c311d9c7a..7227efd1a 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizard2Point.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizard2Point.cs @@ -154,7 +154,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling } if (PrinterConnectionAndCommunication.Instance.CommunicationState == PrinterConnectionAndCommunication.CommunicationStates.Printing) { - ActiveSliceSettings.Instance.DoPrintLeveling(false); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling(false); } probeIndex = 0; @@ -162,7 +162,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling StringBuilder commands = new StringBuilder(); - var feedRates = ActiveSliceSettings.Instance.ManualMovementSpeeds(); + var feedRates = ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds(); // make sure the probe offset is set to 0 lines.Add("M565 Z0"); @@ -248,15 +248,15 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling private static void SetEquations() { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); // position 0 does not change as it is the distance from the switch trigger to the extruder tip. //levelingData.sampledPosition0 = levelingData.sampledPosition0; levelingData.SampledPosition1 = levelingData.SampledPosition0 + probeRead1; levelingData.SampledPosition2 = levelingData.SampledPosition0 + probeRead2; - ActiveSliceSettings.Instance.SetPrintLevelingData(levelingData); - ActiveSliceSettings.Instance.DoPrintLeveling(true); + ActiveSliceSettings.Instance.Helpers.SetPrintLevelingData(levelingData); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling(true); } } } \ No newline at end of file diff --git a/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs b/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs index ff529340f..bceede16c 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizard7PointRadial.cs @@ -266,7 +266,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling && lineBeingSent.Length > 2 && lineBeingSent[2] == ' ') { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); return GetLevelingFunctions(numberOfRadialSamples, levelingData, ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)) .DoApplyLeveling(lineBeingSent, currentDestination, movementMode); } @@ -276,7 +276,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling public override Vector2 GetPrintLevelPositionToSample(int index, double radius) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); return GetLevelingFunctions(numberOfRadialSamples, levelingData, ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)) .GetPrintLevelPositionToSample(index, radius); } diff --git a/ConfigurationPage/PrintLeveling/LevelWizardBase.cs b/ConfigurationPage/PrintLeveling/LevelWizardBase.cs index 40d4a66c7..aee71cdb9 100644 --- a/ConfigurationPage/PrintLeveling/LevelWizardBase.cs +++ b/ConfigurationPage/PrintLeveling/LevelWizardBase.cs @@ -154,7 +154,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling private static LevelWizardBase CreateAndShowWizard(LevelWizardBase.RuningState runningState) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); LevelWizardBase printLevelWizardWindow; switch (levelingData.CurrentPrinterLevelingSystem) diff --git a/ConfigurationPage/PrintLeveling/PrintLevelPages.cs b/ConfigurationPage/PrintLeveling/PrintLevelPages.cs index 23dee5986..a63374ccd 100644 --- a/ConfigurationPage/PrintLeveling/PrintLevelPages.cs +++ b/ConfigurationPage/PrintLeveling/PrintLevelPages.cs @@ -46,7 +46,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling public override void PageIsBecomingActive() { - ActiveSliceSettings.Instance.DoPrintLeveling (false); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling (false); base.PageIsBecomingActive(); } } @@ -65,15 +65,15 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { Vector3 paperWidth = new Vector3(0, 0, ActiveSliceSettings.Instance.GetValue("manual_probe_paper_width")); - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); levelingData.SampledPosition0 = probePositions[0].position - paperWidth; levelingData.SampledPosition1 = probePositions[1].position - paperWidth; levelingData.SampledPosition2 = probePositions[2].position - paperWidth; // Invoke setter forcing persistence of leveling data - ActiveSliceSettings.Instance.SetPrintLevelingData(levelingData); + ActiveSliceSettings.Instance.Helpers.SetPrintLevelingData(levelingData); - ActiveSliceSettings.Instance.DoPrintLeveling ( true); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling ( true); base.PageIsBecomingActive(); } @@ -91,7 +91,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling public override void PageIsBecomingActive() { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); levelingData.SampledPositions.Clear(); Vector3 paperWidth = new Vector3(0, 0, ActiveSliceSettings.Instance.GetValue("manual_probe_paper_width")); for (int i = 0; i < probePositions.Length; i++) @@ -100,9 +100,9 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling } // Invoke setter forcing persistence of leveling data - ActiveSliceSettings.Instance.SetPrintLevelingData(levelingData); + ActiveSliceSettings.Instance.Helpers.SetPrintLevelingData(levelingData); - ActiveSliceSettings.Instance.DoPrintLeveling ( true); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling ( true); base.PageIsBecomingActive(); } } @@ -135,7 +135,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling // first make sure there is no leftover FinishedProbe event PrinterConnectionAndCommunication.Instance.ReadLine.UnregisterEvent(FinishedProbe, ref unregisterEvents); - var feedRates = ActiveSliceSettings.Instance.ManualMovementSpeeds(); + var feedRates = ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds(); PrinterConnectionAndCommunication.Instance.MoveAbsolute(PrinterConnectionAndCommunication.Axis.Z, probeStartPosition.z, feedRates.z); PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, feedRates.x); @@ -159,7 +159,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling int zStringPos = currentEvent.Data.LastIndexOf("Z:"); string zProbeHeight = currentEvent.Data.Substring(zStringPos + 2); probePosition.position = new Vector3(probeStartPosition.x, probeStartPosition.y, double.Parse(zProbeHeight)); - PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, ActiveSliceSettings.Instance.ManualMovementSpeeds().z); + PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds().z); PrinterConnectionAndCommunication.Instance.ReadPosition(); container.nextButton.ClickButton(new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0)); @@ -197,7 +197,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling Vector3 paperWidth = new Vector3(0, 0, ActiveSliceSettings.Instance.GetValue("manual_probe_paper_width")); - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); levelingData.SampledPosition0 = userBedSample0 - paperWidth; levelingData.SampledPosition1 = userBedSample1 - paperWidth; levelingData.SampledPosition2 = probeOffset2 - probeOffset0 + userBedSample0 - paperWidth; @@ -206,9 +206,9 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling levelingData.ProbeOffset1 = probeOffset1 - paperWidth; // Invoke setter forcing persistence of leveling data - ActiveSliceSettings.Instance.SetPrintLevelingData(levelingData); + ActiveSliceSettings.Instance.Helpers.SetPrintLevelingData(levelingData); - ActiveSliceSettings.Instance.DoPrintLeveling ( true); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling ( true); base.PageIsBecomingActive(); } } @@ -278,7 +278,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling public override void PageIsBecomingActive() { // always make sure we don't have print leveling turned on - ActiveSliceSettings.Instance.DoPrintLeveling ( false); + ActiveSliceSettings.Instance.Helpers.DoPrintLeveling(false); base.PageIsBecomingActive(); } @@ -315,13 +315,13 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling // don't move the bed lower it will not work when we print. return; } - PrinterConnectionAndCommunication.Instance.MoveRelative(PrinterConnectionAndCommunication.Axis.Z, -moveAmount, ActiveSliceSettings.Instance.ManualMovementSpeeds().z); + PrinterConnectionAndCommunication.Instance.MoveRelative(PrinterConnectionAndCommunication.Axis.Z, -moveAmount, ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds().z); PrinterConnectionAndCommunication.Instance.ReadPosition(); } private void zPlusControl_Click(object sender, EventArgs mouseEvent) { - PrinterConnectionAndCommunication.Instance.MoveRelative(PrinterConnectionAndCommunication.Axis.Z, moveAmount, ActiveSliceSettings.Instance.ManualMovementSpeeds().z); + PrinterConnectionAndCommunication.Instance.MoveRelative(PrinterConnectionAndCommunication.Axis.Z, moveAmount, ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds().z); PrinterConnectionAndCommunication.Instance.ReadPosition(); } } @@ -351,7 +351,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { base.PageIsBecomingActive(); - var feedRates = ActiveSliceSettings.Instance.ManualMovementSpeeds(); + var feedRates = ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds(); PrinterConnectionAndCommunication.Instance.MoveAbsolute(PrinterConnectionAndCommunication.Axis.Z, probeStartPosition.z, feedRates.z); PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, feedRates.x); @@ -393,7 +393,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling // first make sure there is no leftover FinishedProbe event PrinterConnectionAndCommunication.Instance.ReadLine.UnregisterEvent(FinishedProbe, ref unregisterEvents); - var feedRates = ActiveSliceSettings.Instance.ManualMovementSpeeds(); + var feedRates = ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds(); PrinterConnectionAndCommunication.Instance.MoveAbsolute(PrinterConnectionAndCommunication.Axis.Z, probeStartPosition.z, feedRates.z); PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, feedRates.x); @@ -422,7 +422,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling whereToWriteSamplePosition.position = new Vector3(probeStartPosition.x, probeStartPosition.y, double.Parse(zProbeHeight)); // now move to the probe start position - PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, ActiveSliceSettings.Instance.ManualMovementSpeeds().z); + PrinterConnectionAndCommunication.Instance.MoveAbsolute(probeStartPosition, ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds().z); PrinterConnectionAndCommunication.Instance.ReadPosition(); } } @@ -476,7 +476,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { if (haveDrawn) { - PrinterConnectionAndCommunication.Instance.MoveRelative(PrinterConnectionAndCommunication.Axis.Z, 2, ActiveSliceSettings.Instance.ManualMovementSpeeds().z); + PrinterConnectionAndCommunication.Instance.MoveRelative(PrinterConnectionAndCommunication.Axis.Z, 2, ActiveSliceSettings.Instance.Helpers.ManualMovementSpeeds().z); } base.PageIsBecomingInactive(); } diff --git a/CustomWidgets/ExportPrintItemWindow.cs b/CustomWidgets/ExportPrintItemWindow.cs index 91ede39df..5026c68d6 100644 --- a/CustomWidgets/ExportPrintItemWindow.cs +++ b/CustomWidgets/ExportPrintItemWindow.cs @@ -313,7 +313,7 @@ namespace MatterHackers.MatterControl GCodeFileLoaded unleveledGCode = new GCodeFileLoaded(source); if (applyLeveling.Checked) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if (levelingData != null) { for (int lineIndex = 0; lineIndex < unleveledGCode.LineCount; lineIndex++) diff --git a/DataStorage/Classic/ClassicSqlitePrinterProfiles.cs b/DataStorage/Classic/ClassicSqlitePrinterProfiles.cs index 0c40672a5..17322e095 100644 --- a/DataStorage/Classic/ClassicSqlitePrinterProfiles.cs +++ b/DataStorage/Classic/ClassicSqlitePrinterProfiles.cs @@ -140,7 +140,7 @@ namespace MatterHackers.MatterControl.DataStorage.ClassicDB layeredProfile.DocumentVersion = PrinterSettings.LatestVersion; var settingsProfile = new SettingsProfile(layeredProfile); - settingsProfile.SetComPort(printer.ComPort); + settingsProfile.Helpers.SetComPort(printer.ComPort); settingsProfile.SaveChanges(); } diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index 24a77e2c8..ac8a11a6a 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -370,7 +370,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow GetRenderType(), gcodeViewWidget.FeatureToStartOnRatio0To1, gcodeViewWidget.FeatureToEndOnRatio0To1, - new Vector2[] { ActiveSliceSettings.Instance.ExtruderOffset(0), ActiveSliceSettings.Instance.ExtruderOffset(1) }); + new Vector2[] { ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) }); gcodeViewWidget.gCodeRenderer.Render3D(renderInfo); } diff --git a/PartPreviewWindow/ViewGcodeWidget.cs b/PartPreviewWindow/ViewGcodeWidget.cs index 7d99f5fe4..c900759c0 100644 --- a/PartPreviewWindow/ViewGcodeWidget.cs +++ b/PartPreviewWindow/ViewGcodeWidget.cs @@ -343,7 +343,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow GCodeRenderInfo renderInfo = new GCodeRenderInfo(activeLayerIndex, activeLayerIndex, transform, layerScale, CreateRenderInfo(), FeatureToStartOnRatio0To1, FeatureToEndOnRatio0To1, - new Vector2[] { ActiveSliceSettings.Instance.ExtruderOffset(0), ActiveSliceSettings.Instance.ExtruderOffset(1) }); + new Vector2[] { ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) }); //using (new PerformanceTimer("GCode Timer", "Render")) { diff --git a/PrinterCommunication/Io/PauseHandlingStream.cs b/PrinterCommunication/Io/PauseHandlingStream.cs index f818ea4fb..2753cc9a2 100644 --- a/PrinterCommunication/Io/PauseHandlingStream.cs +++ b/PrinterCommunication/Io/PauseHandlingStream.cs @@ -87,7 +87,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io { int layerNumber; - if (int.TryParse(layer, out layerNumber) && ActiveSliceSettings.Instance.LayerToPauseOn().Contains(layerNumber)) + if (int.TryParse(layer, out layerNumber) && ActiveSliceSettings.Instance.Helpers.LayerToPauseOn().Contains(layerNumber)) { return true; } diff --git a/PrinterCommunication/Io/PrintLevelingStream.cs b/PrinterCommunication/Io/PrintLevelingStream.cs index 016a747f5..6d52f2ef2 100644 --- a/PrinterCommunication/Io/PrintLevelingStream.cs +++ b/PrinterCommunication/Io/PrintLevelingStream.cs @@ -91,7 +91,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io private string RunPrintLevelingTranslations(string lineBeingSent, PrinterMove currentDestination) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if (levelingData != null) { switch (levelingData.CurrentPrinterLevelingSystem) diff --git a/PrinterCommunication/Io/ResumePrintingStream.cs b/PrinterCommunication/Io/ResumePrintingStream.cs index 2f75ff92a..0113f8629 100644 --- a/PrinterCommunication/Io/ResumePrintingStream.cs +++ b/PrinterCommunication/Io/ResumePrintingStream.cs @@ -91,7 +91,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io queuedCommands.Add("G90; use absolute coordinates"); queuedCommands.Add("G92 E0; reset the expected extruder position"); queuedCommands.Add("M82; use absolute distance for extrusion"); - queuedCommands.Add("M109 S{0}".FormatWith(ActiveSliceSettings.Instance.ExtruderTemperature(0))); + queuedCommands.Add("M109 S{0}".FormatWith(ActiveSliceSettings.Instance.Helpers.ExtruderTemperature(0))); resumeState = ResumeState.Raising; return ""; diff --git a/PrinterCommunication/PrinterConnectionAndCommunication.cs b/PrinterCommunication/PrinterConnectionAndCommunication.cs index c591d4f93..053f2add1 100644 --- a/PrinterCommunication/PrinterConnectionAndCommunication.cs +++ b/PrinterCommunication/PrinterConnectionAndCommunication.cs @@ -514,7 +514,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication } } - public string ComPort => ActiveSliceSettings.Instance?.ComPort(); + public string ComPort => ActiveSliceSettings.Instance?.Helpers.ComPort(); public string DriverType => ActiveSliceSettings.Instance?.GetValue("driver_type"); @@ -1348,7 +1348,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication if (ActiveSliceSettings.Instance.GetValue("print_leveling_required_to_print") || ActiveSliceSettings.Instance.GetValue("print_leveling_enabled")) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if(levelingData?.HasBeenRun() != true) { LevelWizardBase.ShowPrintLevelWizard(); @@ -1646,7 +1646,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication if (ActiveSliceSettings.Instance.GetValue("print_leveling_required_to_print") || ActiveSliceSettings.Instance.GetValue("print_leveling_enabled")) { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if (levelingData?.HasBeenRun() != true) { UiThread.RunOnIdle(LevelWizardBase.ShowPrintLevelWizard); diff --git a/PrinterControls/ControlWidgets/MovementControls.cs b/PrinterControls/ControlWidgets/MovementControls.cs index d35e970da..7415f63be 100644 --- a/PrinterControls/ControlWidgets/MovementControls.cs +++ b/PrinterControls/ControlWidgets/MovementControls.cs @@ -70,15 +70,15 @@ namespace MatterHackers.MatterControl.PrinterControls private event EventHandler unregisterEvents; - public static double XSpeed => ActiveSliceSettings.Instance.GetMovementSpeeds()["x"]; + public static double XSpeed => ActiveSliceSettings.Instance.Helpers.GetMovementSpeeds()["x"]; - public static double YSpeed => ActiveSliceSettings.Instance.GetMovementSpeeds()["y"]; + public static double YSpeed => ActiveSliceSettings.Instance.Helpers.GetMovementSpeeds()["y"]; - public static double ZSpeed => ActiveSliceSettings.Instance.GetMovementSpeeds()["z"]; + public static double ZSpeed => ActiveSliceSettings.Instance.Helpers.GetMovementSpeeds()["z"]; public static double EFeedRate(int extruderIndex) { - var movementSpeeds = ActiveSliceSettings.Instance.GetMovementSpeeds(); + var movementSpeeds = ActiveSliceSettings.Instance.Helpers.GetMovementSpeeds(); string extruderIndexKey = "e" + extruderIndex.ToString(); if (movementSpeeds.ContainsKey(extruderIndexKey)) @@ -119,7 +119,7 @@ namespace MatterHackers.MatterControl.PrinterControls { if (editManualMovementSettingsWindow == null) { - editManualMovementSettingsWindow = new EditManualMovementSpeedsWindow("Movement Speeds".Localize(), ActiveSliceSettings.Instance.GetMovementSpeedsString(), SetMovementSpeeds); + editManualMovementSettingsWindow = new EditManualMovementSpeedsWindow("Movement Speeds".Localize(), ActiveSliceSettings.Instance.Helpers.GetMovementSpeedsString(), SetMovementSpeeds); editManualMovementSettingsWindow.Closed += (popupWindowSender, popupWindowSenderE) => { editManualMovementSettingsWindow = null; }; } else @@ -163,7 +163,7 @@ namespace MatterHackers.MatterControl.PrinterControls StringEventArgs stringEvent = e as StringEventArgs; if (stringEvent != null && stringEvent.Data != null) { - ActiveSliceSettings.Instance.SetManualMovementSpeeds(stringEvent.Data); + ActiveSliceSettings.Instance.Helpers.SetManualMovementSpeeds(stringEvent.Data); ApplicationController.Instance.ReloadAdvancedControlsPanel(); } } diff --git a/PrinterControls/EditLevelingSettingsWindow.cs b/PrinterControls/EditLevelingSettingsWindow.cs index 52af89628..f0fc0e5f6 100644 --- a/PrinterControls/EditLevelingSettingsWindow.cs +++ b/PrinterControls/EditLevelingSettingsWindow.cs @@ -89,7 +89,7 @@ namespace MatterHackers.MatterControl textImageButtonFactory.FixedHeight = 30 * GuiWidget.DeviceScale; // put in the movement edit controls - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if (EditSamplePositionList(levelingData)) { for (int i = 0; i < levelingData.SampledPositions.Count; i++) @@ -202,7 +202,7 @@ namespace MatterHackers.MatterControl private void DoSave_Click() { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); if (EditSamplePositionList(levelingData)) { @@ -218,7 +218,7 @@ namespace MatterHackers.MatterControl levelingData.SampledPosition2 = positions[2]; } - ActiveSliceSettings.Instance.SetPrintLevelingData(levelingData); + ActiveSliceSettings.Instance.Helpers.SetPrintLevelingData(levelingData); Close(); } diff --git a/PrinterControls/PrinterConnections/SetupStepBaudRate.cs b/PrinterControls/PrinterConnections/SetupStepBaudRate.cs index 685d5bbad..e9257ed93 100644 --- a/PrinterControls/PrinterConnections/SetupStepBaudRate.cs +++ b/PrinterControls/PrinterConnections/SetupStepBaudRate.cs @@ -191,7 +191,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections { try { - ActiveSliceSettings.Instance.SetBaudRate(baudRate); + ActiveSliceSettings.Instance.Helpers.SetBaudRate(baudRate); return true; } catch diff --git a/PrinterControls/PrinterConnections/SetupStepComPortManual.cs b/PrinterControls/PrinterConnections/SetupStepComPortManual.cs index b6b8d3783..737588382 100644 --- a/PrinterControls/PrinterConnections/SetupStepComPortManual.cs +++ b/PrinterControls/PrinterConnections/SetupStepComPortManual.cs @@ -145,7 +145,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections printerComPortError.Text = "Attempting to connect".Localize() + "..."; printerComPortError.TextColor = ActiveTheme.Instance.PrimaryTextColor; - ActiveSliceSettings.Instance.SetComPort(GetSelectedSerialPort()); + ActiveSliceSettings.Instance.Helpers.SetComPort(GetSelectedSerialPort()); PrinterConnectionAndCommunication.Instance.ConnectToActivePrinter(); connectButton.Visible = false; diff --git a/PrinterControls/PrinterConnections/SetupStepComPortTwo.cs b/PrinterControls/PrinterConnections/SetupStepComPortTwo.cs index c0142edf4..602eeb6a3 100644 --- a/PrinterControls/PrinterConnections/SetupStepComPortTwo.cs +++ b/PrinterControls/PrinterConnections/SetupStepComPortTwo.cs @@ -132,7 +132,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections printerErrorMessage.TextColor = ActiveTheme.Instance.PrimaryTextColor; printerErrorMessage.Text = "Attempting to connect".Localize() + "..."; - ActiveSliceSettings.Instance.SetComPort(candidatePort); + ActiveSliceSettings.Instance.Helpers.SetComPort(candidatePort); PrinterConnectionAndCommunication.Instance.ConnectToActivePrinter(); connectButton.Visible = false; } diff --git a/PrinterControls/TemperatureIndicator.cs b/PrinterControls/TemperatureIndicator.cs index 0f4670694..d59bfa043 100644 --- a/PrinterControls/TemperatureIndicator.cs +++ b/PrinterControls/TemperatureIndicator.cs @@ -493,7 +493,7 @@ namespace MatterHackers.MatterControl protected override double GetPreheatTemperature() { - string tempValue = ActiveSliceSettings.Instance.ExtruderTemperature(extruderIndex0Based); + string tempValue = ActiveSliceSettings.Instance.Helpers.ExtruderTemperature(extruderIndex0Based); if (string.IsNullOrEmpty(tempValue)) { return 0.0; diff --git a/Queue/OptionsMenu/ExportToFolderProcess.cs b/Queue/OptionsMenu/ExportToFolderProcess.cs index 9416c37e1..02f6a1eea 100644 --- a/Queue/OptionsMenu/ExportToFolderProcess.cs +++ b/Queue/OptionsMenu/ExportToFolderProcess.cs @@ -181,7 +181,7 @@ namespace MatterHackers.MatterControl.PrintQueue } } - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); // now copy all the gcode to the path given for (int i = 0; i < savedGCodeFileNames.Count; i++) diff --git a/Queue/PrintItemWrapper.cs b/Queue/PrintItemWrapper.cs index 4ac0d78b1..3940f13b4 100644 --- a/Queue/PrintItemWrapper.cs +++ b/Queue/PrintItemWrapper.cs @@ -268,7 +268,7 @@ namespace MatterHackers.MatterControl.PrintQueue return FileLocation; } - string engineString = ((int)ActiveSliceSettings.Instance.ActiveSliceEngineType()).ToString(); + string engineString = ((int)ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType()).ToString(); string gcodeFileName = this.FileHashCode.ToString() + "_" + engineString + "_" + ActiveSliceSettings.Instance.GetLongHashCode().ToString(); string gcodePathAndFileName = Path.Combine(ApplicationDataStorage.Instance.GCodeOutputPath, gcodeFileName + ".gcode"); @@ -300,7 +300,7 @@ namespace MatterHackers.MatterControl.PrintQueue } // check if there is a known line at the end of the file (this will let us know if slicer finished building the file). - switch (ActiveSliceSettings.Instance.ActiveSliceEngineType()) + switch (ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType()) { case SlicingEngineTypes.CuraEngine: case SlicingEngineTypes.MatterSlice: diff --git a/SetupWizard/ExportSettingsPage.cs b/SetupWizard/ExportSettingsPage.cs index b43cb6aa0..e44027916 100644 --- a/SetupWizard/ExportSettingsPage.cs +++ b/SetupWizard/ExportSettingsPage.cs @@ -131,15 +131,15 @@ namespace MatterHackers.MatterControl if (matterControlButton.Checked) { - ActiveSliceSettings.Instance.ExportAsMatterControlConfig(); + ActiveSliceSettings.Instance.Helpers.ExportAsMatterControlConfig(); } else if(slic3rButton.Checked) { - ActiveSliceSettings.Instance.ExportAsSlic3rConfig(); + ActiveSliceSettings.Instance.Helpers.ExportAsSlic3rConfig(); } else if(curaButton.Checked) { - ActiveSliceSettings.Instance.ExportAsCuraConfig(); + ActiveSliceSettings.Instance.Helpers.ExportAsCuraConfig(); } } } diff --git a/SlicerConfiguration/Settings/LayeredProfile.cs b/SlicerConfiguration/Settings/LayeredProfile.cs index fb4bd40b9..0f970acc9 100644 --- a/SlicerConfiguration/Settings/LayeredProfile.cs +++ b/SlicerConfiguration/Settings/LayeredProfile.cs @@ -251,7 +251,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration oemProfile.DocumentVersion = PrinterSettings.LatestVersion; var profileHelper = new SettingsProfile(oemProfile); - profileHelper.SetComPort(profile.ComPort); + profileHelper.Helpers.SetComPort(profile.ComPort); profileHelper.SaveChanges(); UiThread.RunOnIdle(() => diff --git a/SlicerConfiguration/Settings/ProfileManager.cs b/SlicerConfiguration/Settings/ProfileManager.cs index 71f3610d3..accf09714 100644 --- a/SlicerConfiguration/Settings/ProfileManager.cs +++ b/SlicerConfiguration/Settings/ProfileManager.cs @@ -68,6 +68,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } + public const string ConfigFileExtension = ".slice"; + private const string userDBExtension = ".profiles"; private const string guestDBFileName = "guest" + userDBExtension; @@ -126,7 +128,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration Instance.Profiles.CollectionChanged += Profiles_CollectionChanged; } - internal static ProfileManager LoadGuestDB() { if (File.Exists(GuestDBPath)) @@ -149,7 +150,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration break; case SettingsKey.com_port: - Instance.ActiveProfile.ComPort = ActiveSliceSettings.Instance.ComPort(); + Instance.ActiveProfile.ComPort = ActiveSliceSettings.Instance.Helpers.ComPort(); Instance.Save(); break; } @@ -284,7 +285,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration printerInfo.DeviceToken = ""; // TODO: Resolve name conflicts - profile.SetName(printerInfo.Name); + profile.Helpers.SetName(printerInfo.Name); Instance.Profiles.Add(printerInfo); diff --git a/SlicerConfiguration/Settings/SettingsDiagram.cd b/SlicerConfiguration/Settings/SettingsDiagram.cd index 7552f2916..d3a6575f8 100644 --- a/SlicerConfiguration/Settings/SettingsDiagram.cd +++ b/SlicerConfiguration/Settings/SettingsDiagram.cd @@ -11,9 +11,9 @@ - + - wAAAScAELBAGoAAAMEgCKhUEB4AgEFaACgAJQRAFAAU= + gAAASEAEKAACgAAAEEgAAAUEAoAAABYAAgAAAwABAAE= SlicerConfiguration\Settings\SettingsProfile.cs @@ -36,8 +36,8 @@ - + diff --git a/SlicerConfiguration/Settings/SettingsProfile.cs b/SlicerConfiguration/Settings/SettingsProfile.cs index fd6e40531..77d18f6f4 100644 --- a/SlicerConfiguration/Settings/SettingsProfile.cs +++ b/SlicerConfiguration/Settings/SettingsProfile.cs @@ -90,9 +90,334 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public const string filament_density = nameof(filament_density); public const string filament_diameter = nameof(filament_diameter); }; + + public class SettingsHelpers + { + private SettingsProfile parentProfile; + private PrinterSettings layeredProfile; + + public SettingsHelpers(SettingsProfile profile, PrinterSettings layeredProfile) + { + parentProfile = profile; + this.layeredProfile = layeredProfile; + } + + public string ExtruderTemperature(int extruderIndex) + { + if (extruderIndex >= layeredProfile.MaterialSettingsKeys.Count) + { + // MaterialSettingsKeys is empty or lacks a value for the given extruder index + // + // If extruder index zero was requested, return the layer cascade temperature value, otherwise null + return (extruderIndex == 0) ? layeredProfile.GetValue("temperature") : null; + } + + string materialKey = layeredProfile.MaterialSettingsKeys[extruderIndex]; + + if (extruderIndex == 0 && (string.IsNullOrEmpty(materialKey) || layeredProfile.UserLayer.ContainsKey("temperature"))) + { + // In the case where a user override exists or MaterialSettingsKeys is populated with multiple extruder + // positions but position 0 is empty and thus unassigned, use layer cascade to resolve temp + return layeredProfile.GetValue("temperature"); + } + + // Otherwise, use the SettingsLayers that is bound to this extruder + PrinterSettingsLayer layer = layeredProfile.GetMaterialLayer(materialKey); + + string result = "0"; + layer?.TryGetValue("temperature", out result); + return result; + } + + public int[] LayerToPauseOn() + { + string[] userValues = parentProfile.GetValue("layer_to_pause").Split(';'); + + int temp; + return userValues.Where(v => int.TryParse(v, out temp)).Select(v => + { + //Convert from 0 based index to 1 based index + int val = int.Parse(v); + + // Special case for user entered zero that pushes 0 to 1, otherwise val = val - 1 for 1 based index + return val == 0 ? 1 : val - 1; + }).ToArray(); + } + + internal double ParseDouble(string firstLayerValueString) + { + double firstLayerValue; + if (!double.TryParse(firstLayerValueString, out firstLayerValue)) + { + throw new Exception(string.Format("Format cannot be parsed. FirstLayerHeight '{0}'", firstLayerValueString)); + } + return firstLayerValue; + } + + public void SetMarkedForDelete(bool markedForDelete) + { + var printerInfo = ProfileManager.Instance.ActiveProfile; + if (printerInfo != null) + { + printerInfo.MarkedForDelete = markedForDelete; + ProfileManager.Instance.Save(); + } + + // Clear selected printer state + UserSettings.Instance.set("ActiveProfileID", ""); + + UiThread.RunOnIdle(() => ActiveSliceSettings.Instance = ProfileManager.LoadEmptyProfile()); + } + + public void SetBaudRate(string baudRate) + { + layeredProfile.SetValue(SettingsKey.baud_rate, baudRate); + } + + public string ComPort() + { + return layeredProfile.GetValue($"{Environment.MachineName}_com_port"); + } + + public void SetComPort(string port) + { + layeredProfile.SetValue($"{Environment.MachineName}_com_port", port); + } + + public void SetComPort(string port, PrinterSettingsLayer layer) + { + layeredProfile.SetValue($"{Environment.MachineName}_com_port", port, layer); + } + + public void SetSlicingEngine(string engine) + { + layeredProfile.SetValue("slicing_engine", engine); + } + + public void SetDriverType(string driver) + { + layeredProfile.SetValue("driver_type", driver); + } + + public void SetDeviceToken(string token) + { + if (layeredProfile.GetValue(SettingsKey.device_token) != token) + { + layeredProfile.SetValue(SettingsKey.device_token, token); + } + } + + public void SetName(string name) + { + layeredProfile.SetValue(SettingsKey.printer_name, name); + } + + public void SetManualMovementSpeeds(string speed) + { + layeredProfile.SetValue("manual_movement_speeds", speed); + } + + private PrintLevelingData printLevelingData = null; + public PrintLevelingData GetPrintLevelingData() + { + if (printLevelingData == null) + { + printLevelingData = PrintLevelingData.Create( + ActiveSliceSettings.Instance, + layeredProfile.GetValue("print_leveling_data"), + layeredProfile.GetValue("MatterControl.PrintLevelingProbePositions")); + + PrintLevelingPlane.Instance.SetPrintLevelingEquation( + printLevelingData.SampledPosition0, + printLevelingData.SampledPosition1, + printLevelingData.SampledPosition2, + ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)); + } + + return printLevelingData; + } + + public void SetPrintLevelingData(PrintLevelingData data) + { + printLevelingData = data; + layeredProfile.SetValue("print_leveling_data", JsonConvert.SerializeObject(data)); + } + + public void DoPrintLeveling(bool doLeveling) + { + // Early exit if already set + if (doLeveling == parentProfile.GetValue("print_leveling_enabled")) + { + return; + } + + layeredProfile.SetValue("print_leveling_enabled", doLeveling ? "1" : "0"); + + parentProfile.DoPrintLevelingChanged.CallEvents(this, null); + + if (doLeveling) + { + PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData(); + PrintLevelingPlane.Instance.SetPrintLevelingEquation( + levelingData.SampledPosition0, + levelingData.SampledPosition1, + levelingData.SampledPosition2, + ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)); + } + } + + public Vector2 ExtruderOffset(int extruderIndex) + { + string currentOffsets = parentProfile.GetValue("extruder_offset"); + string[] offsets = currentOffsets.Split(','); + int count = 0; + foreach (string offset in offsets) + { + if (count == extruderIndex) + { + string[] xy = offset.Split('x'); + return new Vector2(double.Parse(xy[0]), double.Parse(xy[1])); + } + count++; + } + + return Vector2.Zero; + } + + private static readonly SlicingEngineTypes defaultEngineType = SlicingEngineTypes.MatterSlice; + + public SlicingEngineTypes ActiveSliceEngineType() + { + string engineType = layeredProfile.GetValue("slicing_engine"); + if (string.IsNullOrEmpty(engineType)) + { + return defaultEngineType; + } + + var engine = (SlicingEngineTypes)Enum.Parse(typeof(SlicingEngineTypes), engineType); + return engine; + } + + public void ActiveSliceEngineType(SlicingEngineTypes type) + { + parentProfile.SetActiveValue("slicing_engine", type.ToString()); + } + + public SliceEngineMapping ActiveSliceEngine() + { + switch (ActiveSliceEngineType()) + { + case SlicingEngineTypes.CuraEngine: + return EngineMappingCura.Instance; + + case SlicingEngineTypes.MatterSlice: + return EngineMappingsMatterSlice.Instance; + + case SlicingEngineTypes.Slic3r: + return Slic3rEngineMappings.Instance; + + default: + return null; + } + } + + public void ExportAsMatterControlConfig() + { + FileDialog.SaveFileDialog( + new SaveFileDialogParams("MatterControl Printer Export|*.printer", title: "Export Printer Settings"), + (saveParams) => + { + File.WriteAllText(saveParams.FileName, JsonConvert.SerializeObject(layeredProfile, Formatting.Indented)); + }); + } + + public void ExportAsSlic3rConfig() + { + FileDialog.SaveFileDialog( + new SaveFileDialogParams("Save Slice Configuration".Localize() + "|*" + ProfileManager.ConfigFileExtension) + { + FileName = "default_settings.ini" + }, + (saveParams) => + { + if (!string.IsNullOrEmpty(saveParams.FileName)) + { + GenerateConfigFile(saveParams.FileName, false); + } + }); + } + + public void GenerateConfigFile(string fileName, bool replaceMacroValues) + { + using (var outstream = new StreamWriter(fileName)) + { + foreach (var key in SettingsProfile.KnownSettings.Where(k => !k.StartsWith("MatterControl."))) + { + string activeValue = parentProfile.GetValue(key); + if (replaceMacroValues) + { + activeValue = GCodeProcessing.ReplaceMacroValues(activeValue); + } + outstream.Write(string.Format("{0} = {1}\n", key, activeValue)); + activeValue = GCodeProcessing.ReplaceMacroValues(activeValue); + } + } + } + + public void ExportAsCuraConfig() + { + throw new NotImplementedException(); + } + + public Vector3 ManualMovementSpeeds() + { + Vector3 feedRate = new Vector3(3000, 3000, 315); + + string savedSettings = ActiveSliceSettings.Instance.GetValue("manual_movement_speeds"); + if (!string.IsNullOrEmpty(savedSettings)) + { + var segments = savedSettings.Split(','); + feedRate.x = double.Parse(segments[1]); + feedRate.y = double.Parse(segments[3]); + feedRate.z = double.Parse(segments[5]); + } + + return feedRate; + } + + public Dictionary GetMovementSpeeds() + { + Dictionary speeds = new Dictionary(); + string movementSpeedsString = GetMovementSpeedsString(); + string[] allSpeeds = movementSpeedsString.Split(','); + for (int i = 0; i < allSpeeds.Length / 2; i++) + { + speeds.Add(allSpeeds[i * 2 + 0], double.Parse(allSpeeds[i * 2 + 1])); + } + + return speeds; + } + + public string GetMovementSpeedsString() + { + string presets = "x,3000,y,3000,z,315,e0,150"; // stored x,value,y,value,z,value,e1,value,e2,value,e3,value,... + if (PrinterConnectionAndCommunication.Instance != null) + { + string savedSettings = parentProfile.GetValue("manual_movement_speeds"); + if (!string.IsNullOrEmpty(savedSettings)) + { + presets = savedSettings; + } + } + + return presets; + } + + } + public class SettingsProfile { - private static string configFileExtension = "slice"; + public SettingsHelpers Helpers { get; set; } public RootedObjectEventHandler DoPrintLevelingChanged = new RootedObjectEventHandler(); @@ -103,6 +428,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration internal SettingsProfile(PrinterSettings profile) { layeredProfile = profile; + + this.Helpers = new SettingsHelpers(this, profile); } #region LayeredProfile Proxies @@ -192,50 +519,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration // Commit } - /* jlewin - delete after confirmation - public class SettingsConverter - { - public static void LoadConfigurationSettingsFromFileAsUnsaved(string pathAndFileName) - { - try - { - if (File.Exists(pathAndFileName)) - { - string[] lines = System.IO.File.ReadAllLines(pathAndFileName); - foreach (string line in lines) - { - //Ignore commented lines - if (line.Trim() != "" && !line.StartsWith("#")) - { - string[] settingLine = line.Split('='); - if (settingLine.Length > 1) - { - string keyName = settingLine[0].Trim(); - string settingDefaultValue = settingLine[1].Trim(); - - //Add the setting to the active layer - //SaveValue(keyName, settingDefaultValue); - throw new NotImplementedException("load to dictionary"); - } - } - } - } - } - catch (Exception e) - { - Debug.Print(e.Message); - GuiWidget.BreakInDebugger(); - Debug.WriteLine(string.Format("Error loading configuration: {0}", e)); - } - } - }*/ - public void ClearUserOverrides() { var userOverrides = this.UserLayer.Keys.ToArray(); // Leave user layer items that have no Organizer definition and thus cannot be changed by the user - var keysToRetain = new HashSet(userOverrides.Except(this.KnownSettings)); + var keysToRetain = new HashSet(userOverrides.Except(KnownSettings)); foreach (var item in SliceSettingsOrganizer.Instance.SettingsData.Where(settingsItem => !settingsItem.ShowAsOverride)) { @@ -262,163 +551,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } - public string ExtruderTemperature(int extruderIndex) - { - if (extruderIndex >= layeredProfile.MaterialSettingsKeys.Count) - { - // MaterialSettingsKeys is empty or lacks a value for the given extruder index - // - // If extruder index zero was requested, return the layer cascade temperature value, otherwise null - return (extruderIndex == 0) ? layeredProfile.GetValue("temperature") : null; - } - - string materialKey = layeredProfile.MaterialSettingsKeys[extruderIndex]; - - if (extruderIndex == 0 && (string.IsNullOrEmpty(materialKey) || layeredProfile.UserLayer.ContainsKey("temperature"))) - { - // In the case where a user override exists or MaterialSettingsKeys is populated with multiple extruder - // positions but position 0 is empty and thus unassigned, use layer cascade to resolve temp - return layeredProfile.GetValue("temperature"); - } - - // Otherwise, use the SettingsLayers that is bound to this extruder - PrinterSettingsLayer layer = layeredProfile.GetMaterialLayer(materialKey); - - string result = "0"; - layer?.TryGetValue("temperature", out result); - return result; - } - - public int[] LayerToPauseOn() - { - string[] userValues = GetValue("layer_to_pause").Split(';'); - - int temp; - return userValues.Where(v => int.TryParse(v, out temp)).Select(v => - { - //Convert from 0 based index to 1 based index - int val = int.Parse(v); - - // Special case for user entered zero that pushes 0 to 1, otherwise val = val - 1 for 1 based index - return val == 0 ? 1 : val - 1; - }).ToArray(); - } - - private static double ParseDouble(string firstLayerValueString) - { - double firstLayerValue; - if (!double.TryParse(firstLayerValueString, out firstLayerValue)) - { - throw new Exception(string.Format("Format cannot be parsed. FirstLayerHeight '{0}'", firstLayerValueString)); - } - return firstLayerValue; - } - - public Vector2 ExtruderOffset(int extruderIndex) - { - string currentOffsets = GetValue("extruder_offset"); - string[] offsets = currentOffsets.Split(','); - int count = 0; - foreach (string offset in offsets) - { - if (count == extruderIndex) - { - string[] xy = offset.Split('x'); - return new Vector2(double.Parse(xy[0]), double.Parse(xy[1])); - } - count++; - } - - return Vector2.Zero; - } - - private PrintLevelingData printLevelingData = null; - public PrintLevelingData GetPrintLevelingData() - { - if (printLevelingData == null) - { - printLevelingData = PrintLevelingData.Create( - ActiveSliceSettings.Instance, - layeredProfile.GetValue("print_leveling_data"), - layeredProfile.GetValue("MatterControl.PrintLevelingProbePositions")); - - PrintLevelingPlane.Instance.SetPrintLevelingEquation( - printLevelingData.SampledPosition0, - printLevelingData.SampledPosition1, - printLevelingData.SampledPosition2, - ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)); - } - - return printLevelingData; - } - - public void SetPrintLevelingData(PrintLevelingData data) - { - printLevelingData = data; - layeredProfile.SetValue("print_leveling_data", JsonConvert.SerializeObject(data)); - - } - - public void DoPrintLeveling(bool doLeveling) - { - // Early exit if already set - if (doLeveling == this.GetValue("print_leveling_enabled")) - { - return; - } - - layeredProfile.SetValue("print_leveling_enabled", doLeveling ? "1" : "0"); - - DoPrintLevelingChanged.CallEvents(this, null); - - if (doLeveling) - { - PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); - PrintLevelingPlane.Instance.SetPrintLevelingEquation( - levelingData.SampledPosition0, - levelingData.SampledPosition1, - levelingData.SampledPosition2, - ActiveSliceSettings.Instance.GetValue(SettingsKey.print_center)); - } - } - - private static readonly SlicingEngineTypes defaultEngineType = SlicingEngineTypes.MatterSlice; - - public SlicingEngineTypes ActiveSliceEngineType() - { - string engineType = layeredProfile.GetValue("slicing_engine"); - if (string.IsNullOrEmpty(engineType)) - { - return defaultEngineType; - } - - var engine = (SlicingEngineTypes)Enum.Parse(typeof(SlicingEngineTypes), engineType); - return engine; - } - - public void ActiveSliceEngineType(SlicingEngineTypes type) - { - SetActiveValue("slicing_engine", type.ToString()); - } - - public SliceEngineMapping ActiveSliceEngine() - { - switch (ActiveSliceEngineType()) - { - case SlicingEngineTypes.CuraEngine: - return EngineMappingCura.Instance; - - case SlicingEngineTypes.MatterSlice: - return EngineMappingsMatterSlice.Instance; - - case SlicingEngineTypes.Slic3r: - return Slic3rEngineMappings.Instance; - - default: - return null; - } - } - #region Migrate to LayeredProfile static Dictionary expectedMappingTypes = new Dictionary() @@ -482,8 +614,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration throw new Exception(string.Format("Not parsing {0} as a Vector2", settingsKey)); } Vector2 valueAsVector2 = new Vector2(); - valueAsVector2.x = ParseDouble(twoValues[0]); - valueAsVector2.y = ParseDouble(twoValues[1]); + valueAsVector2.x = Helpers.ParseDouble(twoValues[0]); + valueAsVector2.y = Helpers.ParseDouble(twoValues[1]); return (T)(object)(valueAsVector2); } else if (typeof(T) == typeof(double)) @@ -492,7 +624,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (settingsStringh.Contains("%")) { string onlyNumber = settingsStringh.Replace("%", ""); - double ratio = ParseDouble(onlyNumber) / 100; + double ratio = Helpers.ParseDouble(onlyNumber) / 100; if (settingsKey == SettingsKey.first_layer_height) { @@ -568,37 +700,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } - public void ExportAsMatterControlConfig() - { - FileDialog.SaveFileDialog( - new SaveFileDialogParams("MatterControl Printer Export|*.printer", title: "Export Printer Settings"), - (saveParams) => - { - File.WriteAllText(saveParams.FileName, JsonConvert.SerializeObject(layeredProfile, Formatting.Indented)); - }); - } - - public void ExportAsSlic3rConfig() - { - FileDialog.SaveFileDialog( - new SaveFileDialogParams("Save Slice Configuration".Localize() + "|*." + configFileExtension) - { - FileName = "default_settings.ini" - }, - (saveParams) => - { - if (!string.IsNullOrEmpty(saveParams.FileName)) - { - GenerateConfigFile(saveParams.FileName, false); - } - }); - } - - public void ExportAsCuraConfig() - { - throw new NotImplementedException(); - } - public long GetLongHashCode() { var bigStringForHashCode = new StringBuilder(); @@ -619,23 +720,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return agg_basics.ComputeHash(bigStringForHashCode.ToString()); } - public void GenerateConfigFile(string fileName, bool replaceMacroValues) - { - using (var outstream = new StreamWriter(fileName)) - { - foreach (var key in this.KnownSettings.Where(k => !k.StartsWith("MatterControl."))) - { - string activeValue = GetValue(key); - if (replaceMacroValues) - { - activeValue = GCodeProcessing.ReplaceMacroValues(activeValue); - } - outstream.Write(string.Format("{0} = {1}\n", key, activeValue)); - activeValue = GCodeProcessing.ReplaceMacroValues(activeValue); - } - } - } - public bool IsValid() { try @@ -793,7 +877,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } if (!valueWasNumber - || (ActiveSliceSettings.Instance.ActiveSliceEngine().MapContains(speedSetting) + || (ActiveSliceSettings.Instance.Helpers.ActiveSliceEngine().MapContains(speedSetting) && speedToCheck <= 0)) { SliceSettingData data = SliceSettingsOrganizer.Instance.GetSettingsData(speedSetting); @@ -808,132 +892,17 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return true; } - public Vector3 ManualMovementSpeeds() - { - Vector3 feedRate = new Vector3(3000, 3000, 315); - - string savedSettings = ActiveSliceSettings.Instance.GetValue("manual_movement_speeds"); - if (!string.IsNullOrEmpty(savedSettings)) - { - var segments = savedSettings.Split(','); - feedRate.x = double.Parse(segments[1]); - feedRate.y = double.Parse(segments[3]); - feedRate.z = double.Parse(segments[5]); - } - - return feedRate; - } - - public Dictionary GetMovementSpeeds() - { - Dictionary speeds = new Dictionary(); - string movementSpeedsString = GetMovementSpeedsString(); - string[] allSpeeds = movementSpeedsString.Split(','); - for (int i = 0; i < allSpeeds.Length / 2; i++) - { - speeds.Add(allSpeeds[i * 2 + 0], double.Parse(allSpeeds[i * 2 + 1])); - } - - return speeds; - } - - public string GetMovementSpeedsString() - { - string presets = "x,3000,y,3000,z,315,e0,150"; // stored x,value,y,value,z,value,e1,value,e2,value,e3,value,... - if (PrinterConnectionAndCommunication.Instance != null) - { - string savedSettings = GetValue("manual_movement_speeds"); - if (!string.IsNullOrEmpty(savedSettings)) - { - presets = savedSettings; - } - } - - return presets; - } - #endregion - public void SetMarkedForDelete(bool markedForDelete) - { - var printerInfo = ProfileManager.Instance.ActiveProfile; - if (printerInfo != null) - { - printerInfo.MarkedForDelete = markedForDelete; - ProfileManager.Instance.Save(); - } - - // Clear selected printer state - UserSettings.Instance.set("ActiveProfileID", ""); - - UiThread.RunOnIdle(() => ActiveSliceSettings.Instance = ProfileManager.LoadEmptyProfile()); - } - - public void SetBaudRate(string baudRate) - { - layeredProfile.SetValue(SettingsKey.baud_rate, baudRate); - } - - public string ComPort() - { - return layeredProfile.GetValue($"{Environment.MachineName}_com_port"); - } - - public void SetComPort(string port) - { - layeredProfile.SetValue($"{Environment.MachineName}_com_port", port); - } - - public void SetComPort(string port, PrinterSettingsLayer layer) - { - layeredProfile.SetValue($"{Environment.MachineName}_com_port", port, layer); - } - - public void SetSlicingEngine(string engine) - { - layeredProfile.SetValue("slicing_engine", engine); - } - - public void SetDriverType(string driver) - { - layeredProfile.SetValue("driver_type", driver); - } - - public void SetDeviceToken(string token) - { - if (layeredProfile.GetValue(SettingsKey.device_token) != token) - { - layeredProfile.SetValue(SettingsKey.device_token, token); - } - } - - public void SetName(string name) - { - layeredProfile.SetValue(SettingsKey.printer_name, name); - } - - HashSet knownSettings = null; - [JsonIgnore] - public HashSet KnownSettings + public static HashSet KnownSettings { get; } = LoadSettingsNamesFromPropertiesJson(); + + private static HashSet LoadSettingsNamesFromPropertiesJson() { - get - { - if (knownSettings == null) - { - string propertiesJson = StaticData.Instance.ReadAllText(Path.Combine("SliceSettings", "Properties.json")); - var settingsData = JArray.Parse(propertiesJson); + string propertiesJson = StaticData.Instance.ReadAllText(Path.Combine("SliceSettings", "Properties.json")); + var settingsData = JArray.Parse(propertiesJson); - knownSettings = new HashSet(settingsData.Select(s => s["SlicerConfigName"].Value())); - } - - return knownSettings; - } - } - - public void SetManualMovementSpeeds(string speed) - { - layeredProfile.SetValue("manual_movement_speeds", speed); + return new HashSet(settingsData.Select(s => s["SlicerConfigName"].Value())); } } diff --git a/SlicerConfiguration/SettingsControlSelectors.cs b/SlicerConfiguration/SettingsControlSelectors.cs index 7b5f494a0..df8f279cd 100644 --- a/SlicerConfiguration/SettingsControlSelectors.cs +++ b/SlicerConfiguration/SettingsControlSelectors.cs @@ -348,15 +348,15 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SlicingEngineTypes itemEngineType = engineMenuItem.GetSliceEngineType(); item.Selected += (sender, e) => { - if (ActiveSliceSettings.Instance.ActiveSliceEngineType() != itemEngineType) + if (ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType() != itemEngineType) { - ActiveSliceSettings.Instance.ActiveSliceEngineType(itemEngineType); + ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType(itemEngineType); ApplicationController.Instance.ReloadAdvancedControlsPanel(); } }; //Set item as selected if it matches the active slice engine - if (engineMenuItem.GetSliceEngineType() == ActiveSliceSettings.Instance.ActiveSliceEngineType()) + if (engineMenuItem.GetSliceEngineType() == ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType()) { SelectedLabel = engineMenuItem.Name; } diff --git a/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs b/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs index 6f2f913fe..6c5dbe689 100644 --- a/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs +++ b/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs @@ -66,7 +66,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private MHTextEditWidget presetNameInput; private string initialPresetName = null; - private string configFileExtension = "slice"; private GuiWidget middleRow; @@ -250,7 +249,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private void SaveAs() { FileDialog.SaveFileDialog( - new SaveFileDialogParams("Save Slice Preset|*." + configFileExtension) + new SaveFileDialogParams("Save Slice Preset|*" + ProfileManager.ConfigFileExtension) { FileName = presetNameInput.Text }, diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index d585bb650..af8f17f24 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -165,7 +165,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration topCategoryTabs.TabBar.AddChild(new HorizontalSpacer()); topCategoryTabs.TabBar.AddChild(sliceSettingsDetailControl); - if (sliceSettingsDetailControl.SelectedValue == "Advanced" && ActiveSliceSettings.Instance.ActiveSliceEngineType() == SlicingEngineTypes.Slic3r) + if (sliceSettingsDetailControl.SelectedValue == "Advanced" && ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType() == SlicingEngineTypes.Slic3r) { TabPage extraSettingsPage = new TabPage("Other"); SimpleTextTabWidget extraSettingsTextTabWidget = new SimpleTextTabWidget(extraSettingsPage, "Other Tab", 16, @@ -366,7 +366,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { bool settingShouldBeShown = CheckIfShouldBeShown(settingData); - if (ActiveSliceSettings.Instance.ActiveSliceEngine().MapContains(settingData.SlicerConfigName) + if (ActiveSliceSettings.Instance.Helpers.ActiveSliceEngine().MapContains(settingData.SlicerConfigName) && settingShouldBeShown) { addedSettingToSubGroup = true; @@ -545,7 +545,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (!SliceSettingsOrganizer.Instance.Contains(UserLevel, keyValue.Key)) { SliceSettingData settingData = new SliceSettingData(keyValue.Key, keyValue.Key, SliceSettingData.DataEditTypes.STRING); - if (ActiveSliceSettings.Instance.ActiveSliceEngine().MapContains(settingData.SlicerConfigName)) + if (ActiveSliceSettings.Instance.Helpers.ActiveSliceEngine().MapContains(settingData.SlicerConfigName)) { bool addControl; GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, layerCascade, persistenceLayer, viewFilter, 0, out addControl, ref tabIndexForItem); @@ -696,7 +696,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { if (doDelete) { - ActiveSliceSettings.Instance.SetMarkedForDelete(true); + ActiveSliceSettings.Instance.Helpers.SetMarkedForDelete(true); } }, "Are you sure you want to delete your currently selected printer?".Localize(), "Delete Printer?".Localize(), StyledMessageBox.MessageType.YES_NO, "Delete Printer".Localize()); }; @@ -758,7 +758,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration settingsRow.AddChild(restoreArea); settingsRow.Name = settingData.SlicerConfigName + " Edit Field"; - if (!ActiveSliceSettings.Instance.KnownSettings.Contains(settingData.SlicerConfigName)) + if (!SettingsProfile.KnownSettings.Contains(settingData.SlicerConfigName)) { // the setting we think we are adding is not in the known settings it may have been deprecated TextWidget settingName = new TextWidget(String.Format("Setting '{0}' not found in known settings", settingData.SlicerConfigName)); @@ -1228,7 +1228,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration settingsRow.ValueChanged = (text) => { // Lookup the machine specific comport value rather than the passed in text value - selectableOptions.SelectedLabel = ActiveSliceSettings.Instance.ComPort(); + selectableOptions.SelectedLabel = ActiveSliceSettings.Instance.Helpers.ComPort(); }; } break; @@ -1379,7 +1379,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration case SliceSettingData.DataEditTypes.OFFSET2: { - Vector2 offset = ActiveSliceSettings.Instance.ExtruderOffset(extruderIndex); + Vector2 offset = ActiveSliceSettings.Instance.Helpers.ExtruderOffset(extruderIndex); var xEditWidget = new MHNumberEdit(offset.x, allowDecimals: true, allowNegatives: true, pixelWidth: vectorXYEditWidth, tabIndex: tabIndexForItem++) { @@ -1430,11 +1430,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration settingsRow.ValueChanged = (text) => { - Vector2 offset2 = ActiveSliceSettings.Instance.ExtruderOffset(extruderIndex); + Vector2 offset2 = ActiveSliceSettings.Instance.Helpers.ExtruderOffset(extruderIndex); xEditWidget.ActuallNumberEdit.Value = offset2.x; yEditWidget.ActuallNumberEdit.Value = offset2.y; }; - } break; @@ -1540,7 +1539,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private static void AddComMenuItems(SliceSettingData settingData, PrinterSettingsLayer persistenceLayer, SettingsRow settingsRow, DropDownList selectableOptions) { selectableOptions.MenuItems.Clear(); - string machineSpecificComPortValue = ActiveSliceSettings.Instance.ComPort(); + string machineSpecificComPortValue = ActiveSliceSettings.Instance.Helpers.ComPort(); foreach (string listItem in FrostedSerialPort.GetPortNames()) { MenuItem newItem = selectableOptions.AddItem(listItem); @@ -1556,11 +1555,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration // Directly set the ComPort if (persistenceLayer == null) { - ActiveSliceSettings.Instance.SetComPort(menuItem.Text); + ActiveSliceSettings.Instance.Helpers.SetComPort(menuItem.Text); } else { - ActiveSliceSettings.Instance.SetComPort(menuItem.Text, persistenceLayer); + ActiveSliceSettings.Instance.Helpers.SetComPort(menuItem.Text, persistenceLayer); } settingsRow.UpdateStyle(); diff --git a/SlicerConfiguration/SlicerMapping/MappingClasses.cs b/SlicerConfiguration/SlicerMapping/MappingClasses.cs index f303a6052..03166dbf1 100644 --- a/SlicerConfiguration/SlicerMapping/MappingClasses.cs +++ b/SlicerConfiguration/SlicerMapping/MappingClasses.cs @@ -212,7 +212,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (extrudersUsed.Count > extruderIndex0Based && extrudersUsed[extruderIndex0Based]) { - string materialTemperature = ActiveSliceSettings.Instance.ExtruderTemperature(extruderIndex0Based); + string materialTemperature = ActiveSliceSettings.Instance.Helpers.ExtruderTemperature(extruderIndex0Based); if (!string.IsNullOrEmpty(materialTemperature) && materialTemperature != "0") { string setTempString = "M104 T{0} S{1}".FormatWith(extruderIndex0Based, materialTemperature); @@ -229,7 +229,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (extrudersUsed.Count > extruderIndex0Based && extrudersUsed[extruderIndex0Based]) { - string materialTemperature = ActiveSliceSettings.Instance.ExtruderTemperature(extruderIndex0Based); + string materialTemperature = ActiveSliceSettings.Instance.Helpers.ExtruderTemperature(extruderIndex0Based); if (!string.IsNullOrEmpty(materialTemperature) && materialTemperature != "0") { string setTempString = "M109 T{0} S{1}".FormatWith(extruderIndex0Based, materialTemperature); @@ -277,7 +277,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (extrudersUsed.Count > extruderIndex0Based && extrudersUsed[extruderIndex0Based]) { - string materialTemperature = ActiveSliceSettings.Instance.ExtruderTemperature(extruderIndex0Based); + string materialTemperature = ActiveSliceSettings.Instance.Helpers.ExtruderTemperature(extruderIndex0Based); if (!string.IsNullOrEmpty(materialTemperature) && materialTemperature != "0") { string setTempString = "M109 T{0} S{1}".FormatWith(extruderIndex0Based, materialTemperature); diff --git a/SlicerConfiguration/SlicingQueue.cs b/SlicerConfiguration/SlicingQueue.cs index bc0b9c689..73c1ab777 100644 --- a/SlicerConfiguration/SlicingQueue.cs +++ b/SlicerConfiguration/SlicingQueue.cs @@ -150,7 +150,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private static string getSlicerFullPath() { - SliceEngineInfo info = getSliceEngineInfoByType(ActiveSliceSettings.Instance.ActiveSliceEngineType()); + SliceEngineInfo info = getSliceEngineInfoByType(ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType()); if (info != null) { return info.GetEnginePath(); @@ -337,7 +337,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PrintItemWrapper itemToSlice = listOfSlicingItems[0]; bool doMergeInSlicer = false; string mergeRules = ""; - doMergeInSlicer = ActiveSliceSettings.Instance.ActiveSliceEngineType() == SlicingEngineTypes.MatterSlice; + doMergeInSlicer = ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType() == SlicingEngineTypes.MatterSlice; string[] stlFileLocations = GetStlFileLocations(itemToSlice.FileLocation, doMergeInSlicer, ref mergeRules); string fileToSlice = stlFileLocations[0]; // check that the STL file is currently on disk @@ -346,7 +346,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration itemToSlice.CurrentlySlicing = true; string currentConfigurationFileAndPath = Path.Combine(ApplicationDataStorage.Instance.GCodeOutputPath, "config_" + ActiveSliceSettings.Instance.GetLongHashCode().ToString() + ".ini"); - ActiveSliceSettings.Instance.GenerateConfigFile(currentConfigurationFileAndPath, true); + ActiveSliceSettings.Instance.Helpers.GenerateConfigFile(currentConfigurationFileAndPath, true); string gcodePathAndFileName = itemToSlice.GetGCodePathAndFileName(); bool gcodeFileIsComplete = itemToSlice.IsGCodeFileComplete(gcodePathAndFileName); @@ -355,7 +355,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { string commandArgs = ""; - switch (ActiveSliceSettings.Instance.ActiveSliceEngineType()) + switch (ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType()) { case SlicingEngineTypes.Slic3r: commandArgs = "--load \"" + currentConfigurationFileAndPath + "\" --output \"" + gcodePathAndFileName + "\" \"" + fileToSlice + "\""; @@ -393,7 +393,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (OsInformation.OperatingSystem == OSType.Android || ((OsInformation.OperatingSystem == OSType.Mac || runInProcess) - && ActiveSliceSettings.Instance.ActiveSliceEngineType() == SlicingEngineTypes.MatterSlice)) + && ActiveSliceSettings.Instance.Helpers.ActiveSliceEngineType() == SlicingEngineTypes.MatterSlice)) { itemCurrentlySlicing = itemToSlice; MatterHackers.MatterSlice.LogOutput.GetLogWrites += SendProgressToItem;