Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_color_history.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Adam Celarek <kdedev at xibo dot at>
3 * SPDX-FileCopyrightText: 2022 Bourumir Wyngs <bourumir.wyngs@gmail.com>
4 *
5 * SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7
8#include "kis_color_history.h"
9#include "kis_canvas2.h"
10#include "KisViewManager.h"
12
14
15#include <QToolButton>
16#include <QList>
17#include <kis_icon.h>
18#include "KisDocument.h"
19#include "kis_config_notifier.h"
20
21Q_GLOBAL_STATIC(KisColorHistoryNotifier, s_color_history_change_notifier);
22
24 : KisColorPatches("lastUsedColors", parent)
25 , m_document(0)
26 , m_resourceProvider(0)
27{
28 m_clearButton = new QToolButton(this);
29 m_clearButton->setIcon(KisIconUtils::loadIcon("dialog-cancel-16"));
30 m_clearButton->setToolTip(i18n("Clear all color history"));
31 m_clearButton->setAutoRaise(true);
33
34 connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clearColorHistory()));
35 connect(KisConfigNotifier::instance(), SIGNAL(colorHistoryModeChanged()), this, SLOT(updateUserSettings()));
36 connect(s_color_history_change_notifier, SIGNAL(colorHistoryChanged(const QList<KoColor>&)),
37 this, SLOT(colorHistoryChanged(const QList<KoColor>&)));
38
40}
41
49
51{
52 if (!canvas) return;
53
55
57 m_resourceProvider->disconnect(this);
58 }
59
60 m_resourceProvider = canvas->imageView()->resourceProvider();
61 m_document = canvas->viewManager()->document();
62
64
65 connect(m_resourceProvider, SIGNAL(sigFGColorUsed(KoColor)),
66 this, SLOT(addColorToHistory(KoColor)), Qt::UniqueConnection);
67}
68
70{
72 ret->setCanvas(m_canvas);
73 ret->setColors(colors());
74 return ret;
75}
76
78{
79 // don't add color in erase mode. See https://bugs.kde.org/show_bug.cgi?id=298940
81
83
85 s_color_history_change_notifier->notifyColorHistoryChanged(colors());
86}
87
89{
90 QList<KoColor> empty;
91 updateColorHistory(empty);
92 s_color_history_change_notifier->notifyColorHistoryChanged(empty);
93}
94
96{
98 return m_document->colorHistory();
99 } else if (m_resourceProvider) {
101 } else {
102 return QList<KoColor>();
103 }
104}
105
107{
109 m_document->setColorHistory(history);
110 }
111
116 if (m_resourceProvider) {
118 }
119
120 setColors(history);
121}
122
124{
125
126 KisConfig config(true);
128 updateColorHistory(colorHistory()); // Show with respect to the current strategy
129}
130
132{
133 KIS_SAFE_ASSERT_RECOVER_RETURN(sender() != this);
134
135 if (m_resourceProvider) {
137 }
138 setColors(history);
139}
140
const QString COMPOSITE_ERASE
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisViewManager * viewManager() const
QPointer< KisView > imageView() const
void setColorHistory(const QList< KoColor > &colors)
void colorHistoryChanged(const QList< KoColor > &history)
void notifyColorHistoryChanged(const QList< KoColor > &history)
QToolButton * m_clearButton
KisColorHistory(QWidget *parent=0)
KisDocument * m_document
KisColorSelectorBase * createPopup() const override
QList< KoColor > colorHistory()
void updateColorHistory(const QList< KoColor > &history)
void addColorToHistory(const KoColor &color)
void setCanvas(KisCanvas2 *canvas) override
void unsetCanvas() override
void colorHistoryChanged(const QList< KoColor > &history)
KisCanvasResourceProvider * m_resourceProvider
void setCanvas(KisCanvas2 *canvas) override
QList< KoColor > colors() const
void setAdditionalButtons(QList< QWidget * > buttonList)
void addColorPatch(const KoColor &color)
void unsetCanvas() override
void setColors(const QList< KoColor > &colors)
Base class for all color selectors, that should support color management and zooming.
QPointer< KisCanvas2 > m_canvas
static KisConfigNotifier * instance()
bool colorHistoryPerDocument(bool defaultValue=false) const
QList< KoColor > colorHistory
void setColorHistory(const QList< KoColor > &colors)
KisDocument * document() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
Q_GLOBAL_STATIC(KisColorHistoryNotifier, s_color_history_change_notifier)
QIcon loadIcon(const QString &name)