Masterwork From Distant Lands
ActivePublic

Authored by dkazakov on Jul 22 2016, 8:12 AM.
From 650bf5a5fae1ca53753c5746e718c67a52c27e18 Mon Sep 17 00:00:00 2001
From: Dmitry Kazakov <dimula73@gmail.com>
Date: Fri, 22 Jul 2016 11:09:21 +0300
Subject: [PATCH] Add an option to enable/disable the Show Coordinates option
in Move Tool
+ adds a checkbox in Tool Options docker
+ adds a shortcut for Move Tool
---
krita/data/actions/MoveTool.action | 10 ++
plugins/tools/basictools/kis_tool_move.cc | 32 +++++--
plugins/tools/basictools/kis_tool_move.h | 2 +
.../basictools/kis_tool_movetooloptionswidget.cpp | 21 +++++
.../basictools/kis_tool_movetooloptionswidget.h | 11 +++
plugins/tools/basictools/wdgmovetool.ui | 103 ++++++++++-----------
6 files changed, 117 insertions(+), 62 deletions(-)
diff --git a/krita/data/actions/MoveTool.action b/krita/data/actions/MoveTool.action
index 29a95e9..c231773 100644
--- a/krita/data/actions/MoveTool.action
+++ b/krita/data/actions/MoveTool.action
@@ -81,5 +81,15 @@
<isCheckable>false</isCheckable>
<text>Move right</text>
</Action>
+ <Action name="movetool-show-coordinates">
+ <iconText>Show Coordinates</iconText>
+ <shortcut>Ctrl+Alt+Shift+C</shortcut>
+ <toolTip>Show absolute coordinates and offset while move action</toolTip>
+ <icon></icon>
+ <whatsThis></whatsThis>
+ <statusTip></statusTip>
+ <isCheckable>true</isCheckable>
+ <text>Show Coordinates</text>
+ </Action>
</Actions>
</ActionCollection>
diff --git a/plugins/tools/basictools/kis_tool_move.cc b/plugins/tools/basictools/kis_tool_move.cc
index 2296383..26a9257 100644
--- a/plugins/tools/basictools/kis_tool_move.cc
+++ b/plugins/tools/basictools/kis_tool_move.cc
@@ -82,6 +82,8 @@ KisToolMove::KisToolMove(KoCanvasBase * canvas)
addAction("movetool-move-right-more", a);
connect(a, &QAction::triggered, [&](){moveDiscrete(MoveDirection::Right, true);});
+ m_showCoordinatesAction = actionRegistry->makeQAction("movetool-show-coordinates", this);
+ addAction("movetool-show-coordinates", m_showCoordinatesAction);
}
KisToolMove::~KisToolMove()
@@ -302,16 +304,21 @@ void KisToolMove::continueAction(KoPointerEvent *event)
QPoint pos = convertToPixelCoordAndSnap(event).toPoint();
- KisCanvas2 *kisCanvas = dynamic_cast<KisCanvas2*>(canvas());
- kisCanvas->viewManager()->
- showFloatingMessage(
- i18nc("floating message in move tool",
- "%1 px, %2 px (%3 px, %4 px)",
- (totalTopLeft + (pos - m_dragStart)).x(),
- (totalTopLeft + (pos - m_dragStart)).y(),
- (m_accumulatedOffset + pos - m_dragStart).x(),
- (m_accumulatedOffset + pos - m_dragStart).y()),
- QIcon(), 1000, KisFloatingMessage::High);
+ const bool showCoordinates =
+ m_optionsWidget ? m_optionsWidget->showCoordinates() : true;
+
+ if (showCoordinates) {
+ KisCanvas2 *kisCanvas = dynamic_cast<KisCanvas2*>(canvas());
+ kisCanvas->viewManager()->
+ showFloatingMessage(
+ i18nc("floating message in move tool",
+ "%1 px, %2 px (%3 px, %4 px)",
+ (totalTopLeft + (pos - m_dragStart)).x(),
+ (totalTopLeft + (pos - m_dragStart)).y(),
+ (m_accumulatedOffset + pos - m_dragStart).x(),
+ (m_accumulatedOffset + pos - m_dragStart).y()),
+ QIcon(), 1000, KisFloatingMessage::High);
+ }
pos = applyModifiers(event->modifiers(), pos);
drag(pos);
@@ -380,6 +387,11 @@ QWidget* KisToolMove::createOptionWidget()
m_optionsWidget->setFixedHeight(m_optionsWidget->sizeHint().height());
+ connect(m_showCoordinatesAction, SIGNAL(triggered(bool)), m_optionsWidget, SLOT(setShowCoordinates(bool)));
+ connect(m_optionsWidget, SIGNAL(showCoordinatesChanged(bool)), m_showCoordinatesAction, SLOT(setChecked(bool)));
+
+ m_showCoordinatesAction->setChecked(m_optionsWidget->showCoordinates());
+
return m_optionsWidget;
}
diff --git a/plugins/tools/basictools/kis_tool_move.h b/plugins/tools/basictools/kis_tool_move.h
index c6490c6..1449706 100644
--- a/plugins/tools/basictools/kis_tool_move.h
+++ b/plugins/tools/basictools/kis_tool_move.h
@@ -120,6 +120,8 @@ private:
KisNodeList m_currentlyProcessingNodes;
int m_resolution;
+
+ QAction *m_showCoordinatesAction;
};
diff --git a/plugins/tools/basictools/kis_tool_movetooloptionswidget.cpp b/plugins/tools/basictools/kis_tool_movetooloptionswidget.cpp
index 3234323..288b018 100644
--- a/plugins/tools/basictools/kis_tool_movetooloptionswidget.cpp
+++ b/plugins/tools/basictools/kis_tool_movetooloptionswidget.cpp
@@ -25,6 +25,7 @@
MoveToolOptionsWidget::MoveToolOptionsWidget(QWidget *parent, int resolution, QString toolId)
: QWidget(parent)
, m_resolution(resolution)
+ , m_showCoordinates(false)
{
setupUi(this);
m_configGroup = KSharedConfig::openConfig()->group(toolId);
@@ -53,6 +54,10 @@ MoveToolOptionsWidget::MoveToolOptionsWidget(QWidget *parent, int resolution, QS
spinMoveScale->setSuffix("x");
spinMoveScale->blockSignals(false);
+ m_showCoordinates = m_configGroup.readEntry("moveToolShowCoordinates", false);
+ connect(chkShowCoordinates, SIGNAL(toggled(bool)), SIGNAL(showCoordinatesChanged(bool)));
+
+ chkShowCoordinates->setChecked(m_showCoordinates);
}
void MoveToolOptionsWidget::updateUIUnit(int newUnit)
@@ -117,6 +122,12 @@ void MoveToolOptionsWidget::on_radioGroup_toggled(bool checked)
setMoveToolMode(KisToolMove::MoveGroup);
}
+void MoveToolOptionsWidget::on_chkShowCoordinates_toggled(bool checked)
+{
+ m_showCoordinates = checked;
+ m_configGroup.writeEntry("moveToolShowCoordinates", m_showCoordinates);
+}
+
void MoveToolOptionsWidget::setMoveToolMode(KisToolMove::MoveToolMode newMode)
{
m_moveToolMode = newMode;
@@ -128,6 +139,16 @@ KisToolMove::MoveToolMode MoveToolOptionsWidget::mode()
return m_moveToolMode;
}
+bool MoveToolOptionsWidget::showCoordinates() const
+{
+ return m_showCoordinates;
+}
+
+void MoveToolOptionsWidget::setShowCoordinates(bool value)
+{
+ chkShowCoordinates->setChecked(value);
+}
+
int MoveToolOptionsWidget::moveStep()
{
return m_moveStep;
diff --git a/plugins/tools/basictools/kis_tool_movetooloptionswidget.h b/plugins/tools/basictools/kis_tool_movetooloptionswidget.h
index 9b21e87..f42d13f 100644
--- a/plugins/tools/basictools/kis_tool_movetooloptionswidget.h
+++ b/plugins/tools/basictools/kis_tool_movetooloptionswidget.h
@@ -33,6 +33,11 @@ public:
double moveScale();
KisToolMove::MoveToolMode mode();
+ bool showCoordinates() const;
+
+public Q_SLOTS:
+ void setShowCoordinates(bool value);
+
private Q_SLOTS:
void on_spinMoveStep_valueChanged(double UIMoveStep);
@@ -46,6 +51,11 @@ private Q_SLOTS:
void on_radioGroup_toggled(bool checked);
+ void on_chkShowCoordinates_toggled(bool checked);
+
+Q_SIGNALS:
+ void showCoordinatesChanged(bool value);
+
private:
void updateUIUnit(int newUnit);
void setMoveToolMode(KisToolMove::MoveToolMode newMode);
@@ -54,6 +64,7 @@ private:
int m_moveStepUnit;
qreal m_moveScale;
KisToolMove::MoveToolMode m_moveToolMode;
+ bool m_showCoordinates;
KConfigGroup m_configGroup;
};
diff --git a/plugins/tools/basictools/wdgmovetool.ui b/plugins/tools/basictools/wdgmovetool.ui
index 5ffb53c..460d811 100644
--- a/plugins/tools/basictools/wdgmovetool.ui
+++ b/plugins/tools/basictools/wdgmovetool.ui
@@ -6,12 +6,12 @@
<rect>
<x>0</x>
<y>0</y>
- <width>246</width>
- <height>130</height>
+ <width>265</width>
+ <height>278</height>
</rect>
</property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
<widget class="QGroupBox" name="grpSelectionMethod">
<property name="title">
<string>Selection Mode</string>
@@ -56,70 +56,69 @@
</layout>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QWidget" name="SpecialSpacer"/>
- </item>
- <item row="2" column="0">
+ <item>
<widget class="QGroupBox" name="grpMoveStep">
<property name="title">
<string>Shortcut Move Distance</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
- <item row="0" column="0">
- <widget class="QDoubleSpinBox" name="spinMoveStep">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>100000</number>
- </property>
- <property name="value">
- <number>1</number>
- </property>
- <property name="toolTip">
- <string>Number of pixels to move after move shortcut keypress.</string>
- </property>
- </widget>
- </item>
+ <item row="0" column="0">
+ <widget class="QDoubleSpinBox" name="spinMoveStep">
+ <property name="toolTip">
+ <string>Number of pixels to move after move shortcut keypress.</string>
+ </property>
+ <property name="minimum">
+ <double>1.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>100000.000000000000000</double>
+ </property>
+ <property name="value">
+ <double>1.000000000000000</double>
+ </property>
+ </widget>
+ </item>
<item row="0" column="1">
- <widget class="QComboBox" name="cmbUnit"/>
+ <widget class="QComboBox" name="cmbUnit"/>
</item>
<item row="1" column="0">
- <widget class="QDoubleSpinBox" name="spinMoveScale">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>1000</number>
- </property>
- <property name="value">
- <number>10</number>
- </property>
- <property name="toolTip">
- <string>When holding shift, move keyboard shortcuts scale up by this amount.</string>
- </property>
- </widget>
+ <widget class="QDoubleSpinBox" name="spinMoveScale">
+ <property name="toolTip">
+ <string>When holding shift, move keyboard shortcuts scale up by this amount.</string>
+ </property>
+ <property name="minimum">
+ <double>1.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="value">
+ <double>10.000000000000000</double>
+ </property>
+ </widget>
</item>
<item row="1" column="1">
- <widget class="QLabel" name="scaleLabel">
- <property name="text">
- <string>Large Move Scale</string>
- </property>
- </widget>
+ <widget class="QLabel" name="scaleLabel">
+ <property name="text">
+ <string>Large Move Scale</string>
+ </property>
+ </widget>
</item>
</layout>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="chkShowCoordinates">
+ <property name="text">
+ <string>Show Coordinates</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="SpecialSpacer" native="true"/>
+ </item>
</layout>
</widget>
- <customwidgets>
- <customwidget>
- <class>KisSliderSpinBox</class>
- <extends>QWidget</extends>
- <header location="global">kis_slider_spin_box.h</header>
- <container>1</container>
- </customwidget>
- </customwidgets>
<resources/>
<connections/>
</ui>
--
2.6.4
dkazakov edited the content of this paste. (Show Details)Jul 22 2016, 8:12 AM
dkazakov changed the title of this paste from untitled to Masterwork From Distant Lands.