File indexing completed on 2024-05-26 04:33:55
0001 /* 0002 * SPDX-FileCopyrightText: 2009, 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisBrushSizeOptionWidget.h" 0007 0008 #include <lager/constant.hpp> 0009 #include "ui_wdgBrushSizeOptions.h" 0010 0011 #include <KisSpinBoxI18nHelper.h> 0012 #include "KisBrushSizeOptionModel.h" 0013 0014 namespace { 0015 0016 0017 class KisBrushSizeOptionsWidget: public QWidget, public Ui::WdgBrushSizeOptions 0018 { 0019 public: 0020 KisBrushSizeOptionsWidget(QWidget *parent = 0) 0021 : QWidget(parent) { 0022 setupUi(this); 0023 0024 diameter->setRange(1.0, 1000, 0); 0025 diameter->setExponentRatio(3.0); 0026 diameter->setSuffix(i18n(" px")); 0027 0028 aspectBox->setRange(0.01, 2.0, 2); 0029 aspectBox->setSingleStep(0.01); 0030 aspectBox->setExponentRatio(1.0); 0031 0032 0033 scale->setRange(0.01, 10.0, 2); 0034 scale->setSingleStep(0.01); 0035 0036 spacing->setRange(0.01, 5.0, 2); 0037 spacing->setSingleStep(0.01); 0038 0039 0040 rotationBox->setDecimals(0); 0041 0042 0043 densityBox->setRange(0.0, 100.0, 0); 0044 KisSpinBoxI18nHelper::setText(densityBox, i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0045 0046 jitterMove->setRange(0.0, 5.0, 2); 0047 jitterMove->setSingleStep(0.01); 0048 } 0049 }; 0050 0051 0052 } 0053 0054 0055 struct KisBrushSizeOptionWidget::Private 0056 { 0057 Private(lager::cursor<KisBrushSizeOptionData> optionData) 0058 : model(optionData) 0059 { 0060 } 0061 0062 KisBrushSizeOptionModel model; 0063 }; 0064 0065 0066 KisBrushSizeOptionWidget::KisBrushSizeOptionWidget(lager::cursor<KisBrushSizeOptionData> optionData) 0067 : KisPaintOpOption(i18n("Brush size"), KisPaintOpOption::GENERAL, true) 0068 , m_d(new Private(optionData)) 0069 { 0070 KisBrushSizeOptionsWidget *widget = new KisBrushSizeOptionsWidget(); 0071 setObjectName("KisBrushSizeOption"); 0072 0073 m_checkable = false; 0074 0075 using namespace KisWidgetConnectionUtils; 0076 0077 connectControl(widget->diameter, &m_d->model, "brushDiameter"); 0078 connectControl(widget->scale, &m_d->model, "brushScale"); 0079 connectControl(widget->aspectBox, &m_d->model, "brushAspect"); 0080 connectControl(widget->spacing, &m_d->model, "brushSpacing"); 0081 connectControl(widget->rotationBox, &m_d->model, "brushRotation"); 0082 connectControl(widget->densityBox, &m_d->model, "brushDensity"); 0083 connectControl(widget->jitterMove, &m_d->model, "brushJitterMovement"); 0084 connectControl(widget->jitterMoveBox, &m_d->model, "brushJitterMovementEnabled"); 0085 0086 connect(widget->jitterMoveBox, SIGNAL(toggled(bool)), widget->jitterMove, SLOT(setEnabled(bool))); 0087 0088 m_d->model.optionData.bind(std::bind(&KisBrushSizeOptionWidget::emitSettingChanged, this)); 0089 0090 setConfigurationPage(widget); 0091 } 0092 0093 KisBrushSizeOptionWidget::~KisBrushSizeOptionWidget() 0094 { 0095 } 0096 0097 void KisBrushSizeOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0098 { 0099 KisBrushSizeOptionData data = *m_d->model.optionData; 0100 data.write(setting.data()); 0101 } 0102 0103 void KisBrushSizeOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0104 { 0105 KisBrushSizeOptionData data = *m_d->model.optionData; 0106 data.read(setting.data()); 0107 m_d->model.optionData.set(data); 0108 }