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 }