diff --git a/ActionBar/TemperatureWidgetBed.cs b/ActionBar/TemperatureWidgetBed.cs index 3f38fb3c4..30793f4de 100644 --- a/ActionBar/TemperatureWidgetBed.cs +++ b/ActionBar/TemperatureWidgetBed.cs @@ -86,7 +86,7 @@ namespace MatterHackers.MatterControl.ActionBar protected override void SetTargetTemperature() { - double targetTemp = ActiveSliceSettings.Instance.BedTemperature(); + double targetTemp = ActiveSliceSettings.Instance.GetValue(SettingsKey.bed_temperature); if (targetTemp != 0) { double goalTemp = (int)(targetTemp + .5); diff --git a/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs b/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs index 47331d016..996fd7a27 100644 --- a/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs +++ b/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs @@ -402,7 +402,7 @@ 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?.ExtruderCount() > 1 && settings.ActiveSliceEngineType() != SlicingEngineTypes.MatterSlice) + if (settings?.GetValue(SettingsKey.extruder_count) > 1 && settings.ActiveSliceEngineType() != SlicingEngineTypes.MatterSlice) { settings.ActiveSliceEngineType(SlicingEngineTypes.MatterSlice); ApplicationController.Instance.ReloadAll(null, null); diff --git a/PartPreviewWindow/View3D/View3DWidget.cs b/PartPreviewWindow/View3D/View3DWidget.cs index 7541763e0..1b5c2740a 100644 --- a/PartPreviewWindow/View3D/View3DWidget.cs +++ b/PartPreviewWindow/View3D/View3DWidget.cs @@ -1064,7 +1064,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void AddMaterialControls(FlowLayoutWidget buttonPanel) { extruderButtons.Clear(); - for (int extruderIndex = 0; extruderIndex < ActiveSliceSettings.Instance.ExtruderCount(); extruderIndex++) + for (int extruderIndex = 0; extruderIndex < ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); extruderIndex++) { FlowLayoutWidget colorSelectionContainer = new FlowLayoutWidget(FlowDirection.LeftToRight); colorSelectionContainer.HAnchor = HAnchor.ParentLeftRight; @@ -1461,7 +1461,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } // put in the material options - int numberOfExtruders = ActiveSliceSettings.Instance.ExtruderCount(); + int numberOfExtruders = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); expandMaterialOptions = ExpandMenuOptionFactory.GenerateCheckBoxButton("Materials".Localize().ToUpper(), StaticData.Instance.LoadIcon("icon_arrow_right_no_border_32x32.png", 32, 32).InvertLightness()); expandMaterialOptions.Margin = new BorderDouble(bottom: 2); diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index 26db5fa37..73caf6045 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -646,7 +646,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } // put in a simulate extrusion checkbox - if (ActiveSliceSettings.Instance.ExtruderCount() > 1) + if (ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count) > 1) { CheckBox hideExtruderOffsets = new CheckBox("Hide Offsets", textColor: ActiveTheme.Instance.PrimaryTextColor); hideExtruderOffsets.Checked = gcodeViewWidget.HideExtruderOffsets; diff --git a/PrinterCommunication/PrinterConnectionAndCommunication.cs b/PrinterCommunication/PrinterConnectionAndCommunication.cs index 72c9ea479..b95965472 100644 --- a/PrinterCommunication/PrinterConnectionAndCommunication.cs +++ b/PrinterCommunication/PrinterConnectionAndCommunication.cs @@ -2800,7 +2800,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication private void TurnOffBedAndExtruders() { - for (int i = 0; i < ActiveSliceSettings.Instance.ExtruderCount(); i++) + for (int i = 0; i < ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); i++) { SetTargetExtruderTemperature(i, 0); } diff --git a/PrinterControls/ControlWidgets/TemperatureControls.cs b/PrinterControls/ControlWidgets/TemperatureControls.cs index f7b22234e..bda4a1c04 100644 --- a/PrinterControls/ControlWidgets/TemperatureControls.cs +++ b/PrinterControls/ControlWidgets/TemperatureControls.cs @@ -24,7 +24,7 @@ namespace MatterHackers.MatterControl.PrinterControls temperatureGroupBox.AddChild(mainContainer); RGBA_Bytes separatorLineColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryTextColor, 100); - int numberOfHeatedExtruders = ActiveSliceSettings.Instance.ExtruderCount(); + int numberOfHeatedExtruders = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); if (numberOfHeatedExtruders > 1) { for (int i = 0; i < numberOfHeatedExtruders; i++) diff --git a/PrinterControls/TemperatureIndicator.cs b/PrinterControls/TemperatureIndicator.cs index 94ebd086a..6cc7e6afb 100644 --- a/PrinterControls/TemperatureIndicator.cs +++ b/PrinterControls/TemperatureIndicator.cs @@ -601,7 +601,7 @@ namespace MatterHackers.MatterControl protected override double GetPreheatTemperature() { - return ActiveSliceSettings.Instance.BedTemperature(); + return ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); } protected override double GetActualTemperature() diff --git a/PrinterControls/XYZJogControls.cs b/PrinterControls/XYZJogControls.cs index fa4d3369b..e7a0cdb65 100644 --- a/PrinterControls/XYZJogControls.cs +++ b/PrinterControls/XYZJogControls.cs @@ -412,7 +412,7 @@ namespace MatterHackers.MatterControl private FlowLayoutWidget CreateEButtons(double buttonSeparationDistance) { - int extruderCount = ActiveSliceSettings.Instance.ExtruderCount(); + int extruderCount = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); FlowLayoutWidget eButtons = new FlowLayoutWidget(FlowDirection.TopToBottom); { diff --git a/SlicerConfiguration/Settings/SettingsProfile.cs b/SlicerConfiguration/Settings/SettingsProfile.cs index 3e752df64..4d9eafb38 100644 --- a/SlicerConfiguration/Settings/SettingsProfile.cs +++ b/SlicerConfiguration/Settings/SettingsProfile.cs @@ -59,6 +59,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration z_homes_to_max, nozzle_diameter, min_fan_speed, + extruder_count, + extruders_share_temperature, }; public class SettingsProfile @@ -291,23 +293,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return firstLayerValue; } - public int ExtruderCount() - { - if (this.GetValue("extruders_share_temperature")) - { - return 1; - } - - int extruderCount; - string extruderCountString = GetValue("extruder_count"); - if (!int.TryParse(extruderCountString, out extruderCount)) - { - return 1; - } - - return extruderCount; - } - public Vector2 ExtruderOffset(int extruderIndex) { string currentOffsets = GetValue("extruder_offset"); @@ -429,6 +414,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } else if (typeof(T) == typeof(int)) { + if (settingsKey == SettingsKey.extruder_count.ToString() + && this.GetValue(SettingsKey.extruders_share_temperature)) + { + return (T)(object)1; + } + int result; int.TryParse(this.GetValue(settingsKey), out result); return (T)(object)(result); @@ -696,10 +687,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return false; } - if (ExtruderCount() < 1) + if (GetValue(SettingsKey.extruder_count) < 1) { string error = "The Extruder Count must be at least 1.".Localize(); - string details = string.Format("It is currently set to {0}.".Localize(), ExtruderCount()); + string details = string.Format("It is currently set to {0}.".Localize(), GetValue(SettingsKey.extruder_count)); string location = "Location: 'Settings & Controls' -> 'Settings' -> 'Printer' -> 'Features'".Localize(); StyledMessageBox.ShowMessageBox(null, string.Format("{0}\n\n{1}\n\n{2}", error, details, location), "Slice Error".Localize()); return false; diff --git a/SlicerConfiguration/SettingsControlBar.cs b/SlicerConfiguration/SettingsControlBar.cs index 123b35f96..55a85d9f8 100644 --- a/SlicerConfiguration/SettingsControlBar.cs +++ b/SlicerConfiguration/SettingsControlBar.cs @@ -41,7 +41,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { this.HAnchor = HAnchor.ParentLeftRight; - int numberOfHeatedExtruders = ActiveSliceSettings.Instance.ExtruderCount(); + int numberOfHeatedExtruders = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); this.AddChild(new PresetSelectorWidget("Quality".Localize(), RGBA_Bytes.Yellow, NamedSettingsLayers.Quality, 0)); this.AddChild(new GuiWidget(8, 0)); diff --git a/SlicerConfiguration/SettingsControlSelectors.cs b/SlicerConfiguration/SettingsControlSelectors.cs index 1a139d3fc..a9e5f9a41 100644 --- a/SlicerConfiguration/SettingsControlSelectors.cs +++ b/SlicerConfiguration/SettingsControlSelectors.cs @@ -288,7 +288,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration foreach (SliceEngineInfo engineMenuItem in SlicingQueue.AvailableSliceEngines) { bool engineAllowed = true; - if (ActiveSliceSettings.Instance.ExtruderCount() > 1 && engineMenuItem.Name != "MatterSlice") + if (ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count) > 1 && engineMenuItem.Name != "MatterSlice") { engineAllowed = false; } diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index 4559e7231..ae130e3e6 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -356,7 +356,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (subGroup.Name == "Extruder X") { - numberOfCopies = ActiveSliceSettings.Instance.ExtruderCount(); + numberOfCopies = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); } for (int copyIndex = 0; copyIndex < numberOfCopies; copyIndex++) diff --git a/SlicerConfiguration/SlicerMapping/MappingClasses.cs b/SlicerConfiguration/SlicerMapping/MappingClasses.cs index f1898aa6e..9eacc0731 100644 --- a/SlicerConfiguration/SlicerMapping/MappingClasses.cs +++ b/SlicerConfiguration/SlicerMapping/MappingClasses.cs @@ -168,14 +168,14 @@ namespace MatterHackers.MatterControl.SlicerConfiguration preStartGCode.Add("; automatic settings before start_gcode"); AddDefaultIfNotPresent(preStartGCode, "G21", preStartGCodeLines, "set units to millimeters"); AddDefaultIfNotPresent(preStartGCode, "M107", preStartGCodeLines, "fan off"); - double bed_temperature = ActiveSliceSettings.Instance.BedTemperature(); + double bed_temperature = ActiveSliceSettings.Instance.GetValue(SettingsKey.bed_temperature); if (bed_temperature > 0) { string setBedTempString = string.Format("M190 S{0}", bed_temperature); AddDefaultIfNotPresent(preStartGCode, setBedTempString, preStartGCodeLines, "wait for bed temperature to be reached"); } - int numberOfHeatedExtruders = ActiveSliceSettings.Instance.ExtruderCount(); + int numberOfHeatedExtruders = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); // Start heating all the extruder that we are going to use. for (int extruderIndex0Based = 0; extruderIndex0Based < numberOfHeatedExtruders; extruderIndex0Based++) @@ -238,7 +238,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration List postStartGCode = new List(); postStartGCode.Add("; automatic settings after start_gcode"); - int numberOfHeatedExtruders = ActiveSliceSettings.Instance.ExtruderCount(); + int numberOfHeatedExtruders = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); // don't set the extruders to heating if we already waited for them to reach temp if (ActiveSliceSettings.Instance.GetValue("heat_extruder_before_homing") != "1") diff --git a/SlicerConfiguration/SlicingQueue.cs b/SlicerConfiguration/SlicingQueue.cs index 160bb61d5..bc0b9c689 100644 --- a/SlicerConfiguration/SlicingQueue.cs +++ b/SlicerConfiguration/SlicingQueue.cs @@ -168,7 +168,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { extrudersUsed.Clear(); - int extruderCount = ActiveSliceSettings.Instance.ExtruderCount(); + int extruderCount = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); for (int extruderIndex = 0; extruderIndex < extruderCount; extruderIndex++) { extrudersUsed.Add(false); @@ -179,7 +179,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { if (ActiveSliceSettings.Instance.GetValue("support_material_extruder") != 0) { - int supportExtruder = Math.Max(0, Math.Min(ActiveSliceSettings.Instance.ExtruderCount() - 1, ActiveSliceSettings.Instance.GetValue("support_material_extruder") - 1)); + int supportExtruder = Math.Max(0, Math.Min(ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count) - 1, ActiveSliceSettings.Instance.GetValue("support_material_extruder") - 1)); extrudersUsed[supportExtruder] = true; } } @@ -189,7 +189,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { if (ActiveSliceSettings.Instance.GetValue("raft_extruder") != 0) { - int raftExtruder = Math.Max(0, Math.Min(ActiveSliceSettings.Instance.ExtruderCount() - 1, ActiveSliceSettings.Instance.GetValue("raft_extruder") - 1)); + int raftExtruder = Math.Max(0, Math.Min(ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count) - 1, ActiveSliceSettings.Instance.GetValue("raft_extruder") - 1)); extrudersUsed[raftExtruder] = true; } }