Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_movetooloptionswidget.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 <ksharedconfig.h>
10#include <KoUnit.h>
11
12
13MoveToolOptionsWidget::MoveToolOptionsWidget(QWidget *parent, int resolution, QString toolId)
14 : QWidget(parent)
15 , m_resolution(resolution)
16 , m_showCoordinates(false)
17{
18 setupUi(this);
19 m_configGroup = KSharedConfig::openConfig()->group(toolId);
20
21
22 // load radio button
23 m_moveToolMode = static_cast<KisToolMove::MoveToolMode>(m_configGroup.readEntry("moveToolMode", 0));
25 radioSelectedLayer->setChecked(true);
27 radioFirstLayer->setChecked(true);
28 else
29 radioGroup->setChecked(true);
30
31 // Keyboard shortcut move step
32 m_moveStep = m_configGroup.readEntry<int>("moveToolStep", 1);
33 m_moveStepUnit = m_configGroup.readEntry<int>("moveToolUnit", KoUnit(KoUnit::Pixel).indexInListForUi());
34 cmbUnit->addItems(KoUnit::listOfUnitNameForUi());
35 cmbUnit->setCurrentIndex(m_moveStepUnit);
37
38 // Scale for large moves
39 m_moveScale = m_configGroup.readEntry<int>("moveToolScale", 10.0);
40 spinMoveScale->blockSignals(true);
41 spinMoveScale->setValue(m_moveScale);
42 spinMoveScale->setSuffix("x");
43 spinMoveScale->blockSignals(false);
44
45 // Switch mode for showing coordinates
46 m_showCoordinates = m_configGroup.readEntry("moveToolShowCoordinates", false);
47 connect(chkShowCoordinates, SIGNAL(toggled(bool)), SIGNAL(showCoordinatesChanged(bool)));
48
49 chkShowCoordinates->setChecked(m_showCoordinates);
50
51 translateXBox->setSuffix(i18n(" px"));
52 translateYBox->setSuffix(i18n(" px"));
53 translateXBox->setRange(-10000, 10000);
54 translateYBox->setRange(-10000, 10000);
55}
56
58{
59 const KoUnit selectedUnit = KoUnit::fromListForUi(newUnit);
60 qreal valueForUI;
61 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
62 spinMoveStep->setRange(0.0001, 10000.000);
63 spinMoveStep->setSingleStep(0.1);
64 spinMoveStep->setDecimals(4);
65 valueForUI = selectedUnit.toUserValue((qreal)m_moveStep / (qreal)m_resolution);
66 } else {
67 spinMoveStep->setRange(1, 10000);
68 spinMoveStep->setSingleStep(1);
69 spinMoveStep->setDecimals(0);
70 valueForUI = m_moveStep;
71 }
72
73 spinMoveStep->blockSignals(true);
74 spinMoveStep->setValue(valueForUI);
75 spinMoveStep->blockSignals(false);
76
77 connect(translateXBox, SIGNAL(editingFinished()), SIGNAL(sigRequestCommitOffsetChanges()), Qt::UniqueConnection);
78 connect(translateYBox, SIGNAL(editingFinished()), SIGNAL(sigRequestCommitOffsetChanges()), Qt::UniqueConnection);
79}
80
82{
83 const KoUnit selectedUnit = KoUnit::fromListForUi(m_moveStepUnit);
84 const double scaledUiMoveStep = (selectedUnit == KoUnit(KoUnit::Pixel)) ?
85 UIMoveStep : selectedUnit.fromUserValue(UIMoveStep * m_resolution);
86 m_moveStep = qRound(scaledUiMoveStep);
87 m_configGroup.writeEntry("moveToolStep", m_moveStep);
88}
89
91{
92 m_moveScale = UIMoveScale;
93 m_configGroup.writeEntry("moveToolScale", m_moveScale);
94}
95
96
98{
99 m_moveStepUnit = newUnit;
100 updateUIUnit(newUnit);
101 m_configGroup.writeEntry("moveToolUnit", newUnit);
102}
103
109
115
117{
118 Q_UNUSED(checked);
120}
121
123{
124 m_moveToolMode = newMode;
125 m_configGroup.writeEntry("moveToolMode", static_cast<int>(newMode));
126}
127
129{
130 m_showCoordinates = checked;
131 m_configGroup.writeEntry("moveToolShowCoordinates", m_showCoordinates);
132}
133
138
140{
141 return m_moveStep;
142}
143
145{
146 return m_moveScale;
147}
148
153
155{
156 chkShowCoordinates->setChecked(value);
157}
158
160{
161 translateXBox->setValue(newPos.x());
162 translateYBox->setValue(newPos.y());
163}
164
166{
167 m_TranslateX = arg1;
168 m_configGroup.writeEntry("moveToolChangedValueX", m_TranslateX);
169 Q_EMIT sigSetTranslateX(arg1);
170}
171
173{
174 m_TranslateY = arg1;
175 m_configGroup.writeEntry("moveToolChangedValueY", m_TranslateY);
176 Q_EMIT sigSetTranslateY(arg1);
177}
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
qreal fromUserValue(qreal value) const
Definition KoUnit.cpp:201
static KoUnit fromListForUi(int index, ListOptions listOptions=ListAll, qreal factor=1.0)
Definition KoUnit.cpp:80
@ Pixel
Definition KoUnit.h:82
static QStringList listOfUnitNameForUi(ListOptions listOptions=ListAll)
Returns the list of unit types for the UI, controlled with the given listOptions.
Definition KoUnit.cpp:69
qreal toUserValue(qreal ptValue, bool rounding=true) const
Definition KoUnit.cpp:186
int indexInListForUi(ListOptions listOptions=ListAll) const
Definition KoUnit.cpp:101
void on_spinMoveStep_valueChanged(double UIMoveStep)
void sigSetTranslateX(int value)
MoveToolOptionsWidget(QWidget *parent, int resolution, QString toolId)
KisToolMove::MoveToolMode m_moveToolMode
void sigSetTranslateY(int value)
void sigRequestCommitOffsetChanges()
void showCoordinatesChanged(bool value)
void on_spinMoveScale_valueChanged(double UIMoveScale)
void setMoveToolMode(KisToolMove::MoveToolMode newMode)