From d4d7e8018403feffb1a5e5f42823cae8d3cabb67 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Fri, 22 Feb 2019 06:42:14 -0800 Subject: [PATCH] Add keyboard arrow navigation for active GCode layer --- .../ApplicationView/ApplicationController.cs | 29 ++++++++++++++++--- .../PartPreviewWindow/PrinterTabPage.cs | 24 +++++++++++++++ 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index 427afaa72..17ffd4fb3 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -1279,7 +1279,7 @@ namespace MatterHackers.MatterControl using (new SelectionMaintainer(scene)) { scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { sceneItem }, new[] { component })); - } // Invalidate image to kick off rebuild of ImageConverter stack + } // Invalidate image to kick off rebuild of ImageConverter stack imageObject.Invalidate(InvalidateType.Image); return Task.CompletedTask; @@ -3367,14 +3367,35 @@ If you experience adhesion problems, please re-run leveling." break; case Keys.Left: - // move or rotate view left - Offset3DView(view3D, new Vector2(-offsetDist, 0), arrowKeyOpperation); + if (keyEvent.Control + && !printerTabPage.sceneContext.ViewState.ModelView) + { + // Decrement slider + printerTabPage.LayerFeaturesIndex -= 1; + } + else + { + // move or rotate view left + Offset3DView(view3D, new Vector2(-offsetDist, 0), arrowKeyOpperation); + } + keyEvent.Handled = true; keyEvent.SuppressKeyPress = true; break; case Keys.Right: - Offset3DView(view3D, new Vector2(offsetDist, 0), arrowKeyOpperation); + if (keyEvent.Control + && !printerTabPage.sceneContext.ViewState.ModelView) + { + // Increment slider + printerTabPage.LayerFeaturesIndex += 1; + } + else + { + // move or rotate view right + Offset3DView(view3D, new Vector2(offsetDist, 0), arrowKeyOpperation); + } + keyEvent.Handled = true; keyEvent.SuppressKeyPress = true; break; diff --git a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs index 474993943..0d9f685c8 100644 --- a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs +++ b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs @@ -229,6 +229,30 @@ namespace MatterHackers.MatterControl.PartPreviewWindow sceneContext.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged; } + public int LayerFeaturesIndex + { + get + { + var renderInfo = sceneContext.RenderInfo; + int layerIndex = renderInfo.EndLayerIndex - 1; + int featuresOnLayer = sceneContext.GCodeRenderer.GetNumFeatures(layerIndex); + int featureIndex = (int)(featuresOnLayer * renderInfo.FeatureToEndOnRatio0To1 + .5); + + return Math.Max(0, Math.Min(featureIndex, featuresOnLayer)); + } + + set + { + var renderInfo = sceneContext.RenderInfo; + int layerIndex = renderInfo.EndLayerIndex - 1; + int featuresOnLayer = sceneContext.GCodeRenderer.GetNumFeatures(layerIndex); + + var factor = (double)value / featuresOnLayer; + + layerRenderRatioSlider.SecondValue = renderInfo.FeatureToEndOnRatio0To1 = Math.Max(0, Math.Min(factor, 1)); + } + } + string pauseCaption = "Printer Paused".Localize(); private void ResumePrint(bool clickedOk)