Beispiel #1
0
        protected override bool OnKeyUp(Document document, ToolKeyEventArgs e)
        {
            if (e.Key.IsControlKey())
            {
                SetCursor(DefaultCursor);
            }

            return(false);
        }
Beispiel #2
0
        protected override bool OnKeyUp(Document document, ToolKeyEventArgs e)
        {
            if (IsActive && !using_mouse)
            {
                OnFinishTransform(document, transform);
            }

            return(base.OnKeyUp(document, e));
        }
Beispiel #3
0
        protected override bool OnKeyUp(Document document, ToolKeyEventArgs e)
        {
            if (EditEngine.HandleKeyUp(document, e))
            {
                return(true);
            }

            return(base.OnKeyUp(document, e));
        }
Beispiel #4
0
        protected override bool OnKeyUp(Document document, ToolKeyEventArgs e)
        {
            if (e.Key.IsControlKey() || e.IsControlPressed)
            {
                ctrlKey = false;

                UpdateMouseCursor(document);
            }
            return(false);
        }
Beispiel #5
0
        protected override bool OnKeyDown(Document document, ToolKeyEventArgs e)
        {
            // Note that this WON'T work if user presses control key and THEN selects the tool!
            if (e.Key.IsControlKey())
            {
                var icon            = Resources.GetIcon("Cursor.CloneStampSetSource.png");
                var setSourceCursor = new Cursor(Display.Default, icon, 16, 26);
                SetCursor(setSourceCursor);
            }

            return(false);
        }
Beispiel #6
0
        protected override bool OnKeyDown(Document document, ToolKeyEventArgs e)
        {
            // Don't handle the arrow keys while already interacting via the mouse.
            if (using_mouse)
            {
                return(base.OnKeyDown(document, e));
            }

            var dx = 0.0;
            var dy = 0.0;

            switch (e.Key)
            {
            case Gdk.Key.Left:
                dx = -1;
                break;

            case Gdk.Key.Right:
                dx = 1;
                break;

            case Gdk.Key.Up:
                dy = -1;
                break;

            case Gdk.Key.Down:
                dy = 1;
                break;

            default:
                // Otherwise, let the key be handled elsewhere.
                return(base.OnKeyDown(document, e));
            }

            if (!IsActive)
            {
                is_dragging = true;
                OnStartTransform(document);
            }

            transform.Translate(dx, dy);
            OnUpdateTransform(document, transform);

            return(true);
        }
Beispiel #7
0
        protected override bool OnKeyDown(Document document, ToolKeyEventArgs e)
        {
            if (!PintaCore.Workspace.HasOpenDocuments)
            {
                return(false);
            }

            // If we are dragging the text, we
            // aren't going to handle key presses
            if (tracking)
            {
                return(false);
            }

            // Ignore anything with Alt pressed
            if (e.IsAltPressed)
            {
                return(false);
            }

            ctrlKey = e.Key.IsControlKey();
            UpdateMouseCursor(document);

            // Assume that we are going to handle the key
            bool keyHandled = true;

            if (is_editing)
            {
                switch (e.Key)
                {
                case Gdk.Key.BackSpace:
                    CurrentTextEngine.PerformBackspace();
                    break;

                case Gdk.Key.Delete:
                    CurrentTextEngine.PerformDelete();
                    break;

                case Gdk.Key.KP_Enter:
                case Gdk.Key.Return:
                    CurrentTextEngine.PerformEnter();
                    break;

                case Gdk.Key.Left:
                    CurrentTextEngine.PerformLeft(e.IsControlPressed, e.IsShiftPressed);
                    break;

                case Gdk.Key.Right:
                    CurrentTextEngine.PerformRight(e.IsControlPressed, e.IsShiftPressed);
                    break;

                case Gdk.Key.Up:
                    CurrentTextEngine.PerformUp(e.IsShiftPressed);
                    break;

                case Gdk.Key.Down:
                    CurrentTextEngine.PerformDown(e.IsShiftPressed);
                    break;

                case Gdk.Key.Home:
                    CurrentTextEngine.PerformHome(e.IsControlPressed, e.IsShiftPressed);
                    break;

                case Gdk.Key.End:
                    CurrentTextEngine.PerformEnd(e.IsControlPressed, e.IsShiftPressed);
                    break;

                case Gdk.Key.Next:
                case Gdk.Key.Prior:
                    break;

                case Gdk.Key.Escape:
                    StopEditing(false);
                    return(true);

                case Gdk.Key.Insert:
                    if (e.IsShiftPressed)
                    {
                        Gtk.Clipboard cb = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));
                        CurrentTextEngine.PerformPaste(cb);
                    }
                    else if (e.IsControlPressed)
                    {
                        Gtk.Clipboard cb = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));
                        CurrentTextEngine.PerformCopy(cb);
                    }
                    break;

                default:
                    if (e.IsControlPressed)
                    {
                        if (e.Key == Gdk.Key.z)
                        {
                            //Ctrl + Z for undo while editing.
                            OnHandleUndo(document);

                            if (PintaCore.Workspace.ActiveDocument.History.CanUndo)
                            {
                                PintaCore.Workspace.ActiveDocument.History.Undo();
                            }

                            return(true);
                        }
                        else if (e.Key == Gdk.Key.i)
                        {
                            italic_btn.Toggle();
                            UpdateFont();
                        }
                        else if (e.Key == Gdk.Key.b)
                        {
                            bold_btn.Toggle();
                            UpdateFont();
                        }
                        else if (e.Key == Gdk.Key.u)
                        {
                            underscore_btn.Toggle();
                            UpdateFont();
                        }
                        else if (e.Key == Gdk.Key.a)
                        {
                            // Select all of the text.
                            CurrentTextEngine.PerformHome(false, false);
                            CurrentTextEngine.PerformEnd(true, true);
                        }
                        else
                        {
                            //Ignore command shortcut.
                            return(false);
                        }
                    }
                    else
                    {
                        if (e.Event is not null)
                        {
                            keyHandled = TryHandleChar(e.Event);
                        }
                    }

                    break;
                }
                if (keyHandled)
                {
                    imContext.FocusOut();
                    RedrawText(true, true);
                    imContext.FocusIn();
                }
            }
            else
            {
                // If we're not editing, allow the key press to be handled elsewhere (e.g. for selecting another tool).
                keyHandled = false;
            }

            return(keyHandled);
        }