1 /* 2 * Copyright (c) 2017 Boudewijn Rempt <boud@valdyas.org> 3 * 4 * This library is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License as published by 6 * the Free Software Foundation; version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 */ 18 19 #ifndef TOOL_REFERENCE_IMAGES_H 20 #define TOOL_REFERENCE_IMAGES_H 21 22 #include <QPointer> 23 24 #include <KoToolFactoryBase.h> 25 #include <KoIcon.h> 26 27 #include <kis_tool.h> 28 #include "kis_painting_assistant.h" 29 #include <kis_icon.h> 30 #include <kis_canvas2.h> 31 32 #include <defaulttool/DefaultTool.h> 33 #include <defaulttool/DefaultToolFactory.h> 34 35 class ToolReferenceImagesWidget; 36 class KisReferenceImagesLayer; 37 38 class ToolReferenceImages : public DefaultTool 39 { 40 Q_OBJECT 41 42 public: 43 ToolReferenceImages(KoCanvasBase * canvas); 44 ~ToolReferenceImages() override; 45 priority()46 virtual quint32 priority() { 47 return 3; 48 } 49 mouseDoubleClickEvent(KoPointerEvent *)50 void mouseDoubleClickEvent(KoPointerEvent */*event*/) override {} 51 52 void deleteSelection() override; 53 54 protected: 55 QList<QPointer<QWidget>> createOptionWidgets() override; 56 QWidget *createOptionWidget() override; 57 58 bool isValidForCurrentLayer() const override; 59 KoShapeManager *shapeManager() const override; 60 KoSelection *koSelection() const override; 61 62 void updateDistinctiveActions(const QList<KoShape*> &editableShapes) override; 63 64 public Q_SLOTS: 65 void activate(ToolActivation toolActivation, const QSet<KoShape*> &shapes) override; 66 void deactivate() override; 67 68 void addReferenceImage(); 69 void pasteReferenceImage(); 70 void removeAllReferenceImages(); 71 void saveReferenceImages(); 72 void loadReferenceImages(); 73 74 void slotNodeAdded(KisNodeSP node); 75 void slotSelectionChanged(); 76 77 private: 78 friend class ToolReferenceImagesWidget; 79 ToolReferenceImagesWidget *m_optionsWidget = nullptr; 80 KisWeakSharedPtr<KisReferenceImagesLayer> m_layer; 81 82 KisDocument *document() const; 83 void setReferenceImageLayer(KisSharedPtr<KisReferenceImagesLayer> layer); 84 }; 85 86 87 class ToolReferenceImagesFactory : public DefaultToolFactory 88 { 89 public: ToolReferenceImagesFactory()90 ToolReferenceImagesFactory() 91 : DefaultToolFactory("ToolReferenceImages") { 92 setToolTip(i18n("Reference Images Tool")); 93 setSection(TOOL_TYPE_VIEW); 94 setIconName(koIconNameCStr("krita_tool_reference_images")); 95 setPriority(2); 96 setActivationShapeId(KRITA_TOOL_ACTIVATION_ID); 97 }; 98 99 ~ToolReferenceImagesFactory()100 ~ToolReferenceImagesFactory() override {} 101 createTool(KoCanvasBase * canvas)102 KoToolBase * createTool(KoCanvasBase * canvas) override { 103 return new ToolReferenceImages(canvas); 104 } 105 106 QList<QAction *> createActionsImpl() override; 107 108 }; 109 110 111 #endif 112 113