From f3b4f708a56bd95501adc947df3f0c6b9db5a965 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 31 Jul 2014 21:50:07 -0700 Subject: [PATCH] Add Script.load() JavaScript method --- interface/src/Application.cpp | 2 ++ libraries/script-engine/src/ScriptEngine.cpp | 13 +++++++++---- libraries/script-engine/src/ScriptEngine.h | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 51f6076e7a..c3f191d9b4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3674,6 +3674,8 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript connect(scriptEngine, SIGNAL(finished(const QString&)), this, SLOT(scriptFinished(const QString&))); + connect(scriptEngine, SIGNAL(loadScript(const QString&)), this, SLOT(loadScript(const QString&))); + scriptEngine->registerGlobalObject("Overlays", &_overlays); QScriptValue windowValue = scriptEngine->registerGlobalObject("Window", WindowScriptingInterface::getInstance()); diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index df66fa44d5..49cab1a1fb 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -156,7 +156,7 @@ ScriptEngine::ScriptEngine(const QUrl& scriptURL, } else { NetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkReply* reply = networkAccessManager.get(QNetworkRequest(url)); - qDebug() << "Downloading included script at" << url; + qDebug() << "Downloading script at" << url; QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); @@ -681,12 +681,12 @@ void ScriptEngine::include(const QString& includeFile) { #endif QFile scriptFile(fileName); if (scriptFile.open(QFile::ReadOnly | QFile::Text)) { - qDebug() << "Loading file:" << fileName; + qDebug() << "Including file:" << fileName; QTextStream in(&scriptFile); includeContents = in.readAll(); } else { - qDebug() << "ERROR Loading file:" << fileName; - emit errorMessage("ERROR Loading file:" + fileName); + qDebug() << "ERROR Including file:" << fileName; + emit errorMessage("ERROR Including file:" + fileName); } } @@ -699,6 +699,11 @@ void ScriptEngine::include(const QString& includeFile) { } } +void ScriptEngine::load(const QString& loadFile) { + QUrl url = resolveInclude(loadFile); + emit loadScript(url.toString()); +} + void ScriptEngine::nodeKilled(SharedNodePointer node) { _outgoingScriptAudioSequenceNumbers.remove(node->getUUID()); } diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index fe39f286be..17cda5e183 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -102,6 +102,7 @@ public slots: void clearInterval(QObject* timer) { stopTimer(reinterpret_cast(timer)); } void clearTimeout(QObject* timer) { stopTimer(reinterpret_cast(timer)); } void include(const QString& includeFile); + void load(const QString& loadfile); void print(const QString& message); void nodeKilled(SharedNodePointer node); @@ -115,6 +116,7 @@ signals: void errorMessage(const QString& message); void runningStateChanged(); void evaluationFinished(QScriptValue result, bool isException); + void loadScript(const QString& scriptName); protected: QString _scriptContents;