aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-02-25 16:09:33 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2014-02-25 17:18:50 +0100
commit86396491a74f9d9eb6609039d635458fbad7fddc (patch)
tree6eee4edc79294a54108ee1786d9ea3855026d6c8
parent43962ad2e0b14e853e0561f12b55a087f4be8753 (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.cpp25
-rw-r--r--src/lib/corelib/language/scriptengine.h3
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);