Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_move.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 1999 Matthias Elter <me@kde.org>
3 * SPDX-FileCopyrightText: 1999 Michael Koch <koch@kde.org>
4 * SPDX-FileCopyrightText: 2003 Patrick Julien <freak@codepimps.org>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#ifndef KIS_TOOL_MOVE_H_
10#define KIS_TOOL_MOVE_H_
11
13#include <kis_types.h>
14#include <kis_tool.h>
16#include <kis_icon.h>
17#include <QKeySequence>
18#include <QWidget>
19#include <QGroupBox>
20#include <QRadioButton>
25
26#include "kis_canvas2.h"
27
28
29class KoCanvasBase;
31class KisDocument;
32
33class KisToolMove : public KisTool
34{
35 Q_OBJECT
37public:
39 ~KisToolMove() override;
40
49 bool wantsAutoScroll() const override {
50 return false;
51 }
52
53public Q_SLOTS:
54 void activate(const QSet<KoShape*> &shapes) override;
55 void deactivate() override;
56
57public Q_SLOTS:
58 void requestStrokeEnd() override;
59 void requestStrokeCancellation() override;
60 void requestUndoDuringStroke() override;
61 void requestRedoDuringStroke() override;
62
63protected Q_SLOTS:
64 void resetCursorStyle() override;
65
66public:
72
79
80 void beginPrimaryAction(KoPointerEvent *event) override;
81 void continuePrimaryAction(KoPointerEvent *event) override;
82 void endPrimaryAction(KoPointerEvent *event) override;
83
87
88 void mouseMoveEvent(KoPointerEvent *event) override;
89
91 void continueAction(KoPointerEvent *event);
92 void endAction(KoPointerEvent *event);
93
94 void paint(QPainter& gc, const KoViewConverter &converter) override;
95
96 QWidget *createOptionWidget() override;
97 void updateUIUnit(int newUnit);
98
100
102
103public Q_SLOTS:
104 void moveDiscrete(MoveDirection direction, bool big);
105
106 void moveBySpinX(int newX);
107 void moveBySpinY(int newY);
108
109 void slotNodeChanged(const KisNodeList &nodes);
111 void commitChanges();
112
113 void slotHandlesRectCalculated(const QRect &handlesRect);
115 void slotStrokePickedLayers(const KisNodeList &nodes);
116
117Q_SIGNALS:
119 void moveInNewPosition(QPoint);
120
121private:
122 void drag(const QPoint& newPos);
123 void cancelStroke();
124 QPoint applyModifiers(Qt::KeyboardModifiers modifiers, QPoint pos);
125
126 bool startStrokeImpl(MoveToolMode mode, const QPoint *pos);
127
128 QPoint currentOffset() const;
129 void notifyGuiAfterMove(bool showFloatingMessage = true);
130 bool tryEndPreviousStroke(const KisNodeList &nodes);
132
133
134private Q_SLOTS:
135 void endStroke();
137
140 void slotMoveDiscreteUp();
146
147private:
148
150 QPoint m_dragStart;
152
154
158
160
162
163 QPoint m_dragPos;
165
167
172
174};
175
176
178{
179
180public:
182 : KisToolPaintFactoryBase("KritaTransform/KisToolMove") {
183 setToolTip(i18n("Move Tool"));
186 setPriority(3);
187 setIconName(koIconNameCStr("krita_tool_move"));
188 setShortcut(QKeySequence(Qt::Key_T));
189 }
190
192
194 return new KisToolMove(canvas);
195 }
196
198};
199
200#endif // KIS_TOOL_MOVE_H_
201
float value(const T *src, size_t ch)
KoToolBase * createTool(KoCanvasBase *canvas) override
QList< QAction * > createActionsImpl() override
createActionsImpl should be reimplemented if the tool needs any actions. The actions should have a va...
~KisToolMoveFactory() override
QPoint applyModifiers(Qt::KeyboardModifiers modifiers, QPoint pos)
void setShowCoordinates(bool value)
void continuePrimaryAction(KoPointerEvent *event) override
void slotMoveDiscreteLeftMore()
void requestUndoDuringStroke() override
void activate(const QSet< KoShape * > &shapes) override
KisAsynchronousStrokeUpdateHelper m_asyncUpdateHelper
bool wantsAutoScroll() const override
wantsAutoScroll reimplemented from KoToolBase there's an issue where autoscrolling with this tool nev...
MoveToolMode moveToolMode() const
~KisToolMove() override
void moveBySpinX(int newX)
void moveInNewPosition(QPoint)
bool tryEndPreviousStroke(const KisNodeList &nodes)
void notifyGuiAfterMove(bool showFloatingMessage=true)
void slotMoveDiscreteRight()
void paint(QPainter &gc, const KoViewConverter &converter) override
void deactivate() override
void slotMoveDiscreteUp()
void moveDiscrete(MoveDirection direction, bool big)
void drag(const QPoint &newPos)
void slotHandlesRectCalculated(const QRect &handlesRect)
KisSignalAutoConnectionsStore m_canvasConnections
void slotMoveDiscreteLeft()
void moveBySpinY(int newY)
void slotStrokeStartedEmpty()
KisSignalCompressor m_updateCursorCompressor
QPoint currentOffset() const
bool m_currentlyUsingSelection
void slotMoveDiscreteRightMore()
QWidget * createOptionWidget() override
void endPrimaryAction(KoPointerEvent *event) override
Q_ENUMS(MoveToolMode)
void continueAction(KoPointerEvent *event)
void cancelStroke()
void updateUIUnit(int newUnit)
void slotTrackerChangedConfig(KisToolChangesTrackerDataSP state)
void mouseMoveEvent(KoPointerEvent *event) override
MoveToolMode m_currentMode
KisToolMove(KoCanvasBase *canvas)
void requestStrokeCancellation() override
QPoint m_accumulatedOffset
Total offset including multiple clicks, up/down/left/right keys, etc. added together.
void moveToolModeChanged()
void beginPrimaryAction(KoPointerEvent *event) override
void resetCursorStyle() override
void requestStrokeEnd() override
void startAction(KoPointerEvent *event, MoveToolMode mode)
QPoint m_dragStart
Point where current cursor dragging began.
void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override
KisNodeList m_currentlyProcessingNodes
QAction * m_showCoordinatesAction
KisSignalAutoConnectionsStore m_actionConnections
void endAction(KoPointerEvent *event)
void slotMoveDiscreteDownMore()
void slotNodeChanged(const KisNodeList &nodes)
void requestRedoDuringStroke() override
void slotMoveDiscreteUpMore()
QRect m_handlesRect
KisToolChangesTracker m_changesTracker
void requestHandlesRectUpdate()
void endAlternateAction(KoPointerEvent *event, AlternateAction action) override
MoveToolOptionsWidget * m_optionsWidget
void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override
bool startStrokeImpl(MoveToolMode mode, const QPoint *pos)
void slotStrokePickedLayers(const KisNodeList &nodes)
QPoint m_lastCursorPos
KisStrokeId m_strokeId
void commitChanges()
void slotMoveDiscreteDown()
void slotSelectionChanged()
QAction * action(const QString &name) const
void setShortcut(const QKeySequence &shortcut)
void setSection(const QString &section)
void setActivationShapeId(const QString &activationShapeId)
void setIconName(const char *iconName)
void setToolTip(const QString &tooltip)
void setPriority(int newPriority)
#define koIconNameCStr(name)
Definition kis_icon.h:28
static const QString KRITA_TOOL_ACTIVATION_ID
Definition kis_tool.h:37
static const QString Transform
Tools that transform the layer.
virtual ToolMode mode() const
Definition kis_tool.cc:407
AlternateAction
Definition kis_tool.h:134
KisCanvas2 * canvas