File indexing completed on 2024-05-26 04:33:55
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Agata Cacko <cacko.azh@gmail.com> 0003 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0004 * 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 #include "KisExperimentOpOptionWidget.h" 0009 0010 #include <QButtonGroup> 0011 0012 #include <lager/constant.hpp> 0013 #include "ui_wdgexperimentoptions.h" 0014 0015 #include "KisExperimentOpOptionModel.h" 0016 0017 namespace { 0018 0019 0020 class KisExperimentOpWidget: public QWidget, public Ui::WdgExperimentOptions 0021 { 0022 public: 0023 KisExperimentOpWidget(QWidget *parent = 0) 0024 : QWidget(parent) { 0025 setupUi(this); 0026 0027 speed->setRange(0.0, 100.0, 0); 0028 speed->setSuffix(QChar(Qt::Key_Percent)); 0029 speed->setValue(42.0); 0030 speed->setSingleStep(1.0); 0031 0032 smoothThreshold->setRange(0.0, 100.0, 0); 0033 smoothThreshold->setSuffix(i18n(" px")); 0034 smoothThreshold->setValue(20.0); 0035 smoothThreshold->setSingleStep(1.0); 0036 0037 displaceStrength->setRange(0.0, 100.0, 0); 0038 displaceStrength->setSuffix(QChar(Qt::Key_Percent)); 0039 displaceStrength->setValue(42.0); 0040 displaceStrength->setSingleStep(1.0); 0041 } 0042 }; 0043 0044 0045 } 0046 0047 0048 struct KisExperimentOpOptionWidget::Private 0049 { 0050 Private(lager::cursor<KisExperimentOpOptionData> optionData) 0051 : model(optionData) 0052 { 0053 } 0054 0055 KisExperimentOpOptionModel model; 0056 }; 0057 0058 0059 KisExperimentOpOptionWidget::KisExperimentOpOptionWidget(lager::cursor<KisExperimentOpOptionData> optionData) 0060 : KisPaintOpOption(i18n("Experiment Option"), KisPaintOpOption::GENERAL, true) 0061 , m_d(new Private(optionData)) 0062 { 0063 0064 KisExperimentOpWidget *widget = new KisExperimentOpWidget(); 0065 setObjectName("KisExperimentOpOption"); 0066 0067 m_checkable = false; 0068 0069 using namespace KisWidgetConnectionUtils; 0070 connectControl(widget->displaceCHBox, &m_d->model, "isDisplacementEnabled"); 0071 connectControl(widget->displaceStrength, &m_d->model, "displacement"); 0072 0073 connectControl(widget->speedCHBox, &m_d->model, "isSpeedEnabled"); 0074 connectControl(widget->speed, &m_d->model, "speed"); 0075 connectControl(widget->smoothCHBox, &m_d->model, "isSmoothingEnabled"); 0076 connectControl(widget->smoothThreshold, &m_d->model, "smoothing"); 0077 0078 connectControl(widget->windingFillCHBox, &m_d->model, "windingFill"); 0079 connectControl(widget->hardEdgeCHBox, &m_d->model, "hardEdge"); 0080 0081 QButtonGroup *group = new QButtonGroup(widget); 0082 group->addButton(widget->patternButton, static_cast<int>(ExperimentFillType::Pattern)); 0083 group->addButton(widget->solidColorButton, static_cast<int>(ExperimentFillType::SolidColor)); 0084 group->setExclusive(true); 0085 0086 connectControl(group, &m_d->model, "fillType"); 0087 0088 m_d->model.optionData.bind(std::bind(&KisExperimentOpOptionWidget::emitSettingChanged, this)); 0089 0090 setConfigurationPage(widget); 0091 } 0092 0093 KisExperimentOpOptionWidget::~KisExperimentOpOptionWidget() 0094 { 0095 } 0096 0097 void KisExperimentOpOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0098 { 0099 KisExperimentOpOptionData data = *m_d->model.optionData; 0100 data.write(setting.data()); 0101 } 0102 0103 void KisExperimentOpOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0104 { 0105 KisExperimentOpOptionData data = *m_d->model.optionData; 0106 data.read(setting.data()); 0107 m_d->model.optionData.set(data); 0108 }