1 /*
2 * Copyright (c) 2009,2010 Lukáš Tvrdý (lukast.dev@gmail.com)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18 #include "kis_gridop_option.h"
19 #include <klocalizedstring.h>
20
21 #include "ui_wdggridoptions.h"
22
23 class KisGridOpOptionsWidget: public QWidget, public Ui::WdgGridOptions
24 {
25 public:
KisGridOpOptionsWidget(QWidget * parent=0)26 KisGridOpOptionsWidget(QWidget *parent = 0)
27 : QWidget(parent) {
28 setupUi(this);
29 }
30 };
31
KisGridOpOption()32 KisGridOpOption::KisGridOpOption()
33 : KisPaintOpOption(KisPaintOpOption::GENERAL, false)
34 {
35 setObjectName("KisGridOpOption");
36
37 m_checkable = false;
38 m_options = new KisGridOpOptionsWidget();
39
40 // initialize slider values
41 m_options->gridWidthSPBox->setRange(1, 999, 0);
42 m_options->gridWidthSPBox->setValue(25);
43 m_options->gridWidthSPBox->setSuffix(i18n(" px"));
44 m_options->gridWidthSPBox->setExponentRatio(3.0);
45
46
47 m_options->gridHeightSPBox->setRange(1, 999, 0);
48 m_options->gridHeightSPBox->setValue(25);
49 m_options->gridHeightSPBox->setSuffix(i18n(" px"));
50 m_options->gridHeightSPBox->setExponentRatio(3.0);
51
52 m_options->divisionLevelSPBox->setRange(0, 25, 0);
53 m_options->divisionLevelSPBox->setValue(2);
54
55 m_options->scaleDSPBox->setRange(0.1, 10.0, 2);
56 m_options->scaleDSPBox->setValue(1.0);
57 m_options->scaleDSPBox->setExponentRatio(3.0);
58
59 m_options->vertBorderDSPBox->setRange(0, 100, 2);
60 m_options->vertBorderDSPBox->setValue(0.0);
61
62
63 m_options->horizBorderDSPBox->setRange(0, 100, 2);
64 m_options->vertBorderDSPBox->setValue(0.0);
65
66
67 connect(m_options->gridWidthSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
68 connect(m_options->gridHeightSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
69 connect(m_options->divisionLevelSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
70 connect(m_options->divisionPressureCHBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
71 connect(m_options->scaleDSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
72 connect(m_options->vertBorderDSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
73 connect(m_options->horizBorderDSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
74 connect(m_options->jitterBorderCHBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
75
76 setConfigurationPage(m_options);
77 }
78
~KisGridOpOption()79 KisGridOpOption::~KisGridOpOption()
80 {
81 delete m_options;
82 }
83
84
divisionLevel() const85 int KisGridOpOption::divisionLevel() const
86 {
87 return m_options->divisionLevelSPBox->value();
88 }
89
90
gridWidth() const91 int KisGridOpOption::gridWidth() const
92 {
93 return m_options->gridWidthSPBox->value();
94 }
95
96
setWidth(int width) const97 void KisGridOpOption::setWidth(int width) const
98 {
99 m_options->gridWidthSPBox->setValue(width);
100 }
101
102
gridHeight() const103 int KisGridOpOption::gridHeight() const
104 {
105 return m_options->gridHeightSPBox->value();
106 }
107
108
setHeight(int height) const109 void KisGridOpOption::setHeight(int height) const
110 {
111 m_options->gridHeightSPBox->setValue(height);
112 }
113
114
pressureDivision() const115 bool KisGridOpOption::pressureDivision() const
116 {
117 return m_options->divisionPressureCHBox->isChecked();
118 }
119
120
121
horizBorder() const122 qreal KisGridOpOption::horizBorder() const
123 {
124 return m_options->vertBorderDSPBox->value();
125 }
126
127
vertBorder() const128 qreal KisGridOpOption::vertBorder() const
129 {
130 return m_options->horizBorderDSPBox->value();
131 }
132
133
134
randomBorder() const135 bool KisGridOpOption::randomBorder() const
136 {
137 return m_options->jitterBorderCHBox->isChecked();
138 }
139
140
scale() const141 qreal KisGridOpOption::scale() const
142 {
143 return m_options->scaleDSPBox->value();
144 }
145
writeOptionSetting(KisPropertiesConfigurationSP setting) const146 void KisGridOpOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const
147 {
148 KisGridOpProperties op;
149
150 op.grid_width = gridWidth();
151 op.grid_height = gridHeight();
152 op.grid_division_level = divisionLevel();
153 op.grid_pressure_division = pressureDivision();
154 op.grid_scale = scale();
155 op.grid_vertical_border = vertBorder();
156 op.grid_horizontal_border = horizBorder();
157 op.grid_random_border = randomBorder();
158
159 op.writeOptionSetting(setting);
160 }
161
readOptionSetting(const KisPropertiesConfigurationSP setting)162 void KisGridOpOption::readOptionSetting(const KisPropertiesConfigurationSP setting)
163 {
164 KisGridOpProperties op;
165 op.readOptionSetting(setting);
166
167 m_options->gridWidthSPBox->setValue(op.grid_width);
168 m_options->gridHeightSPBox->setValue(op.grid_height);
169 m_options->divisionLevelSPBox->setValue(op.grid_division_level);
170 m_options->divisionPressureCHBox->setChecked(op.grid_pressure_division);
171 m_options->scaleDSPBox->setValue(op.grid_scale);
172 m_options->vertBorderDSPBox->setValue(op.grid_vertical_border);
173 m_options->horizBorderDSPBox->setValue(op.grid_horizontal_border);
174 m_options->jitterBorderCHBox->setChecked(op.grid_random_border);
175 }
176