File indexing completed on 2024-06-16 04:16:24
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Mathias Wein <lynx.mw+kde@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef WGPOPUPMANAGER_H 0008 #define WGPOPUPMANAGER_H 0009 0010 #include "WGSelectorWidgetBase.h" 0011 0012 #include <KisVisualColorModel.h> 0013 #include <QObject> 0014 0015 class QAction; 0016 class KisCanvas2; 0017 class KisSignalCompressor; 0018 class KisViewManager; 0019 class KisVisualColorSelector; 0020 0021 class WGColorPreviewToolTip; 0022 class WGColorSelectorDock; 0023 class WGMyPaintShadeSelector; 0024 class WGSelectorPopup; 0025 class WGShadeSelector; 0026 namespace WGConfig { 0027 typedef class WGConfig Accessor; 0028 } 0029 0030 class WGActionManager : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 explicit WGActionManager(WGColorSelectorDock *parentDock = nullptr); 0035 ~WGActionManager() override; 0036 0037 void setCanvas(KisCanvas2* canvas, KisCanvas2* oldCanvas); 0038 void registerActions(KisViewManager *viewManager); 0039 void setLastUsedColor(const KoColor &col); 0040 private: 0041 void updateWidgetSize(QWidget *widget, int size); 0042 void showPopup(WGSelectorPopup *popup); 0043 void loadColorSelectorSettings(WGConfig::Accessor &cfg); 0044 void modifyHSX(int channel, float amount); 0045 private Q_SLOTS: 0046 void slotConfigChanged(); 0047 void slotSelectorConfigChanged(); 0048 void slotPopupClosed(WGSelectorPopup *popup); 0049 void slotShowColorSelectorPopup(); 0050 void slotShowShadeSelectorPopup(); 0051 void slotShowMyPaintSelectorPopup(); 0052 void slotShowColorHistoryPopup(); 0053 void slotIncreaseLightness(); 0054 void slotDecreaseLightness(); 0055 void slotIncreaseSaturation(); 0056 void slotDecreaseSaturation(); 0057 void slotShiftHueCW(); 0058 void slotShiftHueCCW(); 0059 0060 void slotChannelValuesChanged(); 0061 void slotColorInteraction(bool active); 0062 void slotColorPatchInteraction(bool active); 0063 void slotColorSelected(const KoColor &color); 0064 void slotUpdateDocker(); 0065 Q_SIGNALS: 0066 private: 0067 WGColorSelectorDock *m_docker {0}; 0068 WGSelectorDisplayConfigSP m_displayConfig; 0069 WGColorPreviewToolTip *m_colorTooltip; 0070 KisSignalCompressor *m_colorChangeCompressor; 0071 WGSelectorPopup *m_currentPopup {0}; 0072 WGSelectorPopup *m_colorSelectorPopup {0}; 0073 WGSelectorPopup *m_shadeSelectorPopup {0}; 0074 WGSelectorPopup *m_myPaintSelectorPopup {0}; 0075 WGSelectorPopup *m_colorHistoryPopup {0}; 0076 KisVisualColorSelector *m_colorSelector {0}; 0077 WGShadeSelector *m_shadeSelector {0}; 0078 WGMyPaintShadeSelector *m_myPaintSelector {0}; 0079 KisVisualColorModelSP m_colorModel; 0080 KoColor m_lastUsedColor; 0081 bool m_isSynchronizing {false}; 0082 }; 0083 0084 #endif // WGPOPUPMANAGER_H