From 6b5caf0859d76a3f820e5adf67e3e33ab89f5153 Mon Sep 17 00:00:00 2001 From: larsbrubaker Date: Wed, 20 Aug 2014 11:04:43 -0700 Subject: [PATCH 1/2] Put in some debugging for recreating the third panel view. fixed a mem leak in third panel made the first layer show in sync to print Made the current layer show in sync to print --- ApplicationView/CompactSlidePanel.cs | 1 + ApplicationView/WidescreenPanel.cs | 7 ++- PartPreviewWindow/ViewGcodeBasic.cs | 76 ++++++++++++++++------------ 3 files changed, 50 insertions(+), 34 deletions(-) diff --git a/ApplicationView/CompactSlidePanel.cs b/ApplicationView/CompactSlidePanel.cs index 0d329c112..82ff399fa 100644 --- a/ApplicationView/CompactSlidePanel.cs +++ b/ApplicationView/CompactSlidePanel.cs @@ -116,6 +116,7 @@ namespace MatterHackers.MatterControl { this.RightPanel.AddChild(new PrintProgressBar()); ThirdPanelTabView thirdPanelTabView = new ThirdPanelTabView(AdvancedControlsButton_Click, onMouseEnterBoundsPrintQueueLink, onMouseLeaveBoundsPrintQueueLink); + thirdPanelTabView.Name = "For - CompactSlidePanel"; this.RightPanel.AddChild(thirdPanelTabView); } diff --git a/ApplicationView/WidescreenPanel.cs b/ApplicationView/WidescreenPanel.cs index f28241a71..577bd8eb1 100644 --- a/ApplicationView/WidescreenPanel.cs +++ b/ApplicationView/WidescreenPanel.cs @@ -212,10 +212,13 @@ namespace MatterHackers.MatterControl ColumnTwo.AnchorAll(); } + static int ColumnThreeCount = 0; void LoadColumnThree(object state = null) { - ColumnThree.RemoveAllChildren(); - ColumnThree.AddChild(new ThirdPanelTabView()); + ColumnThree.CloseAndRemoveAllChildren(); + ThirdPanelTabView thirdPanelTabView = new ThirdPanelTabView(); + thirdPanelTabView.Name = "For - WideScreenPanel {0}".FormatWith(ColumnThreeCount++); + ColumnThree.AddChild(thirdPanelTabView); ColumnThree.Width = 590; //Ordering here matters - must go after children are added } diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index 48f37df6c..5e2aefb9f 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -48,7 +48,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow SetLayerWidget setLayerWidget; LayerNavigationWidget navigationWidget; - TextWidget layerStartRenderRationTitle; + TextWidget layerStartRenderRatioTitle; public Slider layerStartRenderRatioSlider; TextWidget layerEndRenderRationTitle; public Slider layerEndRenderRatioSlider; @@ -268,7 +268,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void SetAnimationPosition() { int currentLayer = PrinterConnectionAndCommunication.Instance.CurrentlyPrintingLayer; - if (currentLayer >= 1) + if (currentLayer >= 0) { selectLayerSlider.Value = currentLayer-1; layerEndRenderRatioSlider.Value = PrinterConnectionAndCommunication.Instance.RatioIntoCurrentLayer; @@ -528,34 +528,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow syncToPrint.Checked = (UserSettings.Instance.get("LayerViewSyncToPrint") == "True"); syncToPrint.CheckedStateChanged += (sender, e) => { - UserSettings.Instance.set("LayerViewSyncToPrint", syncToPrint.Checked.ToString()); - - if (syncToPrint.Checked) - { - SetAnimationPosition(); - navigationWidget.Visible = false; - setLayerWidget.Visible = false; - layerStartRenderRationTitle.Visible = false; - layerStartRenderRatioSlider.Visible = false; - layerEndRenderRationTitle.Visible = false; - layerEndRenderRatioSlider.Visible = false; - selectLayerSlider.Visible = false; - } - else - { - if (layerEndRenderRatioSlider != null) - { - layerEndRenderRatioSlider.Value = 1; - layerStartRenderRatioSlider.Value = 0; - } - navigationWidget.Visible = true; - setLayerWidget.Visible = true; - layerStartRenderRationTitle.Visible = true; - layerStartRenderRatioSlider.Visible = true; - layerEndRenderRationTitle.Visible = true; - layerEndRenderRatioSlider.Visible = true; - selectLayerSlider.Visible = true; - } + UserSettings.Instance.set("LayerViewSyncToPrint", syncToPrint.Checked.ToString()); + SetSyncToPrintVisibility(); }; layerInfoContainer.AddChild(syncToPrint); @@ -572,6 +546,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // However if the print finished or is canceled we are going to want to get updates again. So, hook the status event PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent(HookUpGCodeMessagesWhenDonePrinting, ref unregisterEvents); + UiThread.RunOnIdle((state) => + { + SetSyncToPrintVisibility(); + }); } } @@ -582,6 +560,39 @@ namespace MatterHackers.MatterControl.PartPreviewWindow textImageButtonFactory.FixedWidth = oldWidth; } + private void SetSyncToPrintVisibility() + { + if (!widgetHasCloseButton) + { + if (syncToPrint.Checked) + { + SetAnimationPosition(); + //navigationWidget.Visible = false; + //setLayerWidget.Visible = false; + layerStartRenderRatioTitle.Visible = false; + layerStartRenderRatioSlider.Visible = false; + layerEndRenderRationTitle.Visible = false; + layerEndRenderRatioSlider.Visible = false; + selectLayerSlider.Visible = false; + } + else + { + if (layerEndRenderRatioSlider != null) + { + layerEndRenderRatioSlider.Value = 1; + layerStartRenderRatioSlider.Value = 0; + } + navigationWidget.Visible = true; + setLayerWidget.Visible = true; + layerStartRenderRatioTitle.Visible = true; + layerStartRenderRatioSlider.Visible = true; + layerEndRenderRationTitle.Visible = true; + layerEndRenderRatioSlider.Visible = true; + selectLayerSlider.Visible = true; + } + } + } + void SetLayerViewType() { if (viewControlsToggle.threeDimensionButton.Checked) @@ -615,6 +626,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // register for done slicing and slicing messages printItem.SlicingOutputMessage.RegisterEvent(sliceItem_SlicingOutputMessage, ref unregisterEvents); printItem.SlicingDone.RegisterEvent(sliceItem_Done, ref unregisterEvents); + SetSyncToPrintVisibility(); } } @@ -729,8 +741,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow gcodeViewWidget.ActiveLayerChanged += new EventHandler(gcodeViewWidget_ActiveLayerChanged); AddChild(selectLayerSlider); - layerStartRenderRationTitle = new TextWidget(LocalizedString.Get("start:"), 50, 77, 10, Agg.Font.Justification.Right); - AddChild(layerStartRenderRationTitle); + layerStartRenderRatioTitle = new TextWidget(LocalizedString.Get("start:"), 50, 77, 10, Agg.Font.Justification.Right); + AddChild(layerStartRenderRatioTitle); layerStartRenderRatioSlider = new Slider(new Vector2(), 10); layerStartRenderRatioSlider.ValueChanged += new EventHandler(layerStartRenderRatioSlider_ValueChanged); AddChild(layerStartRenderRatioSlider); From be9ec01b367bcb48a95d298e3f43acd567d2c330 Mon Sep 17 00:00:00 2001 From: larsbrubaker Date: Wed, 20 Aug 2014 12:10:31 -0700 Subject: [PATCH 2/2] don't run in process. --- SlicerConfiguration/SlicingQueue.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SlicerConfiguration/SlicingQueue.cs b/SlicerConfiguration/SlicingQueue.cs index fc43e916c..b959434a1 100644 --- a/SlicerConfiguration/SlicingQueue.cs +++ b/SlicerConfiguration/SlicingQueue.cs @@ -232,7 +232,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration break; } - bool runInProcess = true; + bool runInProcess = false; if ((OsInformation.OperatingSystem == OSType.Android || OsInformation.OperatingSystem == OSType.Mac || runInProcess) && ActivePrinterProfile.Instance.ActiveSliceEngineType == ActivePrinterProfile.SlicingEngineTypes.MatterSlice) {