[krita] plugins/dockers/animation: Implement Toggle Onion Skins shortcut

Dmitry Kazakov dimula73 at gmail.com
Fri May 13 14:46:10 UTC 2016


Git commit dfe126f538d0d0f779ed5cec6b875a05442c8947 by Dmitry Kazakov.
Committed on 13/05/2016 at 14:45.
Pushed by dkazakov into branch 'master'.

Implement Toggle Onion Skins shortcut

Now you can assign this shortcut in the shortcuts
configuration widget. It doesn't introduce any new string
because it was defined in krita.action long time ago but
not used :)

CC:kimageshop at kde.org
Fixes T2441

M  +6    -0    plugins/dockers/animation/kis_equalizer_widget.cpp
M  +2    -0    plugins/dockers/animation/kis_equalizer_widget.h
M  +25   -3    plugins/dockers/animation/onion_skins_docker.cpp
M  +5    -0    plugins/dockers/animation/onion_skins_docker.h

http://commits.kde.org/krita/dfe126f538d0d0f779ed5cec6b875a05442c8947

diff --git a/plugins/dockers/animation/kis_equalizer_widget.cpp b/plugins/dockers/animation/kis_equalizer_widget.cpp
index e1bd848..eaaf711 100644
--- a/plugins/dockers/animation/kis_equalizer_widget.cpp
+++ b/plugins/dockers/animation/kis_equalizer_widget.cpp
@@ -100,6 +100,12 @@ void KisEqualizerWidget::setValues(const EqualizerValues &v)
     }
 }
 
+void KisEqualizerWidget::toggleMasterSwitch()
+{
+    const bool currentState = m_d->columns[0]->state();
+    m_d->columns[0]->setState(!currentState);
+}
+
 void KisEqualizerWidget::resizeEvent(QResizeEvent *event)
 {
     Q_UNUSED(event);
diff --git a/plugins/dockers/animation/kis_equalizer_widget.h b/plugins/dockers/animation/kis_equalizer_widget.h
index de5a73d..454af6f 100644
--- a/plugins/dockers/animation/kis_equalizer_widget.h
+++ b/plugins/dockers/animation/kis_equalizer_widget.h
@@ -44,6 +44,8 @@ public:
     EqualizerValues getValues() const;
     void setValues(const EqualizerValues &values);
 
+    void toggleMasterSwitch();
+
     void resizeEvent(QResizeEvent *event);
 
     void mouseMoveEvent(QMouseEvent *ev);
diff --git a/plugins/dockers/animation/onion_skins_docker.cpp b/plugins/dockers/animation/onion_skins_docker.cpp
index 7646287..230f490 100644
--- a/plugins/dockers/animation/onion_skins_docker.cpp
+++ b/plugins/dockers/animation/onion_skins_docker.cpp
@@ -27,6 +27,9 @@
 #include "kis_image_config.h"
 #include "kis_onion_skin_compositor.h"
 #include "kis_signals_blocker.h"
+#include "KisViewManager.h"
+#include "kis_action_manager.h"
+#include "kis_action.h"
 
 #include "kis_equalizer_widget.h"
 
@@ -36,7 +39,8 @@ static const int MAX_SKIN_COUNT = 10;
 OnionSkinsDocker::OnionSkinsDocker(QWidget *parent) :
     QDockWidget(i18n("Onion Skins"), parent),
     ui(new Ui::OnionSkinsDocker),
-    m_updatesCompressor(300, KisSignalCompressor::FIRST_ACTIVE)
+    m_updatesCompressor(300, KisSignalCompressor::FIRST_ACTIVE),
+    m_toggleOnionSkinsAction(0)
 {
     QWidget* mainWidget = new QWidget(this);
     setWidget(mainWidget);
@@ -94,9 +98,27 @@ void OnionSkinsDocker::unsetCanvas()
 {
 }
 
-void OnionSkinsDocker::setMainWindow(KisViewManager *kisview)
+void OnionSkinsDocker::setMainWindow(KisViewManager *view)
 {
-    Q_UNUSED(kisview);
+    KisActionManager *actionManager = view->actionManager();
+
+    m_toggleOnionSkinsAction = actionManager->createAction("toggle_onion_skin");
+    connect(m_toggleOnionSkinsAction, SIGNAL(triggered()), SLOT(slotToggleOnionSkins()));
+
+    slotUpdateIcons();
+    connect(view->mainWindow(), SIGNAL(themeChanged()), this, SLOT(slotUpdateIcons()));
+}
+
+void OnionSkinsDocker::slotToggleOnionSkins()
+{
+    m_equalizerWidget->toggleMasterSwitch();
+}
+
+void OnionSkinsDocker::slotUpdateIcons()
+{
+    if (m_toggleOnionSkinsAction) {
+        m_toggleOnionSkinsAction->setIcon(KisIconUtils::loadIcon("onion_skin_options"));
+    }
 }
 
 void OnionSkinsDocker::slotShowAdditionalSettings(bool value)
diff --git a/plugins/dockers/animation/onion_skins_docker.h b/plugins/dockers/animation/onion_skins_docker.h
index cd3e715..c429ca3 100644
--- a/plugins/dockers/animation/onion_skins_docker.h
+++ b/plugins/dockers/animation/onion_skins_docker.h
@@ -24,6 +24,8 @@
 #include <kis_mainwindow_observer.h>
 #include "kis_signal_compressor.h"
 
+class KisAction;
+
 namespace Ui {
 class OnionSkinsDocker;
 }
@@ -48,6 +50,7 @@ private:
 
     KisSignalCompressor m_updatesCompressor;
     KisEqualizerWidget *m_equalizerWidget;
+    KisAction *m_toggleOnionSkinsAction;
 
 private:
     void loadSettings();
@@ -55,6 +58,8 @@ private:
 private Q_SLOTS:
     void changed();
     void slotShowAdditionalSettings(bool value);
+    void slotUpdateIcons();
+    void slotToggleOnionSkins();
 };
 
 #endif // ONION_SKINS_DOCKER_H


More information about the kimageshop mailing list