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