History

Add registerGetterSetter to remove need for getEngine()

Ryan Huffman committed 12 years ago

Commit 9e684a01 parent 65fd2a73 files · +27 −14Browse files

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

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+17−1
@@ -248,10 +248,26 @@ void ScriptEngine::init() { · 247 unmodified lines
248248 _particlesScriptingInterface.getParticlePacketSender()->setProcessCallIntervalHint(SCRIPT_DATA_CALLBACK_USECS);
249249 }
250250
251−void ScriptEngine::registerGlobalObject(const QString& name, QObject* object) {
251+QScriptValue ScriptEngine::registerGlobalObject(const QString& name, QObject* object) {
252252 if (object) {
253253 QScriptValue value = _engine.newQObject(object);
254254 _engine.globalObject().setProperty(name, value);
255+ return value;
256+ }
257+ return QScriptValue::NullValue;
258+}
259+
260+void ScriptEngine::registerGetterSetter(const QString& name, QScriptEngine::FunctionSignature getter,
261+ QScriptEngine::FunctionSignature setter, QScriptValue object) {
262+ QScriptValue setterFunction = _engine.newFunction(setter, 1);
263+ QScriptValue getterFunction = _engine.newFunction(getter);
264+
265+ if (object.isNull()) {
266+ object.setProperty(name, setterFunction, QScriptValue::PropertySetter);
267+ object.setProperty(name, getterFunction, QScriptValue::PropertyGetter);
268+ } else {
269+ _engine.globalObject().setProperty(name, setterFunction, QScriptValue::PropertySetter);
270+ _engine.globalObject().setProperty(name, getterFunction, QScriptValue::PropertyGetter);
255271 }
256272 }
257273