diff --git a/ApplicationView/ThemeConfig.cs b/ApplicationView/ThemeConfig.cs
index c02173f9a..1d8e4dec0 100644
--- a/ApplicationView/ThemeConfig.cs
+++ b/ApplicationView/ThemeConfig.cs
@@ -114,6 +114,8 @@ namespace MatterHackers.MatterControl
public RGBA_Bytes PrimaryTabFillColor { get; internal set; }
public double ButtonHeight { get; internal set; } = 32;
+ public int OverlayAlpha { get; set; } = 50;
+
private EventHandler unregisterEvents;
static ThemeConfig()
diff --git a/MatterControl.csproj b/MatterControl.csproj
index a85416cd3..6ab754fd1 100644
--- a/MatterControl.csproj
+++ b/MatterControl.csproj
@@ -269,7 +269,6 @@
-
diff --git a/PartPreviewWindow/PrinterTabBase.cs b/PartPreviewWindow/PrinterTabBase.cs
index 0f82e9955..f1446dda7 100644
--- a/PartPreviewWindow/PrinterTabBase.cs
+++ b/PartPreviewWindow/PrinterTabBase.cs
@@ -58,6 +58,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
viewControls3D = new ViewControls3D(theme, sceneContext.Scene.UndoBuffer)
{
+ BackgroundColor = new RGBA_Bytes(0, 0, 0, theme.OverlayAlpha),
PartSelectVisible = false,
VAnchor = VAnchor.Top | VAnchor.Fit | VAnchor.Absolute,
HAnchor = HAnchor.Left | HAnchor.Fit,
diff --git a/PartPreviewWindow/ViewControls3D.cs b/PartPreviewWindow/ViewControls3D.cs
index 43756a530..b41b31495 100644
--- a/PartPreviewWindow/ViewControls3D.cs
+++ b/PartPreviewWindow/ViewControls3D.cs
@@ -49,14 +49,27 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
PartSelect
}
+ public enum PartViewMode
+ {
+ Layers2D,
+ Layers3D,
+ Model
+ }
+
+ public class ViewModeChangedEventArgs : EventArgs
+ {
+ public PartViewMode ViewMode { get; set; }
+ }
+
public class TransformStateChangedEventArgs : EventArgs
{
public ViewControls3DButtons TransformMode { get; set; }
}
- public class ViewControls3D : ViewControlsBase
+ public class ViewControls3D : FlowLayoutWidget
{
public event EventHandler ResetView;
+
public event EventHandler ViewModeChanged;
public event EventHandler TransformStateChanged;
@@ -136,10 +149,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public ViewControls3D(ThemeConfig theme, UndoBuffer undoBuffer)
{
- this.BackgroundColor = new RGBA_Bytes(0, 0, 0, overlayAlpha);
- this.HAnchor |= HAnchor.Left;
- this.VAnchor = VAnchor.Top;
-
string iconPath;
var commonMargin = theme.ButtonSpacing;
@@ -279,9 +288,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
buttonGroupB.Add(Layers2DButton);
this.AddChild(Layers2DButton);
+ this.AddChild(new HorizontalSpacer());
+
this.AddChild(this.OverflowMenu = new OverflowMenu(IconColor.White)
{
Name = "View3D Overflow Menu",
+ AlignToRightEdge = true,
Margin = 3
});
diff --git a/PartPreviewWindow/ViewControlsToggle.cs b/PartPreviewWindow/ViewControlsToggle.cs
deleted file mode 100644
index 18935aff3..000000000
--- a/PartPreviewWindow/ViewControlsToggle.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-Copyright (c) 2017, Lars Brubaker, John Lewin
-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.IO;
-using MatterHackers.Agg;
-using MatterHackers.Agg.UI;
-
-namespace MatterHackers.MatterControl.PartPreviewWindow
-{
- public class ViewControlsBase : FlowLayoutWidget
- {
- protected int buttonHeight = UserSettings.Instance.IsTouchScreen ? 40 : 20;
- public const int overlayAlpha = 50;
- }
-
- public enum PartViewMode
- {
- Layers2D,
- Layers3D,
- Model
- }
-
- public class ViewModeChangedEventArgs : EventArgs
- {
- public PartViewMode ViewMode { get; set; }
- }
-
- public class ViewControlsToggle : ViewControlsBase
- {
- public event EventHandler ViewModeChanged;
-
- public ViewControlsToggle(TextImageButtonFactory buttonFactory, PartViewMode initialViewMode)
- {
- this.BackgroundColor = new RGBA_Bytes(0, 0, 0, overlayAlpha);
-
- var layers2DButton = buttonFactory.GenerateRadioButton("", Path.Combine("ViewTransformControls", "2d.png"));
- layers2DButton.Name = "Layers2D Button";
- layers2DButton.Margin = new BorderDouble(3);
- layers2DButton.Click += SwitchModes_Click;
- this.AddChild(layers2DButton);
-
- var layers3DButton = buttonFactory.GenerateRadioButton("", Path.Combine("ViewTransformControls", "3d.png"));
- layers3DButton.Click += SwitchModes_Click;
- layers3DButton.Margin = new BorderDouble(3);
-
- if (!UserSettings.Instance.IsTouchScreen)
- {
- this.AddChild(layers3DButton);
-
- // Change to always start in 3D view on desktop
- layers3DButton.Checked = initialViewMode == PartViewMode.Layers3D;
- }
- else
- {
- layers2DButton.Checked = true;
- }
-
- this.Margin = new BorderDouble(5, 5, 200, 5);
- this.HAnchor |= HAnchor.Right;
- this.VAnchor = VAnchor.Top;
- }
-
- private void SwitchModes_Click(object sender, MouseEventArgs e)
- {
- var widget = sender as GuiWidget;
- ViewModeChanged?.Invoke(this, new ViewModeChangedEventArgs()
- {
- ViewMode = widget.Name == "Layers2D Button" ? PartViewMode.Layers2D : PartViewMode.Layers3D
- });
- }
- }
-}
\ No newline at end of file
diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs
index e38d0f378..4f801b236 100644
--- a/PartPreviewWindow/ViewGcodeBasic.cs
+++ b/PartPreviewWindow/ViewGcodeBasic.cs
@@ -43,12 +43,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private TextWidget gcodeProcessingStateInfoText;
private PrinterConfig printer;
private ViewControls3D viewControls3D;
+ private ThemeConfig theme;
- public ViewGcodeBasic(PrinterConfig printer, BedConfig sceneContext, ViewControls3D viewControls3D)
+ public ViewGcodeBasic(PrinterConfig printer, BedConfig sceneContext, ViewControls3D viewControls3D, ThemeConfig theme)
{
this.printer = printer;
this.sceneContext = sceneContext;
this.viewControls3D = viewControls3D;
+ this.theme = theme;
CreateAndAddChildren(printer);
@@ -97,7 +99,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
Margin = new BorderDouble(0, 0, 35, 5),
Padding = new BorderDouble(10),
- BackgroundColor = new RGBA_Bytes(0, 0, 0, ViewControlsBase.overlayAlpha),
+ BackgroundColor = new RGBA_Bytes(0, 0, 0, theme.OverlayAlpha),
HAnchor = HAnchor.Right | HAnchor.Absolute,
VAnchor = VAnchor.Top | VAnchor.Fit,
Width = 150