[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [krita/berger-scripting] krita/ui: add the script manager back
From:       Cyrille Berger <cberger () cberger ! net>
Date:       2015-12-09 21:13:33
Message-ID: E1a6m3J-0005XC-Uq () scm ! kde ! org
[Download RAW message or body]

Git commit ae927b20dea4309b31f84e3d8953dd69c8e01feb by Cyrille Berger.
Committed on 09/12/2015 at 21:12.
Pushed by berger into branch 'berger-scripting'.

add the script manager back

M  +1    -0    krita/ui/CMakeLists.txt
M  +2    -5    krita/ui/KisMainWindow.cpp
M  +9    -0    krita/ui/KisViewManager.cpp
M  +3    -0    krita/ui/KisViewManager.h
A  +82   -0    krita/ui/kis_script_manager.cpp     [License: LGPL (v2+)]
A  +48   -0    krita/ui/kis_script_manager.h     [License: LGPL (v2+)]

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

diff --git a/krita/ui/CMakeLists.txt b/krita/ui/CMakeLists.txt
index 4dd4084..2bbc7fc 100644
--- a/krita/ui/CMakeLists.txt
+++ b/krita/ui/CMakeLists.txt
@@ -121,6 +121,7 @@ set(kritaui_LIB_SRCS
     kis_popup_palette.cpp
     kis_png_converter.cpp
     kis_preference_set_registry.cpp
+    kis_script_manager.cpp
     kis_resource_server_provider.cpp
     kis_selection_decoration.cc
     kis_selection_manager.cc
diff --git a/krita/ui/KisMainWindow.cpp b/krita/ui/KisMainWindow.cpp
index 09d85c0..7990b9b 100644
--- a/krita/ui/KisMainWindow.cpp
+++ b/krita/ui/KisMainWindow.cpp
@@ -309,6 +309,8 @@ KisMainWindow::KisMainWindow()
 
     QMetaObject::invokeMethod(this, "initializeGeometry", Qt::QueuedConnection);
 
+    KoPluginLoader::instance()->load("Krita/ViewPlugin", "Type == 'Service' and \
([X-Krita-Version] == 28)", KoPluginLoader::PluginsConfig(), d->viewManager); +    
     KoToolBoxFactory toolBoxFactory;
     QDockWidget *toolbox = createDockWidget(&toolBoxFactory);
     toolbox->setFeatures(QDockWidget::DockWidgetMovable | \
QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable); @@ -360,11 \
+362,6 @@ KisMainWindow::KisMainWindow()  
     setAutoSaveSettings("krita", false);
 
-    KoPluginLoader::instance()->load("Krita/ViewPlugin",
-                                     "Type == 'Service' and ([X-Krita-Version] == \
                28)",
-                                     KoPluginLoader::PluginsConfig(),
-                                     viewManager());
-
     subWindowActivated();
     updateWindowMenu();
 
diff --git a/krita/ui/KisViewManager.cpp b/krita/ui/KisViewManager.cpp
index b9b8446..c34a11b 100644
--- a/krita/ui/KisViewManager.cpp
+++ b/krita/ui/KisViewManager.cpp
@@ -125,6 +125,7 @@
 #include "kra/kis_kra_loader.h"
 #include "widgets/kis_floating_message.h"
 #include "kis_signal_auto_connection.h"
+#include "kis_script_manager.h"
 #include "kis_icon_utils.h"
 
 
@@ -239,6 +240,7 @@ public:
         , guiUpdateCompressor(30, KisSignalCompressor::POSTPONE, _q)
         , mirrorManager(_q)
         , inputManager(_q)
+        , scriptManager(_q)
         , actionAuthor(0)
     {
     }
@@ -285,6 +287,7 @@ public:
     KisInputManager inputManager;
 
     KisSignalAutoConnectionsStore viewConnections;
+    KisScriptManager scriptManager;
     KSelectAction *actionAuthor; // Select action for author profile.
 
     QByteArray canvasState;
@@ -722,6 +725,7 @@ void KisViewManager::setupManagers()
 
     d->mirrorManager.setup(actionCollection());
 
+    d->scriptManager.setup(actionCollection());
 }
 
 void KisViewManager::updateGUI()
@@ -768,6 +772,11 @@ KisDocument *KisViewManager::document() const
     return 0;
 }
 
+KisScriptManager *KisViewManager::scriptManager() const
+{
+  return &d->scriptManager;
+}
+
 int KisViewManager::viewCount() const
 {
     KisMainWindow *mw  = qobject_cast<KisMainWindow*>(d->mainWindow);
diff --git a/krita/ui/KisViewManager.h b/krita/ui/KisViewManager.h
index 6d6b741..4a5e458 100644
--- a/krita/ui/KisViewManager.h
+++ b/krita/ui/KisViewManager.h
@@ -51,6 +51,7 @@ class KisUndoAdapter;
 class KisZoomManager;
 class KisPaintopBox;
 class KisActionManager;
+class KisScriptManager;
 class KisInputManager;
 
 /**
@@ -162,6 +163,8 @@ public:  // Krita specific interfaces
     KisUndoAdapter *undoAdapter();
 
     KisDocument *document() const;
+    
+    KisScriptManager *scriptManager() const;
 
     int viewCount() const;
 
diff --git a/krita/ui/kis_script_manager.cpp b/krita/ui/kis_script_manager.cpp
new file mode 100644
index 0000000..c8a3342
--- /dev/null
+++ b/krita/ui/kis_script_manager.cpp
@@ -0,0 +1,82 @@
+/*
+ *  Copyright (c) 2014 Boudewijn Rempt <boud@valdyas.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "kis_script_manager.h"
+
+#include <klocale.h>
+#include <kactionmenu.h>
+#include <kactioncollection.h>
+
+#include "KisViewManager.h"
+
+struct KisScriptManager::Private {
+    Private()
+        : actionCollection(0)
+        , view(0)
+        , scriptMenu(0)
+    {
+    }
+
+    QHash<KisFilter*, QAction*> script2Action;
+
+    KActionCollection *actionCollection;
+    KisViewManager *view;
+    KActionMenu *scriptMenu;
+};
+
+
+KisScriptManager::KisScriptManager(KisViewManager *view)
+    : QObject(view)
+    , d(new Private())
+{
+    d->view = view;
+}
+
+KisScriptManager::~KisScriptManager()
+{
+    delete d;
+}
+
+
+void KisScriptManager::setup(KActionCollection * ac)
+{
+    d->actionCollection = ac;
+    d->scriptMenu = new KActionMenu(i18n("Scripts"),this);
+    d->actionCollection->addAction("scripting", d->scriptMenu);
+}
+
+void KisScriptManager::updateGUI()
+{
+    if (!d->view) return;
+
+//    bool enable = false;
+
+//    KisNodeSP activeNode = d->view->activeNode();
+//    enable = activeNode && activeNode->hasEditablePaintDevice();
+
+//    d->reapplyAction->setEnabled(enable);
+
+//    foreach(KAction *action, d->script2Action.values()) {
+//        action->setEnabled(enable);
+    //    }
+}
+
+void KisScriptManager::addAction(QAction *action)
+{
+    d->scriptMenu->addAction(action);
+}
diff --git a/krita/ui/kis_script_manager.h b/krita/ui/kis_script_manager.h
new file mode 100644
index 0000000..615d653
--- /dev/null
+++ b/krita/ui/kis_script_manager.h
@@ -0,0 +1,48 @@
+/*
+ *  Copyright (c) 2014 Boudewijn Rempt <boud@valdyas.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_SCRIPT_MANAGER_H
+#define KIS_SCRIPT_MANAGER_H
+
+#include <QObject>
+
+#include <kritaui_export.h>
+
+class QAction;
+
+class KisViewManager;
+class KActionCollection;
+
+class KRITAUI_EXPORT KisScriptManager : public QObject
+{
+    Q_OBJECT
+public:
+    explicit KisScriptManager(KisViewManager * view);
+    ~KisScriptManager();
+
+    void setup(KActionCollection * ac);
+    void updateGUI();
+
+    void addAction(QAction *action);
+
+private:
+    struct Private;
+    Private * const d;
+};
+
+#endif // KIS_SCRIPT_MANAGER_H


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic