diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-02-25 16:09:33 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-02-25 17:18:50 +0100 |
commit | 86396491a74f9d9eb6609039d635458fbad7fddc (patch) | |
tree | 6eee4edc79294a54108ee1786d9ea3855026d6c8 | |
parent | 43962ad2e0b14e853e0561f12b55a087f4be8753 (diff) |
introduce ScriptEngine::setDeprecatedProperty
A convenience method to set up deprecated properties.
Change-Id: I1e967e9ab42b00bdb157523c09efe996e7d53a15
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r-- | src/lib/corelib/language/scriptengine.cpp | 25 | ||||
-rw-r--r-- | src/lib/corelib/language/scriptengine.h | 3 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp index 238c840a3..5c6d40eaa 100644 --- a/src/lib/corelib/language/scriptengine.cpp +++ b/src/lib/corelib/language/scriptengine.cpp @@ -169,6 +169,31 @@ void ScriptEngine::setObservedProperty(QScriptValue &object, const QString &name defineProperty(object, name, descriptor); } +static QScriptValue js_deprecatedGet(QScriptContext *context, QScriptEngine *qtengine) +{ + ScriptEngine *engine = static_cast<ScriptEngine *>(qtengine); + const QScriptValue data = context->callee().property(QLatin1String("qbsdata")); + engine->logger().qbsWarning() + << ScriptEngine::tr("Property %1 is deprecated. Please use %2 instead.").arg( + data.property(0).toString(), data.property(1).toString()); + return data.property(2); +} + +void ScriptEngine::setDeprecatedProperty(QScriptValue &object, const QString &oldName, + const QString &newName, const QScriptValue &value) +{ + QScriptValue data = newArray(); + data.setProperty(0, oldName); + data.setProperty(1, newName); + data.setProperty(2, value); + QScriptValue getterFunc = newFunction(js_deprecatedGet); + getterFunc.setProperty(QLatin1String("qbsdata"), data); + QScriptValue descriptor = newObject(); + descriptor.setProperty(QLatin1String("get"), getterFunc); + descriptor.setProperty(QLatin1String("set"), m_emptyFunction); + defineProperty(object, oldName, descriptor); +} + QProcessEnvironment ScriptEngine::environment() const { return m_environment; diff --git a/src/lib/corelib/language/scriptengine.h b/src/lib/corelib/language/scriptengine.h index a2de9d9ea..fb2649711 100644 --- a/src/lib/corelib/language/scriptengine.h +++ b/src/lib/corelib/language/scriptengine.h @@ -58,6 +58,7 @@ public: ~ScriptEngine(); void setLogger(const Logger &logger) { m_logger = logger; } + const Logger &logger() const { return m_logger; } void import(const JsImports &jsImports, QScriptValue scope, QScriptValue targetObject); void import(const JsImport &jsImport, QScriptValue scope, QScriptValue targetObject); void clearImportsCache(); @@ -83,6 +84,8 @@ public: void defineProperty(QScriptValue &object, const QString &name, const QScriptValue &descriptor); void setObservedProperty(QScriptValue &object, const QString &name, const QScriptValue &value, ScriptPropertyObserver *observer); + void setDeprecatedProperty(QScriptValue &object, const QString &name, const QString &newName, + const QScriptValue &value); QProcessEnvironment environment() const; void setEnvironment(const QProcessEnvironment &env); |