From 303cc0b561a024eee8399f6d699fb075f3a32413 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Wed, 27 Nov 2019 09:42:03 +1300 Subject: [PATCH] Python support: merge duplicated code (#2225). --- src/misc/opensimulation.cpp.inl | 49 +++++++++++++++++++ .../simulationexperimentviewpythonwrapper.cpp | 47 ++---------------- .../src/simulationsupportpythonwrapper.cpp | 43 +--------------- 3 files changed, 53 insertions(+), 86 deletions(-) create mode 100644 src/misc/opensimulation.cpp.inl diff --git a/src/misc/opensimulation.cpp.inl b/src/misc/opensimulation.cpp.inl new file mode 100644 index 0000000000..697eb43698 --- /dev/null +++ b/src/misc/opensimulation.cpp.inl @@ -0,0 +1,49 @@ +static PyObject * openSimulation(PyObject *pSelf, PyObject *pArgs) +{ + Q_UNUSED(pSelf) + + // Open a simulation + + PyObject *bytes; + + if (PyArg_ParseTuple(pArgs, "O&", PyUnicode_FSConverter, &bytes) == 0) { // NOLINT(cppcoreguidelines-pro-type-vararg) +#include "pythonbegin.h" + Py_RETURN_NONE; +#include "pythonend.h" + } + + char *string; + Py_ssize_t len; + + PyBytes_AsStringAndSize(bytes, &string, &len); + + bool isLocalFile; + QString fileNameOrUrl; + + Core::checkFileNameOrUrl(QString::fromUtf8(string, int(len)), isLocalFile, fileNameOrUrl); + +#include "pythonbegin.h" + Py_DECREF(bytes); +#include "pythonend.h" + + QString error = isLocalFile? +#ifdef GUI_SUPPORT + Core::centralWidget()->openFile(fileNameOrUrl, + Core::File::Type::Local, + QString(), false): + Core::centralWidget()->openRemoteFile(fileNameOrUrl, false); +#else + Core::openFile(fileNameOrUrl): + Core::openRemoteFile(fileNameOrUrl); +#endif + + if (!error.isEmpty()) { + PyErr_SetString(PyExc_IOError, qPrintable(error)); + + return nullptr; + } + + return initializeSimulation(isLocalFile? + fileNameOrUrl: + Core::FileManager::instance()->fileName(fileNameOrUrl)); +} diff --git a/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewpythonwrapper.cpp b/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewpythonwrapper.cpp index eb31480dbb..16cf6a4cbd 100644 --- a/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewpythonwrapper.cpp +++ b/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewpythonwrapper.cpp @@ -109,50 +109,9 @@ static PyObject * initializeSimulation(const QString &pFileName) //============================================================================== -static PyObject * openSimulation(PyObject *pSelf, PyObject *pArgs) -{ - Q_UNUSED(pSelf) - - // Open a simulation - - PyObject *bytes; - - if (PyArg_ParseTuple(pArgs, "O&", PyUnicode_FSConverter, &bytes) == 0) { // NOLINT(cppcoreguidelines-pro-type-vararg) -#include "pythonbegin.h" - Py_RETURN_NONE; -#include "pythonend.h" - } - - char *string; - Py_ssize_t len; - - PyBytes_AsStringAndSize(bytes, &string, &len); - - bool isLocalFile; - QString fileNameOrUrl; - - Core::checkFileNameOrUrl(QString::fromUtf8(string, int(len)), isLocalFile, fileNameOrUrl); - -#include "pythonbegin.h" - Py_DECREF(bytes); -#include "pythonend.h" - - QString error = isLocalFile? - Core::centralWidget()->openFile(fileNameOrUrl, - Core::File::Type::Local, - QString(), false): - Core::centralWidget()->openRemoteFile(fileNameOrUrl, false); - - if (!error.isEmpty()) { - PyErr_SetString(PyExc_IOError, qPrintable(error)); - - return nullptr; - } - - return initializeSimulation(isLocalFile? - fileNameOrUrl: - Core::FileManager::instance()->fileName(fileNameOrUrl)); -} +#define GUI_SUPPORT + #include "opensimulation.cpp.inl" +#undef GUI_SUPPORT //============================================================================== diff --git a/src/plugins/support/SimulationSupport/src/simulationsupportpythonwrapper.cpp b/src/plugins/support/SimulationSupport/src/simulationsupportpythonwrapper.cpp index 55fb1fd057..77cd6f9c20 100644 --- a/src/plugins/support/SimulationSupport/src/simulationsupportpythonwrapper.cpp +++ b/src/plugins/support/SimulationSupport/src/simulationsupportpythonwrapper.cpp @@ -194,48 +194,7 @@ static PyObject * initializeSimulation(const QString &pFileName) //============================================================================== -static PyObject * openSimulation(PyObject *pSelf, PyObject *pArgs) -{ - Q_UNUSED(pSelf) - - // Open a simulation - - PyObject *bytes; - - if (PyArg_ParseTuple(pArgs, "O&", PyUnicode_FSConverter, &bytes) == 0) { // NOLINT(cppcoreguidelines-pro-type-vararg) -#include "pythonbegin.h" - Py_RETURN_NONE; -#include "pythonend.h" - } - - char *string; - Py_ssize_t len; - - PyBytes_AsStringAndSize(bytes, &string, &len); - - bool isLocalFile; - QString fileNameOrUrl; - - Core::checkFileNameOrUrl(QString::fromUtf8(string, int(len)), isLocalFile, fileNameOrUrl); - -#include "pythonbegin.h" - Py_DECREF(bytes); -#include "pythonend.h" - - QString error = isLocalFile? - Core::openFile(fileNameOrUrl): - Core::openRemoteFile(fileNameOrUrl); - - if (!error.isEmpty()) { - PyErr_SetString(PyExc_IOError, qPrintable(error)); - - return nullptr; - } - - return initializeSimulation(isLocalFile? - fileNameOrUrl: - Core::FileManager::instance()->fileName(fileNameOrUrl)); -} +#include "opensimulation.cpp.inl" //==============================================================================