Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_shade_selector_line_combo_box_popup.cpp
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2010 Adam Celarek <kdedev at xibo dot at>
3
* SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com>
4
*
5
* SPDX-License-Identifier: GPL-2.0-or-later
6
*/
7
8
#include "
kis_shade_selector_line_combo_box.h
"
9
#include "
kis_shade_selector_line_combo_box_popup.h
"
10
11
#include <QVBoxLayout>
12
#include <QMouseEvent>
13
#include <QPainter>
14
#include <QApplication>
15
#include <kconfig.h>
16
#include <ksharedconfig.h>
17
#include <kconfiggroup.h>
18
19
#include "
kis_global.h
"
20
#include "
kis_shade_selector_line.h
"
21
#include "
kis_shade_selector_line_editor.h
"
22
#include "
kis_color_selector_base_proxy.h
"
23
24
25
KisShadeSelectorLineComboBoxPopup::KisShadeSelectorLineComboBoxPopup
(QWidget* parent)
26
: QWidget(parent, Qt::Popup),
27
spacing(10),
28
m_lastHighlightedItem(0),
29
m_lastSelectedItem(0),
30
m_lineEditor(0),
31
m_parentProxy(new
KisColorSelectorBaseProxyNoop
())
32
{
33
setMouseTracking(
true
);
34
35
QVBoxLayout* layout =
new
QVBoxLayout(
this
);
36
layout->setSpacing(
spacing
);
37
38
layout->addWidget(
new
KisShadeSelectorLine
(1.0, 0.0, 0.0,
m_parentProxy
.data(),
this
));
39
layout->addWidget(
new
KisShadeSelectorLine
(0.1, 0.0, 0.0,
m_parentProxy
.data(),
this
));
40
layout->addWidget(
new
KisShadeSelectorLine
(0.2, 0.0, 0.0,
m_parentProxy
.data(),
this
));
41
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 0.5, 0.0,
m_parentProxy
.data(),
this
));
42
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 1.0, 0.0,
m_parentProxy
.data(),
this
));
43
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 0.0, 0.5,
m_parentProxy
.data(),
this
));
44
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 0.0, 1.0,
m_parentProxy
.data(),
this
));
45
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 0.5, 0.5,
m_parentProxy
.data(),
this
));
46
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 1.0, 1.0,
m_parentProxy
.data(),
this
));
47
layout->addWidget(
new
KisShadeSelectorLine
(0.0, -0.5, 0.5,
m_parentProxy
.data(),
this
));
48
layout->addWidget(
new
KisShadeSelectorLine
(0.0, -1.0, 1.0,
m_parentProxy
.data(),
this
));
49
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 0.5, 0.5,
m_parentProxy
.data(),
this
, -0.04));
50
layout->addWidget(
new
KisShadeSelectorLine
(0.0, 0.5, 0.5,
m_parentProxy
.data(),
this
, +0.04));
51
layout->addWidget(
new
KisShadeSelectorLine
(0.0, -0.5, 0.5,
m_parentProxy
.data(),
this
, -0.04));
52
53
KisShadeSelectorLine
* preview =
new
KisShadeSelectorLine
(0.0, -0.5, 0.5,
m_parentProxy
.data(),
this
, +0.04);
54
m_lineEditor
=
new
KisShadeSelectorLineEditor
(
this
, preview);
55
layout->addWidget(preview);
56
layout->addWidget(
m_lineEditor
);
57
58
connect
(
m_lineEditor
, SIGNAL(requestActivateLine(QWidget*)), SLOT(
activateItem
(QWidget*)));
59
60
for
(
int
i=0; i<this->layout()->count(); i++) {
61
KisShadeSelectorLine
* item =
dynamic_cast<
KisShadeSelectorLine
*
>
(this->layout()->itemAt(i)->widget());
62
if
(item!=0) {
63
item->setMouseTracking(
true
);
64
item->setAttribute(Qt::WA_TransparentForMouseEvents);
65
KoColor
color;
66
color.
fromQColor
(QColor(190, 50, 50));
67
item->
setColor
(color);
68
item->
showHelpText
();
69
}
70
}
71
}
72
73
KisShadeSelectorLineComboBoxPopup::~KisShadeSelectorLineComboBoxPopup
()
74
{
75
}
76
77
void
KisShadeSelectorLineComboBoxPopup::setConfiguration
(
const
QString &
string
)
78
{
79
m_lineEditor
->
fromString
(
string
);
80
}
81
82
void
KisShadeSelectorLineComboBoxPopup::updateSelectedArea
(
const
QRect &newRect)
83
{
84
QRect oldSelectedArea =
m_selectedArea
;
85
m_selectedArea
= newRect;
86
update(oldSelectedArea);
87
update(
m_selectedArea
);
88
}
89
90
void
KisShadeSelectorLineComboBoxPopup::updateHighlightedArea
(
const
QRect &newRect)
91
{
92
QRect oldHighlightArea =
m_highlightedArea
;
93
m_highlightedArea
= newRect;
94
update(oldHighlightArea);
95
update(
m_highlightedArea
);
96
}
97
98
void
KisShadeSelectorLineComboBoxPopup::activateItem
(QWidget *widget)
99
{
100
KisShadeSelectorLineBase
* item =
dynamic_cast<
KisShadeSelectorLineBase
*
>
(widget);
101
KIS_ASSERT_RECOVER_RETURN
(item);
102
103
QRect itemRect =
kisGrowRect
(item->geometry(),
spacing
/ 2 - 1);
104
m_lastSelectedItem
= item;
105
106
updateSelectedArea
(itemRect);
107
}
108
109
void
KisShadeSelectorLineComboBoxPopup::paintEvent
(QPaintEvent *)
110
{
111
QPainter painter(
this
);
112
QPainter
p
(
this
);
113
KConfigGroup cfg = KSharedConfig::openConfig()->group(
"advancedColorSelector"
);
114
115
if
(cfg.readEntry(
"useCustomColorForBackground"
,
false
)) {
116
p
.fillRect(0,0,width(), height(), cfg.readEntry(
"customSelectorBackgroundColor"
, QColor(Qt::gray)));
117
}
else
{
118
p
.fillRect(0,0,width(), height(), qApp->palette().window().color());
119
}
120
painter.fillRect(
m_selectedArea
,
palette
().highlight());
121
122
painter.setPen(QPen(
palette
().highlight(), 2));
123
painter.drawRect(
m_highlightedArea
);
124
}
125
126
void
KisShadeSelectorLineComboBoxPopup::mouseMoveEvent
(QMouseEvent * e)
127
{
128
if
(
rect
().contains(e->pos())) {
129
for
(
int
i = 0; i < layout()->count(); i++) {
130
KisShadeSelectorLineBase
* item =
dynamic_cast<
KisShadeSelectorLineBase
*
>
(layout()->itemAt(i)->widget());
131
KIS_ASSERT_RECOVER_RETURN
(item);
132
133
QRect itemRect =
kisGrowRect
(item->geometry(),
spacing
/ 2 - 1);
134
if
(itemRect.contains(e->pos())) {
135
m_lastHighlightedItem
= item;
136
137
updateHighlightedArea
(itemRect);
138
}
139
}
140
}
141
else
{
142
updateHighlightedArea
(QRect());
143
}
144
}
145
146
void
KisShadeSelectorLineComboBoxPopup::mousePressEvent
(QMouseEvent* e)
147
{
148
if
(
rect
().contains(e->pos())) {
149
mouseMoveEvent
(e);
150
151
m_lastSelectedItem
=
m_lastHighlightedItem
;
152
153
if
(
m_lastSelectedItem
!=
m_lineEditor
) {
154
m_lineEditor
->blockSignals(
true
);
155
m_lineEditor
->
fromString
(
m_lastSelectedItem
->
toString
());
156
m_lineEditor
->blockSignals(
false
);
157
}
158
updateSelectedArea
(
m_highlightedArea
);
159
}
160
if
(
m_lastSelectedItem
) {
161
KisShadeSelectorLineComboBox
*parent =
dynamic_cast<
KisShadeSelectorLineComboBox
*
>
(this->parent());
162
Q_ASSERT(parent);
163
parent->setConfiguration(
m_lastSelectedItem
->
toString
());
164
}
165
e->accept();
166
167
this->parentWidget()->update();
168
hide();
169
}
170
p
const Params2D p
Definition
KisBezierUtils.cpp:703
connect
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisColorSelectorBaseProxyNoop
Definition
kis_color_selector_base_proxy.h:36
KisShadeSelectorLineBase
Definition
kis_shade_selector_line.h:19
KisShadeSelectorLineBase::toString
virtual QString toString() const =0
KisShadeSelectorLineComboBoxPopup::m_lineEditor
KisShadeSelectorLineEditor * m_lineEditor
Definition
kis_shade_selector_line_combo_box_popup.h:42
KisShadeSelectorLineComboBoxPopup::KisShadeSelectorLineComboBoxPopup
KisShadeSelectorLineComboBoxPopup(QWidget *parent)
Definition
kis_shade_selector_line_combo_box_popup.cpp:25
KisShadeSelectorLineComboBoxPopup::paintEvent
void paintEvent(QPaintEvent *) override
Definition
kis_shade_selector_line_combo_box_popup.cpp:109
KisShadeSelectorLineComboBoxPopup::~KisShadeSelectorLineComboBoxPopup
~KisShadeSelectorLineComboBoxPopup() override
Definition
kis_shade_selector_line_combo_box_popup.cpp:73
KisShadeSelectorLineComboBoxPopup::setConfiguration
void setConfiguration(const QString &string)
Definition
kis_shade_selector_line_combo_box_popup.cpp:77
KisShadeSelectorLineComboBoxPopup::mousePressEvent
void mousePressEvent(QMouseEvent *e) override
Definition
kis_shade_selector_line_combo_box_popup.cpp:146
KisShadeSelectorLineComboBoxPopup::m_parentProxy
QScopedPointer< KisColorSelectorBaseProxy > m_parentProxy
Definition
kis_shade_selector_line_combo_box_popup.h:46
KisShadeSelectorLineComboBoxPopup::updateHighlightedArea
void updateHighlightedArea(const QRect &newRect)
Definition
kis_shade_selector_line_combo_box_popup.cpp:90
KisShadeSelectorLineComboBoxPopup::activateItem
void activateItem(QWidget *widget)
Definition
kis_shade_selector_line_combo_box_popup.cpp:98
KisShadeSelectorLineComboBoxPopup::m_lastHighlightedItem
KisShadeSelectorLineBase * m_lastHighlightedItem
Definition
kis_shade_selector_line_combo_box_popup.h:40
KisShadeSelectorLineComboBoxPopup::m_selectedArea
QRect m_selectedArea
Definition
kis_shade_selector_line_combo_box_popup.h:45
KisShadeSelectorLineComboBoxPopup::spacing
const int spacing
Definition
kis_shade_selector_line_combo_box_popup.h:23
KisShadeSelectorLineComboBoxPopup::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *e) override
Definition
kis_shade_selector_line_combo_box_popup.cpp:126
KisShadeSelectorLineComboBoxPopup::updateSelectedArea
void updateSelectedArea(const QRect &newRect)
Definition
kis_shade_selector_line_combo_box_popup.cpp:82
KisShadeSelectorLineComboBoxPopup::m_lastSelectedItem
KisShadeSelectorLineBase * m_lastSelectedItem
Definition
kis_shade_selector_line_combo_box_popup.h:41
KisShadeSelectorLineComboBoxPopup::m_highlightedArea
QRect m_highlightedArea
Definition
kis_shade_selector_line_combo_box_popup.h:44
KisShadeSelectorLineComboBox
Definition
kis_shade_selector_line_combo_box.h:17
KisShadeSelectorLineEditor
Definition
kis_shade_selector_line_editor.h:21
KisShadeSelectorLineEditor::fromString
void fromString(const QString &string) override
Definition
kis_shade_selector_line_editor.cpp:93
KisShadeSelectorLine
Definition
kis_shade_selector_line.h:33
KisShadeSelectorLine::showHelpText
void showHelpText()
Definition
kis_shade_selector_line.h:48
KisShadeSelectorLine::setColor
void setColor(const KoColor &color)
Definition
kis_shade_selector_line.cpp:70
KoColor
Definition
KoColor.h:31
KoColor::fromQColor
void fromQColor(const QColor &c)
Convenient function for converting from a QColor.
Definition
KoColor.cpp:213
KIS_ASSERT_RECOVER_RETURN
#define KIS_ASSERT_RECOVER_RETURN(cond)
Definition
kis_assert.h:75
kis_color_selector_base_proxy.h
kis_global.h
kisGrowRect
T kisGrowRect(const T &rect, U offset)
Definition
kis_global.h:186
kis_shade_selector_line.h
kis_shade_selector_line_combo_box.h
kis_shade_selector_line_combo_box_popup.h
kis_shade_selector_line_editor.h
palette
rgba palette[MAX_PALETTE]
Definition
palette.c:35
rect
Definition
xcftools.h:129
plugins
dockers
advancedcolorselector
kis_shade_selector_line_combo_box_popup.cpp
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52