From 4e82ed46d209d05508c7af24cfe135c78ee353db Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 14 Jun 2018 18:53:32 +0200 Subject: Split to classes --- gui/mainwindow.cc | 104 ------------------------------------------------------ 1 file changed, 104 deletions(-) (limited to 'gui/mainwindow.cc') diff --git a/gui/mainwindow.cc b/gui/mainwindow.cc index 2880ccc2..eaebe809 100644 --- a/gui/mainwindow.cc +++ b/gui/mainwindow.cc @@ -79,110 +79,6 @@ class PipTreeItem : public ElementTreeItem IdString data; }; -PythonTab::PythonTab(QWidget *parent) : QWidget(parent) -{ - PyImport_ImportModule("emb"); - - // Add text area for Python output and input line - plainTextEdit = new QPlainTextEdit(); - plainTextEdit->setReadOnly(true); - plainTextEdit->setMinimumHeight(100); - lineEdit = new QLineEdit(); - lineEdit->setMinimumHeight(30); - lineEdit->setMaximumHeight(30); - - QGridLayout *mainLayout = new QGridLayout(); - mainLayout->addWidget(plainTextEdit, 0, 0); - mainLayout->addWidget(lineEdit, 1, 0); - setLayout(mainLayout); - - connect(lineEdit, SIGNAL(returnPressed()), this, - SLOT(editLineReturnPressed())); - - write = [this](std::string s) { - plainTextEdit->moveCursor(QTextCursor::End); - plainTextEdit->insertPlainText(s.c_str()); - plainTextEdit->moveCursor(QTextCursor::End); - }; - emb::set_stdout(write); -} - -void handle_system_exit() { exit(-1); } - -int PythonTab::executePython(std::string command) -{ - PyObject *m, *d, *v; - m = PyImport_AddModule("__main__"); - if (m == NULL) - return -1; - d = PyModule_GetDict(m); - v = PyRun_StringFlags(command.c_str(), - (command.empty() ? Py_file_input : Py_single_input), - d, d, NULL); - if (v == NULL) { - PyObject *exception, *v, *tb; - - if (PyErr_ExceptionMatches(PyExc_SystemExit)) { - handle_system_exit(); - } - PyErr_Fetch(&exception, &v, &tb); - if (exception == NULL) - return 0; - PyErr_NormalizeException(&exception, &v, &tb); - if (tb == NULL) { - tb = Py_None; - Py_INCREF(tb); - } - PyException_SetTraceback(v, tb); - if (exception == NULL) - return 0; - PyErr_Clear(); - - PyObject *objectsRepresentation = PyObject_Str(v); - std::string errorStr = - PyUnicode_AsUTF8(objectsRepresentation) + std::string("\n"); - plainTextEdit->moveCursor(QTextCursor::End); - plainTextEdit->insertPlainText(errorStr.c_str()); - plainTextEdit->moveCursor(QTextCursor::End); - Py_DECREF(objectsRepresentation); - Py_XDECREF(exception); - Py_XDECREF(v); - Py_XDECREF(tb); - return -1; - } - Py_DECREF(v); - return 0; -} - -void PythonTab::editLineReturnPressed() -{ - std::string input = lineEdit->text().toStdString(); - plainTextEdit->moveCursor(QTextCursor::End); - plainTextEdit->insertPlainText(std::string(">>> " + input + "\n").c_str()); - plainTextEdit->moveCursor(QTextCursor::End); - plainTextEdit->update(); - lineEdit->clear(); - int error = executePython(input); -} - -InfoTab::InfoTab(QWidget *parent) : QWidget(parent) -{ - // Add text area for Python output and input line - plainTextEdit = new QPlainTextEdit(); - plainTextEdit->setReadOnly(true); - - QGridLayout *mainLayout = new QGridLayout(); - mainLayout->addWidget(plainTextEdit); - setLayout(mainLayout); -} - -void InfoTab::info(std::string str) -{ - plainTextEdit->moveCursor(QTextCursor::End); - plainTextEdit->insertPlainText(str.c_str()); - plainTextEdit->moveCursor(QTextCursor::End); -} - MainWindow::MainWindow(Design *_design, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), design(_design) { -- cgit v1.2.3