X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=426bcdc70d301231752f165fdbd9816eb4d458ef;hp=e807289475734a0b37d0ac1872139b59880b4ac9;hb=788fd0058595c815dc42597e9956c02aea45261f;hpb=c9ef00c67a47448e92398a5dce6ce5b74e77783a diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index e8072894..426bcdc7 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -30,12 +30,14 @@ #include "util.h" +#include CoreSession::CoreSession(UserId uid, Storage *_storage, QObject *parent) : QObject(parent), user(uid), _signalProxy(new SignalProxy(SignalProxy::Server, 0, this)), - storage(_storage) + storage(_storage), + scriptEngine(new QScriptEngine(this)) { QSettings s; @@ -71,6 +73,7 @@ CoreSession::CoreSession(UserId uid, Storage *_storage, QObject *parent) if(list.count()) connectToIrc(list); */ + initScriptEngine(); } CoreSession::~CoreSession() { @@ -261,3 +264,17 @@ void CoreSession::sendBacklog(BufferInfo id, QVariant v1, QVariant v2) { } if(log.count() > 0) emit backlogData(id, log, true); } + + +void CoreSession::initScriptEngine() { + signalProxy()->attachSlot(SIGNAL(scriptRequest(QString)), this, SLOT(scriptRequest(QString))); + signalProxy()->attachSignal(this, SIGNAL(scriptResult(QString))); + + QScriptValue storage_ = scriptEngine->newQObject(storage); + scriptEngine->globalObject().setProperty("storage", storage_); +} + +void CoreSession::scriptRequest(QString script) { + emit scriptResult(scriptEngine->evaluate(script).toString()); +} +