File indexing completed on 2024-06-16 04:17:45

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 Victor Wåhlström <victor.wahlstrom@initiali.se>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kis_tool_pan.h"
0008 #include "kis_cursor.h"
0009 #include "kis_canvas2.h"
0010 
0011 #include <KoCanvasController.h>
0012 
0013 #include <KoIcon.h>
0014 #include <klocalizedstring.h>
0015 
0016 
0017 KisToolPan::KisToolPan(KoCanvasBase *canvas)
0018     : KisTool(canvas, KisCursor::openHandCursor())
0019 {
0020 }
0021 
0022 KisToolPan::~KisToolPan()
0023 {
0024 }
0025 
0026 void KisToolPan::beginPrimaryAction(KoPointerEvent *event)
0027 {
0028     m_lastPosition = event->pos();
0029     useCursor(KisCursor::closedHandCursor());
0030 }
0031 
0032 void KisToolPan::continuePrimaryAction(KoPointerEvent *event)
0033 {
0034     QPoint pos = event->pos();
0035     QPoint delta = m_lastPosition - pos;
0036     canvas()->canvasController()->pan(delta);
0037     m_lastPosition = pos;
0038 }
0039 
0040 void KisToolPan::endPrimaryAction(KoPointerEvent *event)
0041 {
0042     Q_UNUSED(event);
0043     useCursor(KisCursor::openHandCursor());
0044 }
0045 
0046 void KisToolPan::keyPressEvent(QKeyEvent *event)
0047 {
0048     switch (event->key()) {
0049         case Qt::Key_Up:
0050             canvas()->canvasController()->panUp();
0051             break;
0052         case Qt::Key_Down:
0053             canvas()->canvasController()->panDown();
0054             break;
0055         case Qt::Key_Left:
0056             canvas()->canvasController()->panLeft();
0057             break;
0058         case Qt::Key_Right:
0059             canvas()->canvasController()->panRight();
0060             break;
0061     }
0062     event->accept();
0063 }
0064 
0065 void KisToolPan::paint(QPainter &painter, const KoViewConverter &converter)
0066 {
0067     Q_UNUSED(painter);
0068     Q_UNUSED(converter);
0069 }
0070 
0071 bool KisToolPan::wantsAutoScroll() const
0072 {
0073     return false;
0074 }
0075 
0076 KisToolPanFactory::KisToolPanFactory()
0077     : KoToolFactoryBase("PanTool")
0078 {
0079     setToolTip(i18n("Pan Tool"));
0080     setSection(ToolBoxSection::Navigation);
0081     setActivationShapeId(KRITA_TOOL_ACTIVATION_ID);
0082     setPriority(2);
0083     setIconName(koIconNameCStr("tool_pan"));
0084 }
0085 
0086 KisToolPanFactory::~KisToolPanFactory()
0087 {
0088 }
0089 
0090 KoToolBase* KisToolPanFactory::createTool(KoCanvasBase *canvas)
0091 {
0092     return new KisToolPan(canvas);
0093 }