History

Merge branch 'master' of git://github.com/highfidelity/hifi into 19648

Ryan Huffman committed 12 years ago

Commit 099777e2 parents 5a5d5b4 6bb9339207 files · +8186 −2330Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 207 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+24−10
@@ -35,6 +35,7 @@ · 34 unmodified lines
3535 #include "MenuItemProperties.h"
3636 #include "LocalVoxels.h"
3737 #include "ScriptEngine.h"
38+#include "XMLHttpRequestClass.h"
3839
3940 VoxelsScriptingInterface ScriptEngine::_voxelsScriptingInterface;
4041 ParticlesScriptingInterface ScriptEngine::_particlesScriptingInterface;
@@ -49,7 +50,12 @@ static QScriptValue soundConstructor(QScriptContext* context, QScriptEngine* eng · 8 unmodified lines
4950
5051 static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){
5152 qDebug() << "script:print()<<" << context->argument(0).toString();
52− engine->evaluate("Script.print('" + context->argument(0).toString() + "')");
53+ QString message = context->argument(0).toString()
54+ .replace("\\", "\\\\")
55+ .replace("\n", "\\n")
56+ .replace("\r", "\\r")
57+ .replace("'", "\\'");
58+ engine->evaluate("Script.print('" + message + "')");
5359 return QScriptValue();
5460 }
5561
@@ -218,12 +224,16 @@ void ScriptEngine::init() { · 162 unmodified lines
218224
219225 qScriptRegisterMetaType(&_engine, ModelItemPropertiesToScriptValue, ModelItemPropertiesFromScriptValue);
220226 qScriptRegisterMetaType(&_engine, ModelItemIDtoScriptValue, ModelItemIDfromScriptValue);
227+ qScriptRegisterMetaType(&_engine, RayToModelIntersectionResultToScriptValue, RayToModelIntersectionResultFromScriptValue);
221228 qScriptRegisterSequenceMetaType<QVector<ModelItemID> >(&_engine);
222229
223230 qScriptRegisterSequenceMetaType<QVector<glm::vec2> >(&_engine);
224231 qScriptRegisterSequenceMetaType<QVector<glm::quat> >(&_engine);
225232 qScriptRegisterSequenceMetaType<QVector<QString> >(&_engine);
226233
234+ QScriptValue xmlHttpRequestConstructorValue = _engine.newFunction(XMLHttpRequestClass::constructor);
235+ _engine.globalObject().setProperty("XMLHttpRequest", xmlHttpRequestConstructorValue);
236+
227237 QScriptValue printConstructorValue = _engine.newFunction(debugPrint);
228238 _engine.globalObject().setProperty("print", printConstructorValue);
229239
@@ -611,8 +621,20 @@ void ScriptEngine::include(const QString& includeFile) { · 381 unmodified lines
611621 QUrl url = resolveInclude(includeFile);
612622 QString includeContents;
613623
614− if (url.scheme() == "file") {
624+ if (url.scheme() == "http" || url.scheme() == "ftp") {
625+ QNetworkAccessManager* networkManager = new QNetworkAccessManager(this);
626+ QNetworkReply* reply = networkManager->get(QNetworkRequest(url));
627+ qDebug() << "Downloading included script at" << includeFile;
628+ QEventLoop loop;
629+ QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
630+ loop.exec();
631+ includeContents = reply->readAll();
632+ } else {
633+#ifdef _WIN32
634+ QString fileName = url.toString();
635+#else
615636 QString fileName = url.toLocalFile();
637+#endif
616638 QFile scriptFile(fileName);
617639 if (scriptFile.open(QFile::ReadOnly | QFile::Text)) {
618640 qDebug() << "Loading file:" << fileName;
@@ -622,14 +644,6 @@ void ScriptEngine::include(const QString& includeFile) { · 3 unmodified lines
622644 qDebug() << "ERROR Loading file:" << fileName;
623645 emit errorMessage("ERROR Loading file:" + fileName);
624646 }
625− } else {
626− QNetworkAccessManager* networkManager = new QNetworkAccessManager(this);
627− QNetworkReply* reply = networkManager->get(QNetworkRequest(url));
628− qDebug() << "Downloading included script at" << includeFile;
629− QEventLoop loop;
630− QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
631− loop.exec();
632− includeContents = reply->readAll();
633647 }
634648
635649 QScriptValue result = _engine.evaluate(includeContents);