mirror of
https://github.com/thp/pyotherside.git
synced 2025-01-28 23:52:55 +08:00
Fix build, move worker code to qpython_worker
This commit is contained in:
parent
ad62b4dc2b
commit
defbab1467
@ -16,8 +16,11 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
**/
|
||||
|
||||
#include "pyotherside_plugin.h"
|
||||
#include "qpython_priv.h"
|
||||
#include "qpython.h"
|
||||
|
||||
#include "pyotherside_plugin.h"
|
||||
|
||||
|
||||
static void
|
||||
pyotherside_atexit()
|
||||
|
@ -20,55 +20,13 @@
|
||||
|
||||
#include "qpython.h"
|
||||
#include "qpython_priv.h"
|
||||
#include "qpython_worker.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
#include <QJSEngine>
|
||||
|
||||
|
||||
class QPythonWorker : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QPythonWorker(QPython *qpython);
|
||||
~QPythonWorker();
|
||||
|
||||
public slots:
|
||||
void process(QString func, QVariant args, QJSValue callback);
|
||||
void import(QString func, QJSValue callback);
|
||||
|
||||
signals:
|
||||
void finished(QVariant result, QJSValue callback);
|
||||
void imported(bool result, QJSValue callback);
|
||||
|
||||
private:
|
||||
QPython *qpython;
|
||||
};
|
||||
|
||||
QPythonWorker::QPythonWorker(QPython *qpython)
|
||||
: QObject()
|
||||
, qpython(qpython)
|
||||
{
|
||||
}
|
||||
|
||||
QPythonWorker::~QPythonWorker()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
QPythonWorker::process(QString func, QVariant args, QJSValue callback)
|
||||
{
|
||||
QVariant result = qpython->call_sync(func, args);
|
||||
emit finished(result, callback);
|
||||
}
|
||||
|
||||
void
|
||||
QPythonWorker::import(QString name, QJSValue callback)
|
||||
{
|
||||
bool result = qpython->importModule_sync(name);
|
||||
emit imported(result, callback);
|
||||
}
|
||||
|
||||
QPythonPriv *
|
||||
QPython::priv = NULL;
|
||||
|
||||
|
@ -259,9 +259,11 @@ class QPython : public QObject {
|
||||
**/
|
||||
void error(QString traceback);
|
||||
|
||||
private slots:
|
||||
/* For internal use only */
|
||||
void process(QString func, QVariant args, QJSValue callback);
|
||||
void import(QString name, QJSValue callback);
|
||||
|
||||
private slots:
|
||||
void receive(QVariant data);
|
||||
|
||||
void finished(QVariant result, QJSValue callback);
|
||||
|
@ -192,7 +192,7 @@ QPythonPriv::eval(QString expr)
|
||||
void
|
||||
QPythonPriv::closing()
|
||||
{
|
||||
enter();
|
||||
priv->enter();
|
||||
if (priv->atexit_callback != NULL) {
|
||||
PyObject *args = PyTuple_New(0);
|
||||
PyObject *result = PyObject_Call(priv->atexit_callback, args, NULL);
|
||||
@ -202,6 +202,6 @@ QPythonPriv::closing()
|
||||
Py_DECREF(priv->atexit_callback);
|
||||
priv->atexit_callback = NULL;
|
||||
}
|
||||
leave();
|
||||
priv->leave();
|
||||
}
|
||||
|
||||
|
46
src/qpython_worker.cpp
Normal file
46
src/qpython_worker.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
|
||||
/**
|
||||
* PyOtherSide: Asynchronous Python 3 Bindings for Qt 5
|
||||
* Copyright (c) 2011, 2013, Thomas Perl <m@thp.io>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
**/
|
||||
|
||||
#include "qpython.h"
|
||||
|
||||
#include "qpython_worker.h"
|
||||
|
||||
|
||||
QPythonWorker::QPythonWorker(QPython *qpython)
|
||||
: QObject()
|
||||
, qpython(qpython)
|
||||
{
|
||||
}
|
||||
|
||||
QPythonWorker::~QPythonWorker()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
QPythonWorker::process(QString func, QVariant args, QJSValue callback)
|
||||
{
|
||||
QVariant result = qpython->call_sync(func, args);
|
||||
emit finished(result, callback);
|
||||
}
|
||||
|
||||
void
|
||||
QPythonWorker::import(QString name, QJSValue callback)
|
||||
{
|
||||
bool result = qpython->importModule_sync(name);
|
||||
emit imported(result, callback);
|
||||
}
|
48
src/qpython_worker.h
Normal file
48
src/qpython_worker.h
Normal file
@ -0,0 +1,48 @@
|
||||
|
||||
/**
|
||||
* PyOtherSide: Asynchronous Python 3 Bindings for Qt 5
|
||||
* Copyright (c) 2011, 2013, Thomas Perl <m@thp.io>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
**/
|
||||
|
||||
#ifndef PYOTHERSIDE_QPYTHON_WORKER_H
|
||||
#define PYOTHERSIDE_QPYTHON_WORKER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
#include <QJSValue>
|
||||
|
||||
class QPython;
|
||||
|
||||
class QPythonWorker : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QPythonWorker(QPython *qpython);
|
||||
~QPythonWorker();
|
||||
|
||||
public slots:
|
||||
void process(QString func, QVariant args, QJSValue callback);
|
||||
void import(QString func, QJSValue callback);
|
||||
|
||||
signals:
|
||||
void finished(QVariant result, QJSValue callback);
|
||||
void imported(bool result, QJSValue callback);
|
||||
|
||||
private:
|
||||
QPython *qpython;
|
||||
};
|
||||
|
||||
#endif /* PYOTHERSIDE_QPYTHON_WORKER_H */
|
@ -23,6 +23,8 @@ HEADERS += pyotherside_plugin.h
|
||||
# Python QML Object
|
||||
SOURCES += qpython.cpp
|
||||
HEADERS += qpython.h
|
||||
SOURCES += qpython_worker.cpp
|
||||
HEADERS += qpython_worker.h
|
||||
SOURCES += qpython_priv.cpp
|
||||
HEADERS += qpython_priv.h
|
||||
|
||||
|
@ -5,9 +5,11 @@ SOURCES += tests.cpp
|
||||
HEADERS += tests.h
|
||||
|
||||
SOURCES += ../src/qpython.cpp
|
||||
SOURCES += ../src/qpython_worker.cpp
|
||||
SOURCES += ../src/qpython_priv.cpp
|
||||
|
||||
HEADERS += ../src/qpython.h
|
||||
HEADERS += ../src/qpython_worker.h
|
||||
HEADERS += ../src/qpython_priv.h
|
||||
HEADERS += ../src/converter.h
|
||||
HEADERS += ../src/qvariant_converter.h
|
||||
|
Loading…
x
Reference in New Issue
Block a user