diff --git a/MatterControl.csproj b/MatterControl.csproj index 0b490ea44..bfc7ef6b6 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -236,7 +236,7 @@ - + diff --git a/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs b/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs index 1321c61a6..56d7bccf1 100644 --- a/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs +++ b/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs @@ -42,8 +42,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public TextImageButtonFactory ExpandMenuOptionFactory; public TextImageButtonFactory WhiteButtonFactory; - protected ViewControls2D viewControls2D; - protected GuiWidget buttonRightPanelDisabledCover; protected FlowLayoutWidget buttonRightPanel; diff --git a/PartPreviewWindow/View3D/View3DWidget.cs b/PartPreviewWindow/View3D/View3DWidget.cs index 329a398cf..0955ee483 100644 --- a/PartPreviewWindow/View3D/View3DWidget.cs +++ b/PartPreviewWindow/View3D/View3DWidget.cs @@ -518,7 +518,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow selectedObjectPanel = new SelectedObjectPanel() { Margin = 5, - BackgroundColor = new RGBA_Bytes(0, 0, 0, ViewControls2D.overlayAlpha) + BackgroundColor = new RGBA_Bytes(0, 0, 0, ViewControlsBase.overlayAlpha) }; AddChild(selectedObjectPanel); diff --git a/PartPreviewWindow/ViewControls2D.cs b/PartPreviewWindow/ViewControlsToggle.cs similarity index 67% rename from PartPreviewWindow/ViewControls2D.cs rename to PartPreviewWindow/ViewControlsToggle.cs index 7af0eb74b..f7b127662 100644 --- a/PartPreviewWindow/ViewControls2D.cs +++ b/PartPreviewWindow/ViewControlsToggle.cs @@ -1,5 +1,5 @@ /* -Copyright (c) 2014, Lars Brubaker +Copyright (c) 2017, Lars Brubaker, John Lewin All rights reserved. Redistribution and use in source and binary forms, with or without @@ -30,10 +30,7 @@ either expressed or implied, of the FreeBSD Project. using System; using System.IO; using MatterHackers.Agg; -using MatterHackers.Agg.ImageProcessing; -using MatterHackers.Agg.PlatformAbstract; using MatterHackers.Agg.UI; -using MatterHackers.Localizations; namespace MatterHackers.MatterControl.PartPreviewWindow { @@ -43,46 +40,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public const int overlayAlpha = 50; } - public class ViewControls2D : ViewControlsBase - { - private Button resetViewButton; - - public RadioButton translateButton; - public RadioButton scaleButton; - - public event EventHandler ResetView; - - public ViewControls2D(TextImageButtonFactory buttonFactory) - { - this.BackgroundColor = new RGBA_Bytes(0, 0, 0, overlayAlpha); - string resetViewIconPath = Path.Combine("ViewTransformControls", "reset.png"); - resetViewButton = buttonFactory.Generate("", StaticData.Instance.LoadIcon(resetViewIconPath, 32, 32).InvertLightness()); - resetViewButton.ToolTipText = "Reset View".Localize(); - AddChild(resetViewButton); - resetViewButton.Click += (sender, e) => - { - UiThread.RunOnIdle(() => ResetView?.Invoke(this, null)); - }; - - string translateIconPath = Path.Combine("ViewTransformControls", "translate.png"); - translateButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(translateIconPath, 32, 32)); - translateButton.ToolTipText = "Move".Localize(); - translateButton.Margin = new BorderDouble(3); - AddChild(translateButton); - - string scaleIconPath = Path.Combine("ViewTransformControls", "scale.png"); - scaleButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(scaleIconPath, 32, 32)); - scaleButton.ToolTipText = "Zoom".Localize(); - scaleButton.Margin = new BorderDouble(3); - AddChild(scaleButton); - - Margin = new BorderDouble(5); - HAnchor |= HAnchor.ParentLeft; - VAnchor = VAnchor.ParentTop; - translateButton.Checked = true; - } - } - public enum PartViewMode { Layers2D, diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index d0e67b4e6..611743542 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -305,17 +305,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow meshViewerWidget.Visible = (activeViewMode == PartViewMode.Layers3D); meshViewerWidget.TrackballTumbleWidget.DrawGlContent += new EventHandler(TrackballTumbleWidget_DrawGlContent); - viewControls2D = new ViewControls2D(ApplicationController.Instance.Theme.ViewControlsButtonFactory); - AddChild(viewControls2D); - - viewControls2D.ResetView += (sender, e) => - { - gcodeViewWidget.CenterPartInView(); - }; - viewControls3D.ResetView += (sender, e) => { - meshViewerWidget.ResetView(); + if (gcodeDisplayWidget.Visible) + { + gcodeViewWidget.CenterPartInView(); + } + else + { + meshViewerWidget.ResetView(); + } }; viewControls3D.ActiveButton = ViewControls3DButtons.Rotate; @@ -325,13 +324,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow AddChild(viewControlsToggle); viewControlsToggle.Visible = false; - viewControls2D.translateButton.Click += (sender, e) => + viewControls3D.TransformStateChanged += (s, e) => { - gcodeViewWidget.TransformState = ViewGcodeWidget.ETransformState.Move; - }; - viewControls2D.scaleButton.Click += (sender, e) => - { - gcodeViewWidget.TransformState = ViewGcodeWidget.ETransformState.Scale; + switch (e.TransformMode) + { + case ViewControls3DButtons.Translate: + gcodeViewWidget.TransformState = ViewGcodeWidget.ETransformState.Move; + meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Translation; + break; + case ViewControls3DButtons.Scale: + gcodeViewWidget.TransformState = ViewGcodeWidget.ETransformState.Scale; + meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Scale; + break; + case ViewControls3DButtons.Rotate: + meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation; + break; + + } }; expandModelOptions.CheckedStateChanged += expandModelOptions_CheckedStateChanged; @@ -834,12 +843,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow if (inLayers3DMode) { UserSettings.Instance.set("LayerViewDefault", "3D Layer"); - viewControls2D.Visible = false; } else { UserSettings.Instance.set("LayerViewDefault", "2D Layer"); - viewControls2D.Visible = true; // HACK: Getting the Layer2D view to show content only works if CenterPartInView is called after the control is visible and after some cycles have passed UiThread.RunOnIdle(gcodeViewWidget.CenterPartInView);