Move view mode selection buttons into main toolbar, revise icons
This commit is contained in:
parent
e95803d68e
commit
5e85b29e11
5 changed files with 90 additions and 51 deletions
|
|
@ -74,6 +74,37 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
Visible = true,
|
||||
Margin = new BorderDouble(11, 0, 0, 50)
|
||||
};
|
||||
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;
|
||||
}
|
||||
};
|
||||
|
||||
viewControls3D.ResetView += (sender, e) =>
|
||||
{
|
||||
modelViewer.meshViewerWidget.ResetView();
|
||||
|
|
@ -291,6 +322,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
this.ShowSliceLayers = true;
|
||||
}
|
||||
|
||||
public void SwitchToModelView()
|
||||
{
|
||||
this.ShowSliceLayers = false;
|
||||
}
|
||||
|
||||
public void ToggleView()
|
||||
{
|
||||
this.ShowSliceLayers = !gcodeViewer.Visible;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
public class ViewControls3D : ViewControlsBase
|
||||
{
|
||||
public event EventHandler ResetView;
|
||||
public event EventHandler<ViewModeChangedEventArgs> ViewModeChanged;
|
||||
|
||||
public event EventHandler<TransformStateChangedEventArgs> TransformStateChanged;
|
||||
|
||||
internal OverflowDropdown OverflowButton;
|
||||
|
|
@ -180,17 +182,32 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
partSelectButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.PartSelect;
|
||||
AddChild(partSelectButton);
|
||||
|
||||
iconPath = Path.Combine("ViewTransformControls", "layers.png");
|
||||
var layersButton = buttonFactory.Generate("", StaticData.Instance.LoadIcon(iconPath, 32, 32).InvertLightness());
|
||||
layersButton.Name = "Toggle Layer View Button";
|
||||
layersButton.ToolTipText = "Layers".Localize();
|
||||
layersButton.Margin = 3;
|
||||
layersButton.Click += (s, e) =>
|
||||
iconPath = Path.Combine("ViewTransformControls", "model.png");
|
||||
var modelViewButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath, 32, 32));
|
||||
modelViewButton.Name = "Model View Button";
|
||||
modelViewButton.ToolTipText = "Model".Localize();
|
||||
modelViewButton.Checked = true;
|
||||
modelViewButton.Margin = 3;
|
||||
modelViewButton.Click += SwitchModes_Click;
|
||||
AddChild(modelViewButton);
|
||||
|
||||
var layers3DButton = buttonFactory.GenerateRadioButton("", Path.Combine("ViewTransformControls", "3d.png"));
|
||||
layers3DButton.Name = "Layers3D Button";
|
||||
layers3DButton.ToolTipText = "3D Layers".Localize();
|
||||
layers3DButton.Click += SwitchModes_Click;
|
||||
layers3DButton.Margin = new BorderDouble(3);
|
||||
|
||||
if (!UserSettings.Instance.IsTouchScreen)
|
||||
{
|
||||
var parentTabPage = this.Parents<PrinterTabPage>().First();
|
||||
parentTabPage.ToggleView();
|
||||
};
|
||||
AddChild(layersButton);
|
||||
this.AddChild(layers3DButton);
|
||||
}
|
||||
|
||||
var layers2DButton = buttonFactory.GenerateRadioButton("", Path.Combine("ViewTransformControls", "2d.png"));
|
||||
layers2DButton.Name = "Layers2D Button";
|
||||
layers2DButton.ToolTipText = "2D Layers".Localize();
|
||||
layers2DButton.Margin = new BorderDouble(3);
|
||||
layers2DButton.Click += SwitchModes_Click;
|
||||
this.AddChild(layers2DButton);
|
||||
|
||||
OverflowButton = new OverflowDropdown(allowLightnessInvert: false)
|
||||
{
|
||||
|
|
@ -201,6 +218,32 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
AddChild(OverflowButton);
|
||||
}
|
||||
|
||||
private void SwitchModes_Click(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (sender is GuiWidget widget)
|
||||
{
|
||||
PartViewMode viewMode;
|
||||
|
||||
if (widget.Name == "Layers2D Button")
|
||||
{
|
||||
viewMode = PartViewMode.Layers2D;
|
||||
}
|
||||
else if (widget.Name == "Layers3D Button")
|
||||
{
|
||||
viewMode = PartViewMode.Layers3D;
|
||||
}
|
||||
else
|
||||
{
|
||||
viewMode = PartViewMode.Model;
|
||||
}
|
||||
|
||||
ViewModeChanged?.Invoke(this, new ViewModeChangedEventArgs()
|
||||
{
|
||||
ViewMode = viewMode
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
unregisterEvents?.Invoke(this, null);
|
||||
|
|
|
|||
|
|
@ -45,11 +45,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
public class ViewGcodeBasic : GuiWidget
|
||||
{
|
||||
private TextWidget gcodeProcessingStateInfoText;
|
||||
private GCode2DWidget gcode2DWidget;
|
||||
internal GCode2DWidget gcode2DWidget;
|
||||
private PrintItemWrapper printItem => ApplicationController.Instance.ActivePrintItem;
|
||||
|
||||
private ViewControlsToggle viewControlsToggle;
|
||||
|
||||
private GuiWidget gcodeDisplayWidget;
|
||||
|
||||
private ColorGradientWidget gradientWidget;
|
||||
|
|
@ -181,18 +179,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
gcode2DWidget.CenterPartInView();
|
||||
}
|
||||
};
|
||||
|
||||
viewControlsToggle = new ViewControlsToggle(ApplicationController.Instance.Theme.ViewControlsButtonFactory, activeViewMode)
|
||||
{
|
||||
Visible = false,
|
||||
HAnchor = HAnchor.ParentRight
|
||||
};
|
||||
viewControlsToggle.ViewModeChanged += (s, e) =>
|
||||
{
|
||||
// Respond to user driven view mode change events and store and switch to the new mode
|
||||
activeViewMode = e.ViewMode;
|
||||
SwitchViewModes();
|
||||
};
|
||||
viewControls3D.TransformStateChanged += (s, e) =>
|
||||
{
|
||||
switch (e.TransformMode)
|
||||
|
|
@ -212,7 +198,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
break;
|
||||
}
|
||||
};
|
||||
this.AddChild(viewControlsToggle);
|
||||
|
||||
// *************** AddGCodeFileControls ***************
|
||||
SetProcessingMessage("");
|
||||
|
|
@ -241,8 +226,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
};
|
||||
AddChild(gradientWidget);
|
||||
|
||||
viewControlsToggle.Visible = true;
|
||||
|
||||
GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor;
|
||||
|
||||
var gcodeDetails = new GCodeDetails(this.loadedGCode);
|
||||
|
|
@ -256,32 +239,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
VAnchor = VAnchor.ParentTop | VAnchor.FitToChildren,
|
||||
Width = 150
|
||||
});
|
||||
|
||||
// Switch to the most recent view mode, defaulting to Layers3D
|
||||
SwitchViewModes();
|
||||
}
|
||||
}
|
||||
|
||||
private void SwitchViewModes()
|
||||
{
|
||||
bool inLayers3DMode = activeViewMode == PartViewMode.Layers3D;
|
||||
if (inLayers3DMode)
|
||||
{
|
||||
UserSettings.Instance.set("LayerViewDefault", "3D Layer");
|
||||
}
|
||||
else
|
||||
{
|
||||
UserSettings.Instance.set("LayerViewDefault", "2D Layer");
|
||||
|
||||
// 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(gcode2DWidget.CenterPartInView);
|
||||
}
|
||||
|
||||
if (gcode2DWidget != null)
|
||||
{
|
||||
gcode2DWidget.Visible = !inLayers3DMode;
|
||||
}
|
||||
}
|
||||
|
||||
internal void LoadProgress_Changed((double progress0To1, string processingState) progress, CancellationTokenSource continueProcessing)
|
||||
{
|
||||
|
|
|
|||
BIN
StaticData/Icons/ViewTransformControls/model.png
Normal file
BIN
StaticData/Icons/ViewTransformControls/model.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 590 B |
Binary file not shown.
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 612 B |
Loading…
Add table
Add a link
Reference in a new issue