From ac51976f38c051adcd77e25e85822ef4423779f3 Mon Sep 17 00:00:00 2001 From: jlewin Date: Mon, 18 Mar 2019 16:31:41 -0700 Subject: [PATCH 1/2] Remove classic export warning message - Issue MatterHackers/MCCentral#5158 Export Error --- MatterControlLib/Library/Export/GCodeExport.cs | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/MatterControlLib/Library/Export/GCodeExport.cs b/MatterControlLib/Library/Export/GCodeExport.cs index db27d88ec..bdffe3813 100644 --- a/MatterControlLib/Library/Export/GCodeExport.cs +++ b/MatterControlLib/Library/Export/GCodeExport.cs @@ -245,24 +245,14 @@ namespace MatterHackers.MatterControl.Library.Export if (File.Exists(gcodePath)) { ApplyStreamPipelineAndExport(gcodePath, outputPath); - - // last let's check if there is any support in the scene and if it looks like it is needed - var supportGenerator = new SupportGenerator(printer.Bed.Scene); - if (supportGenerator.RequiresSupport()) - { - UiThread.RunOnIdle(() => - { - var warning = "Some of the parts appear to require support. Consider adding support and re-exporting to get the best results possible.".Localize(); - StyledMessageBox.ShowMessageBox(warning, "Warning: Support Required".Localize()); - }); - } - return errors; } } catch { } + + return new List(); } } From 828660384af67fb1a8b6439f8ef032217ac77fbe Mon Sep 17 00:00:00 2001 From: jlewin Date: Mon, 18 Mar 2019 18:06:10 -0700 Subject: [PATCH 2/2] Conditionally enable Export based on validation results - Show validation errors early - Don't show Generate errors for GCode Export - Issue MatterHackers/MCCentral#5158 Export Error - Issue MatterHackers/MCCentral#5170 MatterControl Resets Pulse with Flow Sensor Firmware --- .../CustomWidgets/ExportPrintItemPage.cs | 56 +++++++++++++++++-- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/MatterControlLib/CustomWidgets/ExportPrintItemPage.cs b/MatterControlLib/CustomWidgets/ExportPrintItemPage.cs index 68473071a..1f8e6181c 100644 --- a/MatterControlLib/CustomWidgets/ExportPrintItemPage.cs +++ b/MatterControlLib/CustomWidgets/ExportPrintItemPage.cs @@ -39,6 +39,7 @@ using MatterHackers.Localizations; using MatterHackers.MatterControl.CustomWidgets; using MatterHackers.MatterControl.Library; using MatterHackers.MatterControl.Library.Export; +using MatterHackers.MatterControl.PartPreviewWindow; namespace MatterHackers.MatterControl { @@ -49,7 +50,8 @@ namespace MatterHackers.MatterControl private Dictionary exportPluginButtons; private IEnumerable libraryItems; - bool centerOnBed; + private bool centerOnBed; + private FlowLayoutWidget validationPanel; public ExportPrintItemPage(IEnumerable libraryItems, bool centerOnBed, PrinterConfig printer) { @@ -64,6 +66,14 @@ namespace MatterHackers.MatterControl bool isFirstItem = true; + // Must be constructed before plugins are initialized + var exportButton = theme.CreateDialogButton("Export".Localize()); + validationPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) + { + HAnchor = HAnchor.Stretch, + VAnchor = VAnchor.Fit + }; + // GCode export exportPluginButtons = new Dictionary(); @@ -105,6 +115,34 @@ namespace MatterHackers.MatterControl }; contentRow.AddChild(pluginButton); + if (plugin is GCodeExport) + { + var gcodeExportButton = pluginButton; + gcodeExportButton.CheckedStateChanged += (s, e) => + { + validationPanel.CloseAllChildren(); + + if (gcodeExportButton.Checked) + { + var errors = printer.ValidateSettings(); + + exportButton.Enabled = !errors.Any(item => item.ErrorLevel == ValidationErrorLevel.Error); + + validationPanel.AddChild( + new ValidationErrorsPanel( + errors, + AppContext.Theme) + { + HAnchor = HAnchor.Stretch + }); + } + else + { + exportButton.Enabled = true; + } + }; + } + if (isFirstItem) { pluginButton.Checked = true; @@ -122,10 +160,12 @@ namespace MatterHackers.MatterControl } } + exportPluginButtons.Add(pluginButton, plugin); } - contentRow.AddChild(new VerticalSpacer()); + ContentRow.AddChild(new VerticalSpacer()); + contentRow.AddChild(validationPanel); // TODO: make this work on the mac and then delete this if if (AggContext.OperatingSystem == OSType.Windows @@ -139,7 +179,6 @@ namespace MatterHackers.MatterControl contentRow.AddChild(showInFolderAfterSave); } - var exportButton = theme.CreateDialogButton("Export".Localize()); exportButton.Name = "Export Button"; exportButton.Click += (s, e) => { @@ -234,6 +273,7 @@ namespace MatterHackers.MatterControl { gCodeExport.CenterOnBed = centerOnBed; } + exportErrors = await activePlugin.Generate(libraryItems, savePath, reporter, cancellationToken); } @@ -241,9 +281,15 @@ namespace MatterHackers.MatterControl { ShowFileIfRequested(savePath); } - else + else { - ApplicationController.Instance.ShowValidationErrors("Export Error".Localize(), exportErrors); + bool showGenerateErrors = !(activePlugin is GCodeExport); + + // Only show errors in Generate if not GCodeExport - GCodeExport shows validation errors before Generate call + if (showGenerateErrors) + { + ApplicationController.Instance.ShowValidationErrors("Export Error".Localize(), exportErrors); + } } }); }