Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSprayShapeDynamicsOptionWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Agata Cacko <cacko.azh@gmail.com>
3 * SPDX-FileCopyrightText: 2008, 2009, 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
4 *
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
9
10#include <QButtonGroup>
11#include <QMetaProperty>
12#include <QMetaObject>
13
14
15
16#include <lager/constant.hpp>
17#include "ui_wdgshapedynamicsoptions.h"
18
20
21namespace {
22class KisShapeDynamicsOptionWidget: public QWidget, public Ui::WdgShapeDynamicsOptions
23{
24public:
25 KisShapeDynamicsOptionWidget(QWidget *parent = 0)
26 : QWidget(parent) {
27 setupUi(this);
28
29 drawingAngleWeight->setRange(0.0, 1.0, 2);
30 drawingAngleWeight->setSingleStep(0.01);
31
32 followCursorWeight->setRange(0.0, 1.0, 2);
33 followCursorWeight->setSingleStep(0.01);
34
35 randomAngleWeight->setRange(0.0, 1.0, 2);
36 randomAngleWeight->setSingleStep(0.01);
37
38 fixedAngleBox->setDecimals(0);
39 fixedAngleBox->setIncreasingDirection(KisAngleGauge::IncreasingDirection_Clockwise);
40 }
41};
42}
43
45{
46 Private(lager::cursor<KisSprayShapeDynamicsOptionData> optionData)
47 : model(optionData)
48 {
49 }
50
52};
53
54KisSprayShapeDynamicsOptionWidget::KisSprayShapeDynamicsOptionWidget(lager::cursor<KisSprayShapeDynamicsOptionData> optionData)
55 : KisPaintOpOption(i18n("Shape dynamics"), KisPaintOpOption::GENERAL, optionData[&KisSprayShapeDynamicsOptionData::enabled])
56 , m_d(new Private(optionData))
57{
58
59 KisShapeDynamicsOptionWidget *widget = new KisShapeDynamicsOptionWidget();
60 setObjectName("KisSprayShapeDynamicsOptionWidget");
61
62 m_checkable = true;
63 //m_checked = true;
64
65 using namespace KisWidgetConnectionUtils;
66
67 connectControl(widget->randomSizeCHBox, &m_d->model, "randomSize");
68
69 connectControl(widget->fixedRotation, &m_d->model, "fixedRotation");
70 connectControl(widget->randomRotation, &m_d->model, "randomRotation");
71 connectControl(widget->followCursor, &m_d->model, "followCursor");
72 connectControl(widget->drawingAngle, &m_d->model, "followDrawingAngle");
73
74 connectControl(widget->fixedAngleBox, &m_d->model, "fixedAngle");
75 connectControl(widget->randomAngleWeight, &m_d->model, "randomRotationWeight");
76 connectControl(widget->followCursorWeight, &m_d->model, "followCursorWeight");
77 connectControl(widget->drawingAngleWeight, &m_d->model, "followDrawingAngleWeight");
78
79
80 widget->fixedAngleBox->setEnabled(m_d->model.fixedRotation());
81 connect(&m_d->model, &KisSprayShapeDynamicsOptionModel::fixedRotationChanged, widget->fixedAngleBox, &KisAngleSelector::setEnabled);
82
83 widget->randomAngleWeight->setEnabled(m_d->model.randomRotation());
84 connect(&m_d->model, &KisSprayShapeDynamicsOptionModel::randomRotationChanged, widget->randomAngleWeight, &KisDoubleSliderSpinBox::setEnabled);
85
86 widget->followCursorWeight->setEnabled(m_d->model.followCursor());
87 connect(&m_d->model, &KisSprayShapeDynamicsOptionModel::followCursorChanged, widget->followCursorWeight, &KisDoubleSliderSpinBox::setEnabled);
88
89 widget->drawingAngleWeight->setEnabled(m_d->model.followDrawingAngle());
90 connect(&m_d->model, &KisSprayShapeDynamicsOptionModel::followDrawingAngleChanged, widget->drawingAngleWeight, &KisDoubleSliderSpinBox::setEnabled);
91
92
93 m_d->model.optionData.bind(std::bind(&KisSprayShapeDynamicsOptionWidget::emitSettingChanged, this));
94
96}
97
101
103{
104 KisSprayShapeDynamicsOptionData data = *m_d->model.optionData;
105 data.write(setting.data());
106}
107
109{
110 KisSprayShapeDynamicsOptionData data = *m_d->model.optionData;
111 data.read(setting.data());
112 m_d->model.optionData.set(data);
113}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
@ IncreasingDirection_Clockwise
void setConfigurationPage(QWidget *page)
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
KisSprayShapeDynamicsOptionWidget(lager::cursor< KisSprayShapeDynamicsOptionData > optionData)
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
@ GENERAL
Definition nugrid.h:26
void write(KisPropertiesConfiguration *setting) const
bool read(const KisPropertiesConfiguration *setting)
Private(lager::cursor< KisSprayShapeDynamicsOptionData > optionData)