Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_shade_selector_line_editor.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 <QMouseEvent>
9#include <QLabel>
10
13#include "kis_config.h"
14
17 , m_line_preview(preview)
18{
19 QVBoxLayout* layout = new QVBoxLayout(this);
20
21 QHBoxLayout* lineOne = new QHBoxLayout();
22 layout->addLayout(lineOne);
23 lineOne->addWidget(new QLabel(i18n("Delta: ")));
24
26 lineOne->addWidget(m_hueDelta);
28 lineOne->addWidget(m_saturationDelta);
30 lineOne->addWidget(m_valueDelta);
31
32 QHBoxLayout* lineTwo = new QHBoxLayout();
33 layout->addLayout(lineTwo);
34 lineTwo->addWidget(new QLabel(i18n("Shift: ")));
35
37 lineTwo->addWidget(m_hueShift);
39 lineTwo->addWidget(m_saturationShift);
41 lineTwo->addWidget(m_valueShift);
42
43
44 m_hueDelta->setRange(-1, 1);
45 m_saturationDelta->setRange(-1, 1);
46 m_valueDelta->setRange(-1, 1);
47 m_hueShift->setRange(-1, 1);
48 m_saturationShift->setRange(-1, 1);
49 m_valueShift->setRange(-1, 1);
50
51 m_hueDelta->setSingleStep(0.1);
52 m_saturationDelta->setSingleStep(0.1);
53 m_valueDelta->setSingleStep(0.1);
54 m_hueShift->setSingleStep(0.05);
55 m_saturationShift->setSingleStep(0.05);
56 m_valueShift->setSingleStep(0.05);
57
58 connect(m_hueDelta, SIGNAL(valueChanged(double)), SLOT(valueChanged()));
59 connect(m_saturationDelta, SIGNAL(valueChanged(double)), SLOT(valueChanged()));
60 connect(m_valueDelta, SIGNAL(valueChanged(double)), SLOT(valueChanged()));
61 connect(m_hueShift, SIGNAL(valueChanged(double)), SLOT(valueChanged()));
62 connect(m_saturationShift, SIGNAL(valueChanged(double)), SLOT(valueChanged()));
63 connect(m_valueShift, SIGNAL(valueChanged(double)), SLOT(valueChanged()));
64
65 KConfigGroup cfg = KSharedConfig::openConfig()->group("advancedColorSelector");
66 QString lineset = cfg.readEntry(
67 "minimalShadeSelectorLineConfig", "0|0.2|0|0|0|0|0;1|0|1|1|0|0|0;2|0|-1|1|0|0|0;").split(";").at(0);
68 fromString(lineset);
69
71}
72
75 m_hueDelta->value(), m_saturationDelta->value(), m_valueDelta->value(),
76 m_hueShift->value(), m_saturationShift->value(), m_valueShift->value()
77 );
78 this->parentWidget()->update(m_line_preview->geometry());
79}
80
82{
83 return QString("%1|%2|%3|%4|%5|%6|%7")
84 .arg(m_lineNumber)
85 .arg(m_hueDelta->value())
86 .arg(m_saturationDelta->value())
87 .arg(m_valueDelta->value())
88 .arg(m_hueShift->value())
89 .arg(m_saturationShift->value())
90 .arg(m_valueShift->value());
91}
92
93void KisShadeSelectorLineEditor::fromString(const QString &string)
94{
95 QStringList strili = string.split('|');
96 m_lineNumber = strili.at(0).toInt();
97 m_hueDelta->setValue(strili.at(1).toDouble());
98 m_saturationDelta->setValue(strili.at(2).toDouble());
99 m_valueDelta->setValue(strili.at(3).toDouble());
100 if(strili.size()==4) return; // don't crash, if reading old config files.
101 m_hueShift->setValue(strili.at(4).toDouble());
102 m_saturationShift->setValue(strili.at(5).toDouble());
103 m_valueShift->setValue(strili.at(6).toDouble());
104}
105
110
112 e->accept();
113}
114
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
The KisDoubleParseSpinBox class is a cleverer doubleSpinBox, able to parse arithmetic expressions.
void setValue(double value, bool overwriteExpression=false)
Set the value of the spinbox.
void mousePressEvent(QMouseEvent *e) override
KisShadeSelectorLineEditor(QWidget *parent, KisShadeSelectorLine *preview)
void fromString(const QString &string) override
void requestActivateLine(QWidget *widget)
void setParam(qreal hue, qreal sat, qreal val, qreal hueShift, qreal satShift, qreal shiftVal)