diff --git a/src/QuickEditor/EditorRoot.qml b/src/QuickEditor/EditorRoot.qml --- a/src/QuickEditor/EditorRoot.qml +++ b/src/QuickEditor/EditorRoot.qml @@ -38,6 +38,7 @@ property int magZoom: 5; property int magPixels: 16; property int magOffset: 32; + property int largeChange: 20; SystemPalette { id: systemPalette; @@ -78,11 +79,90 @@ } Keys.onPressed: { + + // shift key alone = magnifier toggle if (event.modifiers & Qt.ShiftModifier) { toggleMagnifier = true; - cropDisplayCanvas.requestPaint(); } - } + + // nested switches for arrow keys based on modifier keys + switch(event.modifiers) { + + case Qt.NoModifier: + switch(event.key) { + case Qt.Key_Left: + selection.x--; + break; + case Qt.Key_Right: + selection.x++; + break; + case Qt.Key_Up: + selection.y--; + break; + case Qt.Key_Down: + selection.y++; + break; + } + break; // end no modifier (just arrows) + + case Qt.ControlModifier: + switch(event.key) { + case Qt.Key_Left: + selection.x = selection.x - largeChange; + break; + case Qt.Key_Right: + selection.x = selection.x + largeChange; + break; + case Qt.Key_Up: + selection.y = selection.y - largeChange; + break; + case Qt.Key_Down: + selection.y = selection.y + largeChange; + break; + } + break; // end CTRL + arrows (large move) + + case Qt.AltModifier: + switch(event.key) { + case Qt.Key_Left: + selection.width--; + break; + case Qt.Key_Right: + selection.width++; + break; + case Qt.Key_Up: + selection.height--; + break; + case Qt.Key_Down: + selection.height++; + break; + } + break; // end ALT + arrows (resize rectangle) + + case(Qt.ControlModifier + Qt.AltModifier): + switch(event.key) { + case Qt.Key_Left: + selection.width = selection.width - largeChange; + break; + case Qt.Key_Right: + selection.width = selection.width + largeChange; + break; + case Qt.Key_Up: + selection.height = selection.height - largeChange; + break; + case Qt.Key_Down: + selection.height = selection.height + largeChange; + break; + } + break; // end CTRL + ALT + arrows (large resize rectangle) + + } + + // all switches done; repaint on any keypress + cropDisplayCanvas.requestPaint(); + + } // end Keys.onPressed + Keys.onReleased: { if (toggleMagnifier && !(event.modifiers & Qt.ShiftModifier)) { @@ -304,6 +384,30 @@ } Label { text: i18n("Hold to toggle magnifier"); } + Label { + text: i18n("Arrow Keys:"); + Layout.alignment: Qt.AlignRight; + } + Label { text: i18n("Hove Selection"); } + + Label { + text: i18n("CTRL + Arrow Keys:"); + Layout.alignment: Qt.AlignRight; + } + Label { text: i18n("Larger Selection Move"); } + + Label { + text: i18n("ALT + Arrow Keys:"); + Layout.alignment: Qt.AlignRight; + } + Label { text: i18n("Resize Selection"); } + + Label { + text: i18n("ALT + CTRL + Arrow Keys:"); + Layout.alignment: Qt.AlignRight; + } + Label { text: i18n("Larger Selection Resize"); } + Label { text: i18n("Right-click:"); Layout.alignment: Qt.AlignRight; @@ -315,8 +419,10 @@ Layout.alignment: Qt.AlignRight; } Label { text: i18n("Cancel"); } + + } } - } + // Use Rectangle so that the background is white when cursor nearby edge Rectangle { @@ -368,7 +474,6 @@ color: crossColour; } } - } MouseArea {