File indexing completed on 2025-02-23 04:12:38
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisScatterOptionWidget.h" 0007 0008 #include <KisLager.h> 0009 0010 #include <QWidget> 0011 #include <QLabel> 0012 #include <QCheckBox> 0013 #include <QHBoxLayout> 0014 #include <QVBoxLayout> 0015 0016 #include <KisScatterOptionModel.h> 0017 #include <KisWidgetConnectionUtils.h> 0018 0019 0020 struct KisScatterOptionWidget::Private 0021 { 0022 Private(lager::cursor<KisScatterOptionData> optionData) 0023 : model(optionData.zoom( 0024 kislager::lenses::to_base<KisScatterOptionMixIn>) 0025 ) 0026 { 0027 } 0028 0029 KisScatterOptionModel model; 0030 }; 0031 0032 KisScatterOptionWidget::KisScatterOptionWidget(lager::cursor<KisScatterOptionData> optionData) 0033 : KisScatterOptionWidget(optionData, KisPaintOpOption::GENERAL) 0034 { 0035 } 0036 0037 KisScatterOptionWidget::KisScatterOptionWidget(lager::cursor<KisScatterOptionData> optionData, PaintopCategory categoryOverride) 0038 : KisCurveOptionWidget(optionData.zoom(kislager::lenses::to_base<KisCurveOptionDataCommon>), categoryOverride) 0039 , m_d(new Private(optionData)) 0040 { 0041 using namespace KisWidgetConnectionUtils; 0042 0043 QWidget *page = new QWidget; 0044 0045 QCheckBox *axisX = new QCheckBox(i18n("Axis X"), page); 0046 QCheckBox *axisY = new QCheckBox(i18n("Axis Y"), page); 0047 QLabel* scatterLbl = new QLabel(i18n("Scatter amount"), page); 0048 0049 QHBoxLayout *hl = new QHBoxLayout; 0050 hl->addWidget(scatterLbl); 0051 hl->addWidget(axisX); 0052 hl->addWidget(axisY); 0053 0054 QVBoxLayout *pageLayout = new QVBoxLayout(page); 0055 pageLayout->setMargin(0); 0056 pageLayout->addLayout(hl); 0057 pageLayout->addWidget(configurationPage()); 0058 0059 setConfigurationPage(page); 0060 0061 connectControl(axisX, &m_d->model, "axisX"); 0062 connectControl(axisY, &m_d->model, "axisY"); 0063 0064 m_d->model.scatterOptionData.bind(std::bind(&KisScatterOptionWidget::emitSettingChanged, this)); 0065 } 0066 0067 KisScatterOptionWidget::~KisScatterOptionWidget() 0068 { 0069 0070 } 0071 0072 void KisScatterOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0073 { 0074 KisCurveOptionWidget::writeOptionSetting(setting); 0075 m_d->model.scatterOptionData->write(setting.data()); 0076 } 0077 0078 void KisScatterOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0079 { 0080 KisScatterOptionMixIn data = *m_d->model.scatterOptionData; 0081 data.read(setting.data()); 0082 m_d->model.scatterOptionData.set(data); 0083 0084 KisCurveOptionWidget::readOptionSetting(setting); 0085 }