diff --git a/PartPreviewWindow/PrinterTabPage.cs b/PartPreviewWindow/PrinterTabPage.cs index 410ece0ff..964a0c216 100644 --- a/PartPreviewWindow/PrinterTabPage.cs +++ b/PartPreviewWindow/PrinterTabPage.cs @@ -105,9 +105,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow HAnchor = HAnchor.Right | HAnchor.Absolute, Width = 60, Margin = new BorderDouble(0, 80, 8, 42), + Maximum = sceneContext.LoadedGCode?.LayerCount ?? 1 }; view3DContainer.AddChild(layerScrollbar); - + layerRenderRatioSlider = new DoubleSolidSlider(new Vector2(), SliceLayerSelector.SliderWidth); layerRenderRatioSlider.FirstValue = 0; layerRenderRatioSlider.FirstValueChanged += (s, e) => @@ -130,12 +131,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow }; view3DContainer.AddChild(layerRenderRatioSlider); + sceneContext.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged; + view3DContainer.AddChild(PrintProgressWidget(printer)); AddSettingsTabBar(leftToRight, view3DWidget); - sceneContext.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged; - view3DWidget.BoundsChanged += (s, e) => { SetSliderSizes(); @@ -209,19 +210,21 @@ namespace MatterHackers.MatterControl.PartPreviewWindow gcode3DWidget.Visible = viewMode == PartViewMode.Layers3D; gcode2DWidget.Visible = viewMode == PartViewMode.Layers2D; - view3DWidget.meshViewerWidget.IsActive = !showSliceLayers; + view3DWidget.meshViewerWidget.ModelView = viewMode == PartViewMode.Model; if (showSliceLayers) { printer.Bed.Scene.ClearSelection(); } - var slidersVisible = sceneContext.RenderInfo != null && showSliceLayers; + var slidersVisible = viewMode != PartViewMode.Model && printer.Bed.LoadedGCode?.LayerCount > 0; layerScrollbar.Visible = slidersVisible; layerRenderRatioSlider.Visible = slidersVisible; - view3DWidget.selectedObjectContainer.Visible = !showSliceLayers && sceneContext.Scene.HasSelection; + view3DWidget.selectedObjectContainer.Visible = view3DWidget.meshViewerWidget.ModelView + && sceneContext.Scene.HasSelection + && printer?.ViewState.ViewMode != PartViewMode.Layers2D; } private GCodeFile loadedGCode => sceneContext.LoadedGCode; @@ -422,7 +425,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void Parent_KeyDown(object sender, KeyEventArgs keyEvent) { - if (gcode3DWidget.Visible) + if (gcode3DWidget.Visible + || gcode2DWidget.Visible) { switch (keyEvent.KeyCode) { diff --git a/PartPreviewWindow/SelectedObjectPanel.cs b/PartPreviewWindow/SelectedObjectPanel.cs index 2586b5a41..cfd563441 100644 --- a/PartPreviewWindow/SelectedObjectPanel.cs +++ b/PartPreviewWindow/SelectedObjectPanel.cs @@ -50,10 +50,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private ThemeConfig theme; private View3DWidget view3DWidget; private InteractiveScene scene; - + private PrinterConfig printer; private Dictionary> objectEditorsByType; - public SelectedObjectPanel(View3DWidget view3DWidget, InteractiveScene scene, ThemeConfig theme) + public SelectedObjectPanel(View3DWidget view3DWidget, InteractiveScene scene, ThemeConfig theme, PrinterConfig printer) : base(FlowDirection.TopToBottom) { this.HAnchor |= HAnchor.Left; @@ -64,6 +64,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.view3DWidget = view3DWidget; this.theme = theme; this.scene = scene; + this.printer = printer; this.AddChild(itemName = new TextWidget("", textColor: ActiveTheme.Instance.PrimaryTextColor) { @@ -167,7 +168,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.editorPanel.RemoveAllChildren(); - this.Parent.Visible = true; + var viewMode = printer?.ViewState.ViewMode; + + this.Parent.Visible = viewMode == null || viewMode == PartViewMode.Model; HashSet mappedEditors; objectEditorsByType.TryGetValue(selectedItem.GetType(), out mappedEditors); @@ -200,12 +203,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow HAnchor = HAnchor.Stretch }; - //dropDownList.SelectionChanged += (s, e) => - //{ - // ShowObjectEditor( - // mappedEditors.Where(m => m.Name == dropDownList.SelectedLabel).FirstOrDefault()); - //}; - foreach (IObject3DEditor editor in mappedEditors) { MenuItem menuItem = dropDownList.AddItem(editor.Name); diff --git a/PartPreviewWindow/View3D/InteractionLayer.cs b/PartPreviewWindow/View3D/InteractionLayer.cs index e1a5c209e..ddb5efe12 100644 --- a/PartPreviewWindow/View3D/InteractionLayer.cs +++ b/PartPreviewWindow/View3D/InteractionLayer.cs @@ -75,18 +75,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.AddChild(labelContainer); } - public override void OnLoad(EventArgs args) - { - this.AddChild(new TumbleCubeControl(this) - { - Margin = new BorderDouble(50, 0, 0, 50), - VAnchor = VAnchor.Top, - HAnchor = HAnchor.Left, - }); - - base.OnLoad(args); - } - internal void SetRenderTarget(GuiWidget renderSource) { renderSource.AfterDraw += RenderSource_DrawExtra; diff --git a/PartPreviewWindow/View3D/MeshViewerWidget.cs b/PartPreviewWindow/View3D/MeshViewerWidget.cs index eafcaa1d9..b9e19e6e3 100644 --- a/PartPreviewWindow/View3D/MeshViewerWidget.cs +++ b/PartPreviewWindow/View3D/MeshViewerWidget.cs @@ -317,7 +317,7 @@ namespace MatterHackers.MeshVisualizer public RenderTypes RenderType { - get => this.IsActive ? renderType : RenderTypes.Wireframe; + get => this.ModelView ? renderType : RenderTypes.Wireframe; set { if (renderType != value) @@ -415,7 +415,7 @@ namespace MatterHackers.MeshVisualizer base.OnClosed(e); } - public bool IsActive { get; set; } = true; + public bool ModelView { get; set; } = true; private void DrawObject(IObject3D object3D, List transparentMeshes, bool parentSelected, DrawEventArgs e) { diff --git a/PartPreviewWindow/View3D/View3DWidget.cs b/PartPreviewWindow/View3D/View3DWidget.cs index 944fb54a7..96249434c 100644 --- a/PartPreviewWindow/View3D/View3DWidget.cs +++ b/PartPreviewWindow/View3D/View3DWidget.cs @@ -428,7 +428,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation; - selectedObjectPanel = new SelectedObjectPanel(this, this.Scene, theme) + selectedObjectPanel = new SelectedObjectPanel(this, this.Scene, theme, printer) { BackgroundColor = theme.InteractionLayerOverlayColor, VAnchor = VAnchor.Top | VAnchor.Fit, @@ -444,9 +444,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow SplitterWidth = theme.SplitterWidth, Visible = false, }; - this.AddChild(selectedObjectContainer); + this.InteractionLayer.AddChild(selectedObjectContainer); selectedObjectContainer.AddChild(selectedObjectPanel); + this.InteractionLayer.AddChild(new TumbleCubeControl(this.InteractionLayer) + { + Margin = new BorderDouble(50, 0, 0, 50), + VAnchor = VAnchor.Top, + HAnchor = HAnchor.Left, + }); + UiThread.RunOnIdle(AutoSpin); // Wire up CommunicationStateChanged to lock footer bar when SyncToPrint is enabled @@ -1786,7 +1793,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow var selectedItem = Scene.SelectedItem; - if (materialButtons?.Count > 0) { bool setSelection = false;