diff --git a/ActionBar/PrintActionRow.cs b/ActionBar/PrintActionRow.cs index 8cdf3fef8..662caca2f 100644 --- a/ActionBar/PrintActionRow.cs +++ b/ActionBar/PrintActionRow.cs @@ -187,7 +187,7 @@ namespace MatterHackers.MatterControl.ActionBar PrintItemWrapper partToPrint = sender as PrintItemWrapper; if (partToPrint != null) { - partToPrint.Done -= new EventHandler(partToPrint_SliceDone); + partToPrint.SlicingDone -= new EventHandler(partToPrint_SliceDone); string gcodePathAndFileName = partToPrint.GetGCodePathAndFileName(); if (gcodePathAndFileName != "") { @@ -254,7 +254,7 @@ namespace MatterHackers.MatterControl.ActionBar PrinterCommunication.Instance.CommunicationState = PrinterCommunication.CommunicationStates.PreparingToPrint; PrintItemWrapper partToPrint = PrinterCommunication.Instance.ActivePrintItem; SlicingQueue.Instance.QueuePartForSlicing(partToPrint); - partToPrint.Done += new EventHandler(partToPrint_SliceDone); + partToPrint.SlicingDone += new EventHandler(partToPrint_SliceDone); } else diff --git a/ActionBar/PrintStatusRow.cs b/ActionBar/PrintStatusRow.cs index ebb630839..6e075ac39 100644 --- a/ActionBar/PrintStatusRow.cs +++ b/ActionBar/PrintStatusRow.cs @@ -40,7 +40,7 @@ using MatterHackers.VectorMath; namespace MatterHackers.MatterControl.ActionBar { - class PrintStatusRow : ActionRowBase + class PrintStatusRow : FlowLayoutWidget { Stopwatch timeSinceLastDrawTime = new Stopwatch(); event EventHandler unregisterEvents; @@ -53,10 +53,20 @@ namespace MatterHackers.MatterControl.ActionBar TextWidget activePrintStatus; QueueDataView queueDataView; + PartThumbnailWidget activePrintPreviewImage; public PrintStatusRow(QueueDataView queueDataView) { + Initialize(); + + this.HAnchor = HAnchor.ParentLeftRight; + + AddChildElements(); + AddHandlers(); + this.queueDataView = queueDataView; + + onActivePrintItemChanged(null, null); } string ActivePrintStatusText @@ -70,13 +80,12 @@ namespace MatterHackers.MatterControl.ActionBar } } - protected override void Initialize() + protected void Initialize() { UiThread.RunOnIdle(OnIdle); this.Margin = new BorderDouble(6, 3, 6, 6); } - PartThumbnailWidget activePrintPreviewImage; void onActivePrintItemChanged(object sender, EventArgs e) { // first we have to remove any link to an old part (the part currently in the view) @@ -102,7 +111,7 @@ namespace MatterHackers.MatterControl.ActionBar ActivePrintStatusText = message.Data; } - override protected void AddChildElements() + void AddChildElements() { activePrintPreviewImage = new PartThumbnailWidget(null, "part_icon_transparent_100x100.png", "building_thumbnail_100x100.png", new Vector2(115, 115)); activePrintPreviewImage.VAnchor = VAnchor.ParentTop; @@ -112,8 +121,8 @@ namespace MatterHackers.MatterControl.ActionBar FlowLayoutWidget temperatureWidgets = new FlowLayoutWidget(FlowDirection.TopToBottom); { - IndicatorWidget extruderTemperatureWidget = new ExtruderTemperatureWidget(); - IndicatorWidget bedTemperatureWidget = new BedTemperatureWidget(); + TemperatureWidgetBase extruderTemperatureWidget = new TemperatureWidgetExtruder(); + TemperatureWidgetBase bedTemperatureWidget = new TemperatureWidgetBed(); temperatureWidgets.AddChild(extruderTemperatureWidget); temperatureWidgets.AddChild(bedTemperatureWidget); @@ -206,7 +215,7 @@ namespace MatterHackers.MatterControl.ActionBar return container; } - protected override void AddHandlers() + protected void AddHandlers() { PrinterCommunication.Instance.ActivePrintItemChanged.RegisterEvent(onPrintItemChanged, ref unregisterEvents); PrinterCommunication.Instance.ConnectionStateChanged.RegisterEvent(onStateChanged, ref unregisterEvents); @@ -388,176 +397,4 @@ namespace MatterHackers.MatterControl.ActionBar return widget; } } - - class ExtruderTemperatureWidget : IndicatorWidget - { - public ExtruderTemperatureWidget() - : base("150.3°") - { - AddHandlers(); - setToCurrentTemperature(); - - - } - - event EventHandler unregisterEvents; - void AddHandlers() - { - PrinterCommunication.Instance.ExtruderTemperatureRead.RegisterEvent(onTemperatureRead, ref unregisterEvents); - this.MouseEnterBounds += onMouseEnterBounds; - this.MouseLeaveBounds += onMouseLeaveBounds; - } - - public override void OnClosed(EventArgs e) - { - if (unregisterEvents != null) - { - unregisterEvents(this, null); - } - base.OnClosed(e); - } - - void onMouseEnterBounds(Object sender, EventArgs e) - { - HelpTextWidget.Instance.ShowHoverText(LocalizedString.Get("Extruder Temperature")); - } - - void onMouseLeaveBounds(Object sender, EventArgs e) - { - HelpTextWidget.Instance.HideHoverText(); - } - - void setToCurrentTemperature() - { - string tempDirectionIndicator = ""; - if (PrinterCommunication.Instance.TargetExtruderTemperature > 0) - { - if ((int)(PrinterCommunication.Instance.TargetExtruderTemperature + 0.5) < (int)(PrinterCommunication.Instance.ActualExtruderTemperature + 0.5)) - { - tempDirectionIndicator = "↓"; - } - else if ((int)(PrinterCommunication.Instance.TargetExtruderTemperature + 0.5) > (int)(PrinterCommunication.Instance.ActualExtruderTemperature + 0.5)) - { - tempDirectionIndicator = "↑"; - } - } - this.IndicatorValue = string.Format("{0:0.#}°{1}", PrinterCommunication.Instance.ActualExtruderTemperature, tempDirectionIndicator); - } - - void onTemperatureRead(Object sender, EventArgs e) - { - setToCurrentTemperature(); - } - } - - class BedTemperatureWidget : IndicatorWidget - { - //Not currently hooked up to anything - public BedTemperatureWidget() - : base("150.3°") - { - AddHandlers(); - setToCurrentTemperature(); - } - - event EventHandler unregisterEvents; - void AddHandlers() - { - PrinterCommunication.Instance.BedTemperatureRead.RegisterEvent(onTemperatureRead, ref unregisterEvents); - this.MouseEnterBounds += onMouseEnterBounds; - this.MouseLeaveBounds += onMouseLeaveBounds; - } - - public override void OnClosed(EventArgs e) - { - if (unregisterEvents != null) - { - unregisterEvents(this, null); - } - base.OnClosed(e); - } - - void onMouseEnterBounds(Object sender, EventArgs e) - { - HelpTextWidget.Instance.ShowHoverText(LocalizedString.Get("Bed Temperature")); - } - - void onMouseLeaveBounds(Object sender, EventArgs e) - { - HelpTextWidget.Instance.HideHoverText(); - - } - - void setToCurrentTemperature() - { - this.IndicatorValue = string.Format("{0:0.#}°", PrinterCommunication.Instance.ActualBedTemperature); - } - - void onTemperatureRead(Object sender, EventArgs e) - { - setToCurrentTemperature(); - } - } - - class IndicatorWidget : GuiWidget - { - TextWidget indicatorTextWidget; - RGBA_Bytes borderColor = new RGBA_Bytes(255, 255, 255); - int borderWidth = 2; - - public string IndicatorValue - { - get - { - return indicatorTextWidget.Text; - } - set - { - if (indicatorTextWidget.Text != value) - { - indicatorTextWidget.Text = value; - } - } - } - - event EventHandler unregisterEvents; - public IndicatorWidget(string textValue) - : base(52, 52) - { - this.BackgroundColor = new RGBA_Bytes(255, 255, 255, 200); - indicatorTextWidget = new TextWidget(textValue, pointSize: 11); - indicatorTextWidget.TextColor = ActiveTheme.Instance.PrimaryAccentColor; - indicatorTextWidget.HAnchor = HAnchor.ParentCenter; - indicatorTextWidget.VAnchor = VAnchor.ParentCenter; - indicatorTextWidget.AutoExpandBoundsToText = true; - this.Margin = new BorderDouble(0, 2); - this.AddChild(indicatorTextWidget); - ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents); - } - - public override void OnClosed(EventArgs e) - { - if (unregisterEvents != null) - { - unregisterEvents(this, null); - } - base.OnClosed(e); - } - - private void onThemeChanged(object sender, EventArgs e) - { - this.indicatorTextWidget.TextColor = ActiveTheme.Instance.PrimaryAccentColor; - this.Invalidate(); - } - - public override void OnDraw(Graphics2D graphics2D) - { - base.OnDraw(graphics2D); - - RectangleDouble Bounds = LocalBounds; - RoundedRect borderRect = new RoundedRect(this.LocalBounds, 0); - Stroke strokeRect = new Stroke(borderRect, borderWidth); - graphics2D.Render(strokeRect, borderColor); - } - } } diff --git a/ActionBar/TemperatureWidgetBase.cs b/ActionBar/TemperatureWidgetBase.cs new file mode 100644 index 000000000..dc097588f --- /dev/null +++ b/ActionBar/TemperatureWidgetBase.cs @@ -0,0 +1,104 @@ +/* +Copyright (c) 2014, Kevin Pope +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +using System; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using MatterHackers.Agg; +using MatterHackers.Agg.UI; +using MatterHackers.Agg.VertexSource; +using MatterHackers.Localizations; +using MatterHackers.MatterControl.PrintQueue; +using MatterHackers.VectorMath; + +namespace MatterHackers.MatterControl.ActionBar +{ + class TemperatureWidgetBase : GuiWidget + { + TextWidget indicatorTextWidget; + RGBA_Bytes borderColor = new RGBA_Bytes(255, 255, 255); + int borderWidth = 2; + + public string IndicatorValue + { + get + { + return indicatorTextWidget.Text; + } + set + { + if (indicatorTextWidget.Text != value) + { + indicatorTextWidget.Text = value; + } + } + } + + event EventHandler unregisterEvents; + public TemperatureWidgetBase(string textValue) + : base(52, 52) + { + this.BackgroundColor = new RGBA_Bytes(255, 255, 255, 200); + indicatorTextWidget = new TextWidget(textValue, pointSize: 11); + indicatorTextWidget.TextColor = ActiveTheme.Instance.PrimaryAccentColor; + indicatorTextWidget.HAnchor = HAnchor.ParentCenter; + indicatorTextWidget.VAnchor = VAnchor.ParentCenter; + indicatorTextWidget.AutoExpandBoundsToText = true; + this.Margin = new BorderDouble(0, 2); + this.AddChild(indicatorTextWidget); + ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents); + } + + public override void OnClosed(EventArgs e) + { + if (unregisterEvents != null) + { + unregisterEvents(this, null); + } + base.OnClosed(e); + } + + private void onThemeChanged(object sender, EventArgs e) + { + this.indicatorTextWidget.TextColor = ActiveTheme.Instance.PrimaryAccentColor; + this.Invalidate(); + } + + public override void OnDraw(Graphics2D graphics2D) + { + base.OnDraw(graphics2D); + + RectangleDouble Bounds = LocalBounds; + RoundedRect borderRect = new RoundedRect(this.LocalBounds, 0); + Stroke strokeRect = new Stroke(borderRect, borderWidth); + graphics2D.Render(strokeRect, borderColor); + } + } +} diff --git a/ActionBar/TemperatureWidgetBed.cs b/ActionBar/TemperatureWidgetBed.cs new file mode 100644 index 000000000..2137cd626 --- /dev/null +++ b/ActionBar/TemperatureWidgetBed.cs @@ -0,0 +1,91 @@ +/* +Copyright (c) 2014, Kevin Pope +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +using System; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using MatterHackers.Agg; +using MatterHackers.Agg.UI; +using MatterHackers.Agg.VertexSource; +using MatterHackers.Localizations; +using MatterHackers.MatterControl.PrintQueue; +using MatterHackers.VectorMath; + +namespace MatterHackers.MatterControl.ActionBar +{ + class TemperatureWidgetBed : TemperatureWidgetBase + { + //Not currently hooked up to anything + public TemperatureWidgetBed() + : base("150.3°") + { + AddHandlers(); + setToCurrentTemperature(); + } + + event EventHandler unregisterEvents; + void AddHandlers() + { + PrinterCommunication.Instance.BedTemperatureRead.RegisterEvent(onTemperatureRead, ref unregisterEvents); + this.MouseEnterBounds += onMouseEnterBounds; + this.MouseLeaveBounds += onMouseLeaveBounds; + } + + public override void OnClosed(EventArgs e) + { + if (unregisterEvents != null) + { + unregisterEvents(this, null); + } + base.OnClosed(e); + } + + void onMouseEnterBounds(Object sender, EventArgs e) + { + HelpTextWidget.Instance.ShowHoverText(LocalizedString.Get("Bed Temperature")); + } + + void onMouseLeaveBounds(Object sender, EventArgs e) + { + HelpTextWidget.Instance.HideHoverText(); + + } + + void setToCurrentTemperature() + { + this.IndicatorValue = string.Format("{0:0.#}°", PrinterCommunication.Instance.ActualBedTemperature); + } + + void onTemperatureRead(Object sender, EventArgs e) + { + setToCurrentTemperature(); + } + } +} diff --git a/ActionBar/TemperatureWidgetExtruder.cs b/ActionBar/TemperatureWidgetExtruder.cs new file mode 100644 index 000000000..7daf8e639 --- /dev/null +++ b/ActionBar/TemperatureWidgetExtruder.cs @@ -0,0 +1,101 @@ +/* +Copyright (c) 2014, Kevin Pope +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +using System; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using MatterHackers.Agg; +using MatterHackers.Agg.UI; +using MatterHackers.Agg.VertexSource; +using MatterHackers.Localizations; +using MatterHackers.MatterControl.PrintQueue; +using MatterHackers.VectorMath; + +namespace MatterHackers.MatterControl.ActionBar +{ + class TemperatureWidgetExtruder : TemperatureWidgetBase + { + public TemperatureWidgetExtruder() + : base("150.3°") + { + AddHandlers(); + setToCurrentTemperature(); + } + + event EventHandler unregisterEvents; + void AddHandlers() + { + PrinterCommunication.Instance.ExtruderTemperatureRead.RegisterEvent(onTemperatureRead, ref unregisterEvents); + this.MouseEnterBounds += onMouseEnterBounds; + this.MouseLeaveBounds += onMouseLeaveBounds; + } + + public override void OnClosed(EventArgs e) + { + if (unregisterEvents != null) + { + unregisterEvents(this, null); + } + base.OnClosed(e); + } + + void onMouseEnterBounds(Object sender, EventArgs e) + { + HelpTextWidget.Instance.ShowHoverText(LocalizedString.Get("Extruder Temperature")); + } + + void onMouseLeaveBounds(Object sender, EventArgs e) + { + HelpTextWidget.Instance.HideHoverText(); + } + + void setToCurrentTemperature() + { + string tempDirectionIndicator = ""; + if (PrinterCommunication.Instance.TargetExtruderTemperature > 0) + { + if ((int)(PrinterCommunication.Instance.TargetExtruderTemperature + 0.5) < (int)(PrinterCommunication.Instance.ActualExtruderTemperature + 0.5)) + { + tempDirectionIndicator = "↓"; + } + else if ((int)(PrinterCommunication.Instance.TargetExtruderTemperature + 0.5) > (int)(PrinterCommunication.Instance.ActualExtruderTemperature + 0.5)) + { + tempDirectionIndicator = "↑"; + } + } + this.IndicatorValue = string.Format("{0:0.#}°{1}", PrinterCommunication.Instance.ActualExtruderTemperature, tempDirectionIndicator); + } + + void onTemperatureRead(Object sender, EventArgs e) + { + setToCurrentTemperature(); + } + } +} diff --git a/CustomWidgets/ExportQueueItemWindow.cs b/CustomWidgets/ExportQueueItemWindow.cs index a9d720144..0d4da5b8c 100644 --- a/CustomWidgets/ExportQueueItemWindow.cs +++ b/CustomWidgets/ExportQueueItemWindow.cs @@ -163,7 +163,7 @@ namespace MatterHackers.MatterControl { Close(); SlicingQueue.Instance.QueuePartForSlicing(printQueueItem.PrintItemWrapper); - printQueueItem.PrintItemWrapper.Done += new EventHandler(sliceItem_Done); + printQueueItem.PrintItemWrapper.SlicingDone += new EventHandler(sliceItem_Done); } else if (partIsGCode) { @@ -254,7 +254,7 @@ namespace MatterHackers.MatterControl { PrintItemWrapper sliceItem = (PrintItemWrapper)sender; - sliceItem.Done -= new EventHandler(sliceItem_Done); + sliceItem.SlicingDone -= new EventHandler(sliceItem_Done); SaveGCodeToNewLocation(sliceItem.GCodePathAndFileName, pathAndFilenameToSave); } diff --git a/MatterControl.csproj b/MatterControl.csproj index efce3eead..987040741 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -67,10 +67,13 @@ + + + diff --git a/PartPreviewWindow/GcodeViewBasic.cs b/PartPreviewWindow/GcodeViewBasic.cs index d998e7dd6..051bcce36 100644 --- a/PartPreviewWindow/GcodeViewBasic.cs +++ b/PartPreviewWindow/GcodeViewBasic.cs @@ -151,7 +151,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // we only hook these up to make sure we can regenerate the gcode when we want printItem.SlicingOutputMessage += sliceItem_SlicingOutputMessage; - printItem.Done += new EventHandler(sliceItem_Done); + printItem.SlicingDone += new EventHandler(sliceItem_Done); } else { @@ -603,7 +603,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow if (printItem != null) { printItem.SlicingOutputMessage -= sliceItem_SlicingOutputMessage; - printItem.Done -= new EventHandler(sliceItem_Done); + printItem.SlicingDone -= new EventHandler(sliceItem_Done); if (startedSliceFromGenerateButton && printItem.CurrentlySlicing) { SlicingQueue.Instance.CancelCurrentSlicing(); @@ -646,7 +646,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // So we need to make sure we only have it added once. This will be ok to run when // not added or when added and will ensure we only have one hook. printItem.SlicingOutputMessage -= sliceItem_SlicingOutputMessage; - printItem.Done -= sliceItem_Done; + printItem.SlicingDone -= sliceItem_Done; UiThread.RunOnIdle(CreateAndAddChildren); startedSliceFromGenerateButton = false; diff --git a/PrintLibrary/ExportLibraryItemWindow.cs b/PrintLibrary/ExportLibraryItemWindow.cs index ba9199a69..059f8fb29 100644 --- a/PrintLibrary/ExportLibraryItemWindow.cs +++ b/PrintLibrary/ExportLibraryItemWindow.cs @@ -184,7 +184,7 @@ namespace MatterHackers.MatterControl.PrintLibrary pathAndFilenameToSave = saveParams.FileName; Close(); SlicingQueue.Instance.QueuePartForSlicing(printQueueItem.printItem); - printQueueItem.printItem.Done += new EventHandler(sliceItem_Done); + printQueueItem.printItem.SlicingDone += new EventHandler(sliceItem_Done); } else if (partIsGCode) { @@ -289,7 +289,7 @@ namespace MatterHackers.MatterControl.PrintLibrary { PrintItemWrapper sliceItem = (PrintItemWrapper)sender; - sliceItem.Done -= new EventHandler(sliceItem_Done); + sliceItem.SlicingDone -= new EventHandler(sliceItem_Done); SaveGCodeToNewLocation(sliceItem.GCodePathAndFileName, pathAndFilenameToSave); } diff --git a/PrintQueue/ExportToFolderProcess.cs b/PrintQueue/ExportToFolderProcess.cs index 1b8e6260b..0ed09dd27 100644 --- a/PrintQueue/ExportToFolderProcess.cs +++ b/PrintQueue/ExportToFolderProcess.cs @@ -76,7 +76,7 @@ namespace MatterHackers.MatterControl.PrintQueue if (Path.GetExtension(part.FileLocation).ToUpper() == ".STL") { SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper); - printItemWrapper.Done += new EventHandler(sliceItem_Done); + printItemWrapper.SlicingDone += new EventHandler(sliceItem_Done); printItemWrapper.SlicingOutputMessage += printItemWrapper_SlicingOutputMessage; } else if (Path.GetExtension(part.FileLocation).ToUpper() == ".GCODE") @@ -100,7 +100,7 @@ namespace MatterHackers.MatterControl.PrintQueue { PrintItemWrapper sliceItem = (PrintItemWrapper)sender; - sliceItem.Done -= new EventHandler(sliceItem_Done); + sliceItem.SlicingDone -= new EventHandler(sliceItem_Done); sliceItem.SlicingOutputMessage -= printItemWrapper_SlicingOutputMessage; if (File.Exists(sliceItem.FileLocation)) { diff --git a/PrintQueue/PrintItemWrapper.cs b/PrintQueue/PrintItemWrapper.cs index 90195d7e6..2e3dcfa6b 100644 --- a/PrintQueue/PrintItemWrapper.cs +++ b/PrintQueue/PrintItemWrapper.cs @@ -46,8 +46,7 @@ namespace MatterHackers.MatterControl.PrintQueue public class PrintItemWrapper { public event EventHandler SlicingOutputMessage; - public event EventHandler Done; - + public event EventHandler SlicingDone; public event EventHandler FileHasChanged; public PrintItem PrintItem { get; set; } @@ -116,9 +115,9 @@ namespace MatterHackers.MatterControl.PrintQueue OnSlicingOutputMessage(new StringEventArgs(message)); - if (Done != null) + if (SlicingDone != null) { - Done(this, null); + SlicingDone(this, null); } } } diff --git a/PrintQueue/QueueData.cs b/PrintQueue/QueueData.cs index 6b3dd572d..68c24c2c8 100644 --- a/PrintQueue/QueueData.cs +++ b/PrintQueue/QueueData.cs @@ -195,6 +195,7 @@ namespace MatterHackers.MatterControl.PrintQueue } PrintItems.Insert(indexToInsert, item); OnItemAdded(new IndexArgs(indexToInsert)); + SaveDefaultQueue(); } public void LoadDefaultQueue() diff --git a/PrintQueue/QueueDataView.cs b/PrintQueue/QueueDataView.cs index 958920363..ce1a22063 100644 --- a/PrintQueue/QueueDataView.cs +++ b/PrintQueue/QueueDataView.cs @@ -202,10 +202,14 @@ namespace MatterHackers.MatterControl.PrintQueue ((RowItem)child.Children[0]).isSelectedItem = true; if (!PrinterCommunication.Instance.PrinterIsPrinting && !PrinterCommunication.Instance.PrinterIsPaused) { - ((RowItem)child.Children[0]).isActivePrint = true; PrinterCommunication.Instance.ActivePrintItem = ((RowItem)child.Children[0]).PrintItemWrapper; } + else if (((RowItem)child.Children[0]).PrintItemWrapper == PrinterCommunication.Instance.ActivePrintItem) + { + // the selection must be the active print item + ((RowItem)child.Children[0]).isActivePrint = true; + } } else { diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index 4c40248f2..e3a92d86f 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -1968,3 +1968,6 @@ Translated:The type of support to create inside of parts. English:Infill Type Translated:Infill Type +English:Unknown +Translated:Unknown +