File indexing completed on 2024-05-26 04:34:03
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisCompositeOpOptionWidget.h" 0007 0008 #include <KoCompositeOpRegistry.h> 0009 0010 #include "kis_icon_utils.h" 0011 #include <ui_wdgCompositeOpOption.h> 0012 0013 #include "KisCompositeOpOptionModel.h" 0014 #include "KisWidgetConnectionUtils.h" 0015 #include "KisCompositeOpListConnectionHelper.h" 0016 0017 struct KisCompositeOpOptionWidget::Private 0018 { 0019 Private(lager::cursor<KisCompositeOpOptionData> optionData) 0020 : model(optionData) 0021 { 0022 } 0023 0024 KisCompositeOpOptionModel model; 0025 0026 QLabel *lblCurrentCompositeOp = 0; 0027 }; 0028 0029 KisCompositeOpOptionWidget::KisCompositeOpOptionWidget(lager::cursor<KisCompositeOpOptionData> optionData) 0030 : KisPaintOpOption(i18n("Blending Mode"), KisPaintOpOption::GENERAL, true), 0031 m_d(new Private(optionData)) 0032 { 0033 using namespace KisWidgetConnectionUtils; 0034 m_checkable = false; 0035 0036 setObjectName("KisCompositeOpOption"); 0037 0038 QWidget* widget = new QWidget(); 0039 0040 Ui_wdgCompositeOpOption ui; 0041 ui.setupUi(widget); 0042 ui.bnEraser->setIcon(KisIconUtils::loadIcon("draw-eraser")); 0043 0044 m_d->lblCurrentCompositeOp = ui.lbChosenMode; 0045 m_d->model.LAGER_QT(compositeOpId).bind(std::bind(&KisCompositeOpOptionWidget::updateCompositeOpLabel, this, std::placeholders::_1)); 0046 0047 connectControl(ui.bnEraser, &m_d->model, "eraserMode"); 0048 connectControl(ui.list, &m_d->model, "compositeOpId"); 0049 0050 setConfigurationPage(widget); 0051 m_d->model.optionData.bind(std::bind(&KisCompositeOpOptionWidget::emitSettingChanged, this)); 0052 } 0053 0054 KisCompositeOpOptionWidget::~KisCompositeOpOptionWidget() 0055 { 0056 } 0057 0058 void KisCompositeOpOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0059 { 0060 m_d->model.optionData->write(setting.data()); 0061 } 0062 0063 void KisCompositeOpOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0064 { 0065 KisCompositeOpOptionData data = *m_d->model.optionData; 0066 data.read(setting.data()); 0067 m_d->model.optionData.set(data); 0068 } 0069 0070 void KisCompositeOpOptionWidget::updateCompositeOpLabel(const QString &id) 0071 { 0072 const KoID compositeOp = KoCompositeOpRegistry::instance().getKoID(id); 0073 m_d->lblCurrentCompositeOp->setText(compositeOp.name()); 0074 }