diff --git a/ApplicationView/WidescreenPanel.cs b/ApplicationView/WidescreenPanel.cs
index 96c1ca55b..bb0b1730f 100644
--- a/ApplicationView/WidescreenPanel.cs
+++ b/ApplicationView/WidescreenPanel.cs
@@ -67,7 +67,7 @@ namespace MatterHackers.MatterControl
int Max2ColumnWidth = 1590;
View3DTransformPart part3DView;
- GcodeViewBasic partGcodeView;
+ ViewGcodeBasic partGcodeView;
PanelSeparator RightBorderLine;
PanelSeparator LeftBorderLine;
@@ -247,7 +247,7 @@ namespace MatterHackers.MatterControl
part3DView.Margin = new BorderDouble(bottom: 4);
part3DView.AnchorAll();
- partGcodeView = new GcodeViewBasic(PrinterCommunication.Instance.ActivePrintItem, ActiveSliceSettings.Instance.GetBedSize, ActiveSliceSettings.Instance.GetBedCenter, false);
+ partGcodeView = new ViewGcodeBasic(PrinterCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, ActiveSliceSettings.Instance.BedCenter, false);
partGcodeView.AnchorAll();
ColumnTwo.AddChild(part3DView);
diff --git a/ControlElements/TextImageButtonFactory.cs b/ControlElements/TextImageButtonFactory.cs
index 9dace3148..31898dd3b 100644
--- a/ControlElements/TextImageButtonFactory.cs
+++ b/ControlElements/TextImageButtonFactory.cs
@@ -28,21 +28,14 @@ either expressed or implied, of the FreeBSD Project.
*/
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.IO;
-
using MatterHackers.Agg;
using MatterHackers.Agg.Image;
+using MatterHackers.Agg.ImageProcessing;
using MatterHackers.Agg.UI;
-using MatterHackers.Agg.OpenGlGui;
-using MatterHackers.PolygonMesh;
-using MatterHackers.RenderOpenGl;
-using MatterHackers.VectorMath;
using MatterHackers.Agg.VertexSource;
using MatterHackers.MatterControl.DataStorage;
-using MatterHackers.Agg.ImageProcessing;
+using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl
{
diff --git a/MatterControl.csproj b/MatterControl.csproj
index 35fb9d22b..711ee2076 100644
--- a/MatterControl.csproj
+++ b/MatterControl.csproj
@@ -101,6 +101,8 @@
+
+
@@ -170,7 +172,7 @@
Code
-
+
diff --git a/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs b/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs
index 0f489bd19..4edb915ce 100644
--- a/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs
+++ b/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs
@@ -51,68 +51,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
protected MeshViewerWidget meshViewerWidget;
event EventHandler unregisterEvents;
+ protected ViewControls3D viewControls3D;
+
public PartPreview3DWidget()
{
- ActiveTheme.Instance.ThemeChanged.RegisterEvent(Instance_ThemeChanged, ref unregisterEvents);
- }
-
- protected void Add3DViewControls()
- {
- FlowLayoutWidget transformTypeSelector = new FlowLayoutWidget();
- transformTypeSelector.BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
- textImageButtonFactory.FixedHeight = 20;
- textImageButtonFactory.FixedWidth = 20;
- textImageButtonFactory.AllowThemeToAdjustImage = false;
-
- string rotateIconPath = Path.Combine("Icons", "ViewTransformControls", "rotate.png");
- rotateViewButton = textImageButtonFactory.GenerateRadioButton("", rotateIconPath);
- rotateViewButton.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(rotateViewButton);
- rotateViewButton.Click += (sender, e) =>
- {
- meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation;
- };
-
- string translateIconPath = Path.Combine("Icons", "ViewTransformControls", "translate.png");
- translateButton = textImageButtonFactory.GenerateRadioButton("", translateIconPath);
- translateButton.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(translateButton);
- translateButton.Click += (sender, e) =>
- {
- meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Translation;
- };
-
- string scaleIconPath = Path.Combine("Icons", "ViewTransformControls", "scale.png");
- RadioButton scaleButton = textImageButtonFactory.GenerateRadioButton("", scaleIconPath);
- scaleButton.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(scaleButton);
- scaleButton.Click += (sender, e) =>
- {
- meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Scale;
- };
-
- viewControlsSeparator = new GuiWidget(2, 32);
- viewControlsSeparator.BackgroundColor = RGBA_Bytes.White;
- viewControlsSeparator.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(viewControlsSeparator);
-
- string partSelectIconPath = Path.Combine("Icons", "ViewTransformControls", "partSelect.png");
- partSelectButton = textImageButtonFactory.GenerateRadioButton("", partSelectIconPath);
- partSelectButton.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(partSelectButton);
- partSelectButton.Click += (sender, e) =>
- {
- meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.None;
- };
-
- transformTypeSelector.Margin = new BorderDouble(5);
- transformTypeSelector.HAnchor |= Agg.UI.HAnchor.ParentLeft;
- transformTypeSelector.VAnchor = Agg.UI.VAnchor.ParentTop;
- AddChild(transformTypeSelector);
- rotateViewButton.Checked = true;
-
- SetMeshViewerDisplayTheme();
- partSelectButton.CheckedStateChanged += SetMeshViewerDisplayTheme;
}
public override void OnClosed(EventArgs e)
@@ -124,12 +66,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
base.OnClosed(e);
}
- void Instance_ThemeChanged(object sender, EventArgs e)
- {
- SetMeshViewerDisplayTheme();
- Invalidate();
- }
-
protected static Slider InseretUiForSlider(FlowLayoutWidget wordOptionContainer, string header, double min = 0, double max = .5)
{
double scrollBarWidth = 100;
@@ -147,24 +83,5 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
return namedSlider;
}
-
- protected void SetMeshViewerDisplayTheme(object sender = null, EventArgs e = null)
- {
- meshViewerWidget.TrackballTumbleWidget.RotationHelperCircleColor = ActiveTheme.Instance.PrimaryBackgroundColor;
- //if (partSelectButton.Checked)
- {
- meshViewerWidget.PartColor = RGBA_Bytes.White;
- meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
- }
-#if false
- else
- {
- meshViewerWidget.PartColor = ActiveTheme.Instance.PrimaryAccentColor;
- meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
- }
-#endif
- meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
- meshViewerWidget.BuildVolumeColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryAccentColor.Red0To255, ActiveTheme.Instance.PrimaryAccentColor.Green0To255, ActiveTheme.Instance.PrimaryAccentColor.Blue0To255, 50);
- }
}
}
diff --git a/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs b/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs
index 46bc43ff8..7edcdb331 100644
--- a/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs
+++ b/PartPreviewWindow/BaseClasses/PartPreviewWidget.cs
@@ -55,11 +55,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
protected TextImageButtonFactory expandMenuOptionFactory = new TextImageButtonFactory();
protected TextImageButtonFactory whiteButtonFactory = new TextImageButtonFactory();
- protected RadioButton partSelectButton;
- protected RadioButton translateButton;
- protected RadioButton rotateViewButton;
- protected RadioButton scaleButton;
- protected GuiWidget viewControlsSeparator;
+ protected ViewControls2D viewControls2D;
protected Cover buttonRightPanelDisabledCover;
protected FlowLayoutWidget buttonRightPanel;
@@ -106,32 +102,5 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
BackgroundColor = RGBA_Bytes.White;
}
-
- protected void Add2DViewControls()
- {
- TextImageButtonFactory iconTextImageButtonFactory = new TextImageButtonFactory();
- iconTextImageButtonFactory.AllowThemeToAdjustImage = false;
-
- FlowLayoutWidget transformTypeSelector = new FlowLayoutWidget();
- transformTypeSelector.BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
- iconTextImageButtonFactory.FixedHeight = 20;
- iconTextImageButtonFactory.FixedWidth = 20;
-
- string translateIconPath = Path.Combine("Icons", "ViewTransformControls", "translate.png");
- translateButton = iconTextImageButtonFactory.GenerateRadioButton("", translateIconPath);
- translateButton.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(translateButton);
-
- string scaleIconPath = Path.Combine("Icons", "ViewTransformControls", "scale.png");
- scaleButton = iconTextImageButtonFactory.GenerateRadioButton("", scaleIconPath);
- scaleButton.Margin = new BorderDouble(3);
- transformTypeSelector.AddChild(scaleButton);
-
- transformTypeSelector.Margin = new BorderDouble(5);
- transformTypeSelector.HAnchor |= Agg.UI.HAnchor.ParentLeft;
- transformTypeSelector.VAnchor = Agg.UI.VAnchor.ParentTop;
- AddChild(transformTypeSelector);
- translateButton.Checked = true;
- }
}
}
diff --git a/PartPreviewWindow/PartPreviewMainWindow.cs b/PartPreviewWindow/PartPreviewMainWindow.cs
index 32ae0ea7f..01df77466 100644
--- a/PartPreviewWindow/PartPreviewMainWindow.cs
+++ b/PartPreviewWindow/PartPreviewMainWindow.cs
@@ -43,15 +43,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
public class PartPreviewMainWindow : SystemWindow
{
- View3DTransformPart part3DView;
- GcodeViewBasic partGcodeView;
- //PartPreview3DGcode part3DGcodeView;
+ View3DTransformPart view3DTransformPart;
+ ViewGcodeBasic viewGcodeBasic;
public PartPreviewMainWindow(PrintItemWrapper printItem)
: base(690, 340)
{
- string partPreviewTitle = LocalizedString.Get ("MatterControl");
- Title = string.Format("{0}: ", partPreviewTitle) + Path.GetFileName(printItem.Name);
+ string partPreviewTitle = LocalizedString.Get("MatterControl");
+ Title = string.Format("{0}: ", partPreviewTitle) + Path.GetFileName(printItem.Name);
BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
@@ -61,22 +60,24 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
double buildHeight = ActiveSliceSettings.Instance.BuildHeight;
- string part3DViewLabelBegining = ("3D");
- string part3DViewLabelEnd = LocalizedString.Get ("View");
- string part3DViewLabelFull = string.Format("{0} {1} ", part3DViewLabelBegining, part3DViewLabelEnd);
- part3DView = new View3DTransformPart(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, true);
- TabPage partPreview3DView = new TabPage(part3DView, part3DViewLabelFull);
+ // put in the 3D view
+ {
+ string part3DViewLabelFull = string.Format("{0} {1} ", "3D", "View".Localize());
- partGcodeView = new GcodeViewBasic(printItem, ActiveSliceSettings.Instance.GetBedSize, ActiveSliceSettings.Instance.GetBedCenter, true);
- TabPage layerView = new TabPage(partGcodeView, LocalizedString.Get("Layer View"));
+ view3DTransformPart = new View3DTransformPart(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, true);
+ TabPage partPreview3DView = new TabPage(view3DTransformPart, part3DViewLabelFull);
+ tabControl.AddTab(new SimpleTextTabWidget(partPreview3DView, 16,
+ ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()));
+ }
- //part3DGcodeView = new PartPreview3DGcode(printItem.FileLocation, bedXSize, bedYSize);
-
- tabControl.AddTab(new SimpleTextTabWidget(partPreview3DView , 16,
- ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()));
-
- tabControl.AddTab(new SimpleTextTabWidget(layerView, 16,
- ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()));
+ // 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);
+ layerView = new TabPage(viewGcodeBasic, LocalizedString.Get("Layer View"));
+ tabControl.AddTab(new SimpleTextTabWidget(layerView, 16,
+ ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()));
+ }
this.AddChild(tabControl);
this.AnchorAll();
@@ -89,12 +90,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
MinimumSize = new Vector2(400, 300);
ShowAsSystemWindow();
- // We do this after showing the system window so that when we try and take fucus the parent window (the system window)
- // exists and can give the fucus to its child the gecode window.
+ // We do this after showing the system window so that when we try and take focus of the parent window (the system window)
+ // it exists and can give the focus to its child the gcode window.
if (Path.GetExtension(printItem.FileLocation).ToUpper() == ".GCODE")
{
tabControl.TabBar.SwitchToPage(layerView);
- partGcodeView.Focus();
+ viewGcodeBasic.Focus();
}
}
@@ -102,8 +103,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(Instance_ThemeChanged, ref unregisterEvents);
- part3DView.Closed += (sender, e) => { Close(); };
- partGcodeView.Closed += (sender, e) => { Close(); };
+ view3DTransformPart.Closed += (sender, e) => { Close(); };
+ viewGcodeBasic.Closed += (sender, e) => { Close(); };
}
public override void OnClosed(EventArgs e)
diff --git a/PartPreviewWindow/View3DTransfromPart.cs b/PartPreviewWindow/View3DTransfromPart.cs
index 8449aa09b..c0550da3f 100644
--- a/PartPreviewWindow/View3DTransfromPart.cs
+++ b/PartPreviewWindow/View3DTransfromPart.cs
@@ -177,7 +177,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (meshViewerWidget.TrackballTumbleWidget.TransformState == TrackBallController.MouseDownType.None)
{
- partSelectButton.ClickButton(null);
+ viewControls3D.partSelectButton.ClickButton(null);
int meshHitIndex;
if (FindMeshHitPosition(mouseEvent.Position, out meshHitIndex))
{
@@ -389,6 +389,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
centerPartPreviewAndControls.AddChild(buttonRightPanelHolder);
buttonRightPanelHolder.AddChild(buttonRightPanel);
+ viewControls3D = new ViewControls3D(meshViewerWidget);
+
buttonRightPanelDisabledCover = new Cover(HAnchor.ParentLeftRight, VAnchor.ParentBottomTop);
buttonRightPanelDisabledCover.BackgroundColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryBackgroundColor, 150);
buttonRightPanelHolder.AddChild(buttonRightPanelDisabledCover);
@@ -415,9 +417,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.AnchorAll();
meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation;
- Add3DViewControls();
- viewControlsSeparator.Visible = false;
- partSelectButton.Visible = false;
+ AddChild(viewControls3D);
+ viewControls3D.PartSelectVisible = false;
AddHandlers();
@@ -490,7 +491,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
UnlockEditControls();
PullMeshDataFromAsynchLists();
saveButtons.Visible = true;
- partSelectButton.ClickButton(null);
+ viewControls3D.partSelectButton.ClickButton(null);
// now set the selection to the new copy
MeshExtraData[Meshes.Count - 1].currentScale = MeshExtraData[SelectedMeshIndex].currentScale;
@@ -684,7 +685,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
UnlockEditControls();
saveButtons.Visible = true;
- partSelectButton.ClickButton(null);
+ viewControls3D.partSelectButton.ClickButton(null);
PullMeshDataFromAsynchLists();
}
@@ -693,7 +694,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
UnlockEditControls();
saveButtons.Visible = true;
- partSelectButton.ClickButton(null);
+ viewControls3D.partSelectButton.ClickButton(null);
if (asynchMeshesList.Count == Meshes.Count + 1)
{
@@ -773,14 +774,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
doEdittingButtonsContainer.Visible = false;
buttonRightPanelDisabledCover.Visible = true;
- if (viewControlsSeparator != null)
+ viewControls3D.PartSelectVisible = false;
+ if (meshViewerWidget.TrackballTumbleWidget.TransformState == TrackBallController.MouseDownType.None)
{
- viewControlsSeparator.Visible = false;
- partSelectButton.Visible = false;
- if (meshViewerWidget.TrackballTumbleWidget.TransformState == TrackBallController.MouseDownType.None)
- {
- rotateViewButton.ClickButton(null);
- }
+ viewControls3D.rotateButton.ClickButton(null);
}
}
@@ -791,8 +788,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
if (!enterEditButtonsContainer.Visible)
{
- viewControlsSeparator.Visible = true;
- partSelectButton.Visible = true;
+ viewControls3D.PartSelectVisible = true;
doEdittingButtonsContainer.Visible = true;
}
@@ -877,7 +873,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
UnlockEditControls();
autoArrangeButton.Visible = true;
- partSelectButton.ClickButton(null);
+ viewControls3D.partSelectButton.ClickButton(null);
Invalidate();
@@ -1638,7 +1634,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
if (Meshes.Count > 0)
{
- partSelectButtonWasClicked = partSelectButton.Checked;
+ partSelectButtonWasClicked = viewControls3D.partSelectButton.Checked;
string progressSavingPartsLabel = LocalizedString.Get("Saving");
string progressSavingPartsLabelFull = "{0}:".FormatWith(progressSavingPartsLabel);
@@ -1699,7 +1695,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
if (partSelectButtonWasClicked)
{
- partSelectButton.ClickButton(null);
+ viewControls3D.partSelectButton.ClickButton(null);
}
}
diff --git a/PartPreviewWindow/ViewControls2D.cs b/PartPreviewWindow/ViewControls2D.cs
new file mode 100644
index 000000000..894301058
--- /dev/null
+++ b/PartPreviewWindow/ViewControls2D.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+
+using MatterHackers.Agg;
+using MatterHackers.Agg.UI;
+using MatterHackers.MatterControl;
+
+namespace MatterHackers.MatterControl.PartPreviewWindow
+{
+ public class ViewControls2D : FlowLayoutWidget
+ {
+ public RadioButton translateButton;
+ public RadioButton scaleButton;
+
+ public ViewControls2D()
+ {
+ TextImageButtonFactory iconTextImageButtonFactory = new TextImageButtonFactory();
+ iconTextImageButtonFactory.AllowThemeToAdjustImage = false;
+
+ BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
+ iconTextImageButtonFactory.FixedHeight = 20;
+ iconTextImageButtonFactory.FixedWidth = 20;
+
+ string translateIconPath = Path.Combine("Icons", "ViewTransformControls", "translate.png");
+ translateButton = iconTextImageButtonFactory.GenerateRadioButton("", translateIconPath);
+ translateButton.Margin = new BorderDouble(3);
+ AddChild(translateButton);
+
+ string scaleIconPath = Path.Combine("Icons", "ViewTransformControls", "scale.png");
+ scaleButton = iconTextImageButtonFactory.GenerateRadioButton("", scaleIconPath);
+ scaleButton.Margin = new BorderDouble(3);
+ AddChild(scaleButton);
+
+ Margin = new BorderDouble(5);
+ HAnchor |= Agg.UI.HAnchor.ParentLeft;
+ VAnchor = Agg.UI.VAnchor.ParentTop;
+ translateButton.Checked = true;
+ }
+ }
+}
diff --git a/PartPreviewWindow/ViewControls3D.cs b/PartPreviewWindow/ViewControls3D.cs
new file mode 100644
index 000000000..b577a130d
--- /dev/null
+++ b/PartPreviewWindow/ViewControls3D.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+
+using MatterHackers.Agg;
+using MatterHackers.Agg.UI;
+using MatterHackers.MatterControl;
+using MatterHackers.MeshVisualizer;
+using MatterHackers.VectorMath;
+
+namespace MatterHackers.MatterControl.PartPreviewWindow
+{
+ public class ViewControls3D : FlowLayoutWidget
+ {
+ GuiWidget partSelectSeparator;
+ MeshViewerWidget meshViewerWidget;
+
+ public RadioButton translateButton;
+ public RadioButton rotateButton;
+ public RadioButton scaleButton;
+ public RadioButton partSelectButton;
+
+ public bool PartSelectVisible
+ {
+ get { return partSelectSeparator.Visible; }
+ set
+ {
+ partSelectSeparator.Visible = value;
+ partSelectButton.Visible = value;
+ }
+ }
+
+ public ViewControls3D(MeshViewerWidget meshViewerWidget)
+ {
+ this.meshViewerWidget = meshViewerWidget;
+ TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
+
+ textImageButtonFactory.normalTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ textImageButtonFactory.hoverTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ textImageButtonFactory.disabledTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ textImageButtonFactory.pressedTextColor = ActiveTheme.Instance.PrimaryTextColor;
+
+ BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
+ textImageButtonFactory.FixedHeight = 20;
+ textImageButtonFactory.FixedWidth = 20;
+ textImageButtonFactory.AllowThemeToAdjustImage = false;
+
+ string rotateIconPath = Path.Combine("Icons", "ViewTransformControls", "rotate.png");
+ rotateButton = textImageButtonFactory.GenerateRadioButton("", rotateIconPath);
+ rotateButton.Margin = new BorderDouble(3);
+ AddChild(rotateButton);
+ rotateButton.Click += (sender, e) =>
+ {
+ meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation;
+ };
+
+ string translateIconPath = Path.Combine("Icons", "ViewTransformControls", "translate.png");
+ translateButton = textImageButtonFactory.GenerateRadioButton("", translateIconPath);
+ translateButton.Margin = new BorderDouble(3);
+ AddChild(translateButton);
+ translateButton.Click += (sender, e) =>
+ {
+ meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Translation;
+ };
+
+ string scaleIconPath = Path.Combine("Icons", "ViewTransformControls", "scale.png");
+ RadioButton scaleButton = textImageButtonFactory.GenerateRadioButton("", scaleIconPath);
+ scaleButton.Margin = new BorderDouble(3);
+ AddChild(scaleButton);
+ scaleButton.Click += (sender, e) =>
+ {
+ meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Scale;
+ };
+
+ partSelectSeparator = new GuiWidget(2, 32);
+ partSelectSeparator.BackgroundColor = RGBA_Bytes.White;
+ partSelectSeparator.Margin = new BorderDouble(3);
+ AddChild(partSelectSeparator);
+
+ string partSelectIconPath = Path.Combine("Icons", "ViewTransformControls", "partSelect.png");
+ partSelectButton = textImageButtonFactory.GenerateRadioButton("", partSelectIconPath);
+ partSelectButton.Margin = new BorderDouble(3);
+ AddChild(partSelectButton);
+ partSelectButton.Click += (sender, e) =>
+ {
+ meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.None;
+ };
+
+ Margin = new BorderDouble(5);
+ HAnchor |= Agg.UI.HAnchor.ParentLeft;
+ VAnchor = Agg.UI.VAnchor.ParentTop;
+ rotateButton.Checked = true;
+
+ SetMeshViewerDisplayTheme();
+ partSelectButton.CheckedStateChanged += SetMeshViewerDisplayTheme;
+ }
+
+ protected void SetMeshViewerDisplayTheme(object sender = null, EventArgs e = null)
+ {
+ meshViewerWidget.TrackballTumbleWidget.RotationHelperCircleColor = ActiveTheme.Instance.PrimaryBackgroundColor;
+ //if (partSelectButton.Checked)
+ {
+ meshViewerWidget.PartColor = RGBA_Bytes.White;
+ meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
+ }
+#if false
+ else
+ {
+ meshViewerWidget.PartColor = ActiveTheme.Instance.PrimaryAccentColor;
+ meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
+ }
+#endif
+ meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
+ meshViewerWidget.BuildVolumeColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryAccentColor.Red0To255, ActiveTheme.Instance.PrimaryAccentColor.Green0To255, ActiveTheme.Instance.PrimaryAccentColor.Blue0To255, 50);
+ }
+ }
+}
diff --git a/PartPreviewWindow/GcodeViewBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs
similarity index 92%
rename from PartPreviewWindow/GcodeViewBasic.cs
rename to PartPreviewWindow/ViewGcodeBasic.cs
index 0f8e84992..f0b9546b5 100644
--- a/PartPreviewWindow/GcodeViewBasic.cs
+++ b/PartPreviewWindow/ViewGcodeBasic.cs
@@ -33,6 +33,7 @@ using System.IO;
using MatterHackers.Agg;
using MatterHackers.Agg.UI;
using MatterHackers.GCodeVisualizer;
+using MatterHackers.MeshVisualizer;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.PrintQueue;
using MatterHackers.MatterControl.SlicerConfiguration;
@@ -40,7 +41,7 @@ using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
- public class GcodeViewBasic : PartPreviewWidget
+ public class ViewGcodeBasic : PartPreview3DWidget
{
public Slider selectLayerSlider;
public Slider layerStartRenderRatioSlider;
@@ -62,29 +63,38 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
GuiWidget gcodeDispalyWidget;
- GetSizeFunction bedSizeFunction;
- GetSizeFunction bedCenterFunction;
EventHandler unregisterEvents;
bool widgetHasCloseButton;
public delegate Vector2 GetSizeFunction();
- public GcodeViewBasic(PrintItemWrapper printItem, GetSizeFunction bedSizeFunction, GetSizeFunction bedCenterFunction, bool addCloseButton)
+ static string slicingErrorMessage = "Slicing Error.\nPlease review your slice settings.".Localize();
+ static string pressGenerateMessage = "Press 'generate' to view layers".Localize();
+ static string fileNotFoundMessage = "File not found on disk.".Localize();
+
+ Vector2 bedCenter;
+ Vector3 viewerVolume;
+ MeshViewerWidget.BedShape bedShape;
+
+ public ViewGcodeBasic(PrintItemWrapper printItem, Vector3 viewerVolume, MeshViewerWidget.BedShape bedShape, Vector2 bedCenter, bool addCloseButton)
{
+ this.viewerVolume = viewerVolume;
+ this.bedShape = bedShape;
+ this.bedCenter = bedCenter;
widgetHasCloseButton = addCloseButton;
this.printItem = printItem;
- this.bedSizeFunction = bedSizeFunction;
- this.bedCenterFunction = bedCenterFunction;
-
CreateAndAddChildren(null);
}
- static string slicingErrorMessage = "Slicing Error.\nPlease review your slice settings.".Localize();
- static string pressGenerateMessage = "Press 'generate' to view layers".Localize();
- static string fileNotFoundMessage = "File not found on disk.".Localize();
void CreateAndAddChildren(object state)
{
+ TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
+ textImageButtonFactory.normalTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ textImageButtonFactory.hoverTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ textImageButtonFactory.disabledTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ textImageButtonFactory.pressedTextColor = ActiveTheme.Instance.PrimaryTextColor;
+
RemoveAllChildren();
gcodeViewWidget = null;
gcodeProcessingStateInfoText = null;
@@ -181,12 +191,20 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
mainContainerTopToBottom.AddChild(buttonBottomPanel);
this.AddChild(mainContainerTopToBottom);
- Add2DViewControls();
- translateButton.Click += (sender, e) =>
+ meshViewerWidget = new MeshViewerWidget(viewerVolume, 1, bedShape, "Press 'Add' to select an item.".Localize());
+
+ viewControls2D = new ViewControls2D();
+ AddChild(viewControls2D);
+ viewControls3D = new ViewControls3D(meshViewerWidget);
+ AddChild(viewControls3D);
+ viewControls3D.Visible = false;
+ viewControls3D.translateButton.ClickButton(null);
+
+ viewControls2D.translateButton.Click += (sender, e) =>
{
gcodeViewWidget.TransformState = GCodeViewWidget.ETransformState.Move;
};
- scaleButton.Click += (sender, e) =>
+ viewControls2D.scaleButton.Click += (sender, e) =>
{
gcodeViewWidget.TransformState = GCodeViewWidget.ETransformState.Scale;
};
@@ -254,6 +272,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void AddModelInfo(FlowLayoutWidget buttonPanel)
{
+ int oldWidth = textImageButtonFactory.FixedWidth;
textImageButtonFactory.FixedWidth = 44;
FlowLayoutWidget modelInfoContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
@@ -343,11 +362,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
buttonPanel.AddChild(modelInfoContainer);
- textImageButtonFactory.FixedWidth = 0;
+ textImageButtonFactory.FixedWidth = oldWidth;
}
private void AddLayerInfo(FlowLayoutWidget buttonPanel)
{
+ int oldWidth = textImageButtonFactory.FixedWidth;
textImageButtonFactory.FixedWidth = 44;
FlowLayoutWidget layerInfoContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
@@ -366,11 +386,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
buttonPanel.AddChild(layerInfoContainer);
- textImageButtonFactory.FixedWidth = 0;
+ textImageButtonFactory.FixedWidth = oldWidth;
}
private void AddDisplayControls(FlowLayoutWidget buttonPanel)
{
+ int oldWidth = textImageButtonFactory.FixedWidth;
textImageButtonFactory.FixedWidth = 44;
FlowLayoutWidget layerInfoContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
@@ -410,6 +431,26 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
layerInfoContainer.AddChild(showRetractions);
}
+ // put in a show 3D view checkbox
+ {
+ CheckBox show3D = new CheckBox(LocalizedString.Get("Show 3D"), textColor: ActiveTheme.Instance.PrimaryTextColor);
+ show3D.CheckedStateChanged += (sender, e) =>
+ {
+ // show the tumbel widget and not the line widget
+ if (show3D.Checked)
+ {
+ viewControls2D.Visible = false;
+ viewControls3D.Visible = true;
+ }
+ else
+ {
+ viewControls2D.Visible = true;
+ viewControls3D.Visible = false;
+ }
+ };
+ layerInfoContainer.AddChild(show3D);
+ }
+
// Put in the sync to print checkbox
if (!widgetHasCloseButton)
{
@@ -437,7 +478,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
buttonPanel.AddChild(layerInfoContainer);
- textImageButtonFactory.FixedWidth = 0;
+ textImageButtonFactory.FixedWidth = oldWidth;
}
public override void OnParentChanged(EventArgs e)
@@ -448,7 +489,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
string partToStartLoadingOnFirstDraw = null;
private GuiWidget CreateGCodeViewWidget(string pathAndFileName)
{
- gcodeViewWidget = new GCodeViewWidget(bedSizeFunction(), bedCenterFunction());
+ gcodeViewWidget = new GCodeViewWidget(new Vector2(viewerVolume.x, viewerVolume.y), bedCenter);
gcodeViewWidget.DoneLoading += DoneLoadingGCode;
gcodeViewWidget.LoadingProgressChanged += LoadingProgressChanged;
partToStartLoadingOnFirstDraw = pathAndFileName;
diff --git a/SlicerConfiguration/ActiveSliceSettings.cs b/SlicerConfiguration/ActiveSliceSettings.cs
index 74e59fc8a..0774ff715 100644
--- a/SlicerConfiguration/ActiveSliceSettings.cs
+++ b/SlicerConfiguration/ActiveSliceSettings.cs
@@ -337,10 +337,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
}
}
- public Vector2 GetBedCenter()
- {
- return BedCenter;
- }
public Vector2 BedCenter
{
get
diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt
index 35589cf26..862ec3f8d 100644
--- a/StaticData/Translations/Master.txt
+++ b/StaticData/Translations/Master.txt
@@ -2259,3 +2259,9 @@ Translated:Printer Sync
English:Sync To Print
Translated:Sync To Print
+English:Layers
+Translated:Layers
+
+English:Show 3D
+Translated:Show 3D
+