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,
|
Visible = true,
|
||||||
Margin = new BorderDouble(11, 0, 0, 50)
|
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) =>
|
viewControls3D.ResetView += (sender, e) =>
|
||||||
{
|
{
|
||||||
modelViewer.meshViewerWidget.ResetView();
|
modelViewer.meshViewerWidget.ResetView();
|
||||||
|
|
@ -291,6 +322,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
this.ShowSliceLayers = true;
|
this.ShowSliceLayers = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SwitchToModelView()
|
||||||
|
{
|
||||||
|
this.ShowSliceLayers = false;
|
||||||
|
}
|
||||||
|
|
||||||
public void ToggleView()
|
public void ToggleView()
|
||||||
{
|
{
|
||||||
this.ShowSliceLayers = !gcodeViewer.Visible;
|
this.ShowSliceLayers = !gcodeViewer.Visible;
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
public class ViewControls3D : ViewControlsBase
|
public class ViewControls3D : ViewControlsBase
|
||||||
{
|
{
|
||||||
public event EventHandler ResetView;
|
public event EventHandler ResetView;
|
||||||
|
public event EventHandler<ViewModeChangedEventArgs> ViewModeChanged;
|
||||||
|
|
||||||
public event EventHandler<TransformStateChangedEventArgs> TransformStateChanged;
|
public event EventHandler<TransformStateChangedEventArgs> TransformStateChanged;
|
||||||
|
|
||||||
internal OverflowDropdown OverflowButton;
|
internal OverflowDropdown OverflowButton;
|
||||||
|
|
@ -180,17 +182,32 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
partSelectButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.PartSelect;
|
partSelectButton.Click += (s, e) => this.ActiveButton = ViewControls3DButtons.PartSelect;
|
||||||
AddChild(partSelectButton);
|
AddChild(partSelectButton);
|
||||||
|
|
||||||
iconPath = Path.Combine("ViewTransformControls", "layers.png");
|
iconPath = Path.Combine("ViewTransformControls", "model.png");
|
||||||
var layersButton = buttonFactory.Generate("", StaticData.Instance.LoadIcon(iconPath, 32, 32).InvertLightness());
|
var modelViewButton = buttonFactory.GenerateRadioButton("", StaticData.Instance.LoadIcon(iconPath, 32, 32));
|
||||||
layersButton.Name = "Toggle Layer View Button";
|
modelViewButton.Name = "Model View Button";
|
||||||
layersButton.ToolTipText = "Layers".Localize();
|
modelViewButton.ToolTipText = "Model".Localize();
|
||||||
layersButton.Margin = 3;
|
modelViewButton.Checked = true;
|
||||||
layersButton.Click += (s, e) =>
|
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();
|
this.AddChild(layers3DButton);
|
||||||
parentTabPage.ToggleView();
|
}
|
||||||
};
|
|
||||||
AddChild(layersButton);
|
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)
|
OverflowButton = new OverflowDropdown(allowLightnessInvert: false)
|
||||||
{
|
{
|
||||||
|
|
@ -201,6 +218,32 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
AddChild(OverflowButton);
|
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)
|
public override void OnClosed(ClosedEventArgs e)
|
||||||
{
|
{
|
||||||
unregisterEvents?.Invoke(this, null);
|
unregisterEvents?.Invoke(this, null);
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
public class ViewGcodeBasic : GuiWidget
|
public class ViewGcodeBasic : GuiWidget
|
||||||
{
|
{
|
||||||
private TextWidget gcodeProcessingStateInfoText;
|
private TextWidget gcodeProcessingStateInfoText;
|
||||||
private GCode2DWidget gcode2DWidget;
|
internal GCode2DWidget gcode2DWidget;
|
||||||
private PrintItemWrapper printItem => ApplicationController.Instance.ActivePrintItem;
|
private PrintItemWrapper printItem => ApplicationController.Instance.ActivePrintItem;
|
||||||
|
|
||||||
private ViewControlsToggle viewControlsToggle;
|
|
||||||
|
|
||||||
private GuiWidget gcodeDisplayWidget;
|
private GuiWidget gcodeDisplayWidget;
|
||||||
|
|
||||||
private ColorGradientWidget gradientWidget;
|
private ColorGradientWidget gradientWidget;
|
||||||
|
|
@ -181,18 +179,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
gcode2DWidget.CenterPartInView();
|
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) =>
|
viewControls3D.TransformStateChanged += (s, e) =>
|
||||||
{
|
{
|
||||||
switch (e.TransformMode)
|
switch (e.TransformMode)
|
||||||
|
|
@ -212,7 +198,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.AddChild(viewControlsToggle);
|
|
||||||
|
|
||||||
// *************** AddGCodeFileControls ***************
|
// *************** AddGCodeFileControls ***************
|
||||||
SetProcessingMessage("");
|
SetProcessingMessage("");
|
||||||
|
|
@ -241,8 +226,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
};
|
};
|
||||||
AddChild(gradientWidget);
|
AddChild(gradientWidget);
|
||||||
|
|
||||||
viewControlsToggle.Visible = true;
|
|
||||||
|
|
||||||
GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor;
|
GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor;
|
||||||
|
|
||||||
var gcodeDetails = new GCodeDetails(this.loadedGCode);
|
var gcodeDetails = new GCodeDetails(this.loadedGCode);
|
||||||
|
|
@ -256,32 +239,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||||
VAnchor = VAnchor.ParentTop | VAnchor.FitToChildren,
|
VAnchor = VAnchor.ParentTop | VAnchor.FitToChildren,
|
||||||
Width = 150
|
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)
|
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