More generic dependencies to break Part view coupling to Printer

This commit is contained in:
John Lewin 2017-09-15 16:49:21 -07:00
parent fee3871cfb
commit 8f9953ef12
9 changed files with 164 additions and 166 deletions

View file

@ -81,7 +81,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
else
{
PlusTabPage.CreatePartTab(tabControl, printerConfig, theme, printItem, 0);
PlusTabPage.CreatePartTab(tabControl, printerConfig.Bed, theme, printItem, 0);
}
// TODO: add in the printers and designs that are currently open (or were open last run).
@ -186,7 +186,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var printerTab = new MainTab(
tabTitle,
"3D View Tab",
new PrinterTabPage(PrinterConnection.Instance, printerConfig, theme, printItem, tabTitle.ToUpper()),
new PrinterTabPage(printerConfig, theme, printItem, tabTitle.ToUpper()),
"https://www.google.com/s2/favicons?domain=www.printrbot.com" // "https://www.google.com/s2/favicons?domain=www.lulzbot.com"
);
printerTab.ToolTipText = "Preview 3D Design".Localize();

View file

@ -63,7 +63,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
createItemsSection.AddChild(createPart);
createPart.Click += (s, e) =>
{
CreatePartTab(tabControl, printer, theme, printItem);
CreatePartTab(tabControl, new BedConfig(null), theme, printItem);
};
var createPrinter = theme.ButtonFactory.Generate("Create Printer".Localize());
@ -155,12 +155,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
internal static void CreatePartTab(TabControl tabControl, PrinterConfig printer, ThemeConfig theme, PrintItemWrapper printItem, int tabIndex = 1)
internal static void CreatePartTab(TabControl tabControl, BedConfig sceneContext, ThemeConfig theme, PrintItemWrapper printItem, int tabIndex = 1)
{
var partTab = new MainTab(
"New Part",
"newPart" + tabControl.TabCount,
new PrinterTabBase(printer, theme, printItem, "xxxxx"),
new PrinterTabBase(sceneContext, theme, printItem, "xxxxx"),
"https://i.imgur.com/nkeYgfU.png");
theme.SetPrinterTabStyles(partTab);

View file

@ -44,22 +44,22 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private PrintItemWrapper printItem;
protected ViewControls3D viewControls3D;
protected PrinterConfig printer;
protected BedConfig sceneContext;
protected ThemeConfig theme;
protected GuiWidget view3DContainer;
protected FlowLayoutWidget topToBottom;
protected FlowLayoutWidget leftToRight;
public PrinterTabBase(PrinterConfig printer, ThemeConfig theme, PrintItemWrapper printItem, string tabTitle)
public PrinterTabBase(BedConfig sceneContext, ThemeConfig theme, PrintItemWrapper printItem, string tabTitle)
: base (tabTitle)
{
this.printer = printer;
this.sceneContext = sceneContext;
this.theme = theme;
this.BackgroundColor = theme.TabBodyBackground;
this.Padding = 0;
viewControls3D = new ViewControls3D(theme, printer.Bed.Scene.UndoBuffer)
viewControls3D = new ViewControls3D(theme, sceneContext.Scene.UndoBuffer)
{
PartSelectVisible = false,
VAnchor = VAnchor.Top | VAnchor.Fit | VAnchor.Absolute,
@ -82,8 +82,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
bool isPrinterType = this.GetType() == typeof(PrinterTabPage);
// The 3D model view
modelViewer = new View3DWidget(PrinterConnection.Instance, printItem,
printer,
modelViewer = new View3DWidget(
printItem,
sceneContext,
View3DWidget.AutoRotate.Disabled,
viewControls3D,
theme,

View file

@ -46,7 +46,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public class PrinterTabPage : PrinterTabBase
{
internal GCode2DWidget gcode2DWidget;
// TODO: REMOVE *****************************************************************
PrinterConnection printerConnection;
private View3DConfig gcodeOptions;
private DoubleSolidSlider layerRenderRatioSlider;
private SolidSlider selectLayerSlider;
@ -55,13 +58,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private ValueDisplayInfo currentLayerInfo;
private SystemWindow parentSystemWindow;
public PrinterTabPage(PrinterConnection printerConnection, PrinterConfig printer, ThemeConfig theme, PrintItemWrapper printItem, string tabTitle)
: base(printer, theme, printItem, tabTitle)
private PrinterConfig printer;
public PrinterTabPage(PrinterConfig printer, ThemeConfig theme, PrintItemWrapper printItem, string tabTitle)
: base(printer.Bed, theme, printItem, tabTitle)
{
this.printerConnection = printerConnection;
this.printerConnection = printer.Connection;
this.printer = printer;
modelViewer.meshViewerWidget.EditorMode = MeshViewerWidget.EditorType.Printer;
gcodeOptions = printer.Bed.RendererOptions;
gcodeOptions = sceneContext.RendererOptions;
viewControls3D.TransformStateChanged += (s, e) =>
{
@ -118,7 +124,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (printer?.Bed?.RenderInfo != null)
{
printer.Bed.ActiveLayerIndex = (int)(selectLayerSlider.Value + .5);
sceneContext.ActiveLayerIndex = (int)(selectLayerSlider.Value + .5);
}
// show the layer info next to the slider
@ -129,8 +135,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
layerRenderRatioSlider.FirstValue = 0;
layerRenderRatioSlider.FirstValueChanged += (s, e) =>
{
printer.Bed.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.Bed.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
sceneContext.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
sceneContext.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
this.Invalidate();
};
@ -139,8 +145,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (printer?.Bed?.RenderInfo != null)
{
printer.Bed.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
printer.Bed.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
sceneContext.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue;
sceneContext.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue;
}
this.Invalidate();
@ -153,7 +159,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
currentLayerInfo.EditComplete += (s, e) =>
{
printer.Bed.ActiveLayerIndex = (int)currentLayerInfo.Value - 1;
sceneContext.ActiveLayerIndex = (int)currentLayerInfo.Value - 1;
};
AddSettingsTabBar(leftToRight, modelViewer);
@ -163,10 +169,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
view3DContainer.AddChild(layerCountText);
view3DContainer.AddChild(layerStartText);
printer.Bed.ActiveLayerChanged += SetPositionAndValue;
sceneContext.ActiveLayerChanged += SetPositionAndValue;
selectLayerSlider.MouseEnter += SetPositionAndValue;
printer.Bed.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged;
sceneContext.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged;
this.ShowSliceLayers = false;
@ -184,12 +190,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
Padding = theme.ToolbarPadding
}, 0);
printer.Bed.ActiveLayerChanged += ActiveLayer_Changed;
sceneContext.ActiveLayerChanged += ActiveLayer_Changed;
SetSliderSizes();
}
private GCodeFile loadedGCode => printer.Bed.LoadedGCode;
private GCodeFile loadedGCode => sceneContext.LoadedGCode;
private bool showSliceLayers;
private bool ShowSliceLayers
@ -207,7 +213,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
modelViewer.Scene.ClearSelection();
}
var slidersVisible = printer.Bed.RenderInfo != null && value;
var slidersVisible = sceneContext.RenderInfo != null && value;
selectLayerSlider.Visible = slidersVisible;
layerRenderRatioSlider.Visible = slidersVisible;
@ -261,7 +267,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void BedPlate_LoadedGCodeChanged(object sender, EventArgs e)
{
var layerCount = printer.Bed.LoadedGCode.LayerCount;
var layerCount = sceneContext.LoadedGCode.LayerCount;
selectLayerSlider.Maximum = layerCount - 1;
layerCountText.Text = layerCount.ToString();
@ -269,7 +275,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
layerStartText.Visible = true;
// ResetRenderInfo
printer.Bed.RenderInfo = new GCodeRenderInfo(
sceneContext.RenderInfo = new GCodeRenderInfo(
0,
1,
Agg.Transform.Affine.NewIdentity(),
@ -287,10 +293,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// Close and remove any existing widget reference
gcode2DWidget?.Close();
var viewerVolume = printer.Bed.ViewerVolume;
var viewerVolume = sceneContext.ViewerVolume;
// Create and append new widget
gcode2DWidget = new GCode2DWidget(new Vector2(viewerVolume.x, viewerVolume.y), printer.Bed.BedCenter)
gcode2DWidget = new GCode2DWidget(new Vector2(viewerVolume.x, viewerVolume.y), sceneContext.BedCenter)
{
Visible = (this.ViewMode == PartViewMode.Layers2D)
};
@ -389,9 +395,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void ActiveLayer_Changed(object sender, EventArgs e)
{
if (selectLayerSlider != null
&& printer.Bed.ActiveLayerIndex != (int)(selectLayerSlider.Value + .5))
&& sceneContext.ActiveLayerIndex != (int)(selectLayerSlider.Value + .5))
{
selectLayerSlider.Value = printer.Bed.ActiveLayerIndex;
selectLayerSlider.Value = sceneContext.ActiveLayerIndex;
}
}
@ -399,7 +405,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
UiThread.RunOnIdle(() =>
{
currentLayerInfo.Value = printer.Bed.ActiveLayerIndex;
currentLayerInfo.Value = sceneContext.ActiveLayerIndex;
//currentLayerInfo.DebugShowBounds = true;
currentLayerInfo.OriginRelativeParent = selectLayerSlider.OriginRelativeParent
+ new Vector2(-currentLayerInfo.Width - 10, selectLayerSlider.PositionPixelsFromFirstValue - currentLayerInfo.Height / 2);
@ -553,10 +559,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
parentSystemWindow.KeyDown -= Parent_KeyDown;
}
printer.Bed.ActiveLayerChanged -= ActiveLayer_Changed;
printer.Bed.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged;
sceneContext.ActiveLayerChanged -= ActiveLayer_Changed;
sceneContext.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged;
printer.Bed.ActiveLayerChanged -= SetPositionAndValue;
sceneContext.ActiveLayerChanged -= SetPositionAndValue;
selectLayerSlider.MouseEnter -= SetPositionAndValue;
base.OnClosed(e);
@ -569,10 +575,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
switch (keyEvent.KeyCode)
{
case Keys.Up:
printer.Bed.ActiveLayerIndex += 1;
sceneContext.ActiveLayerIndex += 1;
break;
case Keys.Down:
printer.Bed.ActiveLayerIndex -= 1;
sceneContext.ActiveLayerIndex -= 1;
break;
}
}

View file

@ -34,9 +34,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MatterHackers.Agg;
using MatterHackers.Agg.Image;
using MatterHackers.Agg.OpenGlGui;
using MatterHackers.Agg.Platform;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.MatterControl;
@ -45,7 +43,6 @@ using MatterHackers.PolygonMesh;
using MatterHackers.RenderOpenGl;
using MatterHackers.RenderOpenGl.OpenGl;
using MatterHackers.VectorMath;
using Newtonsoft.Json;
namespace MatterHackers.MeshVisualizer
{
@ -79,13 +76,13 @@ namespace MatterHackers.MeshVisualizer
private InteractionLayer interactionLayer;
private PrinterConfig printerConfig;
private BedConfig sceneContext;
public MeshViewerWidget(PrinterConfig printerConfig, InteractionLayer interactionLayer, string startingTextMessage = "", EditorType editorType = EditorType.Part)
public MeshViewerWidget(BedConfig sceneContext, InteractionLayer interactionLayer, string startingTextMessage = "", EditorType editorType = EditorType.Part)
{
this.EditorMode = editorType;
this.scene = printerConfig.Bed.Scene;
this.printerConfig = printerConfig;
this.scene = sceneContext.Scene;
this.sceneContext = sceneContext;
var activePrintItem = ApplicationController.Instance.ActivePrintItem;
@ -163,56 +160,6 @@ namespace MatterHackers.MeshVisualizer
};
}
UiThread.RunOnIdle(() =>
{
Task.Run(() =>
{
try
{
string url = printerConfig.Settings.GetValue("PrinterShapeUrl");
string extension = printerConfig.Settings.GetValue("PrinterShapeExtension");
if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(extension))
{
return;
}
using (var stream = ApplicationController.Instance.LoadHttpAsset(url))
{
var mesh = MeshFileIo.Load(stream, extension, CancellationToken.None).Mesh;
UiThread.RunOnIdle(() =>
{
printerShape = mesh;
this.Invalidate();
Task.Run(() =>
{
BspNode bspTree = null;
// if there is a chached bsp tree load it
var meshHashCode = mesh.GetLongHashCode();
string cachePath = ApplicationController.CacheablePath("MeshBspData", $"{meshHashCode}.bsp");
if (File.Exists(cachePath))
{
JsonConvert.DeserializeObject<BspNode>(File.ReadAllText(cachePath));
}
else
{
// else calculate it
bspTree = FaceBspTree.Create(mesh, 20, true);
// and save it
File.WriteAllText(cachePath, JsonConvert.SerializeObject(bspTree));
}
// set the mesh to use the new tree
UiThread.RunOnIdle(() => mesh.FaceBspTree = bspTree);
});
});
}
}
catch { }
});
});
base.OnLoad(args);
}
@ -509,8 +456,6 @@ namespace MatterHackers.MeshVisualizer
}
}
private Mesh printerShape;
public enum EditorType { Printer, Part }
public EditorType EditorMode { get; set; } = EditorType.Part;
@ -597,16 +542,16 @@ namespace MatterHackers.MeshVisualizer
{
bedColor = new RGBA_Bytes(this.BedColor, this.BedColor.alpha / 4);
}
GLHelper.Render(printerConfig.Bed.Mesh, bedColor, RenderTypes.Shaded, World.ModelviewMatrix);
if (printerShape != null)
GLHelper.Render(sceneContext.Mesh, bedColor, RenderTypes.Shaded, World.ModelviewMatrix);
if (sceneContext.PrinterShape != null)
{
GLHelper.Render(printerShape, bedColor, RenderTypes.Shaded, World.ModelviewMatrix);
GLHelper.Render(sceneContext.PrinterShape, bedColor, RenderTypes.Shaded, World.ModelviewMatrix);
}
}
if (printerConfig.Bed.BuildVolumeMesh != null && RenderBuildVolume)
if (sceneContext.BuildVolumeMesh != null && RenderBuildVolume)
{
GLHelper.Render(printerConfig.Bed.BuildVolumeMesh, this.BuildVolumeColor, RenderTypes.Shaded, World.ModelviewMatrix);
GLHelper.Render(sceneContext.BuildVolumeMesh, this.BuildVolumeColor, RenderTypes.Shaded, World.ModelviewMatrix);
}
}
else
@ -626,7 +571,6 @@ namespace MatterHackers.MeshVisualizer
GL.Vertex3(width, i, 0);
GL.Vertex3(-width, i, 0);
}
GL.Color4(255, 0, 0, 255);

View file

@ -120,13 +120,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private ThemeConfig theme;
private PrinterConfig printer;
public Vector3 BedCenter
{
get
{
return new Vector3(printer.Bed.BedCenter);
return new Vector3(sceneContext.BedCenter);
}
}
@ -138,15 +136,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
internal ViewGcodeBasic gcodeViewer;
public InteractionLayer InteractionLayer { get; }
PrinterConnection printerConnection;
public View3DWidget(PrinterConnection printerConnection, PrintItemWrapper printItemWrapper, PrinterConfig printer, AutoRotate autoRotate, ViewControls3D viewControls3D, ThemeConfig theme, OpenMode openMode = OpenMode.Viewing, MeshViewerWidget.EditorType editorType = MeshViewerWidget.EditorType.Part)
private BedConfig sceneContext;
public View3DWidget(PrintItemWrapper printItemWrapper, BedConfig sceneContext, AutoRotate autoRotate, ViewControls3D viewControls3D, ThemeConfig theme, OpenMode openMode = OpenMode.Viewing, MeshViewerWidget.EditorType editorType = MeshViewerWidget.EditorType.Part)
{
this.printerConnection = printerConnection;
var smallMarginButtonFactory = theme.SmallMarginButtonFactory;
this.printer = printer;
this.Scene = this.printer.Bed.Scene;
this.sceneContext = sceneContext;
this.Scene = sceneContext.Scene;
this.TrackballTumbleWidget = new TrackballTumbleWidget(ApplicationController.Instance.Printer.Bed.World)
{
@ -179,12 +177,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
};
// MeshViewer
meshViewerWidget = new MeshViewerWidget(printer, this.InteractionLayer, editorType: editorType);
meshViewerWidget = new MeshViewerWidget(sceneContext, this.InteractionLayer, editorType: editorType);
meshViewerWidget.AnchorAll();
this.InteractionLayer.AddChild(meshViewerWidget);
// The slice layers view
gcodeViewer = new ViewGcodeBasic(printer, viewControls3D);
gcodeViewer = new ViewGcodeBasic(sceneContext, viewControls3D);
gcodeViewer.AnchorAll();
gcodeViewer.Visible = false;
this.InteractionLayer.AddChild(gcodeViewer);
@ -486,17 +484,39 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
UiThread.RunOnIdle(AutoSpin);
if (printer.Bed.RendererOptions.SyncToPrint)
if (sceneContext.RendererOptions.SyncToPrint)
{
printerConnection.CommunicationStateChanged.RegisterEvent(SetEditControlsBasedOnPrinterState, ref unregisterEvents);
// make sure we lock the controls if we are printing or paused
switch (printerConnection.CommunicationState)
if (sceneContext.Printer != null)
{
case CommunicationStates.Printing:
case CommunicationStates.Paused:
LockEditControls();
break;
sceneContext.Printer.Connection.CommunicationStateChanged.RegisterEvent(
(s, e) =>
{
if (sceneContext.RendererOptions.SyncToPrint
&& sceneContext.Printer != null)
{
switch (sceneContext.Printer.Connection.CommunicationState)
{
case CommunicationStates.Printing:
case CommunicationStates.Paused:
LockEditControls();
break;
default:
UnlockEditControls();
break;
}
}
},
ref unregisterEvents);
// make sure we lock the controls if we are printing or paused
switch (sceneContext.Printer.Connection.CommunicationState)
{
case CommunicationStates.Printing:
case CommunicationStates.Paused:
LockEditControls();
break;
}
}
}
@ -624,12 +644,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// This shows the BVH as rects around the scene items
//Scene?.TraceData().RenderBvhRecursive(0, 3);
if (gcodeViewer?.loadedGCode == null || printer.Bed.GCodeRenderer == null || !gcodeViewer.Visible)
if (sceneContext.LoadedGCode == null || sceneContext.GCodeRenderer == null || !gcodeViewer.Visible)
{
return;
}
printer.Bed.Render3DLayerFeatures(e);
sceneContext.Render3DLayerFeatures(e);
}
public override void OnKeyDown(KeyEventArgs keyEvent)
@ -1515,7 +1535,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
world.Reset();
world.Scale = .03;
world.Translate(-new Vector3(printer.Bed.BedCenter));
world.Translate(-new Vector3(sceneContext.BedCenter));
world.Rotate(Quaternion.FromEulerAngles(new Vector3(0, 0, MathHelper.Tau / 16)));
world.Rotate(Quaternion.FromEulerAngles(new Vector3(-MathHelper.Tau * .19, 0, 0)));
}
@ -2243,9 +2263,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void meshViewerWidget_LoadDone(object sender, EventArgs e)
{
if (printer.Bed.RendererOptions.SyncToPrint)
if (sceneContext.RendererOptions.SyncToPrint)
{
switch (printerConnection.CommunicationState)
switch (sceneContext.Printer?.Connection.CommunicationState)
{
case CommunicationStates.Printing:
case CommunicationStates.Paused:
@ -2350,24 +2370,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.saveAsWindow = null;
}
private void SetEditControlsBasedOnPrinterState(object sender, EventArgs e)
{
if (printer.Bed.RendererOptions.SyncToPrint)
{
switch (printerConnection.CommunicationState)
{
case CommunicationStates.Printing:
case CommunicationStates.Paused:
LockEditControls();
break;
default:
UnlockEditControls();
break;
}
}
}
public Vector2 DragSelectionStartPosition { get; private set; }
public bool DragSelectionInProgress { get; private set; }
public Vector2 DragSelectionEndPosition { get; private set; }

View file

@ -52,13 +52,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private string fileNotFoundMessage = "File not found on disk.".Localize();
private string fileTooBigToLoad = "GCode file too big to preview ({0}).".Localize();
private PrinterConfig printer;
private BedConfig sceneContext;
private ViewControls3D viewControls3D;
public ViewGcodeBasic(PrinterConfig printer, ViewControls3D viewControls3D)
public ViewGcodeBasic(BedConfig sceneContext, ViewControls3D viewControls3D)
{
this.printer = printer;
this.sceneContext = sceneContext;
this.viewControls3D = viewControls3D;
CreateAndAddChildren();
@ -69,17 +69,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (stringEvent.Data == "extruder_offset")
{
printer.Bed.GCodeRenderer?.Clear3DGCode();
sceneContext.GCodeRenderer?.Clear3DGCode();
}
}
}, ref unregisterEvents);
// 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.Bed.GCodeRenderer?.Clear3DGCode(), ref unregisterEvents);
ApplicationController.Instance.AdvancedControlsPanelReloading.RegisterEvent((s, e) => sceneContext.GCodeRenderer?.Clear3DGCode(), ref unregisterEvents);
}
internal GCodeFile loadedGCode => printer.Bed.LoadedGCode;
internal void CreateAndAddChildren()
{
CloseAllChildren();
@ -98,9 +96,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
VAnchor = VAnchor.Stretch
};
if (!File.Exists(printer.Bed.GCodePath))
if (!File.Exists(sceneContext.GCodePath))
{
SetProcessingMessage($"{fileNotFoundMessage}\n'{printer.Bed.GCodePath}'");
SetProcessingMessage($"{fileNotFoundMessage}\n'{sceneContext.GCodePath}'");
}
mainContainerTopToBottom.AddChild(gcodeDisplayWidget);
@ -109,23 +107,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// *************** AddGCodeFileControls ***************
SetProcessingMessage("");
if (loadedGCode == null)
if (sceneContext.LoadedGCode == null)
{
SetProcessingMessage($"{fileNotFoundMessage}\n'{printer.Bed.GCodePath}'");
SetProcessingMessage($"{fileNotFoundMessage}\n'{sceneContext.GCodePath}'");
}
if (loadedGCode?.LineCount > 0)
if (sceneContext.LoadedGCode?.LineCount > 0)
{
gradientWidget = new ColorGradientWidget(loadedGCode)
gradientWidget = new ColorGradientWidget(sceneContext.LoadedGCode)
{
Margin = new BorderDouble(top: 55, left: 11),
HAnchor = HAnchor.Fit | HAnchor.Left,
VAnchor = VAnchor.Top,
Visible = printer.Bed.RendererOptions.RenderSpeeds
Visible = sceneContext.RendererOptions.RenderSpeeds
};
AddChild(gradientWidget);
var gcodeDetails = new GCodeDetails(this.loadedGCode);
var gcodeDetails = new GCodeDetails(sceneContext.LoadedGCode);
this.AddChild(new GCodeDetailsView(gcodeDetails)
{