2018-02-21 16:37:46 +00:00
|
|
|
|
2019-02-13 21:53:52 +00:00
|
|
|
#ifdef CUTTER_ENABLE_PYTHON
|
|
|
|
|
2018-02-11 17:59:23 +00:00
|
|
|
#include "PythonAPI.h"
|
2019-02-22 16:50:45 +00:00
|
|
|
#include "core/Cutter.h"
|
2018-02-11 17:59:23 +00:00
|
|
|
|
2018-08-26 18:37:11 +00:00
|
|
|
#include "CutterConfig.h"
|
|
|
|
|
2018-02-21 16:37:46 +00:00
|
|
|
#include <QFile>
|
|
|
|
|
2018-02-11 17:59:23 +00:00
|
|
|
PyObject *api_version(PyObject *self, PyObject *null)
|
|
|
|
{
|
|
|
|
Q_UNUSED(self)
|
|
|
|
Q_UNUSED(null)
|
2019-02-11 19:05:53 +00:00
|
|
|
return PyUnicode_FromString(CUTTER_VERSION_FULL);
|
2018-02-11 17:59:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
PyObject *api_cmd(PyObject *self, PyObject *args)
|
|
|
|
{
|
|
|
|
Q_UNUSED(self);
|
|
|
|
char *command;
|
2018-03-21 20:32:32 +00:00
|
|
|
char *result = (char *) "";
|
2018-03-03 09:53:08 +00:00
|
|
|
QString cmdRes;
|
|
|
|
QByteArray cmdBytes;
|
2018-03-21 20:32:32 +00:00
|
|
|
if (PyArg_ParseTuple(args, "s:command", &command)) {
|
2018-03-03 09:53:08 +00:00
|
|
|
cmdRes = Core()->cmd(command);
|
|
|
|
cmdBytes = cmdRes.toLocal8Bit();
|
|
|
|
result = cmdBytes.data();
|
2018-02-11 17:59:23 +00:00
|
|
|
}
|
|
|
|
return PyUnicode_FromString(result);
|
|
|
|
}
|
|
|
|
|
2018-04-04 14:30:30 +00:00
|
|
|
PyObject *api_refresh(PyObject *self, PyObject *args)
|
|
|
|
{
|
|
|
|
Q_UNUSED(self);
|
|
|
|
Q_UNUSED(args);
|
|
|
|
Core()->triggerRefreshAll();
|
|
|
|
return Py_None;
|
|
|
|
}
|
|
|
|
|
2018-08-27 11:16:48 +00:00
|
|
|
PyObject *api_message(PyObject *self, PyObject *args, PyObject *kwargs)
|
|
|
|
{
|
|
|
|
Q_UNUSED(self);
|
|
|
|
char *message;
|
|
|
|
int debug = 0;
|
|
|
|
static const char *kwlist[] = { "", "debug", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i",
|
|
|
|
const_cast<char**>(kwlist),
|
|
|
|
&message, &debug)) {
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
Core()->message(QString(message), debug);
|
|
|
|
Py_INCREF(Py_None);
|
|
|
|
return Py_None;
|
|
|
|
}
|
|
|
|
|
2018-02-11 17:59:23 +00:00
|
|
|
PyMethodDef CutterMethods[] = {
|
2018-03-21 20:32:32 +00:00
|
|
|
{
|
|
|
|
"version", api_version, METH_NOARGS,
|
|
|
|
"Returns Cutter current version"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cmd", api_cmd, METH_VARARGS,
|
|
|
|
"Execute a command inside Cutter"
|
|
|
|
},
|
2018-04-04 14:30:30 +00:00
|
|
|
{
|
|
|
|
"refresh", api_refresh, METH_NOARGS,
|
|
|
|
"Refresh Cutter widgets"
|
|
|
|
},
|
2018-08-27 11:16:48 +00:00
|
|
|
{
|
2019-02-03 11:31:59 +00:00
|
|
|
"message", (PyCFunction)(void *)/* don't remove this double cast! */api_message, METH_VARARGS | METH_KEYWORDS,
|
2018-08-27 11:16:48 +00:00
|
|
|
"Print message"
|
|
|
|
},
|
2018-02-11 17:59:23 +00:00
|
|
|
{NULL, NULL, 0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
PyModuleDef CutterModule = {
|
2018-09-30 18:30:25 +00:00
|
|
|
PyModuleDef_HEAD_INIT, "_cutter", NULL, -1, CutterMethods,
|
2018-02-11 17:59:23 +00:00
|
|
|
NULL, NULL, NULL, NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
PyObject *PyInit_api()
|
|
|
|
{
|
|
|
|
return PyModule_Create(&CutterModule);
|
|
|
|
}
|
2018-02-21 16:37:46 +00:00
|
|
|
|
2019-02-22 16:50:45 +00:00
|
|
|
#endif // CUTTER_ENABLE_PYTHON
|