File indexing completed on 2024-06-16 04:17:37
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com> 0003 * 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 #include "KisTangentTiltOptionWidget.h" 0008 0009 #include <QButtonGroup> 0010 0011 #include <lager/constant.hpp> 0012 #include "ui_wdgtangenttiltoption.h" 0013 0014 #include "KisTangentTiltOptionModel.h" 0015 #include <KisSpinBoxI18nHelper.h> 0016 0017 namespace { 0018 0019 0020 class KisTangentTiltWidget: public QWidget, public Ui::WdgTangentTiltOptions 0021 { 0022 public: 0023 KisTangentTiltWidget(QWidget *parent = 0) 0024 : QWidget(parent) { 0025 setupUi(this); 0026 0027 sliderElevationSensitivity->setRange(0, 100, 0); 0028 KisSpinBoxI18nHelper::setText(sliderElevationSensitivity, 0029 i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0030 0031 sliderMixValue->setRange(0, 100, 0); 0032 KisSpinBoxI18nHelper::setText(sliderMixValue, i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0033 0034 sliderMixValue->setVisible(false); 0035 } 0036 }; 0037 0038 0039 } 0040 0041 0042 struct KisTangentTiltOptionWidget::Private 0043 { 0044 Private(lager::cursor<KisTangentTiltOptionData> optionData) 0045 : model(optionData) 0046 { 0047 } 0048 0049 KisTangentTiltOptionModel model; 0050 }; 0051 0052 0053 KisTangentTiltOptionWidget::KisTangentTiltOptionWidget(lager::cursor<KisTangentTiltOptionData> optionData) 0054 : KisPaintOpOption(i18n("Tangent Tilt"), KisPaintOpOption::GENERAL, true) 0055 , m_d(new Private(optionData)) 0056 { 0057 0058 KisTangentTiltWidget *widget = new KisTangentTiltWidget(); 0059 setObjectName("KisTangentTiltOption"); 0060 0061 m_checkable = false; 0062 0063 using namespace KisWidgetConnectionUtils; 0064 0065 connectControl(widget->comboRed, &m_d->model, "redChannel"); 0066 connectControl(widget->comboGreen, &m_d->model, "greenChannel"); 0067 connectControl(widget->comboBlue, &m_d->model, "blueChannel"); 0068 0069 connect(widget->comboRed, SIGNAL(currentIndexChanged(int)), widget->TangentTiltPreview, SLOT(setRedChannel(int))); 0070 connect(widget->comboGreen, SIGNAL(currentIndexChanged(int)), widget->TangentTiltPreview, SLOT(setGreenChannel(int))); 0071 connect(widget->comboBlue, SIGNAL(currentIndexChanged(int)), widget->TangentTiltPreview, SLOT(setBlueChannel(int))); 0072 0073 QButtonGroup *group = new QButtonGroup(widget); 0074 group->addButton(widget->optionTilt, static_cast<int>(TangentTiltDirectionType::Tilt)); 0075 group->addButton(widget->optionDirection, static_cast<int>(TangentTiltDirectionType::Direction)); 0076 group->addButton(widget->optionRotation, static_cast<int>(TangentTiltDirectionType::Rotation)); 0077 group->addButton(widget->optionMix, static_cast<int>(TangentTiltDirectionType::Mix)); 0078 group->setExclusive(true); 0079 connectControl(group, &m_d->model, "directionType"); 0080 0081 connectControl(widget->sliderElevationSensitivity, &m_d->model, "elevationSensitivity"); 0082 connectControl(widget->sliderMixValue, &m_d->model, "mixValue"); 0083 0084 m_d->model.optionData.bind(std::bind(&KisTangentTiltOptionWidget::emitSettingChanged, this)); 0085 0086 setConfigurationPage(widget); 0087 } 0088 0089 KisTangentTiltOptionWidget::~KisTangentTiltOptionWidget() 0090 { 0091 } 0092 0093 void KisTangentTiltOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0094 { 0095 KisTangentTiltOptionData data = *m_d->model.optionData; 0096 data.write(setting.data()); 0097 } 0098 0099 void KisTangentTiltOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0100 { 0101 KisTangentTiltOptionData data = *m_d->model.optionData; 0102 data.read(setting.data()); 0103 m_d->model.optionData.set(data); 0104 }