Moved the slice engine code to ActivePrinterProfile

This commit is contained in:
larsbrubaker 2014-02-14 12:11:26 -08:00
parent 0040895615
commit aa50fd3722
7 changed files with 74 additions and 71 deletions

View file

@ -21,6 +21,9 @@ namespace MatterHackers.MatterControl
{
public class ActivePrinterProfile
{
public enum SlicingEngine { Slic3r, CuraEngine, MatterSlice };
static readonly SlicingEngine defaultEngine = SlicingEngine.Slic3r;
static ActivePrinterProfile globalInstance = null;
public RootedObjectEventHandler ActivePrinterChanged = new RootedObjectEventHandler();
@ -55,6 +58,38 @@ namespace MatterHackers.MatterControl
}
}
public SlicingEngine ActiveSliceEngine
{
get
{
if (ActivePrinter != null)
{
foreach (SlicingEngine engine in SlicingEngine.GetValues(typeof(SlicingEngine)))
{
if (ActivePrinter.CurrentSlicingEngine == engine.ToString())
{
return engine;
}
}
// It is not set in the slice settings, so set it and save it.
ActivePrinter.CurrentSlicingEngine = defaultEngine.ToString();
ActivePrinter.Commit();
}
return defaultEngine;
}
set
{
if (ActiveSliceEngine != value)
{
ActivePrinter.CurrentSlicingEngine = value.ToString();
ActivePrinter.Commit();
}
}
}
public void OnActivePrinterChanged(EventArgs e)
{
ActivePrinterChanged.CallEvents(this, e);

View file

@ -168,10 +168,10 @@ 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 (PrinterCommunication.Instance.ActiveSliceEngine)
switch (ActivePrinterProfile.Instance.ActiveSliceEngine)
{
case PrinterCommunication.SlicingEngine.CuraEngine:
case PrinterCommunication.SlicingEngine.Slic3r:
case ActivePrinterProfile.SlicingEngine.CuraEngine:
case ActivePrinterProfile.SlicingEngine.Slic3r:
if (gcodeFileContents.Contains("filament used ="))
{
gCodeFileIsComplete = true;
@ -193,7 +193,7 @@ namespace MatterHackers.MatterControl.PrintQueue
return FileLocation;
}
string engineString = ((int)PrinterCommunication.Instance.ActiveSliceEngine).ToString();
string engineString = ((int)ActivePrinterProfile.Instance.ActiveSliceEngine).ToString();
string gcodeFileName = this.StlFileHashCode.ToString() + "_" + engineString + "_" + ActiveSliceSettings.Instance.GetHashCode().ToString();
string gcodePathAndFileName = Path.Combine(DataStorage.ApplicationDataStorage.Instance.GCodeOutputPath, gcodeFileName + ".gcode");

View file

@ -341,39 +341,6 @@ namespace MatterHackers.MatterControl
}
}
public enum SlicingEngine { Slic3r, CuraEngine, MatterSlice };
static readonly SlicingEngine defaultEngine = SlicingEngine.Slic3r;
public SlicingEngine ActiveSliceEngine
{
get
{
if (ActivePrinter != null)
{
foreach (SlicingEngine engine in SlicingEngine.GetValues(typeof(SlicingEngine)))
{
if (ActivePrinter.CurrentSlicingEngine == engine.ToString())
{
return engine;
}
}
// It is not set in the slice settings, so set it and save it.
ActivePrinter.CurrentSlicingEngine = defaultEngine.ToString();
ActivePrinter.Commit();
}
return defaultEngine;
}
set
{
if (ActiveSliceEngine != value)
{
ActivePrinter.CurrentSlicingEngine = value.ToString();
ActivePrinter.Commit();
}
}
}
private Printer ActivePrinter
{
get

View file

@ -204,7 +204,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
string defaultSliceEngine;
if (settingsDict.TryGetValue("default_slice_engine", out defaultSliceEngine))
{
if (Enum.IsDefined(typeof(PrinterCommunication.SlicingEngine), defaultSliceEngine))
if (Enum.IsDefined(typeof(ActivePrinterProfile.SlicingEngine), defaultSliceEngine))
{
ActivePrinter.CurrentSlicingEngine = defaultSliceEngine;
}

View file

@ -135,30 +135,30 @@ namespace MatterHackers.MatterControl
StyledDropDownList engineMenuDropList = new StyledDropDownList("Engine ");
engineMenuDropList.Margin = new BorderDouble(top: 3, left:0);
{
MenuItem slic3rMenuItem = engineMenuDropList.AddItem(PrinterCommunication.SlicingEngine.Slic3r.ToString());
MenuItem slic3rMenuItem = engineMenuDropList.AddItem(ActivePrinterProfile.SlicingEngine.Slic3r.ToString());
slic3rMenuItem.Selected += (sender, e) =>
{
PrinterCommunication.Instance.ActiveSliceEngine = PrinterCommunication.SlicingEngine.Slic3r;
ActivePrinterProfile.Instance.ActiveSliceEngine = ActivePrinterProfile.SlicingEngine.Slic3r;
MainSlidePanel.Instance.ReloadBackPanel();
};
MenuItem curaEnginMenuItem = engineMenuDropList.AddItem(PrinterCommunication.SlicingEngine.CuraEngine.ToString());
MenuItem curaEnginMenuItem = engineMenuDropList.AddItem(ActivePrinterProfile.SlicingEngine.CuraEngine.ToString());
curaEnginMenuItem.Selected += (sender, e) =>
{
PrinterCommunication.Instance.ActiveSliceEngine = PrinterCommunication.SlicingEngine.CuraEngine;
ActivePrinterProfile.Instance.ActiveSliceEngine = ActivePrinterProfile.SlicingEngine.CuraEngine;
MainSlidePanel.Instance.ReloadBackPanel();
};
#if false
MenuItem matterSliceMenuItem = engineMenuDropList.AddItem(PrinterCommunication.SlicingEngine.MatterSlice.ToString());
MenuItem matterSliceMenuItem = engineMenuDropList.AddItem(ActivePrinterProfile.SlicingEngine.MatterSlice.ToString());
matterSliceMenuItem.Selected += (sender, e) =>
{
PrinterCommunication.Instance.ActiveSliceEngine = PrinterCommunication.SlicingEngine.MatterSlice;
PrinterCommunication.Instance.ActiveSliceEngine = ActivePrinterProfile.SlicingEngine.MatterSlice;
MainSlidePanel.Instance.ReloadBackPanel();
};
#endif
engineMenuDropList.SelectedValue = PrinterCommunication.Instance.ActiveSliceEngine.ToString();
engineMenuDropList.SelectedValue = ActivePrinterProfile.Instance.ActiveSliceEngine.ToString();
}
engineMenuDropList.MinimumSize = new Vector2(engineMenuDropList.LocalBounds.Width, engineMenuDropList.LocalBounds.Height);
return engineMenuDropList;

View file

@ -144,7 +144,7 @@ namespace MatterHackers.MatterControl
categoryPage.AddChild(sideTabs);
}
if(showAllDetails.Checked && PrinterCommunication.Instance.ActiveSliceEngine == PrinterCommunication.SlicingEngine.Slic3r)
if (showAllDetails.Checked && ActivePrinterProfile.Instance.ActiveSliceEngine == ActivePrinterProfile.SlicingEngine.Slic3r)
{
TabPage extraSettingsPage = new TabPage("Other");
SimpleTextTabWidget extraSettingsTextTabWidget = new SimpleTextTabWidget(extraSettingsPage, 16,
@ -295,7 +295,7 @@ namespace MatterHackers.MatterControl
foreach (OrganizerSettingsData settingInfo in subGroup.SettingDataList)
{
if (PrinterCommunication.Instance.ActiveSliceEngine == PrinterCommunication.SlicingEngine.Slic3r
if (ActivePrinterProfile.Instance.ActiveSliceEngine == ActivePrinterProfile.SlicingEngine.Slic3r
|| CuraEngineMappings.MapContains(settingInfo.SlicerConfigName))
{
addedSettingToSubGroup = true;

View file

@ -77,9 +77,9 @@ namespace MatterHackers.MatterControl
switch (MatterHackers.Agg.UI.WindowsFormsAbstract.GetOSType())
{
case Agg.UI.WindowsFormsAbstract.OSType.Windows:
switch (PrinterCommunication.Instance.ActiveSliceEngine)
switch (ActivePrinterProfile.Instance.ActiveSliceEngine)
{
case PrinterCommunication.SlicingEngine.Slic3r:
case ActivePrinterProfile.SlicingEngine.Slic3r:
{
string slic3rRelativePath = Path.Combine("..", "Slic3r", "slic3r.exe");
if (!File.Exists(slic3rRelativePath))
@ -89,7 +89,7 @@ namespace MatterHackers.MatterControl
return System.IO.Path.GetFullPath(slic3rRelativePath);
}
case PrinterCommunication.SlicingEngine.CuraEngine:
case ActivePrinterProfile.SlicingEngine.CuraEngine:
{
string curaEngineRelativePath = Path.Combine("..", "CuraEngine.exe");
if (!File.Exists(curaEngineRelativePath))
@ -99,7 +99,7 @@ namespace MatterHackers.MatterControl
return System.IO.Path.GetFullPath(curaEngineRelativePath);
}
case PrinterCommunication.SlicingEngine.MatterSlice:
case ActivePrinterProfile.SlicingEngine.MatterSlice:
{
string materSliceRelativePath = Path.Combine(".", "MatterSlice.exe");
return System.IO.Path.GetFullPath(materSliceRelativePath);
@ -109,23 +109,24 @@ namespace MatterHackers.MatterControl
throw new NotImplementedException();
}
case Agg.UI.WindowsFormsAbstract.OSType.Mac:
switch (PrinterCommunication.Instance.ActiveSliceEngine) {
case PrinterCommunication.SlicingEngine.Slic3r:
{
//string parentLocation = Directory.GetParent (ApplicationDataStorage.Instance.ApplicationPath).ToString ();
string applicationPath = System.IO.Path.Combine (ApplicationDataStorage.Instance.ApplicationPath, "Slic3r.app", "Contents", "MacOS", "slic3r");
return applicationPath;
}
case PrinterCommunication.SlicingEngine.CuraEngine:
{
string applicationPath = System.IO.Path.Combine (ApplicationDataStorage.Instance.ApplicationPath, "CuraEngine");
return applicationPath;
}
case Agg.UI.WindowsFormsAbstract.OSType.Mac:
switch (ActivePrinterProfile.Instance.ActiveSliceEngine)
{
case ActivePrinterProfile.SlicingEngine.Slic3r:
{
//string parentLocation = Directory.GetParent (ApplicationDataStorage.Instance.ApplicationPath).ToString ();
string applicationPath = System.IO.Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "Slic3r.app", "Contents", "MacOS", "slic3r");
return applicationPath;
}
case ActivePrinterProfile.SlicingEngine.CuraEngine:
{
string applicationPath = System.IO.Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "CuraEngine");
return applicationPath;
}
default:
throw new NotImplementedException ();
}
default:
throw new NotImplementedException();
}
default:
throw new NotImplementedException();
@ -152,18 +153,18 @@ namespace MatterHackers.MatterControl
{
slicerProcess = new Process();
switch (PrinterCommunication.Instance.ActiveSliceEngine)
switch (ActivePrinterProfile.Instance.ActiveSliceEngine)
{
case PrinterCommunication.SlicingEngine.Slic3r:
case ActivePrinterProfile.SlicingEngine.Slic3r:
slicerProcess.StartInfo.Arguments = "--load \"" + currentConfigurationFileAndPath + "\" --output \"" + gcodePathAndFileName + "\" \"" + itemToSlice.PartToSlicePathAndFileName + "\"";
break;
case PrinterCommunication.SlicingEngine.CuraEngine:
case ActivePrinterProfile.SlicingEngine.CuraEngine:
slicerProcess.StartInfo.Arguments = "-v -o \"" + gcodePathAndFileName + "\" " + CuraEngineMappings.GetCuraCommandLineSettings() + " \"" + itemToSlice.PartToSlicePathAndFileName + "\"";
//Debug.Write(slicerProcess.StartInfo.Arguments);
break;
case PrinterCommunication.SlicingEngine.MatterSlice:
case ActivePrinterProfile.SlicingEngine.MatterSlice:
slicerProcess.StartInfo.Arguments = "--load \"" + currentConfigurationFileAndPath + "\" --output \"" + gcodePathAndFileName + "\" \"" + itemToSlice.PartToSlicePathAndFileName + "\"";
break;
}