36 #pragma GCC diagnostic push
37 #pragma GCC diagnostic ignored "-Wshadow"
38 #include "pybind11/embed.h"
39 #include "pybind11/eval.h"
40 #include "pybind11/functional.h"
41 #include "pybind11/operators.h"
42 #include "pybind11/stl.h"
43 #include "pybind11/stl_bind.h"
44 #pragma GCC diagnostic pop
48 class PythonContextSubscriber;
75 namespace py = pybind11;
83 class __attribute__((visibility("default"))) PythonContext :
public QObject
90 PythonContext(
QObject* parent=
nullptr);
102 void interpretForeground(
const QString& input);
112 void interpretBackground(
QObject* caller,
const QString& input,
bool multiple_expressions =
false);
127 void forwardStdout(
const QString& output);
134 void forwardError(
const QString& output);
140 void scheduleClear();
145 void scheduleReset();
152 void setConsole(PythonConsole* console);
164 std::vector<std::tuple<std::string, std::string>> complete(
const QString& text,
bool use_console_context);
171 int checkCompleteStatement(
const QString& text);
190 void updateNetlist();
192 PythonThread* pythonThread()
const;
194 static void initializeContext(py::dict* context);
195 static void initializeScript(py::dict* context);
198 void abortThreadAndWait();
199 bool isThreadRunning()
const {
return mThread !=
nullptr; }
202 void handleThreadFinished();
203 void handleScriptOutput(
const QString& txt);
204 void handleScriptError(
const QString& txt);
206 void handleConsoleInputReceived(
const QString& input);
217 PythonContextSubscriber* mSender;
219 std::string mHistoryFile;
221 PythonConsole* mConsole;
224 LayoutLocker* mLayoutLocker;
225 PythonThread* mThread;
227 PyThreadState* mMainThreadState;
230 void startThread(
const QString& input,
bool singleStatement);
PythonGateSelectionReceiver(PythonThread *thread, QObject *parent=nullptr)
void handleGatesPicked(const QSet< u32 > &gats) override
PythonModuleSelectionReceiver(PythonThread *thread, QObject *parent=nullptr)
void handleModulesPicked(const QSet< u32 > &gats) override
QObject * parent() const const
QThread * thread() const const