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

0001 /*
0002  *  SPDX-FileCopyrightText: 2013 Sven Langkamp <sven.langkamp@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 
0008 #ifndef PALETTEDOCKER_DOCK_H
0009 #define PALETTEDOCKER_DOCK_H
0010 
0011 #include <QDockWidget>
0012 #include <QModelIndex>
0013 #include <QScopedPointer>
0014 #include <QVector>
0015 #include <QPointer>
0016 #include <QPair>
0017 #include <QAction>
0018 #include <QMenu>
0019 
0020 #include <KoResourceServer.h>
0021 #include <KoResourceServer.h>
0022 #include <resources/KoColorSet.h>
0023 
0024 #include <kis_canvas2.h>
0025 #include <kis_mainwindow_observer.h>
0026 #include <KisView.h>
0027 #include <kis_workspace_resource.h>
0028 #include <kis_signal_auto_connection.h>
0029 
0030 
0031 class KisViewManager;
0032 class KisCanvasResourceProvider;
0033 class KisPaletteChooser;
0034 class KisPaletteModel;
0035 
0036 class KisPaletteEditor;
0037 class Ui_WdgPaletteDock;
0038 
0039 class PaletteDockerDock : public QDockWidget, public KisMainwindowObserver, public KoResourceServerObserver<KoColorSet>
0040 {
0041     Q_OBJECT
0042 public:
0043     PaletteDockerDock();
0044     ~PaletteDockerDock() override;
0045 
0046 public: // QDockWidget
0047     void setCanvas(KoCanvasBase *canvas) override;
0048     void unsetCanvas() override;
0049 
0050 public: // KisMainWindowObserver
0051     void setViewManager(KisViewManager* kisview) override;
0052 
0053 public: //KoResourceServerObserver
0054     void unsetResourceServer() override;
0055     void resourceAdded(QSharedPointer<KoColorSet> resource) override;
0056     void removingResource(QSharedPointer<KoColorSet> resource) override;
0057     void resourceChanged(QSharedPointer<KoColorSet> resource) override;
0058 
0059 private Q_SLOTS:
0060     void slotContextMenu(const QModelIndex &);
0061 
0062     void slotAddPalette();
0063     void slotRemovePalette(KoColorSetSP );
0064     void slotImportPalette();
0065     void slotExportPalette(KoColorSetSP );
0066 
0067     void slotAddColor();
0068     void slotRemoveColor();
0069     void slotEditEntry();
0070     void slotEditPalette();
0071     void slotSavePalette();
0072 
0073     void slotPaletteIndexSelected(const QModelIndex &index);
0074     void slotPaletteIndexClicked(const QModelIndex &index);
0075     void slotPaletteIndexDoubleClicked(const QModelIndex &index);
0076     void slotNameListSelection(const KoColor &color);
0077     void slotSetColorSet(KoColorSetSP colorSet);
0078 
0079     void slotFGColorResourceChanged(const KoColor& color);
0080 
0081     void slotStoragesChanged(const QString &location);
0082 
0083     void slotUpdateLblPaletteName();
0084 
0085     void slotLockPalette(bool locked);
0086 
0087     void setUndoToolTip(const QString &text);
0088     void setRedoToolTip(const QString &text);
0089 
0090     void undo();
0091     void redo();
0092 
0093 private:
0094     void setEntryByForeground(const QModelIndex &index);
0095     void setFGColorByPalette(const KisSwatch &entry);
0096 
0097 
0098 private /* member variables */:
0099     QScopedPointer<Ui_WdgPaletteDock> m_ui;
0100     KisPaletteModel *m_model;
0101     KisPaletteChooser *m_paletteChooser;
0102 
0103     QPointer<KisViewManager> m_view;
0104     KisCanvasResourceProvider *m_resourceProvider;
0105 
0106     KoResourceServer<KoColorSet> * const m_rServer;
0107 
0108     QPointer<KisDocument> m_activeDocument;
0109     QSharedPointer<KoColorSet> m_currentColorSet;
0110     QScopedPointer<KisPaletteEditor> m_paletteEditor;
0111 
0112     QScopedPointer<QAction> m_actAdd;
0113     QScopedPointer<QAction> m_actRemove;
0114     QScopedPointer<QAction> m_actModify;
0115     QScopedPointer<QAction> m_actEditPalette;
0116     QScopedPointer<QAction> m_actSavePalette;
0117     QMenu m_viewContextMenu;
0118 
0119     bool m_colorSelfUpdate;
0120 };
0121 
0122 
0123 #endif