Printer widget should use printer bed rather than sceneContext

This commit is contained in:
John Lewin 2019-02-01 16:12:50 -08:00
parent 83712d7e08
commit 2b797fb2f1
2 changed files with 18 additions and 21 deletions

View file

@ -93,7 +93,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var opaqueTrackColor = theme.ResolveColor(theme.BedBackgroundColor, theme.SlightShade); var opaqueTrackColor = theme.ResolveColor(theme.BedBackgroundColor, theme.SlightShade);
LayerScrollbar = new SliceLayerSelector(printer, sceneContext, theme) LayerScrollbar = new SliceLayerSelector(printer, theme)
{ {
VAnchor = VAnchor.Stretch, VAnchor = VAnchor.Stretch,
HAnchor = HAnchor.Right | HAnchor.Fit, HAnchor = HAnchor.Right | HAnchor.Fit,

View file

@ -43,16 +43,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private InlineEditControl currentLayerInfo; private InlineEditControl currentLayerInfo;
private LayerScrollbar layerScrollbar; private LayerScrollbar layerScrollbar;
private ISceneContext sceneContext;
private SolidSlider layerSlider; private SolidSlider layerSlider;
private double layerInfoHalfHeight; private double layerInfoHalfHeight;
private PrinterConfig printer;
public SliceLayerSelector(PrinterConfig printer, ISceneContext sceneContext, ThemeConfig theme) public SliceLayerSelector(PrinterConfig printer, ThemeConfig theme)
{ {
this.sceneContext = sceneContext; this.printer = printer;
this.AddChild(layerScrollbar = new LayerScrollbar(printer, theme)
this.AddChild(layerScrollbar = new LayerScrollbar(printer, sceneContext, theme)
{ {
VAnchor = VAnchor.Stretch, VAnchor = VAnchor.Stretch,
HAnchor = HAnchor.Right HAnchor = HAnchor.Right
@ -99,7 +98,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// Set initial position // Set initial position
currentLayerInfo.Position = new Vector2(0, (double)(layerSlider.Position.Y + layerSlider.PositionPixelsFromFirstValue - layerInfoHalfHeight)); currentLayerInfo.Position = new Vector2(0, (double)(layerSlider.Position.Y + layerSlider.PositionPixelsFromFirstValue - layerInfoHalfHeight));
sceneContext.ActiveLayerChanged += SetPositionAndValue; printer.Bed.ActiveLayerChanged += SetPositionAndValue;
layerScrollbar.MouseEnter += SetPositionAndValue; layerScrollbar.MouseEnter += SetPositionAndValue;
} }
@ -119,7 +118,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public override void OnClosed(EventArgs e) public override void OnClosed(EventArgs e)
{ {
sceneContext.ActiveLayerChanged -= SetPositionAndValue; printer.Bed.ActiveLayerChanged -= SetPositionAndValue;
layerSlider.MouseEnter -= SetPositionAndValue; layerSlider.MouseEnter -= SetPositionAndValue;
base.OnClosed(e); base.OnClosed(e);
@ -129,7 +128,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{ {
UiThread.RunOnIdle(() => UiThread.RunOnIdle(() =>
{ {
currentLayerInfo.Value = sceneContext.ActiveLayerIndex + 1; currentLayerInfo.Value = printer.Bed.ActiveLayerIndex + 1;
currentLayerInfo.Visible = true; currentLayerInfo.Visible = true;
}); });
} }
@ -137,16 +136,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private class LayerScrollbar : FlowLayoutWidget private class LayerScrollbar : FlowLayoutWidget
{ {
internal SolidSlider layerSlider; internal SolidSlider layerSlider;
private PrinterConfig printer;
private TextWidget layerCountText; private TextWidget layerCountText;
private TextWidget layerStartText; private TextWidget layerStartText;
private ISceneContext sceneContext;
public LayerScrollbar(PrinterConfig printer, ISceneContext sceneContext, ThemeConfig theme) public LayerScrollbar(PrinterConfig printer, ThemeConfig theme)
: base(FlowDirection.TopToBottom) : base(FlowDirection.TopToBottom)
{ {
this.sceneContext = sceneContext; this.printer = printer;
layerCountText = new TextWidget("", pointSize: 9, textColor: theme.TextColor) layerCountText = new TextWidget("", pointSize: 9, textColor: theme.TextColor)
{ {
MinimumSize = new Vector2(20, 20), MinimumSize = new Vector2(20, 20),
@ -161,14 +158,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
VAnchor = VAnchor.Stretch, VAnchor = VAnchor.Stretch,
Margin = new BorderDouble(0, 5), Margin = new BorderDouble(0, 5),
Minimum = 0, Minimum = 0,
Maximum = sceneContext.LoadedGCode?.LayerCount ?? 1, Maximum = printer.Bed.LoadedGCode?.LayerCount ?? 1,
Value = sceneContext.ActiveLayerIndex Value = printer.Bed.ActiveLayerIndex
}; };
layerSlider.ValueChanged += (s, e) => layerSlider.ValueChanged += (s, e) =>
{ {
if (printer?.Bed?.RenderInfo != null) if (printer?.Bed?.RenderInfo != null)
{ {
sceneContext.ActiveLayerIndex = (int)(layerSlider.Value + .5); printer.Bed.ActiveLayerIndex = (int)(layerSlider.Value + .5);
} }
// show the layer info next to the slider // show the layer info next to the slider
@ -183,7 +180,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}; };
this.AddChild(layerStartText); this.AddChild(layerStartText);
sceneContext.ActiveLayerChanged += ActiveLayer_Changed; printer.Bed.ActiveLayerChanged += ActiveLayer_Changed;
} }
public double Maximum public double Maximum
@ -217,15 +214,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{ {
base.OnClosed(e); base.OnClosed(e);
sceneContext.ActiveLayerChanged -= ActiveLayer_Changed; printer.Bed.ActiveLayerChanged -= ActiveLayer_Changed;
} }
private void ActiveLayer_Changed(object sender, EventArgs e) private void ActiveLayer_Changed(object sender, EventArgs e)
{ {
if (layerSlider != null if (layerSlider != null
&& sceneContext.ActiveLayerIndex != (int)(layerSlider.Value + .5)) && printer.Bed.ActiveLayerIndex != (int)(layerSlider.Value + .5))
{ {
layerSlider.Value = sceneContext.ActiveLayerIndex; layerSlider.Value = printer.Bed.ActiveLayerIndex;
} }
} }
} }