Add keyboard arrow navigation for active GCode layer

This commit is contained in:
John Lewin 2019-02-22 06:42:14 -08:00
parent f5fcde1083
commit d4d7e80184
2 changed files with 49 additions and 4 deletions

View file

@ -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;

View file

@ -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)