Krita Source Code Documentation
Loading...
Searching...
No Matches
DefaultTool.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2
3 SPDX-FileCopyrightText: 2006-2008 Thorsten Zachmann <zachmann@kde.org>
4 SPDX-FileCopyrightText: 2006-2008 Thomas Zander <zander@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.0-or-later
7*/
8
9#ifndef DEFAULTTOOL_H
10#define DEFAULTTOOL_H
11
12#include <KoInteractionTool.h>
13#include <KoFlake.h>
16#include "SelectionDecorator.h"
19
20#include <QPolygonF>
21#include <QTime>
22#include <QCursor>
23
24class KisSignalMapper;
27class KoSelection;
29class KisViewManager;
31
41{
42 Q_OBJECT
43public:
49 explicit DefaultTool(KoCanvasBase *canvas, bool connectToSelectedShapesProxy = false);
50 ~DefaultTool() override;
51
53 HotPosition = 1410100299
54 };
55
56public:
57
58 bool wantsAutoScroll() const override;
59 void paint(QPainter &painter, const KoViewConverter &converter) override;
60
61 QRectF decorationsRect() const override;
62
64 void copy() const override;
65
67 void deleteSelection() override;
68
70 bool paste() override;
71
73 bool selectAll() override;
74
76 void deselect() override;
77
79 KoToolSelection *selection() override;
80
81 QMenu *popupActionsMenu() override;
82
91 KoFlake::SelectionHandle handleAt(const QPointF &point, bool *innerHandleMeaning = 0);
92
93
94public Q_SLOTS:
95 void activate(const QSet<KoShape *> &shapes) override;
96 void deactivate() override;
97
98Q_SIGNALS:
100
101private Q_SLOTS:
102 void selectionAlign(int _align);
103 void selectionDistribute(int _distribute);
104
106 void selectionSendToBack();
107 void selectionMoveUp();
108 void selectionMoveDown();
109
110 void selectionGroup();
111 void selectionUngroup();
112
113 void selectionTransform(int transformAction);
114 void selectionBooleanOp(int booleanOp);
116
119
122
123 void slotChangeTextType(int index);
124
125protected Q_SLOTS:
127 void updateActions();
128
129public: // Events
130
131 void mousePressEvent(KoPointerEvent *event) override;
132 void mouseMoveEvent(KoPointerEvent *event) override;
133 void mouseReleaseEvent(KoPointerEvent *event) override;
134 void mouseDoubleClickEvent(KoPointerEvent *event) override;
135
136 void keyPressEvent(QKeyEvent *event) override;
137
138 void explicitUserStrokeEndRequest() override;
139protected:
141
143
144protected:
146 virtual bool isValidForCurrentLayer() const;
147 virtual KoShapeManager *shapeManager() const;
148 virtual KoSelection *koSelection() const;
149
153 virtual void updateDistinctiveActions(const QList<KoShape*> &editableShapes);
154
155 void addTransformActions(QMenu *menu) const;
156 QScopedPointer<QMenu> m_contextMenu;
157
158private:
161
162private:
163 void setupActions();
165 void updateCursor();
167 qreal rotationOfHandle(KoFlake::SelectionHandle handle, bool useEdgeRotation);
168
169 void addMappedAction(KisSignalMapper *mapper, const QString &actionId, int type);
170
172 bool moveSelection(int direction, Qt::KeyboardModifiers modifiers);
173
175 QRectF handlesSize();
176
177
178 void canvasResourceChanged(int key, const QVariant &res) override;
179
183 QPointF m_selectionBox[8];
185 QPointF m_lastPoint;
186
187 QScopedPointer<SelectionDecorator> m_decorator;
188
191
192 // TODO alter these 3 arrays to be static const instead
193 QCursor m_sizeCursors[8];
194 QCursor m_rotateCursors[8];
195 QCursor m_shearCursors[8];
196 qreal m_angle;
198 friend class SelectionHandler;
199
201
207
209};
210
211#include <KoSvgTextShape.h>
212
215{
216 Q_OBJECT
217public:
222 virtual void setPropertiesOnSelected(KoSvgTextProperties properties, QSet<KoSvgTextProperties::PropertyId> removeProperties = QSet<KoSvgTextProperties::PropertyId>()) override;
223 virtual bool spanSelection() override;
224
225 virtual void notifyCursorPosChanged(int pos, int anchor) override;
226 virtual void notifyMarkupChanged() override;
227 virtual void notifyShapeChanged(KoShape::ChangeType type, KoShape *shape) override;
228
229 void clearSelection();
230public Q_SLOTS:
232private:
233 struct Private;
234 const QScopedPointer<Private> d;
235};
236
237
238#endif
float value(const T *src, size_t ch)
virtual void updateDistinctiveActions(const QList< KoShape * > &editableShapes)
void addMappedAction(KisSignalMapper *mapper, const QString &actionId, int type)
KoFlake::SelectionHandle m_lastHandle
virtual bool isValidForCurrentLayer() const
void selectionSendToBack()
void explicitUserStrokeEndRequest() override
explicitUserStrokeEndRequest is called by the input manager when the user presses Enter key or any eq...
void slotActivateEditStrokeGradient(bool value)
void canvasResourceChanged(int key, const QVariant &res) override
bool m_mouseWasInsideHandles
QScopedPointer< QMenu > m_contextMenu
KoFlake::AnchorPosition m_hotPosition
KisSignalMapper * m_textTypeSignalsMapper
void deleteSelection() override
reimplemented
void selectionDistribute(int _distribute)
bool paste() override
reimplemented
void deselect() override
reimplemented
KisSignalMapper * m_booleanSignalsMapper
void updateActions()
Update actions on selection change.
KisSignalMapper * m_distributeSignalsMapper
QCursor m_shearCursors[8]
KoFlake::SelectionHandle handleAt(const QPointF &point, bool *innerHandleMeaning=0)
void keyPressEvent(QKeyEvent *event) override
~DefaultTool() override
QCursor m_sizeCursors[8]
bool moveSelection(int direction, Qt::KeyboardModifiers modifiers)
KoShapeMeshGradientHandles::Handle m_selectedMeshHandle
void mousePressEvent(KoPointerEvent *event) override
bool wantsAutoScroll() const override
DefaultToolTabbedWidget * m_tabbedOptionWidget
virtual KoSelection * koSelection() const
DefaultTool(KoCanvasBase *canvas, bool connectToSelectedShapesProxy=false)
qreal rotationOfHandle(KoFlake::SelectionHandle handle, bool useEdgeRotation)
Returns rotation angle of given handle of the current selection.
QList< QPointer< QWidget > > createOptionWidgets() override
QRectF decorationsRect() const override
void mouseMoveEvent(KoPointerEvent *event) override
void mouseDoubleClickEvent(KoPointerEvent *event) override
void selectionTransform(int transformAction)
QPointF m_lastPoint
void addTransformActions(QMenu *menu) const
QPointF m_selectionBox[8]
KoToolSelection * selection() override
reimplemented
void slotActivateEditFillMeshGradient(bool value)
void selectionGroup()
QMenu * popupActionsMenu() override
QRectF handlesSize()
Returns selection rectangle adjusted by handle proximity threshold.
void paint(QPainter &painter, const KoViewConverter &converter) override
void deactivate() override
DefaultToolTextPropertiesInterface * m_textPropertyInterface
bool selectAll() override
reimplemented
void selectionAlign(int _align)
void selectionMoveDown()
void slotActivateEditFillGradient(bool value)
void recalcSelectionBox(KoSelection *selection)
void selectionBooleanOp(int booleanOp)
KisSignalMapper * m_alignSignalsMapper
QCursor m_rotateCursors[8]
void meshgradientHandleSelected(KoShapeMeshGradientHandles::Handle)
QScopedPointer< SelectionDecorator > m_decorator
void slotResetMeshGradientState()
void updateCursor()
void setupActions()
void activate(const QSet< KoShape * > &shapes) override
KisSignalMapper * m_transformSignalsMapper
void selectionReorder(KoShapeReorderCommand::MoveShapeType order)
void mouseReleaseEvent(KoPointerEvent *event) override
void copy() const override
reimplemented
KoToolSelection * m_selectionHandler
void selectionBringToFront()
QPolygonF m_selectionOutline
virtual KoShapeManager * shapeManager() const
void selectionUngroup()
KoShapeMeshGradientHandles::Handle m_hoveredMeshHandle
void slotChangeTextType(int index)
void selectionSplitShapes()
void selectionMoveUp()
KoInteractionStrategy * createStrategy(KoPointerEvent *event) override
The KisSignalMapper class bundles signals from identifiable senders.
The undo / redo command for shape moving.
MoveShapeType
An enum for defining what kind of reordering to use.
ChangeType
Used by shapeChanged() to select which change was made.
Definition KoShape.h:95
The KoSvgTextPropertiesInterface class.
KoCanvasBase * canvas() const
Returns the canvas the tool is working on.
AnchorPosition
Definition KoFlake.h:85
SelectionHandle
Enum determining which handle is meant, used in KoInteractionTool.
Definition KoFlake.h:55
Interface to interact with the text property manager.
virtual bool spanSelection() override
Whether the tool is currently selecting a set of characters instead of whole paragraphs.
virtual QList< KoSvgTextProperties > getSelectedProperties() override
getSelectedProperties
const QScopedPointer< Private > d
virtual void notifyShapeChanged(KoShape::ChangeType type, KoShape *shape) override
DefaultToolTextPropertiesInterface(DefaultTool *parent)
virtual KoSvgTextProperties getInheritedProperties() override
getInheritedProperties The properties that should be visible when a given property isn't available in...
virtual void notifyCursorPosChanged(int pos, int anchor) override
virtual void notifyMarkupChanged() override
virtual void setPropertiesOnSelected(KoSvgTextProperties properties, QSet< KoSvgTextProperties::PropertyId > removeProperties=QSet< KoSvgTextProperties::PropertyId >()) override
setPropertiesOnSelected This sets the properties on the selection. The implementation is responsible ...
ShapeChangeListener so we can inform any text cursors that the cursor needs updating.