File indexing completed on 2024-06-16 04:17:17

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 "KisCurveOpOptionWidget.h"
0009 
0010 #include <QButtonGroup>
0011 
0012 #include <lager/constant.hpp>
0013 #include "ui_wdgcurveoptions.h"
0014 
0015 #include "KisCurveOpOptionModel.h"
0016 
0017 namespace {
0018 
0019 
0020 class KisCurveOptionsWidget: public QWidget, public Ui::WdgCurveOptions
0021 {
0022 
0023 public:
0024     KisCurveOptionsWidget(QWidget *parent = 0) : QWidget(parent) {
0025         setupUi(this);
0026         historySizeSlider->setRange(2, 300);
0027         historySizeSlider->setValue(30);
0028 
0029         lineWidthSlider->setRange(1, 100);
0030         lineWidthSlider->setValue(1);
0031         lineWidthSlider->setSuffix(i18n(" px"));
0032 
0033         curvesOpacitySlider->setRange(0.0, 1.0, 2);
0034         curvesOpacitySlider->setSingleStep(0.01);
0035         curvesOpacitySlider->setValue(1.0);
0036     }
0037 };
0038 
0039 
0040 }
0041 
0042 
0043 struct KisCurveOpOptionWidget::Private
0044 {
0045     Private(lager::cursor<KisCurveOpOptionData> optionData)
0046         : model(optionData)
0047     {
0048     }
0049 
0050     KisCurveOpOptionModel model;
0051 };
0052 
0053 
0054 KisCurveOpOptionWidget::KisCurveOpOptionWidget(lager::cursor<KisCurveOpOptionData> optionData)
0055     : KisPaintOpOption(i18nc("Brush settings curve value", "Value"), KisPaintOpOption::GENERAL, true)
0056     , m_d(new Private(optionData))
0057 {
0058     
0059     KisCurveOptionsWidget *widget = new KisCurveOptionsWidget();
0060     setObjectName("KisCurveOpOption");
0061     
0062     m_checkable = false;
0063     
0064     using namespace KisWidgetConnectionUtils;
0065     connectControl(widget->connectionCHBox, &m_d->model, "curvePaintConnectionLine");
0066     connectControl(widget->smoothingCHBox, &m_d->model, "curveSmoothing");
0067     connectControl(widget->historySizeSlider, &m_d->model, "curveStrokeHistorySize");
0068     connectControl(widget->lineWidthSlider, &m_d->model, "curveLineWidth");
0069     connectControl(widget->curvesOpacitySlider, &m_d->model, "curveCurvesOpacity");
0070     
0071     m_d->model.optionData.bind(std::bind(&KisCurveOpOptionWidget::emitSettingChanged, this));
0072     
0073     setConfigurationPage(widget);
0074 }
0075 
0076 KisCurveOpOptionWidget::~KisCurveOpOptionWidget()
0077 {
0078 }
0079 
0080 void KisCurveOpOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const
0081 {
0082     KisCurveOpOptionData data = *m_d->model.optionData;
0083     data.write(setting.data());
0084 }
0085 
0086 void KisCurveOpOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting)
0087 {
0088     KisCurveOpOptionData data = *m_d->model.optionData;
0089     data.read(setting.data());
0090     m_d->model.optionData.set(data);
0091 }