Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_color_selector_container.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Adam Celarek <kdedev at xibo dot at>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
12
13#include <QVBoxLayout>
14#include <QHBoxLayout>
15#include <QAction>
16
17#include <kconfig.h>
18#include <kconfiggroup.h>
19#include <ksharedconfig.h>
20
21#include <kactioncollection.h>
22
23#include <KisDocument.h>
24#include <KisGamutMaskToolbar.h>
25#include "KisViewManager.h"
26#include "kis_canvas2.h"
28#include "kis_node_manager.h"
29#include "kis_node.h"
30#include "kis_paint_device.h"
31
32#include "kis_action_registry.h"
33
35 QWidget(parent),
36 m_colorSelector(new KisColorSelector(this)),
37 m_myPaintShadeSelector(new KisMyPaintShadeSelector(this)),
38 m_minimalShadeSelector(new KisMinimalShadeSelector(this)),
39 m_shadeSelector(m_myPaintShadeSelector),
40 m_gamutMaskToolbar(new KisGamutMaskToolbar(this)),
41 m_showColorSelector(true),
42 m_canvas(0)
43{
44 m_widgetLayout = new QBoxLayout(QBoxLayout::TopToBottom, this);
45 m_widgetLayout->setSpacing(0);
46 m_widgetLayout->setContentsMargins(0, 0, 0, 0);
47
48 m_gamutMaskToolbar->setContentsMargins(0, 0, 0, 5);
49 m_gamutMaskToolbar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
50 m_colorSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
51 m_myPaintShadeSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
52 m_minimalShadeSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
53
58
59 m_gamutMaskToolbar->hide();
62
63 connect(m_colorSelector,SIGNAL(settingsButtonClicked()), SIGNAL(openSettings()));
64
65 connect(this, SIGNAL(settingsChanged()), m_colorSelector, SLOT(updateSettings()));
67 connect(this, SIGNAL(settingsChanged()), this, SLOT(updateSettings()));
69
70
71 m_colorSelAction = KisActionRegistry::instance()->makeQAction("show_color_selector", this);
72 connect(m_colorSelAction, SIGNAL(triggered()), m_colorSelector, SLOT(showPopup()), Qt::UniqueConnection);
73
74 m_mypaintAction = KisActionRegistry::instance()->makeQAction("show_mypaint_shade_selector", this);
75 connect(m_mypaintAction, SIGNAL(triggered()), m_myPaintShadeSelector, SLOT(showPopup()), Qt::UniqueConnection);
76
77 m_minimalAction = KisActionRegistry::instance()->makeQAction("show_minimal_shade_selector", this);
78 connect(m_minimalAction, SIGNAL(triggered()), m_minimalShadeSelector, SLOT(showPopup()), Qt::UniqueConnection);
79
80}
81
91
93{
94 return m_canvas &&
95 m_canvas->viewManager() &&
96 m_canvas->viewManager()->document() &&
97 m_canvas->viewManager()->document()->image();
98}
99
107
109{
110 if (m_canvas) {
111 m_canvas->disconnectCanvasObserver(this);
112 m_canvas->viewManager()->nodeManager()->disconnect(this);
113 KisKActionCollection *ac = m_canvas->viewManager()->actionCollection();
114 ac->takeAction(ac->action("show_color_selector"));
115 ac->takeAction(ac->action("show_mypaint_shade_selector"));
116 ac->takeAction(ac->action("show_minimal_shade_selector"));
117 }
118
119 m_canvas = canvas;
120
121 m_colorSelector->setCanvas(canvas);
124
125
127
128
129 if (m_canvas && m_canvas->viewManager()) {
130
131 connect(m_canvas->viewManager()->canvasResourceProvider(), SIGNAL(sigGamutMaskChanged(KoGamutMaskSP)),
132 m_colorSelector, SLOT(slotGamutMaskSet(KoGamutMaskSP)), Qt::UniqueConnection);
133
134 connect(m_canvas->viewManager()->canvasResourceProvider(), SIGNAL(sigGamutMaskUnset()),
135 m_colorSelector, SLOT(slotGamutMaskUnset()), Qt::UniqueConnection);
136
137 connect(m_canvas->viewManager()->canvasResourceProvider(), SIGNAL(sigGamutMaskPreviewUpdate()),
138 m_colorSelector, SLOT(slotGamutMaskPreviewUpdate()), Qt::UniqueConnection);
139
140 connect(m_canvas->viewManager()->canvasResourceProvider(), SIGNAL(sigGamutMaskDeactivated()),
141 m_colorSelector, SLOT(slotGamutMaskDeactivate()), Qt::UniqueConnection);
142
143 m_gamutMaskToolbar->connectMaskSignals(m_canvas->viewManager()->canvasResourceProvider());
144
145 KisKActionCollection* actionCollection = canvas->viewManager()->actionCollection();
146 actionCollection->addAction("show_color_selector", m_colorSelAction);
147 actionCollection->addAction("show_mypaint_shade_selector", m_mypaintAction);
148 actionCollection->addAction("show_minimal_shade_selector", m_minimalAction);
149 }
150}
151
153{
154 KConfigGroup cfg = KSharedConfig::openConfig()->group("advancedColorSelector");
155 m_onDockerResizeSetting = (int)cfg.readEntry("onDockerResize", 0);
156 m_showColorSelector = (bool) cfg.readEntry("showColorSelector", true);
157
159 m_colorSelector->show();
160
162 m_gamutMaskToolbar->show();
163 } else {
164 m_gamutMaskToolbar->hide();
165 }
166 } else {
167 m_colorSelector->hide();
168 m_gamutMaskToolbar->hide();
169 }
170
171 QString type = cfg.readEntry("shadeSelectorType", "Minimal");
172
173 QWidget* newShadeSelector;
174 if(type=="MyPaint")
175 newShadeSelector = m_myPaintShadeSelector;
176 else if (type=="Minimal")
177 newShadeSelector = m_minimalShadeSelector;
178 else
179 newShadeSelector = 0;
180
181
182
183 if(m_shadeSelector!=newShadeSelector && m_shadeSelector!=0) {
184 m_shadeSelector->hide();
185 }
186 m_shadeSelector=newShadeSelector;
187
188 if(m_shadeSelector!=0)
189 m_shadeSelector->show();
190}
191
192
194{
195 if(m_shadeSelector!=0) {
196 int minimumHeightForBothWidgets = m_colorSelector->minimumHeight()+m_shadeSelector->minimumHeight()+30; //+30 for the buttons (temporarily)
197
198 if(height()<minimumHeightForBothWidgets && m_onDockerResizeSetting== 1) { // 1 option is hide shade selector
199 m_shadeSelector->hide();
200 }
201 else {
202 m_shadeSelector->show();
203 }
204
205 // m_onDockerResizeSetting==0 is allow horizontal layout
206 if(height() < width() && m_onDockerResizeSetting==0 && m_shadeSelector!=m_minimalShadeSelector) {
207 m_widgetLayout->setDirection(QBoxLayout::LeftToRight);
208 }
209 else {
210 m_widgetLayout->setDirection(QBoxLayout::TopToBottom);
211 }
212 }
213
214 QWidget::resizeEvent(e);
215}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QAction * makeQAction(const QString &name, QObject *parent=0)
static KisActionRegistry * instance()
KisViewManager * viewManager() const
virtual void setCanvas(KisCanvas2 *canvas)
KisMinimalShadeSelector * m_minimalShadeSelector
void resizeEvent(QResizeEvent *) override
KisMyPaintShadeSelector * m_myPaintShadeSelector
void updateSettings() override
void hasAtLeastOneDocument(bool value)
KisColorSelectorConfiguration configuration() const
void updateIcons()
update icons when a theme update happens
void connectMaskSignals(KisCanvasResourceProvider *resourceProvider)
A container for a set of QAction objects.
QAction * takeAction(QAction *action)
Q_INVOKABLE QAction * addAction(const QString &name, QAction *action)
QAction * action(int index) const
void setCanvas(KisCanvas2 *canvas) override
virtual KisKActionCollection * actionCollection() const