Move sliders and overflow menu to parent control

This commit is contained in:
John Lewin 2017-07-06 14:41:32 -07:00
parent 30e9e5d513
commit 840f2f9cc9
3 changed files with 286 additions and 262 deletions

View file

@ -37,6 +37,7 @@ using MatterHackers.MeshVisualizer;
using MatterHackers.VectorMath;
using System;
using MatterHackers.MatterControl.PrinterControls;
using MatterHackers.MatterControl.PrinterCommunication;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
@ -47,8 +48,18 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private PrintItemWrapper printItem;
private ViewControls3D viewControls3D;
private DoubleSolidSlider layerRenderRatioSlider;
private SolidSlider selectLayerSlider;
private PrinterConfig printer;
private View3DConfig gcodeOptions;
private GuiWidget view3DContainer;
public PrinterTabPage(PrinterSettings activeSettings, PrintItemWrapper printItem)
{
printer = ApplicationController.Instance.Printer;
gcodeOptions = printer.BedPlate.RendererOptions;
this.BackgroundColor = ApplicationController.Instance.Theme.TabBodyBackground;
this.Padding = new BorderDouble(top: 3);
@ -70,7 +81,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (gcodeViewer.Visible)
{
return gcodeViewer.ShowOverflowMenu();
return this.ShowGCodeOverflowMenu();
}
else
{
@ -78,6 +89,41 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
};
int sliderWidth = (UserSettings.Instance.IsTouchScreen) ? 20 : 10;
selectLayerSlider = new SolidSlider(new Vector2(), sliderWidth, 0, 1, Orientation.Vertical);
selectLayerSlider.ValueChanged += (s, e) =>
{
// TODO: Why would these need to be updated here as well as in the horizontal slider?
printer.BedPlate.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.BedPlate.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
printer.BedPlate.ActiveLayerIndex = (int)(selectLayerSlider.Value + .5);
this.Invalidate();
};
layerRenderRatioSlider = new DoubleSolidSlider(new Vector2(), sliderWidth);
layerRenderRatioSlider.FirstValue = 0;
layerRenderRatioSlider.FirstValueChanged += (s, e) =>
{
printer.BedPlate.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.BedPlate.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
this.Invalidate();
};
layerRenderRatioSlider.SecondValue = 1;
layerRenderRatioSlider.SecondValueChanged += (s, e) =>
{
printer.BedPlate.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.BedPlate.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
this.Invalidate();
};
SetSliderSizes();
// The 3D model view
modelViewer = new View3DWidget(printItem,
new Vector3(activeSettings.GetValue<Vector2>(SettingsKey.bed_size), buildHeight),
@ -103,11 +149,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
leftToRight.AnchorAll();
topToBottom.AddChild(leftToRight);
var container = new GuiWidget();
container.AnchorAll();
container.AddChild(modelViewer);
view3DContainer = new GuiWidget();
view3DContainer.AnchorAll();
view3DContainer.AddChild(modelViewer);
leftToRight.AddChild(container);
leftToRight.AddChild(view3DContainer);
// The slice layers view
gcodeViewer = new ViewGcodeBasic(
@ -121,7 +167,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
gcodeViewer.AnchorAll();
this.gcodeViewer.Visible = false;
container.AddChild(gcodeViewer);
view3DContainer.AddChild(gcodeViewer);
view3DContainer.AddChild(layerRenderRatioSlider);
view3DContainer.AddChild(selectLayerSlider);
printer.BedPlate.ActiveLayerChanged += ActiveLayer_Changed;
AddSettingsTabBar(leftToRight, modelViewer);
@ -140,6 +190,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
modelViewer.meshViewerWidget.World.TranslationMatrix = ApplicationController.Instance.PartPreviewState.TranslationMatrix;
}
printer.BedPlate.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged;
this.ShowSliceLayers = false;
this.printItem = printItem;
this.AddChild(viewControls3D);
@ -147,6 +201,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.AnchorAll();
}
private void BedPlate_LoadedGCodeChanged(object sender, EventArgs e)
{
selectLayerSlider.Maximum = printer.BedPlate.LoadedGCode.LayerCount - 1;
}
private void AddSettingsTabBar(GuiWidget parent, GuiWidget widgetTodockTo)
{
var sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right)
@ -177,14 +236,37 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public void SwitchToLayerView()
{
gcodeViewer.Visible = true;
modelViewer.ShowSliceLayers = true;
this.ShowSliceLayers = true;
}
public void ToggleView()
{
gcodeViewer.Visible = !gcodeViewer.Visible;
modelViewer.ShowSliceLayers = gcodeViewer.Visible;
this.ShowSliceLayers = !gcodeViewer.Visible;
}
private bool showSliceLayers;
public bool ShowSliceLayers
{
get => showSliceLayers;
set
{
showSliceLayers = value;
gcodeViewer.Visible = value;
modelViewer.meshViewerWidget.IsActive = !value;
if (showSliceLayers)
{
modelViewer.Scene.ClearSelection();
}
var slidersVisible = printer.BedPlate.RenderInfo != null && value;
selectLayerSlider.Visible = slidersVisible;
layerRenderRatioSlider.Visible = slidersVisible;
modelViewer.selectedObjectPanel.Visible = !showSliceLayers;
}
}
private async void LoadActivePrintItem()
@ -199,14 +281,205 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
base.OnLoad(args);
}
public override void OnDraw(Graphics2D graphics2D)
{
bool printerIsRunningPrint = PrinterConnection.Instance.PrinterIsPaused || PrinterConnection.Instance.PrinterIsPrinting;
if (gcodeOptions.SyncToPrint
&& printerIsRunningPrint
&& gcodeViewer.Visible)
{
SetAnimationPosition();
this.Invalidate();
}
base.OnDraw(graphics2D);
}
public override void OnBoundsChanged(EventArgs e)
{
SetSliderSizes();
base.OnBoundsChanged(e);
}
public override void OnClosed(ClosedEventArgs e)
{
// Store active transforms on close
var visibleWidget = modelViewer.meshViewerWidget;
ApplicationController.Instance.PartPreviewState.RotationMatrix = visibleWidget.World.RotationMatrix;
ApplicationController.Instance.PartPreviewState.TranslationMatrix = visibleWidget.World.TranslationMatrix;
printer.BedPlate.ActiveLayerChanged -= ActiveLayer_Changed;
printer.BedPlate.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged;
base.OnClosed(e);
}
internal GuiWidget ShowGCodeOverflowMenu()
{
var textColor = RGBA_Bytes.Black;
var popupContainer = new FlowLayoutWidget(FlowDirection.TopToBottom)
{
HAnchor = HAnchor.ParentLeftRight,
Padding = 12,
BackgroundColor = RGBA_Bytes.White
};
// put in a show grid check box
CheckBox showGrid = new CheckBox("Print Bed".Localize(), textColor: textColor);
showGrid.Checked = gcodeOptions.RenderGrid;
showGrid.CheckedStateChanged += (sender, e) =>
{
// TODO: How (if at all) do we disable bed rendering on GCode2D?
gcodeOptions.RenderGrid = showGrid.Checked;
};
popupContainer.AddChild(showGrid);
// put in a show moves checkbox
var showMoves = new CheckBox("Moves".Localize(), textColor: textColor);
showMoves.Checked = gcodeOptions.RenderMoves;
showMoves.CheckedStateChanged += (sender, e) =>
{
gcodeOptions.RenderMoves = showMoves.Checked;
};
popupContainer.AddChild(showMoves);
// put in a show Retractions checkbox
CheckBox showRetractions = new CheckBox("Retractions".Localize(), textColor: textColor);
showRetractions.Checked = gcodeOptions.RenderRetractions;
showRetractions.CheckedStateChanged += (sender, e) =>
{
gcodeOptions.RenderRetractions = showRetractions.Checked;
};
popupContainer.AddChild(showRetractions);
// Speeds checkbox
var showSpeeds = new CheckBox("Speeds".Localize(), textColor: textColor);
showSpeeds.Checked = gcodeOptions.RenderSpeeds;
showSpeeds.CheckedStateChanged += (sender, e) =>
{
//gradientWidget.Visible = showSpeeds.Checked;
gcodeOptions.RenderSpeeds = showSpeeds.Checked;
};
popupContainer.AddChild(showSpeeds);
// Extrusion checkbox
var simulateExtrusion = new CheckBox("Extrusion".Localize(), textColor: textColor);
simulateExtrusion.Checked = gcodeOptions.SimulateExtrusion;
simulateExtrusion.CheckedStateChanged += (sender, e) =>
{
gcodeOptions.SimulateExtrusion = simulateExtrusion.Checked;
};
popupContainer.AddChild(simulateExtrusion);
// Transparent checkbox
var transparentExtrusion = new CheckBox("Transparent".Localize(), textColor: textColor)
{
Checked = gcodeOptions.TransparentExtrusion,
Margin = new BorderDouble(5, 0, 0, 0),
HAnchor = HAnchor.ParentLeft,
};
transparentExtrusion.CheckedStateChanged += (sender, e) =>
{
gcodeOptions.TransparentExtrusion = transparentExtrusion.Checked;
};
popupContainer.AddChild(transparentExtrusion);
// Extrusion checkbox
if (ActiveSliceSettings.Instance.GetValue<int>(SettingsKey.extruder_count) > 1)
{
CheckBox hideExtruderOffsets = new CheckBox("Hide Offsets", textColor: textColor);
hideExtruderOffsets.Checked = gcodeOptions.HideExtruderOffsets;
hideExtruderOffsets.CheckedStateChanged += (sender, e) =>
{
gcodeOptions.HideExtruderOffsets = hideExtruderOffsets.Checked;
};
popupContainer.AddChild(hideExtruderOffsets);
}
// Sync To Print checkbox
{
var syncToPrint = new CheckBox("Sync To Print".Localize(), textColor: textColor);
syncToPrint.Checked = (UserSettings.Instance.get("LayerViewSyncToPrint") == "True");
syncToPrint.Name = "Sync To Print Checkbox";
syncToPrint.CheckedStateChanged += (s, e) =>
{
gcodeOptions.SyncToPrint = syncToPrint.Checked;
SetSyncToPrintVisibility();
};
popupContainer.AddChild(syncToPrint);
}
return popupContainer;
}
private void SetSyncToPrintVisibility()
{
bool printerIsRunningPrint = PrinterConnection.Instance.PrinterIsPaused || PrinterConnection.Instance.PrinterIsPrinting;
if (gcodeOptions.SyncToPrint && printerIsRunningPrint)
{
SetAnimationPosition();
//navigationWidget.Visible = false;
//setLayerWidget.Visible = false;
layerRenderRatioSlider.Visible = false;
selectLayerSlider.Visible = false;
}
else
{
if (layerRenderRatioSlider != null)
{
layerRenderRatioSlider.FirstValue = 0;
layerRenderRatioSlider.SecondValue = 1;
}
//navigationWidget.Visible = true;
//setLayerWidget.Visible = true;
layerRenderRatioSlider.Visible = true;
selectLayerSlider.Visible = true;
}
}
private void SetSliderSizes()
{
if (selectLayerSlider == null || view3DContainer == null)
{
return;
}
selectLayerSlider.OriginRelativeParent = new Vector2(view3DContainer.Width - 20, 78);
selectLayerSlider.TotalWidthInPixels = view3DContainer.Height - 38;
layerRenderRatioSlider.OriginRelativeParent = new Vector2(11, 65);
layerRenderRatioSlider.TotalWidthInPixels = view3DContainer.Width - 45;
}
private void SetAnimationPosition()
{
int currentLayer = PrinterConnection.Instance.CurrentlyPrintingLayer;
if (currentLayer <= 0)
{
selectLayerSlider.Value = 0;
layerRenderRatioSlider.SecondValue = 0;
layerRenderRatioSlider.FirstValue = 0;
}
else
{
selectLayerSlider.Value = currentLayer - 1;
layerRenderRatioSlider.SecondValue = PrinterConnection.Instance.RatioIntoCurrentLayer;
layerRenderRatioSlider.FirstValue = 0;
}
}
private void ActiveLayer_Changed(object sender, EventArgs e)
{
if (selectLayerSlider != null
&& printer.BedPlate.ActiveLayerIndex != (int)(selectLayerSlider.Value + .5))
{
selectLayerSlider.Value = printer.BedPlate.ActiveLayerIndex;
}
}
}
}

View file

@ -2012,7 +2012,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public static Regex fileNameNumberMatch = new Regex("\\(\\d+\\)", RegexOptions.Compiled);
private GuiWidget selectedObjectPanel;
internal GuiWidget selectedObjectPanel;
private FlowLayoutWidget editorPanel;
private async Task SaveChanges(SaveAsWindow.SaveAsReturnInfo returnInfo = null)
@ -2282,24 +2282,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
Invalidate();
}
private bool showSliceLayers;
public bool ShowSliceLayers
{
get => showSliceLayers;
set
{
showSliceLayers = value;
meshViewerWidget.IsActive = !value;
if (showSliceLayers)
{
Scene.ClearSelection();
}
selectedObjectPanel.Visible = !showSliceLayers;
}
}
// Before printing persist any changes to disk
internal async Task PersistPlateIfNeeded()
{

View file

@ -49,11 +49,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public enum WindowMode { Embeded, StandAlone };
public SolidSlider selectLayerSlider;
private SetLayerWidget setLayerWidget;
private LayerNavigationWidget navigationWidget;
public DoubleSolidSlider layerRenderRatioSlider;
private TextWidget gcodeProcessingStateInfoText;
private GCode2DWidget gcode2DWidget;
@ -131,7 +128,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}, ref unregisterEvents);
bedPlate = ApplicationController.Instance.Printer.BedPlate;
bedPlate.ActiveLayerChanged += ActiveLayer_Changed;
// TODO: Why do we clear GCode on AdvancedControlsPanelReloading - assume some slice settings should invalidate. If so, code should be more specific and bound to slice settings changed
ApplicationController.Instance.AdvancedControlsPanelReloading.RegisterEvent((s, e) => printer.BedPlate.GCodeRenderer?.Clear3DGCode(), ref unregisterEvents);
@ -184,15 +180,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
private void ActiveLayer_Changed(object sender, EventArgs e)
{
if (selectLayerSlider != null
&& bedPlate.ActiveLayerIndex != (int)(selectLayerSlider.Value + .5))
{
selectLayerSlider.Value = bedPlate.ActiveLayerIndex;
}
}
private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode;
internal void CreateAndAddChildren()
@ -341,42 +328,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
navigationWidget.Margin = new BorderDouble(0, 0, 20, 0);
layerSelectionButtonsPanel.AddChild(navigationWidget);
selectLayerSlider = new SolidSlider(new Vector2(), sliderWidth, 0, loadedGCode.LayerCount - 1, Orientation.Vertical);
selectLayerSlider.ValueChanged += (s, e) =>
{
// TODO: Why would these need to be updated here as well as in assigned in the hslider below?
printer.BedPlate.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.BedPlate.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
printer.BedPlate.ActiveLayerIndex = (int)(selectLayerSlider.Value + .5);
this.Invalidate();
};
AddChild(selectLayerSlider);
layerRenderRatioSlider = new DoubleSolidSlider(new Vector2(), sliderWidth);
layerRenderRatioSlider.FirstValue = 0;
layerRenderRatioSlider.FirstValueChanged += (s, e) =>
{
printer.BedPlate.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.BedPlate.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
this.Invalidate();
};
layerRenderRatioSlider.SecondValue = 1;
layerRenderRatioSlider.SecondValueChanged += (s, e) =>
{
printer.BedPlate.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.BedPlate.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
this.Invalidate();
};
AddChild(layerRenderRatioSlider);
SetSliderSizes();
GCodeRenderer.ExtrusionColor = ActiveTheme.Instance.PrimaryAccentColor;
this.gcodeDetails = new GCodeDetails(this.loadedGCode);
@ -391,7 +342,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
Width = 150
});
UiThread.RunOnIdle(SetSyncToPrintVisibility);
//UiThread.RunOnIdle(SetSyncToPrintVisibility);
// Switch to the most recent view mode, defaulting to Layers3D
SwitchViewModes();
@ -442,156 +393,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
printer.BedPlate.Render3DLayerFeatures();
}
private void SetAnimationPosition()
{
int currentLayer = PrinterConnection.Instance.CurrentlyPrintingLayer;
if (currentLayer <= 0)
{
selectLayerSlider.Value = 0;
layerRenderRatioSlider.SecondValue = 0;
layerRenderRatioSlider.FirstValue = 0;
}
else
{
selectLayerSlider.Value = currentLayer - 1;
layerRenderRatioSlider.SecondValue = PrinterConnection.Instance.RatioIntoCurrentLayer;
layerRenderRatioSlider.FirstValue = 0;
}
}
private GCodeDetails gcodeDetails;
internal GuiWidget ShowOverflowMenu()
{
var textColor = RGBA_Bytes.Black;
var popupContainer = new FlowLayoutWidget(FlowDirection.TopToBottom)
{
HAnchor = HAnchor.ParentLeftRight,
Padding = 12,
BackgroundColor = RGBA_Bytes.White
};
// put in a show grid check box
CheckBox showGrid = new CheckBox("Print Bed".Localize(), textColor: textColor);
showGrid.Checked = options.RenderGrid;
showGrid.CheckedStateChanged += (sender, e) =>
{
// TODO: How (if at all) do we disable bed rendering on GCode2D?
options.RenderGrid = showGrid.Checked;
};
popupContainer.AddChild(showGrid);
// put in a show moves checkbox
var showMoves = new CheckBox("Moves".Localize(), textColor: textColor);
showMoves.Checked = options.RenderMoves;
showMoves.CheckedStateChanged += (sender, e) =>
{
options.RenderMoves = showMoves.Checked;
};
popupContainer.AddChild(showMoves);
// put in a show Retractions checkbox
CheckBox showRetractions = new CheckBox("Retractions".Localize(), textColor: textColor);
showRetractions.Checked = options.RenderRetractions;
showRetractions.CheckedStateChanged += (sender, e) =>
{
options.RenderRetractions = showRetractions.Checked;
};
popupContainer.AddChild(showRetractions);
// Speeds checkbox
var showSpeeds = new CheckBox("Speeds".Localize(), textColor: textColor);
showSpeeds.Checked = options.RenderSpeeds;
showSpeeds.CheckedStateChanged += (sender, e) =>
{
gradientWidget.Visible = showSpeeds.Checked;
options.RenderSpeeds = showSpeeds.Checked;
};
popupContainer.AddChild(showSpeeds);
// Extrusion checkbox
var simulateExtrusion = new CheckBox("Extrusion".Localize(), textColor: textColor);
simulateExtrusion.Checked = options.SimulateExtrusion;
simulateExtrusion.CheckedStateChanged += (sender, e) =>
{
options.SimulateExtrusion = simulateExtrusion.Checked;
};
popupContainer.AddChild(simulateExtrusion);
// Transparent checkbox
var transparentExtrusion = new CheckBox("Transparent".Localize(), textColor: textColor)
{
Checked = options.TransparentExtrusion,
Margin = new BorderDouble(5, 0, 0, 0),
HAnchor = HAnchor.ParentLeft,
};
transparentExtrusion.CheckedStateChanged += (sender, e) =>
{
options.TransparentExtrusion = transparentExtrusion.Checked;
};
popupContainer.AddChild(transparentExtrusion);
// Extrusion checkbox
if (ActiveSliceSettings.Instance.GetValue<int>(SettingsKey.extruder_count) > 1)
{
CheckBox hideExtruderOffsets = new CheckBox("Hide Offsets", textColor: textColor);
hideExtruderOffsets.Checked = options.HideExtruderOffsets;
hideExtruderOffsets.CheckedStateChanged += (sender, e) =>
{
options.HideExtruderOffsets = hideExtruderOffsets.Checked;
};
popupContainer.AddChild(hideExtruderOffsets);
}
// Sync To Print checkbox
if (windowMode == WindowMode.Embeded)
{
var syncToPrint = new CheckBox("Sync To Print".Localize(), textColor: textColor);
syncToPrint.Checked = (UserSettings.Instance.get("LayerViewSyncToPrint") == "True");
syncToPrint.Name = "Sync To Print Checkbox";
syncToPrint.CheckedStateChanged += (s, e) =>
{
options.SyncToPrint = syncToPrint.Checked;
SetSyncToPrintVisibility();
};
popupContainer.AddChild(syncToPrint);
}
return popupContainer;
}
private void SetSyncToPrintVisibility()
{
if (windowMode == WindowMode.Embeded)
{
bool printerIsRunningPrint = PrinterConnection.Instance.PrinterIsPaused || PrinterConnection.Instance.PrinterIsPrinting;
if (options.SyncToPrint && printerIsRunningPrint)
{
SetAnimationPosition();
//navigationWidget.Visible = false;
//setLayerWidget.Visible = false;
layerRenderRatioSlider.Visible = false;
selectLayerSlider.Visible = false;
}
else
{
if (layerRenderRatioSlider != null)
{
layerRenderRatioSlider.FirstValue = 0;
layerRenderRatioSlider.SecondValue = 1;
}
navigationWidget.Visible = true;
setLayerWidget.Visible = true;
layerRenderRatioSlider.Visible = true;
selectLayerSlider.Visible = true;
}
}
}
private void SwitchViewModes()
{
bool inLayers3DMode = activeViewMode == PartViewMode.Layers3D;
@ -622,18 +425,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
public override void OnDraw(Graphics2D graphics2D)
{
bool printerIsRunningPrint = PrinterConnection.Instance.PrinterIsPaused || PrinterConnection.Instance.PrinterIsPrinting;
if (options.SyncToPrint
&& printerIsRunningPrint)
{
SetAnimationPosition();
}
base.OnDraw(graphics2D);
}
private void SetProcessingMessage(string message)
{
if (gcodeProcessingStateInfoText == null)
@ -665,32 +456,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
gcodeProcessingStateInfoText.Text = message;
}
public override void OnBoundsChanged(EventArgs e)
{
SetSliderSizes();
base.OnBoundsChanged(e);
}
private void SetSliderSizes()
{
if (selectLayerSlider == null)
{
return;
}
selectLayerSlider.OriginRelativeParent = new Vector2(gcodeDisplayWidget.Width - 20, 78);
selectLayerSlider.TotalWidthInPixels = gcodeDisplayWidget.Height - 38;
layerRenderRatioSlider.OriginRelativeParent = new Vector2(11, 65);
layerRenderRatioSlider.TotalWidthInPixels = gcodeDisplayWidget.Width - 45;
}
public override void OnClosed(ClosedEventArgs e)
{
unregisterEvents?.Invoke(this, null);
bedPlate.ActiveLayerChanged -= ActiveLayer_Changed;
// Find and unhook the parent system window KeyDown event
if (parentSystemWindow != null)
{