File indexing completed on 2024-06-23 04:28:12
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef TOOL_REFERENCE_IMAGES_H 0008 #define TOOL_REFERENCE_IMAGES_H 0009 0010 #include <QPointer> 0011 0012 #include <KoToolFactoryBase.h> 0013 #include <KoIcon.h> 0014 0015 #include <kis_tool.h> 0016 #include "kis_painting_assistant.h" 0017 #include <kis_icon.h> 0018 #include <kis_canvas2.h> 0019 0020 #include <defaulttool/DefaultTool.h> 0021 #include <defaulttool/DefaultToolFactory.h> 0022 0023 class ToolReferenceImagesWidget; 0024 class KisReferenceImagesLayer; 0025 0026 class ToolReferenceImages : public DefaultTool 0027 { 0028 Q_OBJECT 0029 0030 public: 0031 ToolReferenceImages(KoCanvasBase * canvas); 0032 ~ToolReferenceImages() override; 0033 0034 virtual quint32 priority() { 0035 return 3; 0036 } 0037 0038 void mouseDoubleClickEvent(KoPointerEvent */*event*/) override {} 0039 0040 bool hasSelection() override; 0041 0042 void deleteSelection() override; 0043 0044 QMenu* popupActionsMenu() override; 0045 0046 protected: 0047 QList<QPointer<QWidget>> createOptionWidgets() override; 0048 QWidget *createOptionWidget() override; 0049 0050 bool isValidForCurrentLayer() const override; 0051 KoShapeManager *shapeManager() const override; 0052 KoSelection *koSelection() const override; 0053 0054 void updateDistinctiveActions(const QList<KoShape*> &editableShapes) override; 0055 0056 public Q_SLOTS: 0057 void activate(const QSet<KoShape*> &shapes) override; 0058 void deactivate() override; 0059 0060 void addReferenceImage(); 0061 void pasteReferenceImage(); 0062 void removeAllReferenceImages(); 0063 void saveReferenceImages(); 0064 void loadReferenceImages(); 0065 0066 void slotNodeAdded(KisNodeSP node); 0067 void slotSelectionChanged(); 0068 0069 void cut() override; 0070 void copy() const override; 0071 bool paste() override; 0072 0073 bool selectAll() override; 0074 void deselect() override; 0075 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(ToolBoxSection::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