[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