File indexing completed on 2024-06-16 04:17:23
0001 /* 0002 * SPDX-FileCopyrightText: 2008-2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisHairyInkOptionWidget.h" 0007 0008 #include <lager/constant.hpp> 0009 #include "ui_wdgInkOptions.h" 0010 0011 #include "KisHairyInkOptionModel.h" 0012 #include "KisCurveWidgetConnectionHelper.h" 0013 #include <KisSpinBoxI18nHelper.h> 0014 0015 namespace { 0016 0017 class KisInkOptionsWidget: public QWidget, public Ui::WdgInkOptions 0018 { 0019 public: 0020 KisInkOptionsWidget(QWidget *parent = 0) 0021 : QWidget(parent) { 0022 setupUi(this); 0023 0024 pressureSlider->setRange(0, 100, 0); 0025 KisSpinBoxI18nHelper::setText(pressureSlider, i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0026 0027 bristleLengthSlider->setRange(0, 100, 0); 0028 KisSpinBoxI18nHelper::setText(bristleLengthSlider, 0029 i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0030 0031 bristleInkAmountSlider->setRange(0, 100, 0); 0032 KisSpinBoxI18nHelper::setText(bristleInkAmountSlider, 0033 i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0034 0035 inkDepletionSlider->setRange(0, 100, 0); 0036 KisSpinBoxI18nHelper::setText(inkDepletionSlider, 0037 i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0038 } 0039 }; 0040 0041 } 0042 0043 0044 struct KisHairyInkOptionWidget::Private 0045 { 0046 Private(lager::cursor<KisHairyInkOptionData> optionData) 0047 : model(optionData) 0048 { 0049 } 0050 0051 KisHairyInkOptionModel model; 0052 }; 0053 0054 KisHairyInkOptionWidget::KisHairyInkOptionWidget(lager::cursor<KisHairyInkOptionData> optionData) 0055 : KisPaintOpOption(i18n("Ink depletion"), KisPaintOpOption::COLOR, optionData[&KisHairyInkOptionData::inkDepletionEnabled]) 0056 , m_d(new Private(optionData)) 0057 { 0058 KisInkOptionsWidget *widget = new KisInkOptionsWidget(); 0059 setObjectName("KisHairyInkOption"); 0060 0061 using namespace KisWidgetConnectionUtils; 0062 0063 connectControl(widget->inkAmountSpinBox, &m_d->model, "inkAmount"); 0064 connectControl(widget->saturationCBox, &m_d->model, "useSaturation"); 0065 connectControl(widget->opacityCBox, &m_d->model, "useOpacity"); 0066 connectControl(widget->useWeightCHBox, &m_d->model, "useWeights"); 0067 connectControl(widget->pressureSlider, &m_d->model, "pressureWeight"); 0068 connectControl(widget->bristleLengthSlider, &m_d->model, "bristleLengthWeight"); 0069 connectControl(widget->bristleInkAmountSlider, &m_d->model, "bristleInkAmountWeight"); 0070 connectControl(widget->inkDepletionSlider, &m_d->model, "inkDepletionWeight"); 0071 connectControl(widget->inkCurve, &m_d->model, "inkDepletionCurve"); 0072 connectControl(widget->soakInkCBox, &m_d->model, "useSoakInk"); 0073 0074 m_d->model.optionData.bind(std::bind(&KisHairyInkOptionWidget::emitSettingChanged, this)); 0075 0076 setConfigurationPage(widget); 0077 } 0078 0079 KisHairyInkOptionWidget::~KisHairyInkOptionWidget() 0080 { 0081 } 0082 0083 void KisHairyInkOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0084 { 0085 KisHairyInkOptionData data = *m_d->model.optionData; 0086 data.write(setting.data()); 0087 } 0088 0089 void KisHairyInkOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0090 { 0091 KisHairyInkOptionData data = *m_d->model.optionData; 0092 data.read(setting.data()); 0093 m_d->model.optionData.set(data); 0094 }