void NetworkProgram::handleDownloadProgress(qint64 bytesReceived, qint64 bytesTotal) { if (bytesReceived < bytesTotal && !_reply->isFinished()) { return; } _program = QScriptProgram(QTextStream(_reply).readAll(), _reply->url().toString()); _reply->disconnect(this); _reply->deleteLater(); _reply = NULL; emit loaded(); }
ScriptSandbox::ScriptSandbox(const PluginManager *parent, const QString &file, const QString &script, AdamantPlugin *owner) : QObject() , _manager(parent) , _script(script) , _owner(owner) , _engine() , _engineDebugger() , _errorString() { _engineDebugger.attachTo(&_engine); _program = QScriptProgram(_script, file); // Register MetaTypes, sometimes Q_DECL doesn't seem to cut it... qRegisterMetaType<Session::Request*>("Session::Request"); qRegisterMetaType<AdamantUI*>("AdamantUI"); qRegisterMetaType<ItemManager*>("ItemManager"); qRegisterMetaType<AdamantUI::ApplicationTheme>("ApplicationTheme"); // qScriptRegisterMetaType<AdamantUI::ApplicationTheme>(&_engine, [](QScriptEngine *engine, const AdamantUI::ApplicationTheme &t) -> QScriptValue { // return QScriptValue(static_cast<int>(t)); // }, [](const QScriptValue &obj, AdamantUI::ApplicationTheme &t) { // t = static_cast<AdamantUI::ApplicationTheme>(obj.toInt32()); // }); QScriptSyntaxCheckResult syntax = _engine.checkSyntax(_script); if (syntax.state() != QScriptSyntaxCheckResult::Valid){ _errorString = syntax.errorMessage(); } else { // Default Globals addGlobalObject("manager", (QObject*)_manager); addGlobalObject("script", this); addGlobalObject("core", _manager->core()); addGlobalObject("app", qApp); } { QScriptValue func = _engine.newFunction(ScriptSandbox::runFunc, this); _engine.globalObject().setProperty("run", func); } { QScriptValue func = _engine.newFunction(ScriptSandbox::importFunc, this); _engine.globalObject().setProperty("using", func); } { QScriptValue func = _engine.newFunction(ScriptSandbox::printFunc, this); _engine.globalObject().setProperty("print", func); } }
bool ScriptManager::AddScript(QString script, QString name) { if(name == "") { Logger::Get().Error("Cannot add script without name."); return false; } if(HasScript(name)) { Logger::Get().Error("Cannot add script \"" + name + "\": a script with this name already exists."); return false; } // check the syntax QScriptSyntaxCheckResult syntax = mScriptEngine->checkSyntax(script); if(syntax.state() != QScriptSyntaxCheckResult::Valid) { Logger::Get().Error("Syntax error in script \"" + name + "\" at line " + Utils::ToString(syntax.errorLineNumber()) + " column " + Utils::ToString(syntax.errorColumnNumber()) + ":"); Logger::Get().Error(" " + syntax.errorMessage()); } else { Logger::Get().Debug("Adding script \"" + name + "\"."); mScripts[name] = QScriptProgram(script, name); } return true; }
bool ScriptManager::Evaluate(QString snippet, QString context) { return _Evaluate(QScriptProgram(snippet, context)); }
void NetworkProgram::downloadFinished(QNetworkReply* reply) { _program = QScriptProgram(QTextStream(reply).readAll(), reply->url().toString()); reply->deleteLater(); finishedLoading(true); emit loaded(); }