Move keyboard hooks to parent

This commit is contained in:
John Lewin 2017-07-10 12:32:41 -07:00
parent b2c898be6c
commit a50e8acc2a
2 changed files with 33 additions and 37 deletions

View file

@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
*/ */
using System; using System;
using System.Linq;
using MatterHackers.Agg; using MatterHackers.Agg;
using MatterHackers.Agg.UI; using MatterHackers.Agg.UI;
using MatterHackers.GCodeVisualizer; using MatterHackers.GCodeVisualizer;
@ -66,6 +67,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private Vector3 viewerVolume; private Vector3 viewerVolume;
private Vector2 bedCenter; private Vector2 bedCenter;
private SystemWindow parentSystemWindow;
public PrinterTabPage(PrinterSettings activeSettings, PrintItemWrapper printItem) public PrinterTabPage(PrinterSettings activeSettings, PrintItemWrapper printItem)
{ {
printer = ApplicationController.Instance.Printer; printer = ApplicationController.Instance.Printer;
@ -473,9 +476,33 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{ {
ApplicationController.Instance.ActiveView3DWidget = modelViewer; ApplicationController.Instance.ActiveView3DWidget = modelViewer;
LoadActivePrintItem(); LoadActivePrintItem();
// Find and hook the parent system window KeyDown event
if (this.Parents<SystemWindow>().FirstOrDefault() is SystemWindow systemWindow)
{
systemWindow.KeyDown += Parent_KeyDown;
parentSystemWindow = systemWindow;
}
base.OnLoad(args); base.OnLoad(args);
} }
private void Parent_KeyDown(object sender, KeyEventArgs keyEvent)
{
if (gcodeViewer.Visible)
{
switch (keyEvent.KeyCode)
{
case Keys.Up:
printer.BedPlate.ActiveLayerIndex += 1;
break;
case Keys.Down:
printer.BedPlate.ActiveLayerIndex -= 1;
break;
}
}
}
public override void OnDraw(Graphics2D graphics2D) public override void OnDraw(Graphics2D graphics2D)
{ {
bool printerIsRunningPrint = PrinterConnection.Instance.PrinterIsPaused || PrinterConnection.Instance.PrinterIsPrinting; bool printerIsRunningPrint = PrinterConnection.Instance.PrinterIsPaused || PrinterConnection.Instance.PrinterIsPrinting;
@ -502,6 +529,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
modelViewer.meshViewerWidget.TrackballTumbleWidget.DrawGlContent -= TrackballTumbleWidget_DrawGlContent; modelViewer.meshViewerWidget.TrackballTumbleWidget.DrawGlContent -= TrackballTumbleWidget_DrawGlContent;
} }
// Find and unhook the parent system window KeyDown event
if (parentSystemWindow != null)
{
parentSystemWindow.KeyDown -= Parent_KeyDown;
}
printer.BedPlate.ActiveLayerChanged -= ActiveLayer_Changed; printer.BedPlate.ActiveLayerChanged -= ActiveLayer_Changed;
printer.BedPlate.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged; printer.BedPlate.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged;

View file

@ -68,8 +68,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private PrinterConfig printer; private PrinterConfig printer;
private ViewControls3D viewControls3D; private ViewControls3D viewControls3D;
private SystemWindow parentSystemWindow;
public ViewGcodeBasic(Vector3 viewerVolume, Vector2 bedCenter, BedShape bedShape, ViewControls3D viewControls3D) public ViewGcodeBasic(Vector3 viewerVolume, Vector2 bedCenter, BedShape bedShape, ViewControls3D viewControls3D)
{ {
printer = ApplicationController.Instance.Printer; printer = ApplicationController.Instance.Printer;
@ -97,34 +95,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
ApplicationController.Instance.AdvancedControlsPanelReloading.RegisterEvent((s, e) => printer.BedPlate.GCodeRenderer?.Clear3DGCode(), ref unregisterEvents); ApplicationController.Instance.AdvancedControlsPanelReloading.RegisterEvent((s, e) => printer.BedPlate.GCodeRenderer?.Clear3DGCode(), ref unregisterEvents);
} }
public override void OnLoad(EventArgs args)
{
// Find and hook the parent system window KeyDown event
if (this.Parents<SystemWindow>().FirstOrDefault() is SystemWindow systemWindow)
{
systemWindow.KeyDown += Parent_KeyDown;
parentSystemWindow = systemWindow;
}
base.OnLoad(args);
}
private void Parent_KeyDown(object sender, KeyEventArgs keyEvent)
{
if (this.Visible)
{
switch(keyEvent.KeyCode)
{
case Keys.Up:
printer.BedPlate.ActiveLayerIndex += 1;
break;
case Keys.Down:
printer.BedPlate.ActiveLayerIndex -= 1;
break;
}
}
}
private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode; private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode;
internal void CreateAndAddChildren() internal void CreateAndAddChildren()
@ -248,13 +218,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public override void OnClosed(ClosedEventArgs e) public override void OnClosed(ClosedEventArgs e)
{ {
unregisterEvents?.Invoke(this, null); unregisterEvents?.Invoke(this, null);
// Find and unhook the parent system window KeyDown event
if (parentSystemWindow != null)
{
parentSystemWindow.KeyDown -= Parent_KeyDown;
}
base.OnClosed(e); base.OnClosed(e);
} }
} }