Krita Source Code Documentation
Loading...
Searching...
No Matches
WGColorSelectorDock Class Reference

#include <WGColorSelectorDock.h>

+ Inheritance diagram for WGColorSelectorDock:

Public Types

enum  ColorSpaceSource { LayerColorSpace , ImageColorSpace , FixedColorSpace }
 

Public Member Functions

KisUniqueColorSetcolorHistory () const
 
const KisVisualColorModelcolorModel () const
 
KisDisplayColorConverterdisplayColorConverter (bool rawPointer=false) const
 
bool selectingBackground () const
 
void setChannelValues (const QVector4D &values)
 Set new channel values; takes effect immediately!
 
 WGColorSelectorDock ()
 
- Public Member Functions inherited from KisMainwindowObserver
 KisMainwindowObserver ()
 
 ~KisMainwindowObserver () override
 
- Public Member Functions inherited from KoCanvasObserverBase
 KoCanvasObserverBase ()
 
KoCanvasBaseobservedCanvas () const
 
virtual QString observerName ()
 
void setObservedCanvas (KoCanvasBase *canvas)
 
void unsetObservedCanvas ()
 
virtual ~KoCanvasObserverBase ()
 

Protected Member Functions

void disconnectFromCanvas ()
 
void leaveEvent (QEvent *event) override
 
void setCanvas (KoCanvasBase *canvas) override
 
void setViewManager (KisViewManager *viewManager) override
 
void unsetCanvas () override
 
void updateLayout ()
 

Private Slots

void slotCanvasResourceChanged (int key, const QVariant &value)
 
void slotColorInteraction (bool active)
 
void slotColorSelected (const KoColor &color)
 
void slotColorSourceToggled (bool selectingBg)
 
void slotConfigurationChanged ()
 
void slotDisplayConfigurationChanged ()
 
void slotFGColorUsed (const KoColor &color)
 
void slotOpenSettings ()
 
void slotSetNewColors ()
 
void slotShowGamutMaskToolbar (bool show)
 

Private Attributes

WGActionManagerm_actionManager {0}
 
QPointer< KisCanvas2m_canvas
 
KisSignalCompressorm_colorChangeCompressor
 
KisUniqueColorSetm_colorHistory
 
KisVisualColorModelSP m_colorModelBG
 
KisVisualColorModelSP m_colorModelFG
 
WGColorPreviewToolTipm_colorTooltip {0}
 
WGColorPatchesm_commonColors {0}
 
WGCommonColorSetm_commonColorSet {0}
 
QToolButton * m_configButton {0}
 
ColorSpaceSource m_CSSource {LayerColorSpace}
 
const KoColorSpacem_customCS {0}
 
WGSelectorDisplayConfigSP m_displayConfig
 
KisGamutMaskToolbarm_gamutToolbar
 
WGColorPatchesm_history {0}
 
QBoxLayout * m_mainWidgetLayout {0}
 
bool m_pendingBgUpdate {false}
 
bool m_pendingFgUpdate {false}
 
QWidgetAction * m_quickSettingAction {0}
 
WGQuickSettingsWidgetm_quickSettings {0}
 
KisVisualColorSelectorm_selector {0}
 
QBoxLayout * m_selectorAreaLayout {0}
 
WGShadeSelectorm_shadeSelector {0}
 
KisColorSourceTogglem_toggle {0}
 
QBoxLayout * m_verticalElementsLayout {0}
 

Detailed Description

Definition at line 38 of file WGColorSelectorDock.h.

Member Enumeration Documentation

◆ ColorSpaceSource

Enumerator
LayerColorSpace 
ImageColorSpace 
FixedColorSpace 

Definition at line 42 of file WGColorSelectorDock.h.

Constructor & Destructor Documentation

◆ WGColorSelectorDock()

WGColorSelectorDock::WGColorSelectorDock ( )

Definition at line 40 of file WGColorSelectorDock.cpp.

41 : QDockWidget()
47{
48 setWindowTitle(i18n("Wide Gamut Color Selector"));
49
50 QWidget *mainWidget = new QWidget();
51 m_mainWidgetLayout = new QVBoxLayout(mainWidget);
52 m_verticalElementsLayout = new QHBoxLayout();
53 m_selectorAreaLayout = new QBoxLayout(QBoxLayout::TopToBottom);
54
55 m_selector = new KisVisualColorSelector(mainWidget);
57 connect(m_selector, SIGNAL(sigNewColor(KoColor)), SLOT(slotColorSelected(KoColor)));
58 connect(m_selector, SIGNAL(sigInteraction(bool)), SLOT(slotColorInteraction(bool)));
59 connect(m_colorChangeCompressor, SIGNAL(timeout()), SLOT(slotSetNewColors()));
61
62 // Header
63 QWidget *headerWidget = new QWidget(mainWidget);
64 QHBoxLayout *headerLayout = new QHBoxLayout(headerWidget);
65
66 m_toggle = new KisColorSourceToggle(mainWidget);
67 connect(m_toggle, SIGNAL(toggled(bool)), SLOT(slotColorSourceToggled(bool)));
68 headerLayout->addWidget(m_toggle);
70 m_gamutToolbar->setContentsMargins(0, 0, 0, 5);
71 m_gamutToolbar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
72 headerLayout->addWidget(m_gamutToolbar);
73 headerLayout->addStretch();
74 headerLayout->setContentsMargins(0, 0, 0, 0);
75
76 connect(m_selector, SIGNAL(sigGamutMaskSupportChanged(bool)), SLOT(slotShowGamutMaskToolbar(bool)));
77
78 m_configButton = new QToolButton(this);
79 m_configButton->setIcon(KisIconUtils::loadIcon("view-choose"));
80 m_configButton->setAutoRaise(true);
81 m_configButton->setPopupMode(QToolButton::InstantPopup);
82 headerLayout->addWidget(m_configButton);
83
84 m_mainWidgetLayout->addWidget(headerWidget);
87
89
93 connect(m_shadeSelector, SIGNAL(sigColorInteraction(bool)), SLOT(slotColorInteraction(bool)));
94
95 // eventually it should made be a global history, not specific to any plugin
97
100 connect(m_history, SIGNAL(sigColorChanged(KoColor)), SLOT(slotColorSelected(KoColor)));
101 connect(m_history, SIGNAL(sigColorInteraction(bool)), SLOT(slotColorInteraction(bool)));
102
103 // Common Colors (Colors from Image)
105
108 connect(m_commonColors, SIGNAL(sigColorChanged(KoColor)), SLOT(slotColorSelected(KoColor)));
109 connect(m_commonColors, SIGNAL(sigColorInteraction(bool)), SLOT(slotColorInteraction(bool)));
110
111 connect(WGConfig::notifier(), SIGNAL(configChanged()), SLOT(slotConfigurationChanged()));
112
113 setWidget(mainWidget);
115 setEnabled(false);
116}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
The KisVisualColorModel class allows manipulating a KoColor using various color models.
The KisVisualColorSelector class.
KisVisualColorModelSP selectorModel() const
void setPreset(Preset preset)
void slotColorSelected(const KoColor &color)
QBoxLayout * m_selectorAreaLayout
KisGamutMaskToolbar * m_gamutToolbar
void slotShowGamutMaskToolbar(bool show)
void slotColorInteraction(bool active)
WGCommonColorSet * m_commonColorSet
WGShadeSelector * m_shadeSelector
KisVisualColorModelSP m_colorModelBG
KisColorSourceToggle * m_toggle
QBoxLayout * m_mainWidgetLayout
void slotColorSourceToggled(bool selectingBg)
WGColorPatches * m_history
WGActionManager * m_actionManager
KisSignalCompressor * m_colorChangeCompressor
KisVisualColorModelSP m_colorModelFG
KisVisualColorSelector * m_selector
QBoxLayout * m_verticalElementsLayout
WGColorPatches * m_commonColors
KisUniqueColorSet * m_colorHistory
WGSelectorDisplayConfigSP m_displayConfig
WGColorPreviewToolTip * m_colorTooltip
QIcon loadIcon(const QString &name)
WGConfigNotifier * notifier()
Definition WGConfig.cpp:190

References WGColorPatches::CommonColors, connect(), WGColorPatches::History, KisIconUtils::loadIcon(), m_colorChangeCompressor, m_colorHistory, m_colorModelFG, m_commonColors, m_commonColorSet, m_configButton, m_displayConfig, m_gamutToolbar, m_history, m_mainWidgetLayout, m_selector, m_selectorAreaLayout, m_shadeSelector, m_toggle, m_verticalElementsLayout, WGConfig::notifier(), KisVisualColorSelector::selectorModel(), KisVisualColorSelector::setMinimumSliderWidth(), WGColorPatches::setPreset(), slotColorInteraction(), slotColorSelected(), slotColorSourceToggled(), slotConfigurationChanged(), slotSetNewColors(), and slotShowGamutMaskToolbar().

Member Function Documentation

◆ colorHistory()

KisUniqueColorSet * WGColorSelectorDock::colorHistory ( ) const
inline

Definition at line 51 of file WGColorSelectorDock.h.

51{ return m_colorHistory; }

References m_colorHistory.

◆ colorModel()

const KisVisualColorModel & WGColorSelectorDock::colorModel ( ) const

Definition at line 118 of file WGColorSelectorDock.cpp.

119{
120 // currently always return foreground model;
121 // do lazy conversion to current HSX model if required
122 if (selectingBackground() && m_colorModelBG->isHSXModel()) {
123 m_colorModelFG->setRGBColorModel(m_colorModelBG->colorModel());
124 }
125 return *(m_colorModelFG);
126}

References m_colorModelBG, m_colorModelFG, and selectingBackground().

◆ disconnectFromCanvas()

void WGColorSelectorDock::disconnectFromCanvas ( )
protected

Definition at line 227 of file WGColorSelectorDock.cpp.

228{
229 m_canvas->disconnectCanvasObserver(this);
230 m_canvas->displayColorConverter()->displayRendererInterface()->disconnect(this);
231 m_canvas->imageView()->resourceProvider()->disconnect(m_selector);
232 m_canvas = 0;
233}
QPointer< KisCanvas2 > m_canvas

References m_canvas, and m_selector.

◆ displayColorConverter()

KisDisplayColorConverter * WGColorSelectorDock::displayColorConverter ( bool rawPointer = false) const

Definition at line 128 of file WGColorSelectorDock.cpp.

129{
130 KisDisplayColorConverter *converter = nullptr;
131 if (m_canvas) {
132 converter = m_canvas->displayColorConverter();
133 }
134 return (rawPointer || converter) ? converter : KisDisplayColorConverter::dumbConverterInstance();
135}
static KisDisplayColorConverter * dumbConverterInstance()

References KisDisplayColorConverter::dumbConverterInstance(), and m_canvas.

◆ leaveEvent()

void WGColorSelectorDock::leaveEvent ( QEvent * event)
overrideprotected

Definition at line 158 of file WGColorSelectorDock.cpp.

159{
160 Q_UNUSED(event)
161 m_colorTooltip->hide();
162}

References m_colorTooltip.

◆ selectingBackground()

bool WGColorSelectorDock::selectingBackground ( ) const

Definition at line 137 of file WGColorSelectorDock.cpp.

138{
139 return m_toggle->isChecked();
140}

References m_toggle.

◆ setCanvas()

void WGColorSelectorDock::setCanvas ( KoCanvasBase * canvas)
overrideprotectedvirtual

re-implement this method in your canvas observer. It will be called whenever a canvas becomes active. Note that you are responsible for not connecting more than one time to the signals of a canvas or any of the QObjects you can access through the canvas.

Implements KoCanvasObserverBase.

Definition at line 164 of file WGColorSelectorDock.cpp.

165{
166 if (m_canvas.data() == canvas)
167 {
168 // not sure why setCanvas gets called 3 times for new canvas, just skip
169 return;
170 }
171 if (m_canvas) {
173 }
174 m_actionManager->setCanvas(qobject_cast<KisCanvas2*>(canvas), m_canvas);
175 m_canvas = qobject_cast<KisCanvas2*>(canvas);
176 // TODO: unset display converters if canvas is null
177 if (m_canvas) {
178 KoColorDisplayRendererInterface *dri = m_canvas->displayColorConverter()->displayRendererInterface();
179 KisCanvasResourceProvider *resourceProvider = m_canvas->imageView()->resourceProvider();
181 m_displayConfig->setDisplayConverter(m_canvas->displayColorConverter());
183 //m_toggle->setBackgroundColor(dri->toQColor(color));
184 connect(dri, SIGNAL(displayConfigurationChanged()), this, SLOT(slotDisplayConfigurationChanged()));
185 connect(m_canvas->resourceManager(), SIGNAL(canvasResourceChanged(int,QVariant)),
186 this, SLOT(slotCanvasResourceChanged(int,QVariant)));
187 connect(resourceProvider, SIGNAL(sigFGColorUsed(KoColor)),
188 this, SLOT(slotFGColorUsed(KoColor)), Qt::UniqueConnection);
189
190 // Gamut Mask
191 connect(resourceProvider, SIGNAL(sigGamutMaskChanged(KoGamutMaskSP)),
192 m_selector, SLOT(slotGamutMaskChanged(KoGamutMaskSP)), Qt::UniqueConnection);
193
194 connect(resourceProvider, SIGNAL(sigGamutMaskPreviewUpdate()),
195 m_selector, SLOT(slotGamutMaskPreviewUpdate()), Qt::UniqueConnection);
196
197 connect(resourceProvider, SIGNAL(sigGamutMaskUnset()),
198 m_selector, SLOT(slotGamutMaskUnset()), Qt::UniqueConnection);
199
200 connect(resourceProvider, SIGNAL(sigGamutMaskDeactivated()),
201 m_selector, SLOT(slotGamutMaskUnset()), Qt::UniqueConnection);
202
203 m_gamutToolbar->connectMaskSignals(resourceProvider);
204
205 // quirk note: displayConfigurationChanged signal gets sent *before* the new canvas gets
206 // passed, through the display converter of the now inactive canvas! So we need to repeat...
208 }
209 setEnabled(canvas != 0);
210}
void connectMaskSignals(KisCanvasResourceProvider *resourceProvider)
void setDisplayRenderer(const KoColorDisplayRendererInterface *displayRenderer) override
void setCanvas(KisCanvas2 *canvas, KisCanvas2 *oldCanvas)
void slotFGColorUsed(const KoColor &color)
void slotCanvasResourceChanged(int key, const QVariant &value)
void setImage(KisImageSP image)

References connect(), KisGamutMaskToolbar::connectMaskSignals(), disconnectFromCanvas(), m_actionManager, m_canvas, m_commonColorSet, m_displayConfig, m_gamutToolbar, m_selector, WGActionManager::setCanvas(), KisVisualColorSelector::setDisplayRenderer(), WGCommonColorSet::setImage(), slotCanvasResourceChanged(), slotDisplayConfigurationChanged(), and slotFGColorUsed().

◆ setChannelValues()

void WGColorSelectorDock::setChannelValues ( const QVector4D & values)

Set new channel values; takes effect immediately!

This is intended for synchronization when color gets adjusted outside of the docker, like in WGActionManager

Parameters
values

Definition at line 142 of file WGColorSelectorDock.cpp.

143{
144 // currently always set foreground color
145 if (!m_canvas) {
146 return;
147 }
148
149 // This could be nicer...if setting active model, this triggers slotColorSelected()
150 // and leaves timer running with NOP, otherwise the resource update is detected as
151 // external event and updates UI.
152 m_colorModelFG->slotSetChannelValues(values);
153
154 m_canvas->resourceManager()->setForegroundColor(m_colorModelFG->currentColor());
155 m_pendingFgUpdate = false;
156}

References m_canvas, m_colorModelFG, and m_pendingFgUpdate.

◆ setViewManager()

void WGColorSelectorDock::setViewManager ( KisViewManager * viewManager)
overrideprotectedvirtual

Implements KisMainwindowObserver.

Definition at line 222 of file WGColorSelectorDock.cpp.

223{
224 m_actionManager->registerActions(viewManager);
225}
void registerActions(KisViewManager *viewManager)

References m_actionManager, and WGActionManager::registerActions().

◆ slotCanvasResourceChanged

void WGColorSelectorDock::slotCanvasResourceChanged ( int key,
const QVariant & value )
privateslot

Definition at line 453 of file WGColorSelectorDock.cpp.

454{
455 switch (key) {
457 if (!m_pendingFgUpdate) {
458 KoColor color = value.value<KoColor>();
460 m_colorModelFG->slotSetColor(color);
461 }
462 break;
464 if (!m_pendingBgUpdate) {
465 KoColor color = value.value<KoColor>();
467 m_colorModelBG->slotSetColor(color);
468 }
469 default:
470 break;
471 }
472}
float value(const T *src, size_t ch)
void setBackgroundColor(const QColor &color)
void setForegroundColor(const QColor &color)
QColor toQColor(const KoColor &c, bool proofToPaintColors=false) const
KisDisplayColorConverter * displayColorConverter(bool rawPointer=false) const
@ BackgroundColor
The active background color selected for this canvas.
@ ForegroundColor
The active foreground color selected for this canvas.

References KoCanvasResource::BackgroundColor, displayColorConverter(), KoCanvasResource::ForegroundColor, m_colorModelBG, m_colorModelFG, m_pendingBgUpdate, m_pendingFgUpdate, m_toggle, KisColorSourceToggle::setBackgroundColor(), KisColorSourceToggle::setForegroundColor(), KisDisplayColorConverter::toQColor(), and value().

◆ slotColorInteraction

void WGColorSelectorDock::slotColorInteraction ( bool active)
privateslot

Definition at line 418 of file WGColorSelectorDock.cpp.

419{
420 if (active) {
421 QColor baseCol = m_displayConfig->displayConverter()->toQColor(m_selector->getCurrentColor());
424 if (sender() == m_shadeSelector) {
426 } else {
427 m_colorTooltip->show(this);
428 }
429 }
430}
KoColor getCurrentColor() const override
void show(const QWidget *focus=nullptr)
void setCurrentColor(const QColor &color)
void setPreviousColor(const QColor &color)

References KisVisualColorSelector::getCurrentColor(), m_colorTooltip, m_displayConfig, m_selector, m_shadeSelector, WGColorPreviewToolTip::setCurrentColor(), WGColorPreviewToolTip::setPreviousColor(), and WGColorPreviewToolTip::show().

◆ slotColorSelected

◆ slotColorSourceToggled

void WGColorSelectorDock::slotColorSourceToggled ( bool selectingBg)
privateslot

Definition at line 396 of file WGColorSelectorDock.cpp.

397{
398 if (selectingBg) {
399 if (m_colorModelFG->isHSXModel()) {
400 m_colorModelBG->setRGBColorModel(m_colorModelFG->colorModel());
401 }
404 }
405 else {
406 if (m_colorModelBG->isHSXModel()) {
407 m_colorModelFG->setRGBColorModel(m_colorModelBG->colorModel());
408 }
411 }
412 // currently, only the color space of the active model is updated, so it may be outdated
413 if (m_canvas) {
415 }
416}
void setSelectorModel(KisVisualColorModelSP model)
void setModel(KisVisualColorModelSP colorModel) override

References m_canvas, m_colorModelBG, m_colorModelFG, m_selector, m_shadeSelector, WGShadeSelector::setModel(), KisVisualColorSelector::setSelectorModel(), and slotDisplayConfigurationChanged().

◆ slotConfigurationChanged

void WGColorSelectorDock::slotConfigurationChanged ( )
privateslot

Definition at line 286 of file WGColorSelectorDock.cpp.

287{
290 m_selector->selectorModel()->setRGBColorModel(cfg.get(WGConfig::rgbColorModel));
291 KisColorSelectorConfiguration selectorCfg = cfg.colorSelectorConfiguration();
292 m_selector->setConfiguration(&selectorCfg);
295 m_customCS = cfg.customSelectionColorSpace();
296 }
297 bool proofColors = cfg.get(WGConfig::proofToPaintingColors);
298 m_selector->setProofColors(proofColors);
299 m_displayConfig->setPreviewInPaintingCS(proofColors);
304 // Quick settings menu
305 if (cfg.get(WGConfig::quickSettingsEnabled)) {
306 if (!m_configButton->menu()) {
307 m_configButton->disconnect(this);
308 QMenu *configureMenu = new QMenu(this);
310 // prevents hover indicator being stuck on other menu entries
311 m_quickSettings->setMouseTracking(true);
312 m_quickSettingAction = new QWidgetAction(this);
313 m_quickSettingAction->setDefaultWidget(m_quickSettings);
314
315 configureMenu->addAction(m_quickSettingAction);
316 QAction *cfgAction = configureMenu->addAction(i18nc("Wide Gamut Color Selector", "Configure..."));
317 connect(cfgAction, SIGNAL(triggered(bool)), SLOT(slotOpenSettings()));
318 m_configButton->setMenu(configureMenu);
319 } else {
320 // WORKAROUND: force geometry update by re-adding action, all other attempts failed...
321 QMenu *menu = m_configButton->menu();
322 menu->removeAction(m_quickSettingAction);
323 menu->insertAction(menu->actions().constFirst(), m_quickSettingAction);
324 }
326 } else {
327 if (m_configButton->menu()) {
328 m_configButton->menu()->deleteLater();
329 m_configButton->setMenu(0);
332 m_quickSettings = 0;
333 }
334 connect(m_configButton, SIGNAL(clicked(bool)), SLOT(slotOpenSettings()), Qt::UniqueConnection);
335 }
336
337 updateLayout();
338
339 if (m_canvas) {
341 }
342}
void setRenderMode(RenderMode mode)
void setConfiguration(const KisColorSelectorConfiguration *config)
Explicitly set the shape configuration. Accepts all valid combinations of Advanced Color Selector,...
void updateSettings() override
const KoColorSpace * m_customCS
WGQuickSettingsWidget * m_quickSettings
QWidgetAction * m_quickSettingAction
ColorSpaceSource m_CSSource
void setAutoUpdate(bool enabled)
void updateSettings() override
const NumericSetting< KisVisualColorSelector::RenderMode > selectorRenderMode
Definition WGConfig.cpp:255
const NumericSetting< WGColorSelectorDock::ColorSpaceSource > colorSpaceSource
const NumericSetting< KisVisualColorModel::ColorModel > rgbColorModel
Definition WGConfig.cpp:252
class WGConfig Accessor
const GenericSetting< bool > proofToPaintingColors
Definition WGConfig.cpp:237
const GenericSetting< bool > quickSettingsEnabled
Definition WGConfig.cpp:243
const GenericSetting< bool > commonColorsAutoUpdate
Definition WGConfig.cpp:241

References WGConfig::colorSpaceSource, WGConfig::commonColorsAutoUpdate, connect(), FixedColorSpace, WGQuickSettingsWidget::loadConfiguration(), m_canvas, m_commonColors, m_commonColorSet, m_configButton, m_CSSource, m_customCS, m_displayConfig, m_history, m_quickSettingAction, m_quickSettings, m_selector, m_shadeSelector, WGConfig::proofToPaintingColors, WGConfig::quickSettingsEnabled, WGConfig::rgbColorModel, KisVisualColorSelector::selectorModel(), WGConfig::selectorRenderMode, WGCommonColorSet::setAutoUpdate(), KisVisualColorSelector::setConfiguration(), KisVisualColorSelector::setProofColors(), KisVisualColorSelector::setRenderMode(), slotDisplayConfigurationChanged(), slotOpenSettings(), updateLayout(), WGColorPatches::updateSettings(), and WGShadeSelector::updateSettings().

◆ slotDisplayConfigurationChanged

void WGColorSelectorDock::slotDisplayConfigurationChanged ( )
privateslot

Definition at line 344 of file WGColorSelectorDock.cpp.

345{
346 if (!m_canvas) {
347 return;
348 }
349
350 const KoColorSpace *selectionCS = nullptr;
351
352 // Note: displayConfigurationChanged is also emitted on image color space changes,
353 // so there's no need to handle extra signals, although it's a bit convoluted
355 selectionCS = m_canvas->image()->colorSpace();
356 } else if (m_CSSource == FixedColorSpace) {
357 selectionCS = m_customCS;
358 } else {
359 selectionCS = m_canvas->displayColorConverter()->nodeColorSpace();
360 }
361
362 // TODO: use m_viewManager->canvasResourceProvider()->fgColor();
363 KoColor fgColor = m_canvas->resourceManager()->foregroundColor();
364 KoColor bgColor = m_canvas->resourceManager()->backgroundColor();
365
366 bool proof = m_displayConfig->previewInPaintingCS();
367 m_toggle->setForegroundColor(displayColorConverter()->toQColor(fgColor, proof));
368 m_toggle->setBackgroundColor(displayColorConverter()->toQColor(bgColor, proof));
370
371 if (selectionCS && selectionCS != activeModel->colorSpace()) {
372 activeModel->slotSetColorSpace(selectionCS);
373 activeModel->slotSetColor(activeModel == m_colorModelFG ? fgColor : bgColor);
374 }
375}

References displayColorConverter(), FixedColorSpace, ImageColorSpace, m_canvas, m_colorModelFG, m_CSSource, m_customCS, m_displayConfig, m_selector, m_toggle, KisVisualColorSelector::selectorModel(), KisColorSourceToggle::setBackgroundColor(), and KisColorSourceToggle::setForegroundColor().

◆ slotFGColorUsed

void WGColorSelectorDock::slotFGColorUsed ( const KoColor & color)
privateslot

Definition at line 432 of file WGColorSelectorDock.cpp.

433{
434 QColor lastCol = m_displayConfig->displayConverter()->toQColor(color);
437 m_colorHistory->addColor(color);
438}
void addColor(const KoColor &color)
void setLastUsedColor(const KoColor &col)
void setLastUsedColor(const QColor &color)

References KisUniqueColorSet::addColor(), m_actionManager, m_colorHistory, m_colorTooltip, m_displayConfig, WGActionManager::setLastUsedColor(), and WGColorPreviewToolTip::setLastUsedColor().

◆ slotOpenSettings

void WGColorSelectorDock::slotOpenSettings ( )
privateslot

Definition at line 474 of file WGColorSelectorDock.cpp.

475{
476 if (!m_canvas) return;
477
479 if (settings.exec() == QDialog::Accepted) {
480 //WGConfig::notifier()->notifyConfigChanged();
481 }
482}

References m_canvas.

◆ slotSetNewColors

void WGColorSelectorDock::slotSetNewColors ( )
privateslot

Definition at line 440 of file WGColorSelectorDock.cpp.

441{
442 //KIS_SAFE_ASSERT_RECOVER_RETURN(m_pendingFgUpdate || m_pendingBgUpdate);
443 if (m_pendingFgUpdate) {
444 m_canvas->resourceManager()->setForegroundColor(m_colorModelFG->currentColor());
445 m_pendingFgUpdate = false;
446 }
447 if (m_pendingBgUpdate) {
448 m_canvas->resourceManager()->setBackgroundColor(m_colorModelBG->currentColor());
449 m_pendingBgUpdate = false;
450 }
451}

References m_canvas, m_colorModelBG, m_colorModelFG, m_pendingBgUpdate, and m_pendingFgUpdate.

◆ slotShowGamutMaskToolbar

void WGColorSelectorDock::slotShowGamutMaskToolbar ( bool show)
privateslot

Definition at line 484 of file WGColorSelectorDock.cpp.

485{
486 m_gamutToolbar->setVisible(show);
487}

References m_gamutToolbar.

◆ unsetCanvas()

void WGColorSelectorDock::unsetCanvas ( )
overrideprotectedvirtual

Re-implement to notify the observer that its canvas is no longer among the living. The daisies, it is pushing up. This means you don't have to disconnect, it's dead.

The old canvas should be deleted already, so if you stored a pointer to it, don't touch!

Note that currently there is a bug where in certain specific circumstances unsetCanvas can be called when it shouldn't, see for example KWStatisticsDocker for a workaround for this problem.

Implements KoCanvasObserverBase.

Definition at line 212 of file WGColorSelectorDock.cpp.

213{
214 setEnabled(false);
216 m_displayConfig->setDisplayConverter(0);
219 m_canvas = 0;
220}
KisSharedPtr< KisImage > KisImageSP
Definition kis_types.h:69

References m_actionManager, m_canvas, m_commonColorSet, m_displayConfig, m_selector, WGActionManager::setCanvas(), KisVisualColorSelector::setDisplayRenderer(), and WGCommonColorSet::setImage().

◆ updateLayout()

void WGColorSelectorDock::updateLayout ( )
protected

Definition at line 235 of file WGColorSelectorDock.cpp.

236{
238
239 bool historyEnabled = cfg.get(WGConfig::colorHistoryEnabled);
240 Qt::Orientation historyOrientation = cfg.get(WGConfig::colorHistory.orientation);
241
242 m_verticalElementsLayout->removeWidget(m_history);
244 m_mainWidgetLayout->removeWidget(m_history);
245 m_mainWidgetLayout->removeWidget(m_commonColors);
246
247 if (historyEnabled) {
248 if (historyOrientation == Qt::Vertical) {
250 }
251 else {
252 m_mainWidgetLayout->addWidget(m_history);
253 }
254 m_history->show();
255 }
256 else {
257 m_history->hide();
258 }
259
261 Qt::Orientation commonColorsOrientation = cfg.get(WGConfig::commonColors.orientation);
262
263 if (commonColorsEnabled) {
264 if (commonColorsOrientation == Qt::Vertical) {
266 }
267 else {
269 }
270 m_commonColors->show();
271 }
272 else {
273 m_commonColors->hide();
274 }
275
276 bool shadeSelectorEnabled = cfg.get(WGConfig::minimalShadeSelectorEnabled);
277 if (shadeSelectorEnabled) {
278 m_shadeSelector->show();
279 }
280 else {
281 m_shadeSelector->hide();
282 }
283
284}
const GenericSetting< bool > colorHistoryEnabled
Definition WGConfig.cpp:238
const ColorPatches commonColors
Definition WGConfig.cpp:221
const GenericSetting< bool > minimalShadeSelectorEnabled
Definition WGConfig.cpp:246
const GenericSetting< bool > commonColorsEnabled
Definition WGConfig.cpp:239
const ColorPatches colorHistory
Definition WGConfig.cpp:213

References WGConfig::colorHistory, WGConfig::colorHistoryEnabled, WGConfig::commonColors, WGConfig::commonColorsEnabled, m_commonColors, m_history, m_mainWidgetLayout, m_shadeSelector, m_verticalElementsLayout, and WGConfig::minimalShadeSelectorEnabled.

Member Data Documentation

◆ m_actionManager

WGActionManager* WGColorSelectorDock::m_actionManager {0}
private

Definition at line 96 of file WGColorSelectorDock.h.

96{0};

◆ m_canvas

QPointer<KisCanvas2> WGColorSelectorDock::m_canvas
private

Definition at line 83 of file WGColorSelectorDock.h.

◆ m_colorChangeCompressor

KisSignalCompressor* WGColorSelectorDock::m_colorChangeCompressor
private

Definition at line 92 of file WGColorSelectorDock.h.

◆ m_colorHistory

KisUniqueColorSet* WGColorSelectorDock::m_colorHistory
private

Definition at line 93 of file WGColorSelectorDock.h.

◆ m_colorModelBG

KisVisualColorModelSP WGColorSelectorDock::m_colorModelBG
private

Definition at line 105 of file WGColorSelectorDock.h.

◆ m_colorModelFG

KisVisualColorModelSP WGColorSelectorDock::m_colorModelFG
private

Definition at line 104 of file WGColorSelectorDock.h.

◆ m_colorTooltip

WGColorPreviewToolTip* WGColorSelectorDock::m_colorTooltip {0}
private

Definition at line 97 of file WGColorSelectorDock.h.

97{0};

◆ m_commonColors

WGColorPatches* WGColorSelectorDock::m_commonColors {0}
private

Definition at line 100 of file WGColorSelectorDock.h.

100{0};

◆ m_commonColorSet

WGCommonColorSet* WGColorSelectorDock::m_commonColorSet {0}
private

Definition at line 95 of file WGColorSelectorDock.h.

95{0};

◆ m_configButton

QToolButton* WGColorSelectorDock::m_configButton {0}
private

Definition at line 103 of file WGColorSelectorDock.h.

103{0};

◆ m_CSSource

ColorSpaceSource WGColorSelectorDock::m_CSSource {LayerColorSpace}
private

Definition at line 107 of file WGColorSelectorDock.h.

◆ m_customCS

const KoColorSpace* WGColorSelectorDock::m_customCS {0}
private

Definition at line 106 of file WGColorSelectorDock.h.

106{0};

◆ m_displayConfig

WGSelectorDisplayConfigSP WGColorSelectorDock::m_displayConfig
private

Definition at line 84 of file WGColorSelectorDock.h.

◆ m_gamutToolbar

KisGamutMaskToolbar* WGColorSelectorDock::m_gamutToolbar
private

Definition at line 94 of file WGColorSelectorDock.h.

◆ m_history

WGColorPatches* WGColorSelectorDock::m_history {0}
private

Definition at line 99 of file WGColorSelectorDock.h.

99{0};

◆ m_mainWidgetLayout

QBoxLayout* WGColorSelectorDock::m_mainWidgetLayout {0}
private

Definition at line 86 of file WGColorSelectorDock.h.

86{0};

◆ m_pendingBgUpdate

bool WGColorSelectorDock::m_pendingBgUpdate {false}
private

Definition at line 109 of file WGColorSelectorDock.h.

109{false};

◆ m_pendingFgUpdate

bool WGColorSelectorDock::m_pendingFgUpdate {false}
private

Definition at line 108 of file WGColorSelectorDock.h.

108{false};

◆ m_quickSettingAction

QWidgetAction* WGColorSelectorDock::m_quickSettingAction {0}
private

Definition at line 101 of file WGColorSelectorDock.h.

101{0};

◆ m_quickSettings

WGQuickSettingsWidget* WGColorSelectorDock::m_quickSettings {0}
private

Definition at line 102 of file WGColorSelectorDock.h.

102{0};

◆ m_selector

KisVisualColorSelector* WGColorSelectorDock::m_selector {0}
private

Definition at line 90 of file WGColorSelectorDock.h.

90{0};

◆ m_selectorAreaLayout

QBoxLayout* WGColorSelectorDock::m_selectorAreaLayout {0}
private

Definition at line 87 of file WGColorSelectorDock.h.

87{0};

◆ m_shadeSelector

WGShadeSelector* WGColorSelectorDock::m_shadeSelector {0}
private

Definition at line 98 of file WGColorSelectorDock.h.

98{0};

◆ m_toggle

KisColorSourceToggle* WGColorSelectorDock::m_toggle {0}
private

Definition at line 91 of file WGColorSelectorDock.h.

91{0};

◆ m_verticalElementsLayout

QBoxLayout* WGColorSelectorDock::m_verticalElementsLayout {0}
private

Definition at line 88 of file WGColorSelectorDock.h.

88{0};

The documentation for this class was generated from the following files: