aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-11-21 10:34:41 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-11-21 10:34:41 +0100
commitc08ec43406c4ebe2e93942a8b07871c73aafde51 (patch)
tree69e84f955ce6d0f66d39eae36b07ae0f8ef65e56 /tools
parent242067390f3bd891b162164a2d01a3a982c64fa2 (diff)
parent5b82c1b7abc515274e6348136356bbf8f1374e4a (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlimportscanner/main.cpp19
-rw-r--r--tools/qmlplugindump/main.cpp26
2 files changed, 30 insertions, 15 deletions
diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp
index 56cca8fcb4..b16253a192 100644
--- a/tools/qmlimportscanner/main.cpp
+++ b/tools/qmlimportscanner/main.cpp
@@ -60,13 +60,20 @@ QT_USE_NAMESPACE
QStringList g_qmlImportPaths;
-void printUsage(const QString &appName)
+static void printUsage(const QString &appNameIn)
{
- std::cerr << qPrintable(QString::fromLatin1(
- "Usage: %1 -rootPath path/to/app/qml/directory -importPath path/to/qt/qml/directory \n"
- " %1 -qmlFiles file1 file2 -importPath path/to/qt/qml/directory \n"
- "Example: %1 -rootPath . -importPath /home/user/dev/qt-install/qml \n").arg(
- appName));
+ const std::wstring appName = appNameIn.toStdWString();
+#ifndef QT_BOOTSTRAPPED
+ const QString qmlPath = QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
+#else
+ const QString qmlPath = QStringLiteral("/home/user/dev/qt-install/qml");
+#endif
+ std::wcerr
+ << "Usage: " << appName << " -rootPath path/to/app/qml/directory -importPath path/to/qt/qml/directory\n"
+ " " << appName << " -qmlFiles file1 file2 -importPath path/to/qt/qml/directory\n\n"
+ "Example: " << appName << " -rootPath . -importPath "
+ << QDir::toNativeSeparators(qmlPath).toStdWString()
+ << '\n';
}
QVariantList findImportsInAst(QQmlJS::AST::UiHeaderItemList *headerItemList, const QString &code, const QString &path)
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp
index 98c9b54bcd..36a5c5ab76 100644
--- a/tools/qmlplugindump/main.cpp
+++ b/tools/qmlplugindump/main.cpp
@@ -152,8 +152,9 @@ public:
*/
static QHash<QByteArray, QSet<const QQmlType *> > qmlTypesByCppName;
-// No different versioning possible for a composite type.
-static QMap<QString, const QQmlType * > qmlTypesByCompositeName;
+/* A composite type is completely specified by name, major version and minor version.
+*/
+static QMap<QString, QSet<const QQmlType *> > qmlTypesByCompositeName;
static QHash<QByteArray, QByteArray> cppToId;
@@ -202,7 +203,7 @@ void collectReachableMetaObjectsWithoutQmlName(QQmlEnginePrivate *engine, QSet<c
if (!ty->isComposite()) {
collectReachableMetaObjects(engine, ty, &metas);
} else {
- qmlTypesByCompositeName[ty->elementName()] = ty;
+ qmlTypesByCompositeName[ty->elementName()].insert(ty);
}
}
}
@@ -228,7 +229,7 @@ QSet<const QMetaObject *> collectReachableMetaObjects(QQmlEngine *engine,
extensions[ty->typeName()].insert(ty->metaObject()->className());
collectReachableMetaObjects(QQmlEnginePrivate::get(engine), ty, &metas);
} else {
- qmlTypesByCompositeName[ty->elementName()] = ty;
+ qmlTypesByCompositeName[ty->elementName()].insert(ty);
}
}
@@ -459,7 +460,13 @@ public:
return prototypeName;
}
- void dumpComposite(QQmlEngine *engine, const QQmlType *compositeType, QSet<QByteArray> &defaultReachableNames)
+ void dumpComposite(QQmlEngine *engine, const QSet<const QQmlType *> &compositeType, QSet<QByteArray> &defaultReachableNames)
+ {
+ foreach (const QQmlType *type, compositeType)
+ dumpCompositeItem(engine, type, defaultReachableNames);
+ }
+
+ void dumpCompositeItem(QQmlEngine *engine, const QQmlType *compositeType, QSet<QByteArray> &defaultReachableNames)
{
QQmlComponent e(engine, compositeType->sourceUrl());
if (!e.isReady()) {
@@ -485,9 +492,8 @@ public:
qml->writeScriptBinding(QLatin1String("prototype"), enquote(prototypeName));
QString qmlTyName = compositeType->qmlTypeName();
- // name should be unique
- qml->writeScriptBinding(QLatin1String("name"), enquote(qmlTyName));
const QString exportString = getExportString(qmlTyName, compositeType->majorVersion(), compositeType->minorVersion());
+ qml->writeScriptBinding(QLatin1String("name"), exportString);
qml->writeArrayBinding(QLatin1String("exports"), QStringList() << exportString);
qml->writeArrayBinding(QLatin1String("exportMetaObjectRevisions"), QStringList() << QString::number(compositeType->minorVersion()));
qml->writeBooleanBinding(QLatin1String("isComposite"), true);
@@ -1176,8 +1182,10 @@ int main(int argc, char *argv[])
foreach (const QMetaObject *meta, nameToMeta) {
dumper.dump(QQmlEnginePrivate::get(&engine), meta, uncreatableMetas.contains(meta), singletonMetas.contains(meta));
}
- foreach (const QQmlType *compositeType, qmlTypesByCompositeName)
- dumper.dumpComposite(&engine, compositeType, defaultReachableNames);
+
+ QMap<QString, QSet<const QQmlType *> >::const_iterator iter = qmlTypesByCompositeName.constBegin();
+ for (; iter != qmlTypesByCompositeName.constEnd(); ++iter)
+ dumper.dumpComposite(&engine, iter.value(), defaultReachableNames);
// define QEasingCurve as an extension of QQmlEasingValueType, this way
// properties using the QEasingCurve type get useful type information.