Merge branch 'design_tools' of https://github.com/MatterHackers/MatterControl into design_tools
This commit is contained in:
commit
71a7837880
3 changed files with 113 additions and 57 deletions
|
|
@ -77,33 +77,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
};
|
||||
viewControls3D.ViewModeChanged += (s, e) =>
|
||||
{
|
||||
switch(e.ViewMode)
|
||||
{
|
||||
case PartViewMode.Layers2D:
|
||||
UserSettings.Instance.set("LayerViewDefault", "2D Layer");
|
||||
if (gcodeViewer.gcode2DWidget != null)
|
||||
{
|
||||
gcodeViewer.gcode2DWidget.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(gcodeViewer.gcode2DWidget.CenterPartInView);
|
||||
}
|
||||
this.SwitchToLayerView();
|
||||
break;
|
||||
|
||||
case PartViewMode.Layers3D:
|
||||
UserSettings.Instance.set("LayerViewDefault", "3D Layer");
|
||||
if (gcodeViewer.gcode2DWidget != null)
|
||||
{
|
||||
gcodeViewer.gcode2DWidget.Visible = false;
|
||||
}
|
||||
this.SwitchToLayerView();
|
||||
break;
|
||||
|
||||
case PartViewMode.Model:
|
||||
this.SwitchToModelView();
|
||||
break;
|
||||
}
|
||||
this.ViewMode = e.ViewMode;
|
||||
};
|
||||
|
||||
viewControls3D.ResetView += (sender, e) =>
|
||||
|
|
@ -356,25 +330,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
sideBar.AddPage("Terminal".Localize(), terminalControls);
|
||||
}
|
||||
|
||||
public void SwitchToLayerView()
|
||||
{
|
||||
this.ShowSliceLayers = true;
|
||||
}
|
||||
|
||||
public void SwitchToModelView()
|
||||
{
|
||||
this.ShowSliceLayers = false;
|
||||
}
|
||||
|
||||
public void ToggleView()
|
||||
{
|
||||
this.ShowSliceLayers = !gcodeViewer.Visible;
|
||||
}
|
||||
|
||||
private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode;
|
||||
|
||||
private bool showSliceLayers;
|
||||
public bool ShowSliceLayers
|
||||
private bool ShowSliceLayers
|
||||
{
|
||||
get => showSliceLayers;
|
||||
set
|
||||
|
|
@ -398,6 +357,49 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
}
|
||||
}
|
||||
|
||||
private PartViewMode viewMode;
|
||||
public PartViewMode ViewMode
|
||||
{
|
||||
get => viewMode;
|
||||
set
|
||||
{
|
||||
if (viewMode != value)
|
||||
{
|
||||
viewMode = value;
|
||||
|
||||
viewControls3D.ViewMode = viewMode;
|
||||
|
||||
switch (viewMode)
|
||||
{
|
||||
case PartViewMode.Layers2D:
|
||||
UserSettings.Instance.set("LayerViewDefault", "2D Layer");
|
||||
if (gcodeViewer.gcode2DWidget != null)
|
||||
{
|
||||
gcodeViewer.gcode2DWidget.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(gcodeViewer.gcode2DWidget.CenterPartInView);
|
||||
}
|
||||
this.ShowSliceLayers = true;
|
||||
break;
|
||||
|
||||
case PartViewMode.Layers3D:
|
||||
UserSettings.Instance.set("LayerViewDefault", "3D Layer");
|
||||
if (gcodeViewer.gcode2DWidget != null)
|
||||
{
|
||||
gcodeViewer.gcode2DWidget.Visible = false;
|
||||
}
|
||||
this.ShowSliceLayers = true;
|
||||
break;
|
||||
|
||||
case PartViewMode.Model:
|
||||
this.ShowSliceLayers = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void LoadActivePrintItem()
|
||||
{
|
||||
await modelViewer.ClearBedAndLoadPrintItemWrapper(printItem);
|
||||
|
|
@ -444,7 +446,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
private void TrackballTumbleWidget_DrawGlContent(object sender, EventArgs e)
|
||||
{
|
||||
if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null || !this.Visible)
|
||||
if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null || !gcodeViewer.Visible)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
ApplicationController.Instance.Printer.BedPlate.LoadGCode(printItem.GetGCodePathAndFileName(), printerTabPage.gcodeViewer.LoadProgress_Changed);
|
||||
sliceProgressReporter.EndReporting();
|
||||
|
||||
printerTabPage.SwitchToLayerView();
|
||||
printerTabPage.ViewMode = PartViewMode.Layers3D;
|
||||
|
||||
// HACK: directly fire method which previously ran on SlicingDone event on PrintItemWrapper
|
||||
UiThread.RunOnIdle(printerTabPage.gcodeViewer.CreateAndAddChildren);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using MatterHackers.Agg;
|
||||
|
|
@ -143,27 +144,36 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
resetViewButton.Click += (s, e) => ResetView?.Invoke(this, null);
|
||||
AddChild(resetViewButton);
|
||||
|
||||
var buttonGroupA = new ObservableCollection<GuiWidget>();
|
||||
|
||||
|
||||
if (UserSettings.Instance.IsTouchScreen)
|
||||
{
|
||||
iconPath = Path.Combine("ViewTransformControls", "rotate.png");
|
||||
rotateButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath, 32, 32));
|
||||
rotateButton.SiblingRadioButtonList = buttonGroupA;
|
||||
rotateButton.ToolTipText = "Rotate (Alt + Left Mouse)".Localize();
|
||||
rotateButton.Margin = new BorderDouble(3);
|
||||
rotateButton.Margin = 3;
|
||||
rotateButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.Rotate;
|
||||
buttonGroupA.Add(rotateButton);
|
||||
AddChild(rotateButton);
|
||||
|
||||
iconPath = Path.Combine("ViewTransformControls", "translate.png");
|
||||
translateButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath, 32, 32));
|
||||
translateButton.SiblingRadioButtonList = buttonGroupA;
|
||||
translateButton.ToolTipText = "Move (Shift + Left Mouse)".Localize();
|
||||
translateButton.Margin = new BorderDouble(3);
|
||||
translateButton.Margin = 3;
|
||||
translateButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.Translate;
|
||||
buttonGroupA.Add(translateButton);
|
||||
AddChild(translateButton);
|
||||
|
||||
iconPath = Path.Combine("ViewTransformControls", "scale.png");
|
||||
scaleButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath, 32, 32));
|
||||
scaleButton.SiblingRadioButtonList = buttonGroupA;
|
||||
scaleButton.ToolTipText = "Zoom (Ctrl + Left Mouse)".Localize();
|
||||
scaleButton.Margin = 3;
|
||||
scaleButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.Scale;
|
||||
buttonGroupA.Add(scaleButton);
|
||||
AddChild(scaleButton);
|
||||
|
||||
rotateButton.Checked = true;
|
||||
|
|
@ -176,26 +186,34 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
iconPath = Path.Combine("ViewTransformControls", "partSelect.png");
|
||||
partSelectButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath,32,32));
|
||||
partSelectButton.SiblingRadioButtonList = buttonGroupA;
|
||||
partSelectButton.ToolTipText = "Select Part".Localize();
|
||||
partSelectButton.Visible = false;
|
||||
partSelectButton.Margin = new BorderDouble(3);
|
||||
partSelectButton.Margin = 3;
|
||||
partSelectButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.PartSelect;
|
||||
buttonGroupA.Add(partSelectButton);
|
||||
AddChild(partSelectButton);
|
||||
|
||||
var buttonGroupB = new ObservableCollection<GuiWidget>();
|
||||
|
||||
iconPath = Path.Combine("ViewTransformControls", "model.png");
|
||||
var modelViewButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath, 32, 32));
|
||||
modelViewButton.SiblingRadioButtonList = buttonGroupB;
|
||||
modelViewButton.Name = "Model View Button";
|
||||
modelViewButton.Checked = false;
|
||||
modelViewButton.ToolTipText = "Model".Localize();
|
||||
modelViewButton.Checked = true;
|
||||
modelViewButton.Margin = 3;
|
||||
modelViewButton.Click += SwitchModes_Click;
|
||||
buttonGroupB.Add(modelViewButton);
|
||||
AddChild(modelViewButton);
|
||||
|
||||
var layers3DButton = buttonFactory.GenerateRadioButton("", Path.Combine("ViewTransformControls", "3d.png"));
|
||||
layers3DButton.SiblingRadioButtonList = buttonGroupB;
|
||||
layers3DButton.Name = "Layers3D Button";
|
||||
layers3DButton.ToolTipText = "3D Layers".Localize();
|
||||
layers3DButton.Margin = 3;
|
||||
layers3DButton.Click += SwitchModes_Click;
|
||||
layers3DButton.Margin = new BorderDouble(3);
|
||||
buttonGroupB.Add(layers3DButton);
|
||||
|
||||
if (!UserSettings.Instance.IsTouchScreen)
|
||||
{
|
||||
|
|
@ -203,10 +221,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
}
|
||||
|
||||
var layers2DButton = buttonFactory.GenerateRadioButton("", Path.Combine("ViewTransformControls", "2d.png"));
|
||||
layers2DButton.SiblingRadioButtonList = buttonGroupB;
|
||||
layers2DButton.Name = "Layers2D Button";
|
||||
layers2DButton.ToolTipText = "2D Layers".Localize();
|
||||
layers2DButton.Margin = new BorderDouble(3);
|
||||
layers2DButton.Margin = 3;
|
||||
layers2DButton.Click += SwitchModes_Click;
|
||||
buttonGroupB.Add(layers2DButton);
|
||||
this.AddChild(layers2DButton);
|
||||
|
||||
OverflowButton = new OverflowDropdown(allowLightnessInvert: false)
|
||||
|
|
@ -216,34 +236,68 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
Margin = 3
|
||||
};
|
||||
AddChild(OverflowButton);
|
||||
|
||||
this.ViewMode = PartViewMode.Model;
|
||||
}
|
||||
|
||||
private void SwitchModes_Click(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (sender is GuiWidget widget)
|
||||
{
|
||||
PartViewMode viewMode;
|
||||
|
||||
if (widget.Name == "Layers2D Button")
|
||||
{
|
||||
viewMode = PartViewMode.Layers2D;
|
||||
this.ViewMode = PartViewMode.Layers2D;
|
||||
}
|
||||
else if (widget.Name == "Layers3D Button")
|
||||
{
|
||||
viewMode = PartViewMode.Layers3D;
|
||||
this.ViewMode = PartViewMode.Layers3D;
|
||||
}
|
||||
else
|
||||
{
|
||||
viewMode = PartViewMode.Model;
|
||||
this.ViewMode = PartViewMode.Model;
|
||||
}
|
||||
|
||||
ViewModeChanged?.Invoke(this, new ViewModeChangedEventArgs()
|
||||
{
|
||||
ViewMode = viewMode
|
||||
ViewMode = this.ViewMode
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private PartViewMode viewMode;
|
||||
public PartViewMode ViewMode
|
||||
{
|
||||
get => viewMode;
|
||||
set
|
||||
{
|
||||
if (viewMode != value)
|
||||
{
|
||||
viewMode = value;
|
||||
|
||||
string controlName;
|
||||
|
||||
if (viewMode == PartViewMode.Layers2D)
|
||||
{
|
||||
controlName = "Layers2D Button";
|
||||
}
|
||||
else if (viewMode == PartViewMode.Layers3D)
|
||||
{
|
||||
controlName = "Layers3D Button";
|
||||
}
|
||||
else
|
||||
{
|
||||
controlName = "Model View Button";
|
||||
}
|
||||
|
||||
var targetChild = Children.Where(c => c.Name == controlName).FirstOrDefault();
|
||||
if (targetChild != null && targetChild is RadioButton button)
|
||||
{
|
||||
button.Checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
unregisterEvents?.Invoke(this, null);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue