Krita Source Code Documentation
Loading...
Searching...
No Matches
KisGridOpOptionWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Agata Cacko <cacko.azh@gmail.com>
3 * SPDX-FileCopyrightText: 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
13#include <lager/constant.hpp>
14#include "ui_wdggridoptions.h"
15
18
19namespace {
20
21
22class KisGridOpOptionsWidgetUI: public QWidget, public Ui::WdgGridOptions
23{
24public:
25 KisGridOpOptionsWidgetUI(QWidget *parent = 0)
26 : QWidget(parent) {
27
28
29 setupUi(this);
30
31 // initialize slider values
32 diameterSPBox->setRange(1,999,0);
33 diameterSPBox->setValue(25);
34 diameterSPBox->setSuffix(i18n(" px"));
35 diameterSPBox->setExponentRatio(3.0);
36
37
38 gridWidthSPBox->setRange(1, 999, 0);
39 gridWidthSPBox->setValue(25);
40 gridWidthSPBox->setSuffix(i18n(" px"));
41 gridWidthSPBox->setExponentRatio(3.0);
42
43
44 gridHeightSPBox->setRange(1, 999, 0);
45 gridHeightSPBox->setValue(25);
46 gridHeightSPBox->setSuffix(i18n(" px"));
47 gridHeightSPBox->setExponentRatio(3.0);
48
49
50 horizontalOffsetSPBox->setRange(-50, 50, 2);
51 horizontalOffsetSPBox->setValue(0);
52 KisSpinBoxI18nHelper::setText(horizontalOffsetSPBox,
53 i18nc("{n} is the number value, % is the percent sign", "{n}%"));
54
55 verticalOffsetSPBox->setRange(-50, 50, 2);
56 verticalOffsetSPBox->setValue(0);
57 KisSpinBoxI18nHelper::setText(verticalOffsetSPBox,
58 i18nc("{n} is the number value, % is the percent sign", "{n}%"));
59
60 divisionLevelSPBox->setRange(0, 25, 0);
61 divisionLevelSPBox->setValue(2);
62
63 scaleDSPBox->setRange(0.1, 10.0, 2);
64 scaleDSPBox->setSingleStep(0.01);
65 scaleDSPBox->setValue(1.0);
66 scaleDSPBox->setExponentRatio(3.0);
67
68 vertBorderDSPBox->setRange(0, 100, 2);
69 vertBorderDSPBox->setSingleStep(0.01);
70 vertBorderDSPBox->setValue(0.0);
71
72
73 horizBorderDSPBox->setRange(0, 100, 2);
74 horizBorderDSPBox->setSingleStep(0.01);
75 horizBorderDSPBox->setValue(0.0);
76 }
77};
78}
79
81{
82 Private(lager::cursor<KisGridOpOptionData> optionData)
83 : model(optionData)
84 {
85 }
86
88 KisGridOpOptionsWidgetUI* options {0};
89};
90
91KisGridOpOptionWidget::KisGridOpOptionWidget(lager::cursor<KisGridOpOptionData> optionData)
92 : KisPaintOpOption(i18n("Brush size"), KisPaintOpOption::GENERAL, true)
93 , m_d(new Private(optionData))
94{
95
96 m_d->options = new KisGridOpOptionsWidgetUI();
97 setObjectName("KisGridOpOption");
98
99 m_checkable = false;
100
101 using namespace KisWidgetConnectionUtils;
102
103 connectControl(m_d->options->diameterSPBox, &m_d->model, "diameter");
104 connectControl(m_d->options->gridWidthSPBox, &m_d->model, "grid_width");
105 connectControl(m_d->options->gridHeightSPBox, &m_d->model, "grid_height");
106
107 connectControl(m_d->options->horizontalOffsetSPBox, &m_d->model, "horizontal_offset");
108 connectControl(m_d->options->verticalOffsetSPBox, &m_d->model, "vertical_offset");
109 connectControl(m_d->options->divisionLevelSPBox, &m_d->model, "grid_division_level");
110
111 connectControl(m_d->options->divisionPressureCHBox, &m_d->model, "grid_pressure_division");
112 connectControl(m_d->options->scaleDSPBox, &m_d->model, "grid_scale");
113 connectControl(m_d->options->vertBorderDSPBox, &m_d->model, "grid_vertical_border");
114
115 connectControl(m_d->options->horizBorderDSPBox, &m_d->model, "grid_horizontal_border");
116 connectControl(m_d->options->jitterBorderCHBox, &m_d->model, "grid_random_border");
117
118 m_d->model.optionData.bind(std::bind(&KisGridOpOptionWidget::emitSettingChanged, this));
119
120 setConfigurationPage(m_d->options);
121}
122
126
128{
129 KisGridOpOptionData data = *m_d->model.optionData;
130 data.write(setting.data());
131}
132
134{
135 KisGridOpOptionData data = *m_d->model.optionData;
136 data.read(setting.data());
137 m_d->model.optionData.set(data);
138}
const QScopedPointer< Private > m_d
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
KisGridOpOptionWidget(lager::cursor< KisGridOpOptionData > optionData)
void setConfigurationPage(QWidget *page)
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
void setText(QSpinBox *spinBox, const QStringView textTemplate)
@ GENERAL
Definition nugrid.h:26
void write(KisPropertiesConfiguration *setting) const
bool read(const KisPropertiesConfiguration *setting)
Private(lager::cursor< KisGridOpOptionData > optionData)
KisGridOpOptionsWidgetUI * options