Esempio n. 1
0
QScriptValue variantListToScriptValue(QVariantList& variantList, QScriptEngine& scriptEngine) {
    QScriptValue scriptValue = scriptEngine.newObject();

    scriptValue.setProperty("length", variantList.size());
    int i = 0;
    foreach (QVariant v, variantList) {
        scriptValue.setProperty(i++, variantToScriptValue(v, scriptEngine));
    }
Esempio n. 2
0
QScriptValue variantListToScriptValue(QVariantList& variantList, QScriptEngine& scriptEngine) {

    QScriptValue scriptValue = scriptEngine.newArray();

    for (int i = 0; i < variantList.size(); i++) {
        scriptValue.setProperty(i, variantToScriptValue(variantList[i], scriptEngine));
    }

    return scriptValue;
}
Esempio n. 3
0
QScriptValue variantMapToScriptValue(QVariantMap& variantMap, QScriptEngine& scriptEngine) {
    QScriptValue scriptValue = scriptEngine.newObject();

    for (QVariantMap::const_iterator iter = variantMap.begin(); iter != variantMap.end(); ++iter) {
        QString key = iter.key();
        QVariant qValue = iter.value();
        scriptValue.setProperty(key, variantToScriptValue(qValue, scriptEngine));
    }

    return scriptValue;
}
Esempio n. 4
0
QScriptValue SICliScriptDriver::callExtensionFunction(const QString& fn, const QVariantList& params) throw(QFException)
{
	qfLogFuncFrame();
	QScriptValue ret;
	QSettings settings;
	QString extension = settings.value("app/extensions/currentName").toString();
	QString ext_property_name = extension;
	ext_property_name.replace('.', '_');
	ext_property_name = "__sicli_extension_" + ext_property_name;
	if(extension.isEmpty()) return ret;
	QScriptValue mo = scriptEngine()->globalObject().property(ext_property_name);
	qfTrash() << "\t extension module object is undefined:" << mo.isUndefined() << "is valid:" << mo.isValid() << "is null:" << mo.isNull() << "is object:" << mo.isObject();
	if(!mo.isValid()) {
		qfTrash() << "\t loading extension module object";
		mo = constructedModuleObject(extension, QScriptValueList(), Qf::ThrowExc);
		/*
		if(!mo.isObject()) {
			QF_EXCEPTION(tr("Cann't load extension object '%1'").arg(extension));
			//return ret;
		}
		*/
		scriptEngine()->globalObject().setProperty(ext_property_name, mo);
		qfTrash() << "\t loaded extension module object is undefined:" << mo.isUndefined() << "is valid:" << mo.isValid() << "is null:" << mo.isNull() << "is object:" << mo.isObject();
	}
	{
		QScriptValueList args;
		foreach(QVariant v, params) args << variantToScriptValue(v);

		QScriptValue jsfn = mo.property(fn);
		if(jsfn.isFunction()) {
			//qfTrash() << "\t jsfn:" << jsfn.toString();
			QScriptValue sv = callFunction(jsfn, mo, args, !Qf::ThrowExc);
			//qfInfo() << scriptValueToJsonString(sv);
			if(sv.isError()) {
				/// zprava ze skriptu, neco se nepodarilo
				//theApp()->emitLogRequest(QFLog::LOG_ERR, sv.property("message").toString() + "\n" + sv.property("debugInfo").toString());
				theApp()->emitLogRequestPre(QFLog::LOG_ERR, sv.property("message").toString());
				//qfError() << sv.property("message").toString();
			}
			else ret = sv;
		}
		else {
			theApp()->emitLogRequest(QFLog::LOG_ERR, tr("Extension '%1' does not contains function '%2'").arg(extension).arg(fn));
			//qfError() << "Extension" << extension << "does not contains function" << fn;
		}
	}
	return ret;
}