diff options
author | Kent Hansen <khansen@trolltech.com> | 2009-07-10 12:27:16 (GMT) |
---|---|---|
committer | Kent Hansen <khansen@trolltech.com> | 2009-07-10 12:27:16 (GMT) |
commit | 75bc0215080fcafea9ba1bafedd980d9ac71bf9d (patch) | |
tree | 61156a5b2eaf3377b304beb6df59343750d21804 /src/script/bridge/bridge.pri | |
parent | 0579f4be2e79bb95c963a7e2368b6ee797c25e90 (diff) | |
download | Qt-75bc0215080fcafea9ba1bafedd980d9ac71bf9d.zip Qt-75bc0215080fcafea9ba1bafedd980d9ac71bf9d.tar.gz Qt-75bc0215080fcafea9ba1bafedd980d9ac71bf9d.tar.bz2 |
implement ability to dynamically change class of script objects
With an object created by QScriptEngine::newObject(), it should
be possible to call QScriptValue::setClass() to dynamically
change the behavior of that object. Similarly, it should be
possible to promote plain script objects to QObject (QVariant)
wrappers by calling the overload of QScriptEngine::newQObject()
(newVariant()) that takes a script object as the first argument.
This commit implements this capability.
The premise is the (internal) QScriptObject class, which inherits
JSC::JSObject. It reimplements all the methods for getting/setting
properties etc. Then there's a level of indirection to facilitate
dynamic change of the class: Each QScriptObject can have a
delegate associated with it that will handle operations on the
object. By default there is no delegate, so the object behaves as
a normal JS object, as you expect. However, once a delegate is set
(e.g., when QScriptValue::setScriptClass() is called),
QScriptObject will give the delegate the chance to handle the
object operation.
In addition to a delegate implementation for QScriptClass-based
objects, there are also delegates for QObject and QVariant
wrappers. These replace the QObjectWrapperObject and
QVariantWrapperObject classes.
Diffstat (limited to 'src/script/bridge/bridge.pri')
-rw-r--r-- | src/script/bridge/bridge.pri | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/script/bridge/bridge.pri b/src/script/bridge/bridge.pri index 585ccc0..cf8395a 100644 --- a/src/script/bridge/bridge.pri +++ b/src/script/bridge/bridge.pri @@ -1,9 +1,13 @@ SOURCES += \ $$PWD/qscriptfunction.cpp \ + $$PWD/qscriptobject.cpp \ + $$PWD/qscriptclassobject.cpp \ $$PWD/qscriptvariant.cpp \ $$PWD/qscriptqobject.cpp HEADERS += \ $$PWD/qscriptfunction_p.h \ + $$PWD/qscriptobject_p.h \ + $$PWD/qscriptclassobject_p.h \ $$PWD/qscriptvariant_p.h \ $$PWD/qscriptqobject_p.h |