Merge remote-tracking branch 'origin/1.5.1'

Conflicts:
	CustomWidgets/ExportPrintItemWindow.cs
This commit is contained in:
Lars Brubaker 2016-03-17 12:00:23 -07:00
commit eb1e954ca6
2 changed files with 73 additions and 117 deletions

View file

@ -128,68 +128,63 @@ namespace MatterHackers.MatterControl
});
middleRowContainer.AddChild(exportGCode);
PluginFinder<ExportGcodePlugin> exportPluginFinder = new PluginFinder<ExportGcodePlugin>();
foreach (ExportGcodePlugin plugin in exportPluginFinder.Plugins)
{
//Create export button for each Plugin found
PluginFinder<ExportGcodePlugin> exportPluginFinder = new PluginFinder<ExportGcodePlugin>();
string exportButtonText = plugin.getButtonText().Localize();
Button exportButton = textImageButtonFactory.Generate(exportButtonText);
exportButton.HAnchor = HAnchor.ParentLeft;
exportButton.Cursor = Cursors.Hand;
exportButton.Click += new EventHandler((object sender, EventArgs e) =>
{
SaveFileDialogParams saveParams = new SaveFileDialogParams(plugin.getExtensionFilter(), title: plugin.getButtonText());
saveParams.FileName = printItemWrapper.Name;
saveParams.Title = "MatterControl: Export File";
saveParams.ActionButtonLabel = "Export";
FileDialog.SaveFileDialog(saveParams, delegate(SaveFileDialogParams saveParam)
{
string extension = Path.GetExtension(saveParam.FileName);
if (extension == "")
{
saveParam.FileName += plugin.getFileExtension();
}
if (partIsGCode)
{
Close();
plugin.generate(printItemWrapper.FileLocation, saveParam.FileName);
}
else
{
Close();
SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper);
printItemWrapper.SlicingDone += new EventHandler((object slicingCompleteSender, EventArgs slicingEventArgs) =>
{
PrintItemWrapper sliceItem = (PrintItemWrapper)slicingCompleteSender;
if (File.Exists(sliceItem.GetGCodePathAndFileName()))
{
plugin.generate(sliceItem.GetGCodePathAndFileName(), saveParam.FileName);
}
});//End SlicingDone Event handler
}
});//End SaveFileDialog delegate
});//End Click Event handler
middleRowContainer.AddChild(exportButton);
}
//bool showExportX3GButton = ActivePrinterProfile.Instance.ActivePrinter.DriverType == "X3G";
bool showExportX3GButton = false;
if (showExportX3GButton)
foreach (ExportGcodePlugin plugin in exportPluginFinder.Plugins)
{
string exportAsX3GText = "Export as X3G".Localize();
Button exportAsX3G = textImageButtonFactory.Generate(exportAsX3GText);
exportAsX3G.HAnchor = HAnchor.ParentLeft;
exportAsX3G.Cursor = Cursors.Hand;
exportAsX3G.Click += new EventHandler((object sender, EventArgs e) =>
//Create export button for each Plugin found
string exportButtonText = plugin.GetButtonText().Localize();
Button exportButton = textImageButtonFactory.Generate(exportButtonText);
exportButton.HAnchor = HAnchor.ParentLeft;
exportButton.Cursor = Cursors.Hand;
exportButton.Click += (object sender, EventArgs e) =>
{
UiThread.RunOnIdle(() =>
{
UiThread.RunOnIdle(ExportX3G_Click);
// Close the export window
Close();
// Open a SaveFileDialog. If Save is clicked, slice the part if needed and pass the plugin the
// path to the gcode file and the target save path
FileDialog.SaveFileDialog(
new SaveFileDialogParams(plugin.GetExtensionFilter())
{
Title = "MatterControl: Export File",
FileName = printItemWrapper.Name,
ActionButtonLabel = "Export"
},
(SaveFileDialogParams saveParam) =>
{
string extension = Path.GetExtension(saveParam.FileName);
if (extension == "")
{
saveParam.FileName += plugin.GetFileExtension();
}
if (partIsGCode)
{
plugin.Generate(printItemWrapper.FileLocation, saveParam.FileName);
}
else
{
SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper);
printItemWrapper.SlicingDone += (printItem, eventArgs) =>
{
PrintItemWrapper sliceItem = (PrintItemWrapper)printItem;
if (File.Exists(sliceItem.GetGCodePathAndFileName()))
{
plugin.Generate(sliceItem.GetGCodePathAndFileName(), saveParam.FileName);
}
};
}
});
});
middleRowContainer.AddChild(exportAsX3G);
}; // End exportButton Click handler
middleRowContainer.AddChild(exportButton);
}
}
@ -272,7 +267,7 @@ namespace MatterHackers.MatterControl
{
if (!string.IsNullOrEmpty(saveParams.FileName))
{
ExportGcodeCommandLineUtility(saveParams.FileName);
ExportGcodeCommandLineUtility(saveParams.FileName);
}
}
@ -309,42 +304,6 @@ namespace MatterHackers.MatterControl
}
}
private void ExportX3G_Click()
{
SaveFileDialogParams saveParams = new SaveFileDialogParams("Export X3G|*.x3g", title: "Export X3G");
saveParams.Title = "MatterControl: Export File";
saveParams.ActionButtonLabel = "Export";
FileDialog.SaveFileDialog(saveParams, onExportX3gFileSelected);
}
private void onExportX3gFileSelected(SaveFileDialogParams saveParams)
{
if (!string.IsNullOrEmpty(saveParams.FileName))
{
x3gPathAndFilenameToSave = saveParams.FileName;
string extension = Path.GetExtension(x3gPathAndFilenameToSave);
if (extension == "")
{
File.Delete(gcodePathAndFilenameToSave);
x3gPathAndFilenameToSave += ".x3g";
}
string saveExtension = Path.GetExtension(printItemWrapper.FileLocation).ToUpper();
if (MeshFileIo.ValidFileExtensions().Contains(saveExtension))
{
Close();
SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper);
printItemWrapper.SlicingDone += x3gItemSlice_Complete;
}
else if (partIsGCode)
{
Close();
generateX3GfromGcode(printItemWrapper.FileLocation, x3gPathAndFilenameToSave);
}
}
}
private void SaveGCodeToNewLocation(string source, string dest)
{
try
@ -429,7 +388,7 @@ namespace MatterHackers.MatterControl
public override void OnClosed(EventArgs e)
{
printItemWrapper.SlicingDone -= sliceItem_Done;
printItemWrapper.SlicingDone -= sliceItem_Done;
if (unregisterEvents != null)
{
unregisterEvents(this, null);

View file

@ -7,28 +7,25 @@ using System.Threading.Tasks;
namespace MatterHackers.MatterControl.Queue.OptionsMenu
{
public class ExportGcodePlugin : MatterControlPlugin
{
public class ExportGcodePlugin : MatterControlPlugin
{
public virtual string GetButtonText()
{
return "";
}
public virtual string getButtonText()
{
return "";
}
public virtual string GetFileExtension()
{
return "";
}
public virtual string getFileExtension()
{
return "";
}
public virtual string GetExtensionFilter()
{
return "";
}
public virtual string getExtensionFilter()
{
return "";
}
public virtual void generate(string gcodeInputPath, string x3gOutputPath)
{
}
}
public virtual void Generate(string gcodeInputPath, string x3gOutputPath)
{
}
}
}