public override void OnProcessKeys(KeyEventArgs e, bool isDown)
 {
     switch (e.KeyCode)
     {
     case Keys.Delete:
         if (!isDown && !ClickData.IsShapesEmpty() && Canvas.Instance.Focused)
         {
             foreach (Shape s in ClickData.Shapes)
             {
                 SharedActions.RemoveShape(s);
             }
         }
         break;
     }
 }
        private void GenerateShape(Size size)
        {
            var layer = Canvas.Instance.layer;

            // Generate shape based on either a duplicate or a new shape
            Shape shape;

            if (!ClickData.IsShapesEmpty() && KeyboardController.IsControlDown)
            {
                shape = layer.DuplicateShape(ClickData.Shapes[0], ClickData.Origin);
            }
            else
            {
                shape = layer.AddNewShape(ClickData.Origin, size,
                                          Canvas.Instance.GetSelectedColor(),
                                          Canvas.Instance.GetSelectedShapeType()
                                          );
            }

            // Force new shape to go into resize mode.
            ClickData.Set(ShapeClickAction.Resize, shape);
        }
Beispiel #3
0
        private static void ProcessKeys(KeyEventArgs e, bool isDown)
        {
            switch (e.KeyCode)
            {
            // Escape from any unsupported keys
            case Keys.None:
            default:
                break;

            case Keys.R:
                if (!isDown && !ClickData.IsShapesEmpty() && Canvas.Instance.Focused)
                {
                    foreach (var s in ClickData.Shapes)
                    {
                        s.Height = s.Width;
                    }
                }
                break;

            case Keys.PageUp:
                if (!isDown && !ClickData.IsShapesEmpty() && Canvas.Instance.Focused)
                {
                    foreach (var s in ClickData.Shapes)
                    {
                        Canvas.Instance.layer.MoveShapeUp(s);
                    }
                }
                break;

            case Keys.PageDown:
                if (!isDown && !ClickData.IsShapesEmpty() && Canvas.Instance.Focused)
                {
                    foreach (var s in ClickData.Shapes)
                    {
                        Canvas.Instance.layer.MoveShapeDown(s);
                    }
                }
                break;

            case Keys.M:
                IsMoveDown = isDown && Canvas.Instance.Focused;
                break;

            case Keys.P:
                if (isDown)
                {
                    ToolBase.SwitchToTool(new MainTool());
                }
                break;

            case Keys.E:
                if (isDown)
                {
                    ToolBase.SwitchToTool(new EraserTool());
                }
                break;

            case Keys.S:
                if (isDown)
                {
                    ToolBase.SwitchToTool(new SelectorTool());
                }
                break;

            case Keys.ControlKey:
                IsControlDown = isDown;
                break;

            case Keys.A:
                ShowAllBordersDown = isDown;
                break;

            case Keys.ShiftKey:
                IsShiftDown = isDown;
                break;

            case Keys.OemQuestion:
                Debug.Show();
                break;
            }

            ToolBase.Current.ProcessKeys(e, isDown);

            // Invalidate Canvas if it was a new key input
            if (!(m_prevKey == e.KeyCode && m_prevIsDown == isDown))
            {
                Canvas.Instance.Invalidate();
            }

            m_prevKey    = e.KeyCode;
            m_prevIsDown = isDown;
        }