24#include <QCoreApplication>
26#include <PyFalkon/pyfalkon_python.h>
50static void set_path(
const QStringList &scriptPaths)
52 const QString originalPath = QString::fromLocal8Bit(qgetenv(
"PYTHONPATH"));
54 QStringList paths = scriptPaths;
55 paths.append(originalPath);
57 qputenv(
"PYTHONPATH", paths.join(
QL1C(
':')).toLocal8Bit());
70 qWarning() <<
"Failed to initialize Falkon module!";
75 qAddPostRoutine(cleanup);
87 if (QFileInfo(name).isAbsolute()) {
91 if (fullPath.isEmpty()) {
92 qWarning() <<
"Python plugin" << name <<
"not found";
99 plugin->
pluginId =
QSL(
"python:%1").arg(QFileInfo(name).fileName());
111 PyObject *module =
static_cast<PyObject*
>(plugin->
data.value<
void*>());
117 const QString moduleName = plugin->
pluginId.mid(7);
121 module = PyImport_ImportModule(qPrintable(moduleName));
124 qWarning() <<
"Failed to import module" << moduleName;
128 qWarning() <<
"No plugin registered! Falkon.registerPlugin() must be called from script.";
134 plugin->
data = QVariant::fromValue(
static_cast<void*
>(module));
static QStringList allPaths(Path type)
static QString locate(Path type, const QString &file)
static PluginSpec createSpec(const QJsonObject &metaData)
void * pyfalkon_load_plugin(const QString &name)
PluginInterface * pluginInterface
PyObject * PyInit_PyFalkon()
QHash< PyObject *, PluginInterface * > pluginInstances
void pyfalkon_register_plugin(PluginInterface *plugin)
void pyfalkon_init_plugin(Plugins::Plugin *plugin)
PluginInterface * instance