Krita Source Code Documentation
Loading...
Searching...
No Matches
KoToolBase.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2006 Thomas Zander <zander@kde.org>
3 * SPDX-FileCopyrightText: 2011 Jan Hambrecht <jaham@gmx.net>
4 *
5 * SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7#ifndef KOTOOLBASE_H
8#define KOTOOLBASE_H
9
10#include <QObject>
11#include <QPointer>
12#include <QSet>
13#include <QList>
14#include <QHash>
15
16#include <KisQStringListFwd.h>
17#include "kritaflake_export.h"
20
21class KoShape;
22class KoCanvasBase;
23class KoPointerEvent;
24class KoViewConverter;
26class KoToolSelection;
30
31class QAction;
32class QKeyEvent;
33class QWidget;
34class QCursor;
35class QPainter;
36class QString;
37class QRectF;
38class QPointF;
39class QInputMethodEvent;
40class QDragMoveEvent;
41class QDragLeaveEvent;
42class QDropEvent;
43class QTouchEvent;
44class QFocusEvent;
45class QMenu;
46
56class KRITAFLAKE_EXPORT KoToolBase : public QObject
57{
58 Q_OBJECT
59public:
64 explicit KoToolBase(KoCanvasBase *canvas);
65 ~KoToolBase() override;
66
78 KoToolFactoryBase* factory() const;
79
80 virtual QRectF decorationsRect() const;
81
87 virtual bool wantsAutoScroll() const;
88
95 virtual void paint(QPainter &painter, const KoViewConverter &converter) = 0;
96
105 QList<QPointer<QWidget> > optionWidgets();
106
110 QAction *action(const QString &name) const;
111
117 virtual void mousePressEvent(KoPointerEvent *event) = 0;
118
125 virtual void mouseDoubleClickEvent(KoPointerEvent *event);
126
133 virtual void mouseTripleClickEvent(KoPointerEvent *event);
134
140 virtual void mouseMoveEvent(KoPointerEvent *event) = 0;
141
147 virtual void mouseReleaseEvent(KoPointerEvent *event) = 0;
148
155 virtual void keyPressEvent(QKeyEvent *event);
156
163 virtual void keyReleaseEvent(QKeyEvent *event);
164
170 virtual void explicitUserStrokeEndRequest();
171
181 virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
182
190 virtual void inputMethodEvent(QInputMethodEvent *event);
191
196 virtual void focusInEvent(QFocusEvent *event);
197
202 virtual void focusOutEvent(QFocusEvent *event);
203
209 virtual void customPressEvent(KoPointerEvent *event);
210
216 virtual void customReleaseEvent(KoPointerEvent *event);
217
223 virtual void customMoveEvent(KoPointerEvent *event);
224
233 bool maskSyntheticEvents() const;
234
238 bool isOpacityPresetMode() const;
239
245 Q_INVOKABLE QString toolId() const;
246
248 QCursor cursor() const;
249
255 virtual KoToolSelection *selection();
256
260 virtual bool hasSelection();
261
267 virtual void copy() const;
268
274 virtual void deleteSelection();
275
282 virtual void cut();
283
290 virtual bool paste();
291
297 virtual bool selectAll();
298
303 virtual void deselect();
304
312 virtual void dragMoveEvent(QDragMoveEvent *event, const QPointF &point);
313
319 virtual void dragLeaveEvent(QDragLeaveEvent *event);
320
328 virtual void dropEvent(QDropEvent *event, const QPointF &point);
329
334 virtual QMenu* popupActionsMenu() {return nullptr;}
335
340 virtual KisPopupWidgetInterface* popupWidget() {return nullptr;}
341
343 KoCanvasBase *canvas() const;
344
350 bool isInTextMode() const;
351
359 int decorationThickness() const;
360
361public Q_SLOTS:
362
372 virtual void requestUndoDuringStroke();
373
379 virtual void requestRedoDuringStroke();
380
386 virtual void requestStrokeCancellation();
387
393 virtual void requestStrokeEnd();
394
395
408 virtual void activate(const QSet<KoShape*> &shapes);
409
415 virtual void deactivate();
416
422 virtual void canvasResourceChanged(int key, const QVariant &res);
423
429 virtual void documentResourceChanged(int key, const QVariant &res);
430
435 void setStatusText(const QString &statusText);
436
441 virtual void repaintDecorations();
442
446 void updateOptionsWidgetIcons();
447
448Q_SIGNALS:
449
456 void activateTool(const QString &id);
457
462 void cursorChanged(const QCursor &cursor);
463
468 void selectionChanged(bool hasSelection);
469
474 void statusTextChanged(const QString &statusText);
475
480 void textModeChanged(bool inTextMode);
481
482protected:
489 void useCursor(const QCursor &cursor);
490
495 virtual QWidget *createOptionWidget();
496 virtual QList<QPointer<QWidget> > createOptionWidgets();
497
499 int handleRadius() const;
500
503 qreal handleDocRadius() const;
504
505
507 int grabSensitivity() const;
508
517 QRectF handleGrabRect(const QPointF &position) const;
518
527 QRectF handlePaintRect(const QPointF &position) const;
528
533 void setTextMode(bool value);
534
538 void setMaskSyntheticEvents(bool value);
539
543 void setIsOpacityPresetMode(bool value);
544
545 void setConverter(KoDerivedResourceConverterSP converter);
546
547 void setAbstractResource(KoAbstractCanvasResourceInterfaceSP abstractResource);
548
549 QHash<int, KoAbstractCanvasResourceInterfaceSP> toolAbstractResources();
550 QHash<int, KoDerivedResourceConverterSP> toolConverters();
551
555 bool isActivated() const;
556
562 KoPointerEvent* lastDeliveredPointerEvent() const;
563
564protected:
566
568
569
570private:
571
572 friend class KoToolManager;
573
579 void setFactory(KoToolFactoryBase *factory);
580
584
585 Q_DECLARE_PRIVATE(KoToolBase)
586};
587
588#endif /* KOTOOLBASE_H */
float value(const T *src, size_t ch)
The PopupWidgetInterface abstract class defines the basic interface that will be used by all popup wi...
KoToolBasePrivate * d_ptr
Definition KoToolBase.h:567
void textModeChanged(bool inTextMode)
void selectionChanged(bool hasSelection)
virtual KisPopupWidgetInterface * popupWidget()
Definition KoToolBase.h:340
void statusTextChanged(const QString &statusText)
KoToolBase(const KoToolBase &)
virtual void mousePressEvent(KoPointerEvent *event)=0
virtual void mouseMoveEvent(KoPointerEvent *event)=0
void activateTool(const QString &id)
virtual void mouseReleaseEvent(KoPointerEvent *event)=0
KoToolBase & operator=(const KoToolBase &)
virtual QMenu * popupActionsMenu()
Definition KoToolBase.h:334
void cursorChanged(const QCursor &cursor)
virtual void paint(QPainter &painter, const KoViewConverter &converter)=0