[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [krita/berger-scripting] krita/plugins/extensions/pykrita: introduce a viewextension class and now m
From: Cyrille Berger <cberger () cberger ! net>
Date: 2015-12-09 21:13:32
Message-ID: E1a6m3I-0005XC-1d () scm ! kde ! org
[Download RAW message or body]
Git commit 13427686dd41fdd75ca08ae9f597bd738adfc0e3 by Cyrille Berger.
Committed on 09/12/2015 at 19:42.
Pushed by berger into branch 'berger-scripting'.
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/krita/13427686dd41fdd75ca08ae9f597bd738adfc0e3
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