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