Support multi-line input in the python shell

This commit is contained in:
baldurk
2017-11-20 15:11:50 +00:00
parent 31b7662db1
commit 657c343ac8
6 changed files with 48 additions and 10 deletions
@@ -485,7 +485,7 @@ QString PythonContext::versionString()
return QFormatStr("%1.%2.%3").arg(PY_MAJOR_VERSION).arg(PY_MINOR_VERSION).arg(PY_MICRO_VERSION);
}
void PythonContext::executeString(const QString &filename, const QString &source, bool interactive)
void PythonContext::executeString(const QString &filename, const QString &source)
{
if(!initialised())
{
@@ -501,8 +501,9 @@ void PythonContext::executeString(const QString &filename, const QString &source
PyGILState_STATE gil = PyGILState_Ensure();
PyObject *compiled = Py_CompileString(source.toUtf8().data(), filename.toUtf8().data(),
interactive ? Py_single_input : Py_file_input);
PyObject *compiled =
Py_CompileString(source.toUtf8().data(), filename.toUtf8().data(),
source.count(QLatin1Char('\n')) == 0 ? Py_single_input : Py_file_input);
PyObject *ret = NULL;
@@ -555,9 +556,9 @@ void PythonContext::executeString(const QString &filename, const QString &source
emit exception(typeStr, valueStr, finalLine, frames);
}
void PythonContext::executeString(const QString &source, bool interactive)
void PythonContext::executeString(const QString &source)
{
executeString(lit("<interactive.py>"), source, interactive);
executeString(lit("<interactive.py>"), source);
}
void PythonContext::executeFile(const QString &filename)
+2 -2
View File
@@ -99,8 +99,8 @@ signals:
void textOutput(bool isStdError, const QString &output);
public slots:
void executeString(const QString &source, bool interactive = false);
void executeString(const QString &filename, const QString &source, bool interactive = false);
void executeString(const QString &source);
void executeString(const QString &filename, const QString &source);
void executeFile(const QString &filename);
void setGlobal(const char *varName, const char *typeName, void *object);
void setPyGlobal(const char *varName, PyObject *object);