Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSourceOptionWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <QGroupBox>
9#include <QButtonGroup>
10#include <QRadioButton>
11#include <QVBoxLayout>
12
13#include <KoID.h>
14
17
19{
20 Private(lager::cursor<KisColorSourceOptionData> optionData)
21 : model(optionData)
22 {
23 }
24
26};
27
28KisColorSourceOptionWidget::KisColorSourceOptionWidget(lager::cursor<KisColorSourceOptionData> optionData)
29 : KisPaintOpOption(i18nc("Color source", "Source"), KisPaintOpOption::COLOR, true)
30 , m_d(new Private(optionData))
31{
32 using namespace KisWidgetConnectionUtils;
33
34 setObjectName("KisColorSourceOptionWidget");
35 m_checkable = false;
36
37 QWidget* widget = new QWidget;
38
39 QGroupBox* groupBox = new QGroupBox(widget);
40 QVBoxLayout* verticalLayout = new QVBoxLayout(groupBox);
41
42 QButtonGroup *buttonGroup = new QButtonGroup(widget);
43 buttonGroup->setExclusive(true);
44
45 Q_FOREACH (const KoID &id, KisColorSourceOptionData::colorSourceTypeIds()) {
46 QRadioButton* radioButton = new QRadioButton(groupBox);
47 radioButton->setText(id.name());
48 verticalLayout->addWidget(radioButton);
49 buttonGroup->addButton(radioButton, KisColorSourceOptionData::id2Type(id));
50 }
51 QVBoxLayout* verticalLayout_2 = new QVBoxLayout(widget);
52 verticalLayout_2->setContentsMargins(0, 0, 0, 0);
53 verticalLayout_2->addWidget(groupBox);
54 verticalLayout_2->addStretch();
55
57
58 connectControl(buttonGroup, &m_d->model, "type");
59
60 m_d->model.optionData.bind(std::bind(&KisColorSourceOptionWidget::emitSettingChanged, this));
61}
62
66
68{
69 m_d->model.optionData->write(setting.data());
70}
71
73{
74 KisColorSourceOptionData data = *m_d->model.optionData;
75 data.read(setting.data());
76 m_d->model.optionData.set(data);
77}
KisColorSourceOptionWidget(lager::cursor< KisColorSourceOptionData > optionData)
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
const QScopedPointer< Private > m_d
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
void setConfigurationPage(QWidget *page)
Definition KoID.h:30
static QVector< KoID > colorSourceTypeIds()
bool read(const KisPropertiesConfiguration *setting)
static Type id2Type(const KoID &id)
Private(lager::cursor< KisColorSourceOptionData > optionData)