#include "qgpythonconsoledockwidget.h" #include "ui_qgpythonconsoledockwidget.h" #include "qgpythonsandbox.h" #include "qgpythoninterface.h" //#include "qgpython.h" //#include "qgscopeworkbench.h" //#include "qgpyeditdialog.h" //#include "qglogger.h" #include #include #include #include #include #include #include #include class QgPythonConsoleDockWidget::Implementation { public: //QgPyEditDialog* miniEditor; //QgLogger logger; QgPythonSandbox sb; //QPlainTextEdit* miniEditor; //PythonQtScriptingConsole* pythonConsole; Implementation(QWidget* /*parent*/) //miniEditor(0), //: logger("PY") { //miniEditor=new QgPyEditDialog(parent); } void showMiniEditor() { #if 0 if (!miniEditor) { miniEditor=new QgPyEditDialog; miniEditor->setWindowTitle("Python Editor"); } miniEditor->show(); #endif } }; QgPythonConsoleDockWidget::QgPythonConsoleDockWidget(QWidget *parent) : QDockWidget(parent), ui(new Ui::QgPythonConsoleDockWidget), m_qtdbg(false), p_(*new Implementation(this)) { ui->setupUi(this); ui->verticalLayout->addWidget(p_.sb.pyhtonStdWidgets()->createConsole()); //PythonQt& pyqt=QgPython::instance().self(); //ui->verticalLayout->addWidget(p_.pythonConsole); connect(ui->lineEdit, &QLineEdit::returnPressed, this, [this]() { QString tmp=ui->lineEdit->text(); //qDebug()<<"evalScript:"<pyStdOut->append("

"+tmp+"

"); //ui->pyStdOut->append(""); //ui->pyStdOut->executeCode(tmp); //QgPython::instance().mainContext().evalScript(tmp); p_.sb.evalScript(tmp); } ); connect(ui->tbMiniEditor, &QToolButton::clicked, this, [this]() { p_.showMiniEditor(); } ); #if 0 connect(p_.miniEditor, &QgPyEditDialog::accepted, this, [this]() { QString tmp=p_.miniEditor->text(); if (!tmp.isEmpty()) ui->pyStdOut->executeCode(tmp); //QgPython::instance().mainContext().evalScript(tmp); else { tmp=p_.miniEditor->execFile(); if (!tmp.isEmpty()) { ui->pyStdOut->executeFile(tmp); //QgPython::instance().mainContext().evalFile(tmp); } } } ); QgPython::instance().mainContext().addObject("pypanel", this); QgPython::instance().mainContext().evalScript("import sys\npypanel.pyhtonVersion=sys.version"); #endif setWindowTitle(QString("PythonQT - %1").arg(m_pyver)); //QgScopeWorkbench::instance().log(QString("Python ready")); setAcceptDrops(true); } void QgPythonConsoleDockWidget::miniEditor() { p_.showMiniEditor(); } QgPythonConsoleDockWidget::~QgPythonConsoleDockWidget() { delete ui; } void QgPythonConsoleDockWidget::QgPythonConsoleDockWidget::forwardToQDbg(const QString& str, bool err) { static QString accumulator; if (!m_qtdbg) return; if (!err && m_qtdbg) qDebug()<<"PY:"<1024)) { //qWarning()<<"PYERR:"<mimeData(); if (mimeData) { if (mimeData->hasText()) { //p_.miniEditor->setMimeInfo(mimeData); //p_.miniEditor->show(); return; } } } QMessageBox::warning(this, "Paste from clipboad", "Invalid or empty clipboard conetnts"); return; } if (true) //(evn->keyboardModifiers() & Qt::ShiftModifier) || (evn->dropAction()==Qt::MoveAction)) { evn->setDropAction(Qt::CopyAction); //QgVtDropDialog dlg(this); //p_.miniEditor->setMimeInfo(evn->mimeData()); evn->accept(); //p_.miniEditor->show(); } } void QgPythonConsoleDockWidget::dragEnterEvent(QDragEnterEvent *event) { qDebug()<<"DRAG"; //if (event->mimeData()->hasFormat("text/plain")) if (event->mimeData()->hasText() || event->mimeData()->hasUrls()) event->acceptProposedAction(); else qDebug()<<"Unsupported Drop format:"<mimeData()->formats(); } #if 0 #include "qgpythonconsoledockwidget.h" #include "ui_qgpythonconsoledockwidget.h" #include "qgpython.h" #include "qgscopeworkbench.h" #include "qgpyeditdialog.h" #include "qglogger.h" #include #include #include #include #include #include #include #include class QgPythonConsoleDockWidget::Implementation { public: QgPyEditDialog* miniEditor; QgLogger logger; //PythonQtScriptingConsole* pythonConsole; Implementation(QWidget* parent): miniEditor(0), logger("PY") { miniEditor=new QgPyEditDialog(parent); } void showMiniEditor() { if (!miniEditor) { miniEditor=new QgPyEditDialog; miniEditor->setWindowTitle("Python Editor"); } miniEditor->show(); } }; QgPythonConsoleDockWidget::QgPythonConsoleDockWidget(QWidget *parent) : QDockWidget(parent), ui(new Ui::QgPythonConsoleDockWidget), m_qtdbg(false), p_(*new Implementation(this)) { ui->setupUi(this); PythonQt& pyqt=QgPython::instance().self(); //ui->verticalLayout->addWidget(p_.pythonConsole); #if 0 connect(&pyqt, &PythonQt::pythonStdOut, this, [this](const QString& str) { ui->pyStdOut->moveCursor(QTextCursor::End); ui->pyStdOut->insertPlainText (str); //ui->pyStdOut->setTextCursor (&prev_cursor); //ui->pyStdOut->appendPlainText(str); forwardToQDbg(str); } ); connect(&pyqt, &PythonQt::pythonStdErr, this, [this](const QString& str) { ui->pyStdOut->moveCursor (QTextCursor::End); ui->pyStdOut->insertPlainText (str); forwardToQDbg(str, true); } ); #endif connect(ui->lineEdit, &QLineEdit::returnPressed, this, [this]() { QString tmp=ui->lineEdit->text(); //qDebug()<<"evalScript:"<pyStdOut->append("

"+tmp+"

"); ui->pyStdOut->append(""); ui->pyStdOut->executeCode(tmp); //QgPython::instance().mainContext().evalScript(tmp); } ); connect(ui->tbMiniEditor, &QToolButton::clicked, this, [this]() { p_.showMiniEditor(); } ); connect(p_.miniEditor, &QgPyEditDialog::accepted, this, [this]() { QString tmp=p_.miniEditor->text(); if (!tmp.isEmpty()) ui->pyStdOut->executeCode(tmp); //QgPython::instance().mainContext().evalScript(tmp); else { tmp=p_.miniEditor->execFile(); if (!tmp.isEmpty()) { ui->pyStdOut->executeFile(tmp); //QgPython::instance().mainContext().evalFile(tmp); } } } ); QgPython::instance().mainContext().addObject("pypanel", this); QgPython::instance().mainContext().evalScript("import sys\npypanel.pyhtonVersion=sys.version"); setWindowTitle(QString("PythonQT - %1").arg(m_pyver)); QgScopeWorkbench::instance().log(QString("Python ready")); setAcceptDrops(true); } void QgPythonConsoleDockWidget::miniEditor() { p_.showMiniEditor(); } QgPythonConsoleDockWidget::~QgPythonConsoleDockWidget() { delete ui; } void QgPythonConsoleDockWidget::QgPythonConsoleDockWidget::forwardToQDbg(const QString& str, bool err) { static QString accumulator; if (!m_qtdbg) return; if (!err && m_qtdbg) qDebug()<<"PY:"<1024)) { //qWarning()<<"PYERR:"<mimeData(); if (mimeData) { if (mimeData->hasText()) { p_.miniEditor->setMimeInfo(mimeData); p_.miniEditor->show(); return; } } } QMessageBox::warning(this, "Paste from clipboad", "Invalid or empty clipboard conetnts"); return; } if (true) //(evn->keyboardModifiers() & Qt::ShiftModifier) || (evn->dropAction()==Qt::MoveAction)) { evn->setDropAction(Qt::CopyAction); //QgVtDropDialog dlg(this); p_.miniEditor->setMimeInfo(evn->mimeData()); evn->accept(); p_.miniEditor->show(); } } void QgPythonConsoleDockWidget::dragEnterEvent(QDragEnterEvent *event) { qDebug()<<"DRAG"; //if (event->mimeData()->hasFormat("text/plain")) if (event->mimeData()->hasText() || event->mimeData()->hasUrls()) event->acceptProposedAction(); else qDebug()<<"Unsupported Drop format:"<mimeData()->formats(); } #endif