Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_change_primary_setting_action.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2012 Arjen Hiemstra <ahiemstra@heimr.nl>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <klocalizedstring.h>
10
11#include "kis_input_manager.h"
12#include "kis_canvas2.h"
13#include "kis_tool_proxy.h"
14
15#include <QApplication>
16#include <QEvent>
17#include <QMouseEvent>
18
19#include "kis_cursor.h"
20
21
23 : KisAbstractInputAction("Change Primary Setting")
24{
25 setName(i18n("Change Primary Setting"));
26 setDescription(i18n("The <i>Change Primary Setting</i> action changes a tool's \"Primary Setting\", for example the brush size for the brush tool."));
27 QHash<QString, int> shortcuts;
28 shortcuts.insert(i18n("Normal"), PrimaryAlternateChangeSizeShortcut);
29 shortcuts.insert(i18n("Snap"), SecondaryAlternateChangeSizeShortcut);
30 setShortcutIndexes(shortcuts);
31}
32
34{
36 switch (shortcut) {
37 case 0:
39 break;
40 case 1:
42 break;
43 }
44 return action;
45}
46
51
53{
54 inputManager()->toolProxy()->activateToolAction(decodeAction(shortcut));
55}
56
58{
59 inputManager()->toolProxy()->deactivateToolAction(decodeAction(shortcut));
60}
61
63{
64 return 8;
65}
66
67void KisChangePrimarySettingAction::begin(int shortcut, QEvent *event)
68{
69 KisAbstractInputAction::begin(shortcut, event);
70 savedAction = decodeAction(shortcut);
71
72 if (event) {
73 QMouseEvent targetEvent(QEvent::MouseButtonPress, eventPosF(event), Qt::LeftButton, Qt::LeftButton, Qt::ShiftModifier);
74 inputManager()->toolProxy()->forwardEvent(KisToolProxy::BEGIN, savedAction, &targetEvent, event);
75 }
76}
77
79{
80 if (event) {
81 QMouseEvent targetEvent(QEvent::MouseButtonRelease, eventPosF(event), Qt::LeftButton, Qt::LeftButton, Qt::ShiftModifier);
82 inputManager()->toolProxy()->forwardEvent(KisToolProxy::END, savedAction, &targetEvent, event);
83 }
84
86}
87
89{
90 if (event
91 && (event->type() == QEvent::MouseMove || event->type() == QEvent::TabletMove
92 || event->type() == QTouchEvent::TouchUpdate)) {
93 QMouseEvent targetEvent(QEvent::MouseMove, eventPosF(event), Qt::NoButton, Qt::LeftButton, Qt::ShiftModifier);
94 inputManager()->toolProxy()->forwardEvent(KisToolProxy::CONTINUE, savedAction, &targetEvent, event);
95 }
96}
97
99{
100 return inputManager()->toolProxy()->alternateActionSupportsHiResEvents(
102}
Abstract base class for input actions.
static KisInputManager * inputManager
void setShortcutIndexes(const QHash< QString, int > &indexes)
QPointF eventPosF(const QEvent *event)
void setName(const QString &name)
virtual void end(QEvent *event)
void setDescription(const QString &description)
virtual void begin(int shortcut, QEvent *event)
@ PrimaryAlternateChangeSizeShortcut
Default Mapping: Shift+Left Mouse.
@ SecondaryAlternateChangeSizeShortcut
Secondary Mode (snap to closest pixel value): Shift+Z+Left Mouse.
KisTool::ToolAction decodeAction(int shortcut) const
bool supportsHiResInputEvents(int shortcut) const override
void begin(int shortcut, QEvent *event) override
QPointer< KisToolProxy > toolProxy() const
@ AlternateChangeSize
Definition kis_tool.h:119
@ Alternate_NONE
Definition kis_tool.h:129
@ AlternateChangeSizeSnap
Definition kis_tool.h:120
static AlternateAction actionToAlternateAction(ToolAction action)
Definition kis_tool.cc:416