File indexing completed on 2025-03-09 04:10:09
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisMirrorOptionWidget.h" 0007 0008 #include <KisLager.h> 0009 0010 #include <QWidget> 0011 #include <QCheckBox> 0012 #include <QHBoxLayout> 0013 #include <QVBoxLayout> 0014 0015 #include <KisMirrorOptionModel.h> 0016 #include <KisWidgetConnectionUtils.h> 0017 0018 0019 struct KisMirrorOptionWidget::Private 0020 { 0021 Private(lager::cursor<KisMirrorOptionData> optionData) 0022 : model(optionData.zoom( 0023 kislager::lenses::to_base<KisMirrorOptionMixIn>) 0024 ) 0025 { 0026 } 0027 0028 KisMirrorOptionModel model; 0029 }; 0030 0031 KisMirrorOptionWidget::KisMirrorOptionWidget(lager::cursor<KisMirrorOptionData> optionData) 0032 : KisMirrorOptionWidget(optionData, KisPaintOpOption::GENERAL) 0033 { 0034 } 0035 0036 KisMirrorOptionWidget::KisMirrorOptionWidget(lager::cursor<KisMirrorOptionData> optionData, PaintopCategory categoryOverride) 0037 : KisCurveOptionWidget(optionData.zoom(kislager::lenses::to_base<KisCurveOptionDataCommon>), categoryOverride) 0038 , m_d(new Private(optionData)) 0039 { 0040 using namespace KisWidgetConnectionUtils; 0041 0042 QWidget *page = new QWidget; 0043 0044 QCheckBox *horizontalMirror = new QCheckBox(i18n("Horizontally"), page); 0045 QCheckBox *verticalMirror = new QCheckBox(i18n("Vertically"), page); 0046 0047 QHBoxLayout *hl = new QHBoxLayout; 0048 hl->addWidget(horizontalMirror); 0049 hl->addWidget(verticalMirror); 0050 0051 QVBoxLayout *pageLayout = new QVBoxLayout(page); 0052 pageLayout->setMargin(0); 0053 pageLayout->addLayout(hl); 0054 pageLayout->addWidget(configurationPage()); 0055 0056 setConfigurationPage(page); 0057 0058 connectControl(horizontalMirror, &m_d->model, "enableHorizontalMirror"); 0059 connectControl(verticalMirror, &m_d->model, "enableVerticalMirror"); 0060 0061 m_d->model.mirrorOptionData.bind(std::bind(&KisMirrorOptionWidget::emitSettingChanged, this)); 0062 } 0063 0064 KisMirrorOptionWidget::~KisMirrorOptionWidget() 0065 { 0066 } 0067 0068 void KisMirrorOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0069 { 0070 KisCurveOptionWidget::writeOptionSetting(setting); 0071 m_d->model.mirrorOptionData->write(setting.data()); 0072 } 0073 0074 void KisMirrorOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0075 { 0076 KisMirrorOptionMixIn data = *m_d->model.mirrorOptionData; 0077 data.read(setting.data()); 0078 m_d->model.mirrorOptionData.set(data); 0079 0080 KisCurveOptionWidget::readOptionSetting(setting); 0081 }