[calligra] krita: [FEATURE] Temporary switch to Line Tool with 'V' key

Dmitry Kazakov dimula73 at gmail.com
Tue Jul 1 11:01:48 UTC 2014


Git commit d814b81c6ac019afeaabf865ae404d418f14b23a by Dmitry Kazakov.
Committed on 01/07/2014 at 10:52.
Pushed by dkazakov into branch 'master'.

[FEATURE] Temporary switch to Line Tool with 'V' key

1) Hold 'V' and paint --- then the Line Tool will be available temporarily
2) Press and release 'V' --- Line Tool will be activated permanently

WARNING:
Please reset your input configuration config to get this option working!
Or just set it manually in Tool Invocation group

CCMAIL:kimageshop at kde.org

M  +34   -33   krita/data/input/kritadefault.profile
M  +22   -2    krita/ui/input/kis_tool_invocation_action.cpp
M  +2    -1    krita/ui/input/kis_tool_invocation_action.h

http://commits.kde.org/calligra/d814b81c6ac019afeaabf865ae404d418f14b23a

diff --git a/krita/data/input/kritadefault.profile b/krita/data/input/kritadefault.profile
index 9e819ea..86b9904 100644
--- a/krita/data/input/kritadefault.profile
+++ b/krita/data/input/kritadefault.profile
@@ -1,10 +1,10 @@
 [Alternate Invocation]
-0={4;2;[1000021];1;0;0}
-1={2;2;[1000023,1000021];1;0;0}
-2={3;2;[1000021,1000023];2;0;0}
-3={5;2;[1000021];2;0;0}
-4={0;2;[1000021,1000020];1;0;0}
-5={1;2;[1000023,1000020];1;0;0}
+0={1;2;[1000023,1000020];1;0;0}
+1={0;2;[1000021,1000020];1;0;0}
+2={5;2;[1000021];2;0;0}
+3={3;2;[1000021,1000023];2;0;0}
+4={2;2;[1000023,1000021];1;0;0}
+5={4;2;[1000021];1;0;0}
 
 [Change Primary Setting]
 0={0;2;[1000020];1;0;0}
@@ -17,21 +17,21 @@ name=Krita Default
 version=2
 
 [Pan Canvas]
-0={4;1;[1000015];0;0;0}
-1={3;1;[1000013];0;0;0}
-2={2;1;[1000014];0;0;0}
+0={0;4;[];0;0;2}
+1={0;2;[20];1;0;0}
+2={0;2;[];4;0;0}
 3={1;1;[1000012];0;0;0}
-4={0;2;[];4;0;0}
-5={0;2;[20];1;0;0}
-6={0;4;[];0;0;2}
+4={2;1;[1000014];0;0;0}
+5={3;1;[1000013];0;0;0}
+6={4;1;[1000015];0;0;0}
 
 [Rotate Canvas]
-0={3;1;[36];0;0;0}
-1={4;1;[35];0;0;0}
-2={2;1;[34];0;0;0}
-3={0;2;[1000020];4;0;0}
-4={1;2;[1000020,1000023,20];1;0;0}
-5={0;2;[1000020,20];1;0;0}
+0={0;2;[1000020,20];1;0;0}
+1={1;2;[1000020,1000023,20];1;0;0}
+2={0;2;[1000020];4;0;0}
+3={2;1;[34];0;0;0}
+4={4;1;[35];0;0;0}
+5={3;1;[36];0;0;0}
 
 [Select Layer]
 0={0;2;[52];1;0;0}
@@ -40,21 +40,22 @@ version=2
 0={0;2;[];2;0;0}
 
 [Tool Invocation]
-0={2;1;[1000000];0;0;0}
-1={1;1;[1000004];0;0;0}
+0={3;2;[56];1;0;0}
+1={1;1;[1000005];0;0;0}
 2={0;2;[];1;0;0}
-3={1;1;[1000005];0;0;0}
+3={1;1;[1000004];0;0;0}
+4={2;1;[1000000];0;0;0}
 
 [Zoom Canvas]
-0={0;2;[1000021,20];1;0;0}
-1={0;4;[];0;0;1}
-10={6;1;[33];0;0;0}
-11={1;2;[1000021,1000023,20];1;0;0}
-2={4;1;[31];0;0;0}
-3={3;1;[2d];0;0;0}
-4={2;1;[3d];0;0;0}
-5={3;3;[];0;2;0}
-6={2;3;[];0;1;0}
-7={0;2;[1000021];4;0;0}
-8={5;1;[32];0;0;0}
-9={2;1;[2b];0;0;0}
+0={2;1;[2b];0;0;0}
+1={5;1;[32];0;0;0}
+10={0;4;[];0;0;1}
+11={0;2;[1000021,20];1;0;0}
+2={0;2;[1000021];4;0;0}
+3={2;3;[];0;1;0}
+4={3;3;[];0;2;0}
+5={2;1;[3d];0;0;0}
+6={3;1;[2d];0;0;0}
+7={4;1;[31];0;0;0}
+8={1;2;[1000021,1000023,20];1;0;0}
+9={6;1;[33];0;0;0}
diff --git a/krita/ui/input/kis_tool_invocation_action.cpp b/krita/ui/input/kis_tool_invocation_action.cpp
index 806755e..bba8173 100644
--- a/krita/ui/input/kis_tool_invocation_action.cpp
+++ b/krita/ui/input/kis_tool_invocation_action.cpp
@@ -33,9 +33,10 @@
 class KisToolInvocationAction::Private
 {
 public:
-    Private() : active(false) { }
+    Private() : active(false), havePaintedAtLeastOnce(false) { }
 
     bool active;
+    bool havePaintedAtLeastOnce;
 };
 
 KisToolInvocationAction::KisToolInvocationAction()
@@ -49,6 +50,7 @@ KisToolInvocationAction::KisToolInvocationAction()
     indexes.insert(i18n("Activate"), ActivateShortcut);
     indexes.insert(i18n("Confirm"), ConfirmShortcut);
     indexes.insert(i18n("Cancel"), CancelShortcut);
+    indexes.insert(i18n("Activate Line Tool"), LineToolShortcut);
     setShortcutIndexes(indexes);
 }
 
@@ -61,6 +63,11 @@ void KisToolInvocationAction::activate(int shortcut)
 {
     Q_UNUSED(shortcut);
     if (!inputManager()) return;
+
+    if (shortcut == LineToolShortcut) {
+        KoToolManager::instance()->switchToolTemporaryRequested("KritaShape/KisToolLine");
+    }
+
     inputManager()->toolProxy()->activateToolAction(KisTool::Primary);
 }
 
@@ -68,7 +75,19 @@ void KisToolInvocationAction::deactivate(int shortcut)
 {
     Q_UNUSED(shortcut);
     if (!inputManager()) return;
+
     inputManager()->toolProxy()->deactivateToolAction(KisTool::Primary);
+
+    if (shortcut == LineToolShortcut) {
+        if (d->havePaintedAtLeastOnce) {
+            KoToolManager::instance()->switchBackRequested();
+        } else {
+            KoToolManager::instance()->switchBackRequested();
+            KoToolManager::instance()->switchToolRequested("KritaShape/KisToolLine");
+        }
+    } else {
+        d->havePaintedAtLeastOnce = false;
+    }
 }
 
 int KisToolInvocationAction::priority() const
@@ -83,13 +102,14 @@ bool KisToolInvocationAction::canIgnoreModifiers() const
 
 void KisToolInvocationAction::begin(int shortcut, QEvent *event)
 {
-    if (shortcut == ActivateShortcut) {
+    if (shortcut == ActivateShortcut || shortcut == LineToolShortcut) {
         QPoint workaround = inputManager()->canvas()->canvasWidget()->mapToGlobal(QPoint(0, 0));
         d->active =
             inputManager()->toolProxy()->forwardEvent(
                 KisToolProxy::BEGIN, KisTool::Primary, event, event,
                 inputManager()->lastTabletEvent(),
                 workaround);
+        d->havePaintedAtLeastOnce = true;
     } else if (shortcut == ConfirmShortcut) {
         QKeyEvent pressEvent(QEvent::KeyPress, Qt::Key_Return, 0);
         inputManager()->toolProxy()->keyPressEvent(&pressEvent);
diff --git a/krita/ui/input/kis_tool_invocation_action.h b/krita/ui/input/kis_tool_invocation_action.h
index 5fcbbc9..131c6f7 100644
--- a/krita/ui/input/kis_tool_invocation_action.h
+++ b/krita/ui/input/kis_tool_invocation_action.h
@@ -33,7 +33,8 @@ public:
     enum Shortcut {
         ActivateShortcut,
         ConfirmShortcut,
-        CancelShortcut
+        CancelShortcut,
+        LineToolShortcut
     };
     explicit KisToolInvocationAction();
     virtual ~KisToolInvocationAction();


More information about the kimageshop mailing list