diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-21 10:34:41 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-21 10:34:41 +0100 |
commit | c08ec43406c4ebe2e93942a8b07871c73aafde51 (patch) | |
tree | 69e84f955ce6d0f66d39eae36b07ae0f8ef65e56 /tools | |
parent | 242067390f3bd891b162164a2d01a3a982c64fa2 (diff) | |
parent | 5b82c1b7abc515274e6348136356bbf8f1374e4a (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I3567f741394f912d4312460e85555b6c39b61cb4
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmlimportscanner/main.cpp | 19 | ||||
-rw-r--r-- | tools/qmlplugindump/main.cpp | 26 |
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. |