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

List:       kde-commits
Subject:    [calligra/krita-scripting-rempt] krita/plugins/extensions/pykrita: introduce a viewextension class a
From:       Cyrille Berger <cberger () cberger ! net>
Date:       2015-05-08 18:51:09
Message-ID: E1YqnMb-0001IW-LO () scm ! kde ! org
[Download RAW message or body]

Git commit 39c3e54365939c088b71dd9d3dd929298bcb8c52 by Cyrille Berger.
Committed on 08/05/2015 at 18:50.
Pushed by berger into branch 'krita-scripting-rempt'.

introduce a viewextension class and now make it possible to show actions in the menu again

M  +2    -0    krita/plugins/extensions/pykrita/libkis/CMakeLists.txt
M  +2    -2    krita/plugins/extensions/pykrita/libkis/application.h
M  +2    -2    krita/plugins/extensions/pykrita/libkis/document.h
M  +2    -2    krita/plugins/extensions/pykrita/libkis/image.h
M  +11   -0    krita/plugins/extensions/pykrita/libkis/krita.cpp
M  +9    -2    krita/plugins/extensions/pykrita/libkis/krita.h
M  +2    -4    krita/plugins/extensions/pykrita/libkis/mainwindow.h
M  +2    -2    krita/plugins/extensions/pykrita/libkis/node.h
M  +2    -2    krita/plugins/extensions/pykrita/libkis/view.h
C  +9    -15   krita/plugins/extensions/pykrita/libkis/viewextension.cpp [from: \
krita/plugins/extensions/pykrita/libkis/node.h - 071% similarity] C  +11   -17   \
krita/plugins/extensions/pykrita/libkis/viewextension.h [from: \
krita/plugins/extensions/pykrita/libkis/view.h - 071% similarity] C  +15   -23   \
krita/plugins/extensions/pykrita/libkis/viewmanager.cpp [from: \
krita/plugins/extensions/pykrita/libkis/mainwindow.h - 060% similarity] C  +11   -9    \
krita/plugins/extensions/pykrita/libkis/viewmanager.h [from: \
krita/plugins/extensions/pykrita/libkis/view.h - 068% similarity] M  +2    -0    \
krita/plugins/extensions/pykrita/sip/krita/krita.sip M  +2    -0    \
krita/plugins/extensions/pykrita/sip/krita/kritamod.sip A  +16   -0    \
krita/plugins/extensions/pykrita/sip/krita/viewextension.sip A  +13   -0    \
krita/plugins/extensions/pykrita/sip/krita/viewmanager.sip M  +1    -0    \
krita/plugins/extensions/pykrita/src/CMakeLists.txt M  +9    -3    \
krita/plugins/extensions/pykrita/src/plugin.cpp M  +8    -4    \
krita/plugins/extensions/pykrita/src/plugins/hello/hello.py

http://commits.kde.org/calligra/39c3e54365939c088b71dd9d3dd929298bcb8c52

diff --git a/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt \
b/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt index 18aa137..33a9649 100644
--- a/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt
+++ b/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt
@@ -9,6 +9,8 @@ set(kritalibkis_LIB_SRCS
     krita.cpp
     node.cpp
     view.cpp
+    viewextension.cpp
+    viewmanager.cpp
 )
 
 kde4_add_library(kritalibkis SHARED ${kritalibkis_LIB_SRCS} )
diff --git a/krita/plugins/extensions/pykrita/libkis/application.h \
b/krita/plugins/extensions/pykrita/libkis/application.h index 4033386..f503e46 100644
--- a/krita/plugins/extensions/pykrita/libkis/application.h
+++ b/krita/plugins/extensions/pykrita/libkis/application.h
@@ -26,9 +26,9 @@ class LIBKIS_EXPORT Application : public QObject
 public:
     explicit Application(QObject *parent = 0);
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 
 };
 
diff --git a/krita/plugins/extensions/pykrita/libkis/document.h \
b/krita/plugins/extensions/pykrita/libkis/document.h index dbf343c..c506a58 100644
--- a/krita/plugins/extensions/pykrita/libkis/document.h
+++ b/krita/plugins/extensions/pykrita/libkis/document.h
@@ -32,9 +32,9 @@ public:
 
     Image *image();
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 private:
 
     QPointer<KisDocument> m_document;
diff --git a/krita/plugins/extensions/pykrita/libkis/image.h \
b/krita/plugins/extensions/pykrita/libkis/image.h index 405cc16..88bbe6e 100644
--- a/krita/plugins/extensions/pykrita/libkis/image.h
+++ b/krita/plugins/extensions/pykrita/libkis/image.h
@@ -28,9 +28,9 @@ class LIBKIS_EXPORT Image : public QObject
 public:
     explicit Image(QObject *image, QObject *parent = 0);
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 private:
     KisImageWSP m_image;
 };
diff --git a/krita/plugins/extensions/pykrita/libkis/krita.cpp \
b/krita/plugins/extensions/pykrita/libkis/krita.cpp index 86b9444..ab2bc17 100644
--- a/krita/plugins/extensions/pykrita/libkis/krita.cpp
+++ b/krita/plugins/extensions/pykrita/libkis/krita.cpp
@@ -16,6 +16,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 #include "krita.h"
+#include "viewextension.h"
 
 #include <KisPart.h>
 
@@ -78,6 +79,16 @@ QAction *Krita::createAction(const QString &text)
     return action;
 }
 
+void Krita::addViewExtension(ViewExtension* _viewExtension)
+{
+    m_viewExtensions.append(_viewExtension);
+}
+
+QList< ViewExtension* > Krita::viewExtensions()
+{
+    return m_viewExtensions;
+}
+
 Krita* Krita::instance()
 {
     if (!s_instance)
diff --git a/krita/plugins/extensions/pykrita/libkis/krita.h \
b/krita/plugins/extensions/pykrita/libkis/krita.h index d15b5ae..75d5838 100644
--- a/krita/plugins/extensions/pykrita/libkis/krita.h
+++ b/krita/plugins/extensions/pykrita/libkis/krita.h
@@ -30,6 +30,8 @@
 
 #include <krita_export.h>
 
+class ViewExtension;
+
 class LIBKIS_EXPORT Krita : public QObject
 {
     Q_OBJECT
@@ -42,13 +44,18 @@ public:
     QList<Image*> images();
 
     QAction *createAction(const QString &text);
+    
+    void addViewExtension(ViewExtension* _viewExtension);
+    QList<ViewExtension*> viewExtensions();
+    
     static Krita* instance();
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 
 private:
     static Krita* s_instance;
+    QList<ViewExtension*> m_viewExtensions;
 };
 
 #endif // LIBKIS_KRITA_H
diff --git a/krita/plugins/extensions/pykrita/libkis/mainwindow.h \
b/krita/plugins/extensions/pykrita/libkis/mainwindow.h index ba4e58d..de3f605 100644
--- a/krita/plugins/extensions/pykrita/libkis/mainwindow.h
+++ b/krita/plugins/extensions/pykrita/libkis/mainwindow.h
@@ -22,17 +22,15 @@
 #include <krita_export.h>
 class KisMainWindow;
 
-#include <view.h>
-
 class LIBKIS_EXPORT MainWindow : public QObject
 {
     Q_OBJECT
 public:
     explicit MainWindow(KisMainWindow *mainWin, QObject *parent = 0);
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 
 
 private:
diff --git a/krita/plugins/extensions/pykrita/libkis/node.h \
b/krita/plugins/extensions/pykrita/libkis/node.h index 2df7714..3ff5b40 100644
--- a/krita/plugins/extensions/pykrita/libkis/node.h
+++ b/krita/plugins/extensions/pykrita/libkis/node.h
@@ -28,9 +28,9 @@ class LIBKIS_EXPORT Node : public QObject
 public:
     explicit Node(QObject *parent = 0);
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 
 };
 
diff --git a/krita/plugins/extensions/pykrita/libkis/view.h \
b/krita/plugins/extensions/pykrita/libkis/view.h index 2d7aaa1..635b015 100644
--- a/krita/plugins/extensions/pykrita/libkis/view.h
+++ b/krita/plugins/extensions/pykrita/libkis/view.h
@@ -30,9 +30,9 @@ class LIBKIS_EXPORT View : public QObject
 public:
     explicit View(KisView *view, QObject *parent = 0);
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 
 private:
 
diff --git a/krita/plugins/extensions/pykrita/libkis/node.h \
b/krita/plugins/extensions/pykrita/libkis/viewextension.cpp similarity index 71%
copy from krita/plugins/extensions/pykrita/libkis/node.h
copy to krita/plugins/extensions/pykrita/libkis/viewextension.cpp
index 2df7714..67f2d45 100644
--- a/krita/plugins/extensions/pykrita/libkis/node.h
+++ b/krita/plugins/extensions/pykrita/libkis/viewextension.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2014 Boudewijn Rempt <boud@valdyas.org>
+ *  Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
  *
  *  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
@@ -15,23 +15,17 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
-#ifndef LIBKIS_NODE_H
-#define LIBKIS_NODE_H
 
-#include <QObject>
+#include "viewextension.h"
 
-#include <krita_export.h>
+#include <QDebug>
 
-class LIBKIS_EXPORT Node : public QObject
+ViewExtension::ViewExtension(QObject* parent): QObject(parent)
 {
-    Q_OBJECT
-public:
-    explicit Node(QObject *parent = 0);
 
-signals:
+}
 
-public slots:
-
-};
-
-#endif // LIBKIS_NODE_H
+ViewExtension::~ViewExtension()
+{
+    qDebug() << "~";
+}
diff --git a/krita/plugins/extensions/pykrita/libkis/view.h \
b/krita/plugins/extensions/pykrita/libkis/viewextension.h similarity index 71%
copy from krita/plugins/extensions/pykrita/libkis/view.h
copy to krita/plugins/extensions/pykrita/libkis/viewextension.h
index 2d7aaa1..9da585c 100644
--- a/krita/plugins/extensions/pykrita/libkis/view.h
+++ b/krita/plugins/extensions/pykrita/libkis/viewextension.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2014 Boudewijn Rempt <boud@valdyas.org>
+ *  Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
  *
  *  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
@@ -15,29 +15,23 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
-#ifndef LIBKIS_VIEW_H
-#define LIBKIS_VIEW_H
 
-#include <QObject>
+#ifndef LIBKIS_VIEWEXTENSION_H
+#define LIBKIS_VIEWEXTENSION_H
 
 #include <krita_export.h>
 
-class KisView;
+#include <QObject>
+
+class ViewManager;
 
-class LIBKIS_EXPORT View : public QObject
+class LIBKIS_EXPORT ViewExtension : public QObject
 {
     Q_OBJECT
 public:
-    explicit View(KisView *view, QObject *parent = 0);
-
-signals:
-
-public slots:
-
-private:
-
-    KisView *m_view;
-
+    explicit ViewExtension(QObject *parent = 0);
+    virtual ~ViewExtension();
+    virtual void setup(ViewManager* _view) = 0;
 };
 
-#endif // LIBKIS_VIEW_H
+#endif
diff --git a/krita/plugins/extensions/pykrita/libkis/mainwindow.h \
b/krita/plugins/extensions/pykrita/libkis/viewmanager.cpp similarity index 60%
copy from krita/plugins/extensions/pykrita/libkis/mainwindow.h
copy to krita/plugins/extensions/pykrita/libkis/viewmanager.cpp
index ba4e58d..75d5a8c 100644
--- a/krita/plugins/extensions/pykrita/libkis/mainwindow.h
+++ b/krita/plugins/extensions/pykrita/libkis/viewmanager.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2014 Boudewijn Rempt <boud@valdyas.org>
+ *  Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
  *
  *  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
@@ -15,29 +15,21 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
-#ifndef LIBKIS_MAINWINDOW_H
-#define LIBKIS_MAINWINDOW_H
+#include "viewmanager.h"
 
-#include <QObject>
-#include <krita_export.h>
-class KisMainWindow;
+#include <kis_action.h>
+#include <kis_script_manager.h>
+#include <KisViewManager.h>
 
-#include <view.h>
-
-class LIBKIS_EXPORT MainWindow : public QObject
+ViewManager::ViewManager(KisViewManager *viewManager, QObject *parent)
+    : QObject(parent)
+    , m_viewManager(viewManager)
 {
-    Q_OBJECT
-public:
-    explicit MainWindow(KisMainWindow *mainWin, QObject *parent = 0);
-
-signals:
-
-public slots:
-
+}
 
-private:
-
-    KisMainWindow *m_mainWindow;
-};
-
-#endif // MAINWINDOW_H
+QAction *ViewManager::createAction(const QString& text)
+{
+    KisAction *action = new KisAction(text, m_viewManager);
+    m_viewManager->scriptManager()->addAction(action);
+    return action;
+}
diff --git a/krita/plugins/extensions/pykrita/libkis/view.h \
b/krita/plugins/extensions/pykrita/libkis/viewmanager.h similarity index 68%
copy from krita/plugins/extensions/pykrita/libkis/view.h
copy to krita/plugins/extensions/pykrita/libkis/viewmanager.h
index 2d7aaa1..9ec53b7 100644
--- a/krita/plugins/extensions/pykrita/libkis/view.h
+++ b/krita/plugins/extensions/pykrita/libkis/viewmanager.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2014 Boudewijn Rempt <boud@valdyas.org>
+ *  Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
  *
  *  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
@@ -15,28 +15,30 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
-#ifndef LIBKIS_VIEW_H
-#define LIBKIS_VIEW_H
+#ifndef LIBKIS_VIEWMANAGER_H
+#define LIBKIS_VIEWMANAGER_H
 
 #include <QObject>
 
 #include <krita_export.h>
 
-class KisView;
+class KisViewManager;
+class QAction;
 
-class LIBKIS_EXPORT View : public QObject
+class LIBKIS_EXPORT ViewManager : public QObject
 {
     Q_OBJECT
 public:
-    explicit View(KisView *view, QObject *parent = 0);
+    explicit ViewManager(KisViewManager *viewManager, QObject *parent = 0);
+    QAction *createAction(const QString &text);
 
-signals:
+Q_SIGNALS:
 
-public slots:
+public Q_SLOTS:
 
 private:
 
-    KisView *m_view;
+    KisViewManager *m_viewManager;
 
 };
 
diff --git a/krita/plugins/extensions/pykrita/sip/krita/krita.sip \
b/krita/plugins/extensions/pykrita/sip/krita/krita.sip index 3290629..11e33dd 100644
--- a/krita/plugins/extensions/pykrita/sip/krita/krita.sip
+++ b/krita/plugins/extensions/pykrita/sip/krita/krita.sip
@@ -16,5 +16,7 @@ public:
     QList<Image*> images();
 
     QAction *createAction(const QString &text);
+
+    void addViewExtension(ViewExtension* _viewExtension /TransferThis/);
 };
 
diff --git a/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip \
b/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip index af67f6f..50d35e5 100644
--- a/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip
+++ b/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip
@@ -18,3 +18,5 @@
 %Include krita.sip
 %Include node.sip
 %Include view.sip
+%Include viewextension.sip
+%Include viewmanager.sip
diff --git a/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip \
b/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip new file mode 100644
index 0000000..416a604
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip
@@ -0,0 +1,16 @@
+%Import QtCore/QtCoremod.sip
+%Import QtGui/QtGuimod.sip
+
+
+class ViewExtension : public QObject
+{
+
+%TypeHeaderCode
+#include "viewextension.h"
+#include <QDebug>
+%End
+
+public:
+    explicit ViewExtension(QObject *parent  /TransferThis/ = 0);
+    virtual void setup(ViewManager* _viewManager) = 0;
+};
diff --git a/krita/plugins/extensions/pykrita/sip/krita/viewmanager.sip \
b/krita/plugins/extensions/pykrita/sip/krita/viewmanager.sip new file mode 100644
index 0000000..186def7
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/sip/krita/viewmanager.sip
@@ -0,0 +1,13 @@
+%Import QtCore/QtCoremod.sip
+%Import QtGui/QtGuimod.sip
+
+class ViewManager : public QObject /NoDefaultCtors/ 
+{
+%TypeHeaderCode
+#include "viewmanager.h"
+%End
+
+public:
+    QAction *createAction(const QString &text);
+
+};
diff --git a/krita/plugins/extensions/pykrita/src/CMakeLists.txt \
b/krita/plugins/extensions/pykrita/src/CMakeLists.txt index 935bf9c..bf5b077 100644
--- a/krita/plugins/extensions/pykrita/src/CMakeLists.txt
+++ b/krita/plugins/extensions/pykrita/src/CMakeLists.txt
@@ -22,6 +22,7 @@ target_link_libraries(
     ${PYTHON_LIBRARY}
     kritaui
     kritalibbrush
+    kritalibkis
   )
 
 install(TARGETS kritapykrita DESTINATION ${PLUGIN_INSTALL_DIR})
diff --git a/krita/plugins/extensions/pykrita/src/plugin.cpp \
b/krita/plugins/extensions/pykrita/src/plugin.cpp index d5fa2cc..2e65fd9 100644
--- a/krita/plugins/extensions/pykrita/src/plugin.cpp
+++ b/krita/plugins/extensions/pykrita/src/plugin.cpp
@@ -26,6 +26,10 @@
 #include <kis_preference_set_registry.h>
 #include <pyqtpluginsettings.h>
 
+#include <libkis/krita.h>
+#include <libkis/viewextension.h>
+#include <libkis/viewmanager.h>
+
 K_PLUGIN_FACTORY(KritaPyQtPluginFactory, registerPlugin<KritaPyQtPlugin>();)
 K_EXPORT_PLUGIN(KritaPyQtPluginFactory("krita"))
 
@@ -63,9 +67,11 @@ KritaPyQtPlugin::KritaPyQtPlugin(QObject *parent, const QVariantList &)
         dbgScript << "Cannot load pykrita module";
         m_engine.setBroken();
     }
-
-
-
+    ViewManager* viewManager = new ViewManager(m_view);
+    Q_FOREACH (ViewExtension* ext, Krita::instance()->viewExtensions())
+    {
+        ext->setup(viewManager);
+    }
 }
 
 KritaPyQtPlugin::~KritaPyQtPlugin()
diff --git a/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py \
b/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py index b3f9e63..42527b9 100644
--- a/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py
+++ b/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py
@@ -1,10 +1,14 @@
 from PyQt4.QtGui import *
 from PyKrita4.krita import *
 
-import krita
-
 def hello():
     QMessageBox.information(QWidget(), "Test", "Hello World")
 
-ac = Krita.instance().createAction("Hello")
-ac.triggered.connect(hello)
+class HelloViewExtension(ViewExtension):
+  def __init__(self, parent):
+      super().__init__(parent)
+  def setup(self, viewManager):
+      action = viewManager.createAction("Hello")
+      action.triggered.connect(hello)
+
+Krita.instance().addViewExtension(HelloViewExtension(Krita.instance()))


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

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