File indexing completed on 2024-05-26 04:34:03
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisColorSourceOptionWidget.h" 0007 0008 #include <QGroupBox> 0009 #include <QButtonGroup> 0010 #include <QRadioButton> 0011 #include <QVBoxLayout> 0012 0013 #include <KoID.h> 0014 0015 #include <KisColorSourceOptionModel.h> 0016 #include <KisWidgetConnectionUtils.h> 0017 0018 struct KisColorSourceOptionWidget::Private 0019 { 0020 Private(lager::cursor<KisColorSourceOptionData> optionData) 0021 : model(optionData) 0022 { 0023 } 0024 0025 KisColorSourceOptionModel model; 0026 }; 0027 0028 KisColorSourceOptionWidget::KisColorSourceOptionWidget(lager::cursor<KisColorSourceOptionData> optionData) 0029 : KisPaintOpOption(i18nc("Color source", "Source"), KisPaintOpOption::COLOR, true) 0030 , m_d(new Private(optionData)) 0031 { 0032 using namespace KisWidgetConnectionUtils; 0033 0034 setObjectName("KisColorSourceOptionWidget"); 0035 m_checkable = false; 0036 0037 QWidget* widget = new QWidget; 0038 0039 QGroupBox* groupBox = new QGroupBox(widget); 0040 QVBoxLayout* verticalLayout = new QVBoxLayout(groupBox); 0041 0042 QButtonGroup *buttonGroup = new QButtonGroup(widget); 0043 buttonGroup->setExclusive(true); 0044 0045 Q_FOREACH (const KoID &id, KisColorSourceOptionData::colorSourceTypeIds()) { 0046 QRadioButton* radioButton = new QRadioButton(groupBox); 0047 radioButton->setText(id.name()); 0048 verticalLayout->addWidget(radioButton); 0049 buttonGroup->addButton(radioButton, KisColorSourceOptionData::id2Type(id)); 0050 } 0051 QVBoxLayout* verticalLayout_2 = new QVBoxLayout(widget); 0052 verticalLayout_2->setMargin(0); 0053 verticalLayout_2->addWidget(groupBox); 0054 verticalLayout_2->addStretch(); 0055 0056 setConfigurationPage(widget); 0057 0058 connectControl(buttonGroup, &m_d->model, "type"); 0059 0060 m_d->model.optionData.bind(std::bind(&KisColorSourceOptionWidget::emitSettingChanged, this)); 0061 } 0062 0063 KisColorSourceOptionWidget::~KisColorSourceOptionWidget() 0064 { 0065 } 0066 0067 void KisColorSourceOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0068 { 0069 m_d->model.optionData->write(setting.data()); 0070 } 0071 0072 void KisColorSourceOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0073 { 0074 KisColorSourceOptionData data = *m_d->model.optionData; 0075 data.read(setting.data()); 0076 m_d->model.optionData.set(data); 0077 }