Migrate SettingsProfile functionality to new SettingsHelpers type
- Add as child property of settings scope, ready for merge of types - Progress on Issue #1113
This commit is contained in:
parent
5012556dbc
commit
f304e9f3d6
34 changed files with 432 additions and 464 deletions
|
|
@ -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<bool>("print_leveling_required_to_print")
|
||||
&& !levelingData.HasBeenRun())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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<int>(SettingsKey.extruder_count) > 1 && settings.ActiveSliceEngineType() != SlicingEngineTypes.MatterSlice)
|
||||
if (settings?.GetValue<int>(SettingsKey.extruder_count) > 1 && settings.Helpers.ActiveSliceEngineType() != SlicingEngineTypes.MatterSlice)
|
||||
{
|
||||
settings.ActiveSliceEngineType(SlicingEngineTypes.MatterSlice);
|
||||
settings.Helpers.ActiveSliceEngineType(SlicingEngineTypes.MatterSlice);
|
||||
ApplicationController.Instance.ReloadAll(null, null);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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("")
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling
|
|||
&& lineBeingSent.Length > 2
|
||||
&& lineBeingSent[2] == ' ')
|
||||
{
|
||||
return GetLevelingFunctions(numberOfRadialSamples, settings.GetPrintLevelingData(), ActiveSliceSettings.Instance.GetValue<Vector2>(SettingsKey.print_center))
|
||||
return GetLevelingFunctions(numberOfRadialSamples, settings.Helpers.GetPrintLevelingData(), ActiveSliceSettings.Instance.GetValue<Vector2>(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<Vector2>(SettingsKey.print_center))
|
||||
.GetPrintLevelPositionToSample(index, radius);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Vector2>(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<Vector2>(SettingsKey.print_center))
|
||||
.GetPrintLevelPositionToSample(index, radius);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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<double>("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<double>("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<double>("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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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++)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 "";
|
||||
|
|
|
|||
|
|
@ -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<bool>("print_leveling_required_to_print")
|
||||
|| ActiveSliceSettings.Instance.GetValue<bool>("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<bool>("print_leveling_required_to_print")
|
||||
|| ActiveSliceSettings.Instance.GetValue<bool>("print_leveling_enabled"))
|
||||
{
|
||||
PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData();
|
||||
PrintLevelingData levelingData = ActiveSliceSettings.Instance.Helpers.GetPrintLevelingData();
|
||||
if (levelingData?.HasBeenRun() != true)
|
||||
{
|
||||
UiThread.RunOnIdle(LevelWizardBase.ShowPrintLevelWizard);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
|
|||
{
|
||||
try
|
||||
{
|
||||
ActiveSliceSettings.Instance.SetBaudRate(baudRate);
|
||||
ActiveSliceSettings.Instance.Helpers.SetBaudRate(baudRate);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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++)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(() =>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@
|
|||
</ShowAsAssociation>
|
||||
</Class>
|
||||
<Class Name="MatterHackers.MatterControl.SlicerConfiguration.SettingsProfile">
|
||||
<Position X="4" Y="1" Width="2" />
|
||||
<Position X="4" Y="1" Width="2.75" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>wAAAScAELBAGoAAAMEgCKhUEB4AgEFaACgAJQRAFAAU=</HashCode>
|
||||
<HashCode>gAAASEAEKAACgAAAEEgAAAUEAoAAABYAAgAAAwABAAE=</HashCode>
|
||||
<FileName>SlicerConfiguration\Settings\SettingsProfile.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
|
|
@ -36,8 +36,8 @@
|
|||
<ShowAsAssociation>
|
||||
<Property Name="QualityLayer" />
|
||||
<Property Name="MaterialLayer" />
|
||||
<Property Name="UserLayer" />
|
||||
<Property Name="OemLayer" />
|
||||
<Property Name="UserLayer" />
|
||||
</ShowAsAssociation>
|
||||
</Class>
|
||||
<Class Name="MatterHackers.MatterControl.SlicerConfiguration.PrinterSettingsLayer">
|
||||
|
|
|
|||
|
|
@ -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<Vector2>(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<bool>("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<Vector2>(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<string, double> GetMovementSpeeds()
|
||||
{
|
||||
Dictionary<string, double> speeds = new Dictionary<string, double>();
|
||||
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<string>(userOverrides.Except(this.KnownSettings));
|
||||
var keysToRetain = new HashSet<string>(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<Vector2>(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<bool>("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<Vector2>(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<string, Type> expectedMappingTypes = new Dictionary<string, Type>()
|
||||
|
|
@ -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<string, double> GetMovementSpeeds()
|
||||
{
|
||||
Dictionary<string, double> speeds = new Dictionary<string, double>();
|
||||
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<string> knownSettings = null;
|
||||
|
||||
[JsonIgnore]
|
||||
public HashSet<string> KnownSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
if (knownSettings == null)
|
||||
public static HashSet<string> KnownSettings { get; } = LoadSettingsNamesFromPropertiesJson();
|
||||
|
||||
private static HashSet<string> LoadSettingsNamesFromPropertiesJson()
|
||||
{
|
||||
string propertiesJson = StaticData.Instance.ReadAllText(Path.Combine("SliceSettings", "Properties.json"));
|
||||
var settingsData = JArray.Parse(propertiesJson);
|
||||
|
||||
knownSettings = new HashSet<string>(settingsData.Select(s => s["SlicerConfigName"].Value<string>()));
|
||||
}
|
||||
|
||||
return knownSettings;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetManualMovementSpeeds(string speed)
|
||||
{
|
||||
layeredProfile.SetValue("manual_movement_speeds", speed);
|
||||
return new HashSet<string>(settingsData.Select(s => s["SlicerConfigName"].Value<string>()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue