[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/krita-scripting-rempt] krita/plugins/extensions/pyqt/src: Try loading the plugins
From: Boudewijn Rempt <boud () valdyas ! org>
Date: 2014-07-29 14:03:43
Message-ID: E1XC80F-0003UD-3p () scm ! kde ! org
[Download RAW message or body]
Git commit 43a8e8239e4bb1a8078968aa6be6e8e3f83b5a21 by Boudewijn Rempt.
Committed on 29/07/2014 at 09:38.
Pushed by rempt into branch 'krita-scripting-rempt'.
Try loading the plugins
M +4 -2 krita/plugins/extensions/pyqt/src/engine.cpp
M +31 -0 krita/plugins/extensions/pyqt/src/krita/__init__.py
M +18 -0 krita/plugins/extensions/pyqt/src/plugin.cpp
M +0 -1 krita/plugins/extensions/pyqt/src/plugins/hello/__init__.py
http://commits.kde.org/calligra/43a8e8239e4bb1a8078968aa6be6e8e3f83b5a21
diff --git a/krita/plugins/extensions/pyqt/src/engine.cpp \
b/krita/plugins/extensions/pyqt/src/engine.cpp index e54fc35..0f544b1 100644
--- a/krita/plugins/extensions/pyqt/src/engine.cpp
+++ b/krita/plugins/extensions/pyqt/src/engine.cpp
@@ -217,8 +217,9 @@ void PyKrita::Engine::unloadAllModules()
QString PyKrita::Engine::tryInitializeGetFailureReason()
{
dbgScript << "Construct the Python engine for Python" << PY_MAJOR_VERSION << \
PY_MINOR_VERSION;
- if (0 != PyImport_AppendInittab(Python::PYKRITA_ENGINE, PYKRITA_INIT))
+ if (0 != PyImport_AppendInittab(Python::PYKRITA_ENGINE, PYKRITA_INIT)) {
return i18nc("@info:tooltip ", "Cannot load built-in <icode>pykrita</icode> \
module"); + }
Python::libraryLoad();
Python py = Python();
@@ -249,8 +250,9 @@ QString PyKrita::Engine::tryInitializeGetFailureReason()
// Initialize our built-in module.
pythonInitwrapper(this);
- if (!s_pykrita)
+ if (!s_pykrita) {
return i18nc("@info:tooltip ", "No <icode>pykrita</icode> built-in module");
+ }
// Setup global configuration
m_configuration = PyDict_New();
diff --git a/krita/plugins/extensions/pyqt/src/krita/__init__.py \
b/krita/plugins/extensions/pyqt/src/krita/__init__.py index e69de29..d660f7c 100644
--- a/krita/plugins/extensions/pyqt/src/krita/__init__.py
+++ b/krita/plugins/extensions/pyqt/src/krita/__init__.py
@@ -0,0 +1,31 @@
+import pykrita
+
+@pateEventHandler('_pluginLoaded')
+def on_load(plugin):
+ if plugin in init.functions:
+ # Call registered init functions for the plugin
+ init.fire(plugin=plugin)
+ del init.functions[plugin]
+ return True
+
+
+@pateEventHandler('_pluginUnloading')
+def on_unload(plugin):
+ if plugin in unload.functions:
+ # Deinitialize plugin
+ unload.fire(plugin=plugin)
+ del unload.functions[plugin]
+ return True
+
+
+@pateEventHandler('_pykritaLoaded')
+def on_pate_loaded():
+ kDebug('PYKRITA LOADED')
+ return True
+
+
+@pateEventHandler('_pykritaUnloading')
+def on_pate_unloading():
+ kDebug('UNLOADING PYKRITA')
+ return True
+
diff --git a/krita/plugins/extensions/pyqt/src/plugin.cpp \
b/krita/plugins/extensions/pyqt/src/plugin.cpp index c7757fc..fedde9f 100644
--- a/krita/plugins/extensions/pyqt/src/plugin.cpp
+++ b/krita/plugins/extensions/pyqt/src/plugin.cpp
@@ -49,6 +49,24 @@ KritaPyQtPlugin::KritaPyQtPlugin(QObject *parent, const \
QVariantList &) delete settings;
preferenceSetRegistry->add("PyQtPluginSettingsFactory", settingsFactory);
+
+ // Try to import the `pykrita` module
+ PyKrita::Python py = PyKrita::Python();
+ PyObject* pykritaPackage = py.moduleImport("pykrita");
+ if (pykritaPackage)
+ {
+ dbgKrita << "Loaded pykrita, now load plugins";
+ m_engine.tryLoadEnabledPlugins();
+ py.functionCall("_pykritaLoaded");
+ }
+ else
+ {
+ dbgScript << "Cannot load pykrita module";
+ m_engine.setBroken();
+ }
+
+
+
}
KritaPyQtPlugin::~KritaPyQtPlugin()
diff --git a/krita/plugins/extensions/pyqt/src/plugins/hello/__init__.py \
b/krita/plugins/extensions/pyqt/src/plugins/hello/__init__.py index de744cb..43dc36c \
100644
--- a/krita/plugins/extensions/pyqt/src/plugins/hello/__init__.py
+++ b/krita/plugins/extensions/pyqt/src/plugins/hello/__init__.py
@@ -1,2 +1 @@
# let's make a module
-from .hello import *
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic