Krita Source Code Documentation
Loading...
Searching...
No Matches
kistoolcropconfigwidget.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2012 Dan Leinir Turthra Jensen <admin@leinir.dk>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7
9#include "kis_tool_crop.h"
10#include <kis_icon.h>
12#include <QStandardItemModel>
13
14
16 : QWidget(parent)
17 , m_cropTool(cropTool)
18{
19 setupUi(this);
20
21 // update the UI based off data from crop tool
22 cmbType->setCurrentIndex(m_cropTool->cropType());
23 QStandardItemModel *cmbTypeModel = qobject_cast<QStandardItemModel *>(cmbType->model());
24 // Disable "Layer"
25 cmbTypeModel->item(2)->setEnabled(m_cropTool->cropTypeSelectable());
26 // Disable "Frame"
27 cmbTypeModel->item(3)->setEnabled(m_cropTool->cropTypeSelectable());
28
29 intHeight->setValue(m_cropTool->cropHeight());
30 intWidth->setValue(m_cropTool->cropWidth());
31 intX->setValue(m_cropTool->cropX());
32 intY->setValue(m_cropTool->cropY());
33 doubleRatio->setValue(m_cropTool->ratio());
34 cmbDecor->setCurrentIndex(m_cropTool->decoration());
35 boolGrow->setChecked(m_cropTool->allowGrow());
36 boolCenter->setChecked(m_cropTool->growCenter());
37
38 lockRatioButton->setChecked(m_cropTool->lockRatio());
39 lockHeightButton->setChecked(m_cropTool->lockHeight());
40 lockWidthButton->setChecked(m_cropTool->lockWidth());
41
42 QIcon lockedIcon = KisIconUtils::loadIcon("locked");
43 QIcon unlockedIcon = KisIconUtils::loadIcon("unlocked");
44 lockWidthButton->setIcon(lockWidthButton->isChecked() ? lockedIcon : unlockedIcon);
45 lockHeightButton->setIcon(lockHeightButton->isChecked() ? lockedIcon : unlockedIcon);
46 lockRatioButton->setIcon(lockRatioButton->isChecked() ? lockedIcon : unlockedIcon);
47
49 connector = new KisAcyclicSignalConnector(this);
50 connector->connectForwardBool(lockRatioButton, SIGNAL(toggled(bool)), this, SIGNAL(lockRatioChanged(bool)));
51 connector->connectBackwardBool(cropTool, SIGNAL(lockRatioChanged(bool)), lockRatioButton, SLOT(setChecked(bool)));
52
53 connector = new KisAcyclicSignalConnector(this);
54 connector->connectForwardBool(lockHeightButton, SIGNAL(toggled(bool)), this, SIGNAL(lockHeightChanged(bool)));
55 connector->connectBackwardBool(cropTool, SIGNAL(lockHeightChanged(bool)), lockHeightButton, SLOT(setChecked(bool)));
56
57 connector = new KisAcyclicSignalConnector(this);
58 connector->connectForwardBool(lockWidthButton, SIGNAL(toggled(bool)), this, SIGNAL(lockWidthChanged(bool)));
59 connector->connectBackwardBool(cropTool, SIGNAL(lockWidthChanged(bool)), lockWidthButton, SLOT(setChecked(bool)));
60
61 connector = new KisAcyclicSignalConnector(this);
62 connector->connectForwardDouble(doubleRatio, SIGNAL(valueChanged(double)), this, SIGNAL(ratioChanged(double)));
63 connector->connectBackwardDouble(cropTool, SIGNAL(ratioChanged(double)), doubleRatio, SLOT(setValue(double)));
64
65 connector = new KisAcyclicSignalConnector(this);
66 connector->connectForwardInt(intHeight, SIGNAL(valueChanged(int)), this, SIGNAL(cropHeightChanged(int)));
67 connector->connectBackwardInt(cropTool, SIGNAL(cropHeightChanged(int)), intHeight, SLOT(setValue(int)));
68
69 connector = new KisAcyclicSignalConnector(this);
70 connector->connectForwardInt(intWidth, SIGNAL(valueChanged(int)), this, SIGNAL(cropWidthChanged(int)));
71 connector->connectBackwardInt(cropTool, SIGNAL(cropWidthChanged(int)), intWidth, SLOT(setValue(int)));
72
73 connector = new KisAcyclicSignalConnector(this);
74 connector->connectForwardInt(intX, SIGNAL(valueChanged(int)), this, SIGNAL(cropXChanged(int)));
75 connector->connectBackwardInt(cropTool, SIGNAL(cropXChanged(int)), intX, SLOT(setValue(int)));
76
77 connector = new KisAcyclicSignalConnector(this);
78 connector->connectForwardInt(intY, SIGNAL(valueChanged(int)), this, SIGNAL(cropYChanged(int)));
79 connector->connectBackwardInt(cropTool, SIGNAL(cropYChanged(int)), intY, SLOT(setValue(int)));
80
81 connector = new KisAcyclicSignalConnector(this);
82 connector->connectForwardInt(cmbType, SIGNAL(currentIndexChanged(int)), this, SIGNAL(cropTypeChanged(int)));
83 connector->connectBackwardInt(cropTool, SIGNAL(cropTypeChanged(int)), cmbType, SLOT(setCurrentIndex(int)));
84
85 connector = new KisAcyclicSignalConnector(this);
86 connector->connectForwardInt(cmbDecor, SIGNAL(currentIndexChanged(int)), this, SIGNAL(decorationChanged(int)));
87 connector->connectBackwardInt(cropTool, SIGNAL(decorationChanged(int)), cmbDecor, SLOT(setCurrentIndex(int)));
88
89 connector = new KisAcyclicSignalConnector(this);
90 connector->connectForwardBool(boolGrow, SIGNAL(toggled(bool)), this, SIGNAL(allowGrowChanged(bool)));
91 connector->connectBackwardBool(cropTool, SIGNAL(canGrowChanged(bool)), boolGrow, SLOT(setChecked(bool)));
92
93 connector = new KisAcyclicSignalConnector(this);
94 connector->connectForwardBool(boolCenter, SIGNAL(toggled(bool)), this, SIGNAL(growCenterChanged(bool)));
95 connector->connectBackwardBool(cropTool, SIGNAL(isCenteredChanged(bool)), boolCenter, SLOT(setChecked(bool)));
96
97 connector = new KisAcyclicSignalConnector(this);
98 //connector->connectForwardDouble();
99 connector->connectBackwardVoid(cropTool, SIGNAL(cropTypeSelectableChanged()), this, SLOT(cropTypeSelectableChanged()));
100
101 connect(lockWidthButton, SIGNAL(toggled(bool)), this, SLOT(updateLockWidthIcon()));
102 connect(lockHeightButton, SIGNAL(toggled(bool)), this, SLOT(updateLockHeightIcon()));
103 connect(lockRatioButton, SIGNAL(toggled(bool)), this, SLOT(updateLockRatioIcon()));
104
105}
106
108{
109 QStandardItemModel *cmbTypeModel = qobject_cast<QStandardItemModel *>(cmbType->model());
110 // Disable "Layer"
111 cmbTypeModel->item(2)->setEnabled(m_cropTool->cropTypeSelectable());
112 // Disable "Frame"
113 cmbTypeModel->item(3)->setEnabled(m_cropTool->cropTypeSelectable());
114}
115
117{
118 lockRatioButton->setIcon(lockRatioButton->isChecked() ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
119}
120
122{
123 lockWidthButton->setIcon(lockWidthButton->isChecked() ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
124}
125
127{
128 lockHeightButton->setIcon(lockHeightButton->isChecked() ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
129}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void connectForwardBool(QObject *sender, const char *signal, QObject *receiver, const char *method)
void connectBackwardInt(QObject *sender, const char *signal, QObject *receiver, const char *method)
void connectBackwardVoid(QObject *sender, const char *signal, QObject *receiver, const char *method)
void connectBackwardBool(QObject *sender, const char *signal, QObject *receiver, const char *method)
void connectBackwardDouble(QObject *sender, const char *signal, QObject *receiver, const char *method)
void connectForwardInt(QObject *sender, const char *signal, QObject *receiver, const char *method)
void connectForwardDouble(QObject *sender, const char *signal, QObject *receiver, const char *method)
KisToolCropConfigWidget(QWidget *parent, KisToolCrop *cropTool)
void lockHeightChanged(bool newLock)
void cropHeightChanged(int newHeight)
void cropTypeChanged(int cropType)
void growCenterChanged(bool newLock)
void lockRatioChanged(bool newLock)
void cropWidthChanged(int newWidth)
void cropXChanged(int newX)
void cropYChanged(int newY)
void decorationChanged(int newDecoration)
void lockWidthChanged(bool newLock)
void allowGrowChanged(bool newLock)
void ratioChanged(double newRatio)
bool growCenter() const
CropToolType cropType
bool cropTypeSelectable
bool allowGrow() const
QIcon loadIcon(const QString &name)