diff --git a/ApplicationView/WidescreenPanel.cs b/ApplicationView/WidescreenPanel.cs index f4f4f2fe0..093d2103c 100644 --- a/ApplicationView/WidescreenPanel.cs +++ b/ApplicationView/WidescreenPanel.cs @@ -186,11 +186,20 @@ namespace MatterHackers.MatterControl ColumnTwo.CloseAndRemoveAllChildren(); double buildHeight = ActiveSliceSettings.Instance.BuildHeight; - part3DView = new View3DTransformPart(PrinterConnectionAndCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, View3DTransformPart.WindowType.Embeded, View3DTransformPart.AutoRotate.Enabled); + part3DView = new View3DTransformPart(PrinterConnectionAndCommunication.Instance.ActivePrintItem, + new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), + ActiveSliceSettings.Instance.BedCenter, + ActiveSliceSettings.Instance.BedShape, + View3DTransformPart.WindowType.Embeded, + View3DTransformPart.AutoRotate.Enabled); part3DView.Margin = new BorderDouble(bottom: 4); part3DView.AnchorAll(); - partGcodeView = new ViewGcodeBasic(PrinterConnectionAndCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, ActiveSliceSettings.Instance.BedCenter, false); + partGcodeView = new ViewGcodeBasic(PrinterConnectionAndCommunication.Instance.ActivePrintItem, + new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), + ActiveSliceSettings.Instance.BedCenter, + ActiveSliceSettings.Instance.BedShape, + false); partGcodeView.AnchorAll(); ColumnTwo.AddChild(part3DView); diff --git a/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs b/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs index 4edb915ce..1523780e7 100644 --- a/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs +++ b/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs @@ -43,12 +43,13 @@ using MatterHackers.VectorMath; using MatterHackers.MatterControl.DataStorage; using MatterHackers.MatterControl.PrintQueue; using MatterHackers.MeshVisualizer; +using MatterHackers.MatterControl.SlicerConfiguration; namespace MatterHackers.MatterControl.PartPreviewWindow { public class PartPreview3DWidget : PartPreviewWidget { - protected MeshViewerWidget meshViewerWidget; + public MeshViewerWidget meshViewerWidget; event EventHandler unregisterEvents; protected ViewControls3D viewControls3D; @@ -57,6 +58,31 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { } + public override void OnParentChanged(EventArgs e) + { + ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent((sender, changeEventArgs) => + { + double buildHeight = ActiveSliceSettings.Instance.BuildHeight; + + UiThread.RunOnIdle((state) => + { +#if false + "bed_size", + "print_center", + "build_height", + "bed_shape", + "center_part_on_bed", +#endif + meshViewerWidget.CreatePrintBed( + new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), + ActiveSliceSettings.Instance.BedCenter, + ActiveSliceSettings.Instance.BedShape); + }); + }, ref unregisterEvents); + + base.OnParentChanged(e); + } + public override void OnClosed(EventArgs e) { if (unregisterEvents != null) diff --git a/PartPreviewWindow/PartPreviewMainWindow.cs b/PartPreviewWindow/PartPreviewMainWindow.cs index 62c9b8b43..f677bcccb 100644 --- a/PartPreviewWindow/PartPreviewMainWindow.cs +++ b/PartPreviewWindow/PartPreviewMainWindow.cs @@ -64,7 +64,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { string part3DViewLabelFull = string.Format("{0} {1} ", "3D", "View".Localize()); - view3DTransformPart = new View3DTransformPart(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, View3DTransformPart.WindowType.StandAlone, autoRotate3DView); + view3DTransformPart = new View3DTransformPart(printItem, + new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), + ActiveSliceSettings.Instance.BedCenter, + ActiveSliceSettings.Instance.BedShape, + View3DTransformPart.WindowType.StandAlone, + autoRotate3DView); + TabPage partPreview3DView = new TabPage(view3DTransformPart, part3DViewLabelFull); tabControl.AddTab(new SimpleTextTabWidget(partPreview3DView, "3D View Tab", 16, ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes())); @@ -73,7 +79,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // put in the 2d gcode view TabPage layerView; { - viewGcodeBasic = new ViewGcodeBasic(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, ActiveSliceSettings.Instance.BedCenter, true); + viewGcodeBasic = new ViewGcodeBasic(printItem, + new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), + ActiveSliceSettings.Instance.BedCenter, + ActiveSliceSettings.Instance.BedShape, + true); layerView = new TabPage(viewGcodeBasic, LocalizedString.Get("Layer View")); tabControl.AddTab(new SimpleTextTabWidget(layerView, "Layer View Tab", 16, ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes())); diff --git a/PartPreviewWindow/View3DTransfromPart.cs b/PartPreviewWindow/View3DTransfromPart.cs index 8c6d734c1..f144050ca 100644 --- a/PartPreviewWindow/View3DTransfromPart.cs +++ b/PartPreviewWindow/View3DTransfromPart.cs @@ -252,7 +252,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public enum WindowType { Embeded, StandAlone }; public enum AutoRotate { Enabled, Disabled }; - public View3DTransformPart(PrintItemWrapper printItemWrapper, Vector3 viewerVolume, MeshViewerWidget.BedShape bedShape, WindowType windowType, AutoRotate autoRotate) + public View3DTransformPart(PrintItemWrapper printItemWrapper, Vector3 viewerVolume, Vector2 bedCenter, MeshViewerWidget.BedShape bedShape, WindowType windowType, AutoRotate autoRotate) { this.windowType = windowType; autoRotateEnabled = (autoRotate == AutoRotate.Enabled); @@ -271,7 +271,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow GuiWidget viewArea = new GuiWidget(); viewArea.AnchorAll(); { - meshViewerWidget = new MeshViewerWidget(viewerVolume, 1, bedShape, "Press 'Add' to select an item.".Localize()); + meshViewerWidget = new MeshViewerWidget(viewerVolume, bedCenter, bedShape, "Press 'Add' to select an item.".Localize()); // this is to add an image to the bed string imagePathAndFile = Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "OEMSettings", "bedimage.png"); diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index 97bc1b3ee..cae82481e 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -84,7 +84,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow Vector3 viewerVolume; MeshViewerWidget.BedShape bedShape; - public ViewGcodeBasic(PrintItemWrapper printItem, Vector3 viewerVolume, MeshViewerWidget.BedShape bedShape, Vector2 bedCenter, bool addCloseButton) + public ViewGcodeBasic(PrintItemWrapper printItem, Vector3 viewerVolume, Vector2 bedCenter, MeshViewerWidget.BedShape bedShape, bool addCloseButton) { this.viewerVolume = viewerVolume; this.bedShape = bedShape; @@ -199,7 +199,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow mainContainerTopToBottom.AddChild(buttonBottomPanel); this.AddChild(mainContainerTopToBottom); - meshViewerWidget = new MeshViewerWidget(viewerVolume, 1, bedShape, "".Localize()); + meshViewerWidget = new MeshViewerWidget(viewerVolume, bedCenter, bedShape, "".Localize()); meshViewerWidget.AnchorAll(); meshViewerWidget.AlwaysRenderBed = true; gcodeDispalyWidget.AddChild(meshViewerWidget); diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index 9f2924bd0..4a6b1b406 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -60,12 +60,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { } - public UiState(SliceSettingsWidget settingsToCopy) + public UiState(SliceSettingsWidget settingsWidgetToCopyFrom) { - if (settingsToCopy != null) + if (settingsWidgetToCopyFrom != null) { - settingsToCopy.CurrentlyActiveCategory(out selectedCategory.index, out selectedCategory.name); - settingsToCopy.CurrentlyActiveGroup(out selectedGroup.index, out selectedGroup.name); + settingsWidgetToCopyFrom.CurrentlyActiveCategory(out selectedCategory.index, out selectedCategory.name); + settingsWidgetToCopyFrom.CurrentlyActiveGroup(out selectedGroup.index, out selectedGroup.name); } } } @@ -479,13 +479,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration dataTypeInfo.Margin = new BorderDouble(5, 0); return dataTypeInfo; } - - List settingToReload = new List() {"bed_size", "print_center", "build_height", "bed_shape"}; - private void ResetIfNeeded(OrganizerSettingsData settingData) + List settingToReloadUiWhenChanged = new List() + { + "has_fan", + "has_heated_bed", + "has_sd_card_reader", + }; + + private void ReloadUiIfRequired(OrganizerSettingsData settingData) { - if (settingToReload.Contains(settingData.SlicerConfigName)) + if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName)) { ApplicationWidget.Instance.ReloadAll(null, null); } @@ -569,7 +574,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); - ResetIfNeeded(settingData); + ReloadUiIfRequired(settingData); }; leftToRightLayout.AddChild(doubleEditWidget); leftToRightLayout.AddChild(getSettingInfoData(settingData)); @@ -673,8 +678,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { MenuItem menuItem = ((MenuItem)sender); SaveSetting(settingData.SlicerConfigName, menuItem.Text); - ResetIfNeeded(settingData); - + ReloadUiIfRequired(settingData); }; } leftToRightLayout.AddChild(selectableOptions); @@ -699,7 +703,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SaveSetting(settingData.SlicerConfigName, "0"); // Now hide all of the settings that this control is associated with. } - ApplicationWidget.Instance.ReloadAll(null, null); + ReloadUiIfRequired(settingData); }; leftToRightLayout.AddChild(checkBoxWidget); } @@ -723,7 +727,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); - ResetIfNeeded(settingData); + ReloadUiIfRequired(settingData); }; leftToRightLayout.AddChild(xEditWidget); @@ -735,7 +739,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); - ResetIfNeeded(settingData); + ReloadUiIfRequired(settingData); }; leftToRightLayout.AddChild(yEditWidget); TextWidget yText = new TextWidget("y");