Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorOptionWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Agata Cacko <cacko.azh@gmail.com>
3 * SPDX-FileCopyrightText: 2009, 2010 Lukáš Tvrdý (lukast.dev@gmail.com)
4 *
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
9
10#include <QButtonGroup>
11#include <QMetaProperty>
12
13#include <lager/constant.hpp>
14#include "ui_wdgcoloroptions.h"
15
16#include "KisColorOptionModel.h"
17
18namespace {
19
20class KisColorOptionsWidgetUI: public QWidget, public Ui::WdgColorOptions
21{
22public:
23 KisColorOptionsWidgetUI(QWidget *parent = 0)
24 : QWidget(parent) {
25 setupUi(this);
26
27 hueSlider->setRange(-180, 180);
28 hueSlider->setValue(0);
29
30 saturationSlider->setRange(-100, 100);
31 saturationSlider->setValue(0);
32
33 valueSlider->setRange(-100, 100);
34 valueSlider->setValue(0);
35 }
36};
37
38}
39
41{
42 Private(lager::cursor<KisColorOptionData> optionData)
43 : model(optionData)
44 {
45 }
46
48 KisColorOptionsWidgetUI* options {0};
49};
50
51KisColorOptionWidget::KisColorOptionWidget(lager::cursor<KisColorOptionData> optionData)
52 : KisPaintOpOption(i18n("Color options"), KisPaintOpOption::COLOR, true)
53 , m_d(new Private(optionData))
54{
55 m_d->options = new KisColorOptionsWidgetUI();
56 setObjectName("KisColorOption");
57
58 m_checkable = false;
59
60 using namespace KisWidgetConnectionUtils;
61
62 m_d->options->hueSlider->setEnabled(m_d->model.useRandomHSV());
63 m_d->options->saturationSlider->setEnabled(m_d->model.useRandomHSV());
64 m_d->options->valueSlider->setEnabled(m_d->model.useRandomHSV());
65 connect(&m_d->model, &KisColorOptionModel::useRandomHSVChanged, m_d->options->hueSlider, &KisSliderSpinBox::setEnabled);
66 connect(&m_d->model, &KisColorOptionModel::useRandomHSVChanged, m_d->options->saturationSlider, &KisSliderSpinBox::setEnabled);
67 connect(&m_d->model, &KisColorOptionModel::useRandomHSVChanged, m_d->options->valueSlider, &KisSliderSpinBox::setEnabled);
68
69 connectControl(m_d->options->randomOpacityCHBox, &m_d->model, "useRandomOpacity");
70 connectControl(m_d->options->randomHSVCHBox, &m_d->model, "useRandomHSV");
71
72 connectControl(m_d->options->hueSlider, &m_d->model, "hue");
73 connectControl(m_d->options->saturationSlider, &m_d->model, "saturation");
74 connectControl(m_d->options->valueSlider, &m_d->model, "value");
75
76 connectControl(m_d->options->sampleInputCHBox, &m_d->model, "sampleInputColor");
77 connectControl(m_d->options->colorPerParticleCHBox, &m_d->model, "colorPerParticle");
78
79 connectControl(m_d->options->fillBackgroundCHBox, &m_d->model, "fillBackground");
80 connectControl(m_d->options->mixBgColorCHBox, &m_d->model, "mixBgColor");
81
82
83 m_d->model.optionData.bind(std::bind(&KisColorOptionWidget::emitSettingChanged, this));
84
85 setConfigurationPage(m_d->options);
86}
87
91
93{
94 KisColorOptionData data = *m_d->model.optionData;
95 data.write(setting.data());
96}
97
99{
100 KisColorOptionData data = *m_d->model.optionData;
101 data.read(setting.data());
102 m_d->model.optionData.set(data);
103}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
const QScopedPointer< Private > m_d
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
KisColorOptionWidget(lager::cursor< KisColorOptionData > optionData)
void setConfigurationPage(QWidget *page)
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
void write(KisPropertiesConfiguration *setting) const
bool read(const KisPropertiesConfiguration *setting)
KisColorOptionsWidgetUI * options
Private(lager::cursor< KisColorOptionData > optionData)