File indexing completed on 2024-06-16 04:17:22

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Agata Cacko <cacko.azh@gmail.com>
0003  *  SPDX-FileCopyrightText: 2009, 2010 Lukáš Tvrdý (lukast.dev@gmail.com)
0004  * 
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 #include "KisGridShapeOptionWidget.h"
0009 
0010 #include <QButtonGroup>
0011 #include <QMetaProperty>
0012 
0013 #include <lager/constant.hpp>
0014 #include "ui_wdggridbrushshapeoptions.h"
0015 
0016 #include "KisGridShapeOptionModel.h"
0017 
0018 namespace {
0019 
0020 
0021 class KisShapeOptionsWidgetUI: public QWidget, public Ui::WdgGridBrushShapeOptions
0022 {
0023 public:
0024     KisShapeOptionsWidgetUI(QWidget *parent = 0)
0025         : QWidget(parent) {
0026         setupUi(this);
0027     }
0028 };
0029 }
0030 
0031 struct KisGridShapeOptionWidget::Private
0032 {
0033     Private(lager::cursor<KisGridShapeOptionData> optionData)
0034         : model(optionData)
0035     {
0036     }
0037 
0038     KisGridShapeOptionModel model;
0039     KisShapeOptionsWidgetUI* options {0};
0040 };
0041 
0042 
0043 KisGridShapeOptionWidget::KisGridShapeOptionWidget(lager::cursor<KisGridShapeOptionData> optionData)
0044     : KisPaintOpOption(i18n("Particle type"), KisPaintOpOption::GENERAL, true)
0045     , m_d(new Private(optionData))
0046 {
0047     
0048     m_d->options = new KisShapeOptionsWidgetUI();
0049     setObjectName("KisGridShapeOption");
0050 
0051     m_checkable = false;
0052     
0053     using namespace KisWidgetConnectionUtils;
0054     
0055     
0056     connectControl(m_d->options->shapeCBox, &m_d->model, "shape");
0057     
0058     
0059     m_d->model.optionData.bind(std::bind(&KisGridShapeOptionWidget::emitSettingChanged, this));
0060     
0061     setConfigurationPage(m_d->options);
0062 }
0063 
0064 KisGridShapeOptionWidget::~KisGridShapeOptionWidget()
0065 {
0066 }
0067 
0068 void KisGridShapeOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const
0069 {
0070     KisGridShapeOptionData data = *m_d->model.optionData;
0071     data.write(setting.data());
0072 }
0073 
0074 void KisGridShapeOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting)
0075 {
0076     KisGridShapeOptionData data = *m_d->model.optionData;
0077     data.read(setting.data());
0078     m_d->model.optionData.set(data);
0079 }