1 /*
2 * Copyright (c) 2008 Boudewijn Rempt <boud@valdyas.org>
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_duplicateop_option.h"
19 #include <klocalizedstring.h>
20
21 #include <QWidget>
22 #include <QRadioButton>
23
24 #include "ui_wdgduplicateop.h"
25 #include <kis_image.h>
26
27 class KisDuplicateOpOptionsWidget: public QWidget, public Ui::DuplicateOpOptionsWidget
28 {
29 public:
KisDuplicateOpOptionsWidget(QWidget * parent=0)30 KisDuplicateOpOptionsWidget(QWidget *parent = 0)
31 : QWidget(parent) {
32 setupUi(this);
33 }
34 KisImageWSP m_image;
35 protected:
showEvent(QShowEvent * event)36 void showEvent(QShowEvent* event) override {
37 QWidget::showEvent(event);
38 //cbPerspective->setEnabled(m_image && m_image->perspectiveGrid() && m_image->perspectiveGrid()->countSubGrids() == 1);
39 cbPerspective->setVisible(false); // XXX: Until perspective cloning works again!
40 }
41 };
42
43
KisDuplicateOpOption()44 KisDuplicateOpOption::KisDuplicateOpOption()
45 : KisPaintOpOption(KisPaintOpOption::COLOR, false)
46 {
47 setObjectName("KisDuplicateOpOption");
48
49 m_checkable = false;
50 m_optionWidget = new KisDuplicateOpOptionsWidget();
51
52 connect(m_optionWidget->cbHealing, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
53 connect(m_optionWidget->cbPerspective, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
54 connect(m_optionWidget->cbSourcePoint, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
55 connect(m_optionWidget->cbResetSourcePoint, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
56 connect(m_optionWidget->chkCloneProjection, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
57
58 setConfigurationPage(m_optionWidget);
59 }
60
61
~KisDuplicateOpOption()62 KisDuplicateOpOption::~KisDuplicateOpOption()
63 {
64 }
65
healing() const66 bool KisDuplicateOpOption::healing() const
67 {
68 return m_optionWidget->cbHealing->isChecked();
69 }
70
setHealing(bool healing)71 void KisDuplicateOpOption::setHealing(bool healing)
72 {
73 m_optionWidget->cbHealing->setChecked(healing);
74 }
75
correctPerspective() const76 bool KisDuplicateOpOption::correctPerspective() const
77 {
78 return m_optionWidget->cbPerspective->isChecked();
79 }
80
setPerspective(bool perspective)81 void KisDuplicateOpOption::setPerspective(bool perspective)
82 {
83 m_optionWidget->cbPerspective->setChecked(perspective);
84 }
85
moveSourcePoint() const86 bool KisDuplicateOpOption::moveSourcePoint() const
87 {
88 return m_optionWidget->cbSourcePoint->isChecked();
89 }
90
setMoveSourcePoint(bool move)91 void KisDuplicateOpOption::setMoveSourcePoint(bool move)
92 {
93 m_optionWidget->cbSourcePoint->setChecked(move);
94 }
95
resetSourcePoint() const96 bool KisDuplicateOpOption::resetSourcePoint() const
97 {
98 return m_optionWidget->cbResetSourcePoint->isChecked();
99 }
100
setResetSourcePoint(bool reset)101 void KisDuplicateOpOption::setResetSourcePoint(bool reset)
102 {
103 m_optionWidget->cbResetSourcePoint->setChecked(reset);
104 }
105
cloneFromProjection() const106 bool KisDuplicateOpOption::cloneFromProjection() const
107 {
108 return m_optionWidget->chkCloneProjection->isChecked();
109 }
110
setCloneFromProjection(bool cloneFromProjection)111 void KisDuplicateOpOption::setCloneFromProjection(bool cloneFromProjection)
112 {
113 m_optionWidget->chkCloneProjection->setChecked(cloneFromProjection);
114 }
115
writeOptionSetting(KisPropertiesConfigurationSP setting) const116 void KisDuplicateOpOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const
117 {
118 KisDuplicateOptionProperties op;
119
120 op.duplicate_healing = healing();
121 op.duplicate_correct_perspective = correctPerspective();
122 op.duplicate_move_source_point = moveSourcePoint();
123 op.duplicate_reset_source_point = resetSourcePoint();
124 op.duplicate_clone_from_projection = cloneFromProjection();
125
126 op.writeOptionSetting(setting);
127 }
128
readOptionSetting(const KisPropertiesConfigurationSP setting)129 void KisDuplicateOpOption::readOptionSetting(const KisPropertiesConfigurationSP setting)
130 {
131 KisDuplicateOptionProperties op;
132 op.readOptionSetting(setting);
133
134 m_optionWidget->cbHealing->setChecked(op.duplicate_healing);
135 m_optionWidget->cbPerspective->setChecked(op.duplicate_correct_perspective);
136 m_optionWidget->cbSourcePoint->setChecked(op.duplicate_move_source_point);
137 m_optionWidget->cbResetSourcePoint->setChecked(op.duplicate_reset_source_point);
138 m_optionWidget->chkCloneProjection->setChecked(op.duplicate_clone_from_projection);
139 }
140
setImage(KisImageWSP image)141 void KisDuplicateOpOption::setImage(KisImageWSP image)
142 {
143 m_optionWidget->m_image = image;
144 }
145