##// END OF EJS Templates
Pre-0.7 partially back-ported.
Pre-0.7 partially back-ported.

File last commit:

r98:d744963be984 default
r106:7598f3bdb8ba 0.6
Show More
pythonconsole.cpp
103 lines | 3.0 KiB | text/x-c | CppLexer
#include "pythonconsole.h"
#include <QPushButton>
#include <QFile>
#include <QTextStream>
#include <QCustomPlot/qcustomplot.h>
#include "../common/pythonQtOut/generated_cpp/PySocExplorer/PySocExplorer0.h"
#include <PythonQt.h>
#include "pluginloader.h"
#include <socexplorer.h>
void PythonQt_init_PySocExplorer(PyObject* module);
void PythonQt_init_PySocExplorerEngine(PyObject* module) ;
PythonConsole::PythonConsole(socexplorerproxy *proxy, QWidget *parent) :
QWidget(parent)
{
PythonQt::init(PythonQt::RedirectStdOut);
PythonQt_QtAll::init();
this->proxy = proxy;
this->mainlayout = new QHBoxLayout;
this->mainContext = new PythonQtObjectPtr(PythonQt::self()->getMainModule());
this->mainContext->addVariable(QString("PYMODULES"),QVariant(QString(PYMODULES)));
this->console = new PythonQtScriptingConsoleDandD(NULL, PythonQt::self()->getMainModule());
this->mainlayout->addWidget(this->console);
this->setWindowTitle(tr("Python Scripting Console"));
this->setAcceptDrops(true);
this->setLayout(this->mainlayout);
connect(this->console,SIGNAL(pyConsoleRunFiles(QStringList)),this,SLOT(pyConsoleRunFiles(QStringList)));
this->mainContext->addObject("proxy", proxy);
PythonQt_init_PySocExplorer(0);
PythonQt_init_PySocExplorerEngine(0);
this->mainContext->evalScript(QString("from PythonQt import *"));
}
void PythonConsole::addObject(const QString& name, QObject* object)
{
this->mainContext->addObject(name, object);
}
void PythonConsole::removeVariable(const QString& name)
{
this->mainContext->removeVariable(name);
}
void PythonConsole::registerObject(QObject* object,const QString& instanceName)
{
this->mainContext->addObject(instanceName,object);
}
void PythonConsole::changeSysDriverInstName(const QString newinstanceName,const QString previnstanceName)
{
socexplorerplugin* obj= this->proxy->getSysDriver(previnstanceName);
if(obj==NULL)obj= this->proxy->getSysDriver(newinstanceName);
if(obj==NULL)return;
// this->mainContext->addObject(newinstanceName,obj->getPyObjectWrapper());
this->mainContext->addObject(newinstanceName,obj);
this->mainContext->removeVariable(previnstanceName);
}
void PythonConsole::removeDriver(const QString& instanceName)
{
this->mainContext->removeVariable(instanceName);
}
void PythonConsole::pyConsoleRunFiles(const QStringList & pathList)
{
for (int i = 0; i < pathList.size() && i < 32; ++i)
{
this->pyConsoleRunFile(pathList.at(i));
}
}
void PythonConsole::pyConsoleRunFile(const QString& fileName)
{
QString code;
QFile file;
QFileInfo fileinfo;
code.clear();
file.setFileName(fileName);
fileinfo.setFile(fileName);
if(!fileinfo.suffix().compare("py"))
{
QString CMD="execfile(\'"+fileName+"\')";
this->console->executePythonCommand(CMD);
}
}
QSize PythonConsole::sizeHint()
{
return QSize(800,80);
}