From 3700cf6fc8ec25b6c28a641d32074c2eb61d6720 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Wed, 20 Sep 2017 18:54:11 -0700 Subject: Add undocumented Utilities methods to get the Qbs QML type info This will be used in a subsequent change. Change-Id: I7381d1906aecf08473e30ae06cec9a888bbeaf65 Reviewed-by: Christian Kandeler --- src/lib/corelib/jsextensions/jsextensions.cpp | 7 +++++++ src/lib/corelib/jsextensions/jsextensions.h | 1 + .../corelib/jsextensions/utilitiesextension.cpp | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/lib/corelib/jsextensions/jsextensions.cpp b/src/lib/corelib/jsextensions/jsextensions.cpp index 1049d2d6b..6f49c26ed 100644 --- a/src/lib/corelib/jsextensions/jsextensions.cpp +++ b/src/lib/corelib/jsextensions/jsextensions.cpp @@ -74,5 +74,12 @@ bool JsExtensions::hasExtension(const QString &name) return initializers().contains(name); } +QStringList JsExtensions::extensionNames() +{ + auto keys = initializers().keys(); + std::sort(keys.begin(), keys.end()); + return keys; +} + } // namespace Internal } // namespace qbs diff --git a/src/lib/corelib/jsextensions/jsextensions.h b/src/lib/corelib/jsextensions/jsextensions.h index 1ff25a659..8977dbe8a 100644 --- a/src/lib/corelib/jsextensions/jsextensions.h +++ b/src/lib/corelib/jsextensions/jsextensions.h @@ -57,6 +57,7 @@ public: static void setupExtensions(const QStringList &names, QScriptValue scope); static QScriptValue loadExtension(QScriptEngine *engine, const QString &name); static bool hasExtension(const QString &name); + static QStringList extensionNames(); }; } // namespace Internal diff --git a/src/lib/corelib/jsextensions/utilitiesextension.cpp b/src/lib/corelib/jsextensions/utilitiesextension.cpp index a8e5e7c1e..78f9c8401 100644 --- a/src/lib/corelib/jsextensions/utilitiesextension.cpp +++ b/src/lib/corelib/jsextensions/utilitiesextension.cpp @@ -39,6 +39,8 @@ #include "jsextensions_p.h" +#include +#include #include #include #include @@ -86,6 +88,9 @@ public: static QScriptValue js_msvcCompilerInfo(QScriptContext *context, QScriptEngine *engine); static QScriptValue js_versionCompare(QScriptContext *context, QScriptEngine *engine); + + static QScriptValue js_qmlTypeInfo(QScriptContext *context, QScriptEngine *engine); + static QScriptValue js_builtinExtensionNames(QScriptContext *context, QScriptEngine *engine); }; static void initializeJsExtensionUtilities(QScriptValue extensionObject) @@ -122,6 +127,10 @@ static void initializeJsExtensionUtilities(QScriptValue extensionObject) engine->newFunction(UtilitiesExtension::js_msvcCompilerInfo, 1)); environmentObj.setProperty(QStringLiteral("versionCompare"), engine->newFunction(UtilitiesExtension::js_versionCompare, 2)); + environmentObj.setProperty(QStringLiteral("qmlTypeInfo"), + engine->newFunction(UtilitiesExtension::js_qmlTypeInfo, 0)); + environmentObj.setProperty(QStringLiteral("builtinExtensionNames"), + engine->newFunction(UtilitiesExtension::js_builtinExtensionNames, 0)); extensionObject.setProperty(QStringLiteral("Utilities"), environmentObj); } @@ -493,6 +502,19 @@ QScriptValue UtilitiesExtension::js_versionCompare(QScriptContext *context, QScr QStringLiteral("versionCompare expects two arguments of type string")); } +QScriptValue UtilitiesExtension::js_qmlTypeInfo(QScriptContext *context, QScriptEngine *engine) +{ + Q_UNUSED(context); + return engine->toScriptValue(QString::fromUtf8(qbs::LanguageInfo().qmlTypeInfo())); +} + +QScriptValue UtilitiesExtension::js_builtinExtensionNames(QScriptContext *context, + QScriptEngine *engine) +{ + Q_UNUSED(context); + return engine->toScriptValue(JsExtensions::extensionNames()); +} + } // namespace Internal } // namespace qbs -- cgit v1.2.3