File indexing completed on 2024-05-12 05:46:50
0001 /* 0002 * Copyright (c) 2017 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * This library is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU Lesser General Public License as published by 0006 * the Free Software Foundation; version 2 of the License, or 0007 * (at your option) any later version. 0008 * 0009 * This library is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU Lesser General Public License for more details. 0013 * 0014 * You should have received a copy of the GNU Lesser General Public License 0015 * along with this program; if not, write to the Free Software 0016 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0017 */ 0018 0019 #ifndef TOOL_REFERENCE_IMAGES_H 0020 #define TOOL_REFERENCE_IMAGES_H 0021 0022 #include <QPointer> 0023 0024 #include <KoToolFactoryBase.h> 0025 #include <KoIcon.h> 0026 0027 #include <kis_tool.h> 0028 #include "kis_painting_assistant.h" 0029 #include <kis_icon.h> 0030 #include <kis_canvas2.h> 0031 0032 #include <defaulttool/DefaultTool.h> 0033 #include <defaulttool/DefaultToolFactory.h> 0034 0035 class ToolReferenceImagesWidget; 0036 class KisReferenceImagesLayer; 0037 0038 class ToolReferenceImages : public DefaultTool 0039 { 0040 Q_OBJECT 0041 0042 public: 0043 ToolReferenceImages(KoCanvasBase * canvas); 0044 ~ToolReferenceImages() override; 0045 0046 virtual quint32 priority() { 0047 return 3; 0048 } 0049 0050 void mouseDoubleClickEvent(KoPointerEvent */*event*/) override {} 0051 0052 void deleteSelection() override; 0053 0054 protected: 0055 QList<QPointer<QWidget>> createOptionWidgets() override; 0056 QWidget *createOptionWidget() override; 0057 0058 bool isValidForCurrentLayer() const override; 0059 KoShapeManager *shapeManager() const override; 0060 KoSelection *koSelection() const override; 0061 0062 void updateDistinctiveActions(const QList<KoShape*> &editableShapes) override; 0063 0064 public Q_SLOTS: 0065 void activate(ToolActivation toolActivation, const QSet<KoShape*> &shapes) override; 0066 void deactivate() override; 0067 0068 void addReferenceImage(); 0069 void pasteReferenceImage(); 0070 void removeAllReferenceImages(); 0071 void saveReferenceImages(); 0072 void loadReferenceImages(); 0073 0074 void slotNodeAdded(KisNodeSP node); 0075 void slotSelectionChanged(); 0076 0077 private: 0078 friend class ToolReferenceImagesWidget; 0079 ToolReferenceImagesWidget *m_optionsWidget = nullptr; 0080 KisWeakSharedPtr<KisReferenceImagesLayer> m_layer; 0081 0082 KisDocument *document() const; 0083 void setReferenceImageLayer(KisSharedPtr<KisReferenceImagesLayer> layer); 0084 }; 0085 0086 0087 class ToolReferenceImagesFactory : public DefaultToolFactory 0088 { 0089 public: 0090 ToolReferenceImagesFactory() 0091 : DefaultToolFactory("ToolReferenceImages") { 0092 setToolTip(i18n("Reference Images Tool")); 0093 setSection(TOOL_TYPE_VIEW); 0094 setIconName(koIconNameCStr("krita_tool_reference_images")); 0095 setPriority(2); 0096 setActivationShapeId(KRITA_TOOL_ACTIVATION_ID); 0097 }; 0098 0099 0100 ~ToolReferenceImagesFactory() override {} 0101 0102 KoToolBase * createTool(KoCanvasBase * canvas) override { 0103 return new ToolReferenceImages(canvas); 0104 } 0105 0106 QList<QAction *> createActionsImpl() override; 0107 0108 }; 0109 0110 0111 #endif 0112