aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlplugindump/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qmlplugindump/main.cpp')
-rw-r--r--tools/qmlplugindump/main.cpp99
1 files changed, 53 insertions, 46 deletions
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp
index e05c77cbfa..4337db1689 100644
--- a/tools/qmlplugindump/main.cpp
+++ b/tools/qmlplugindump/main.cpp
@@ -71,6 +71,7 @@
QString pluginImportPath;
bool verbose = false;
+bool creatable = true;
QString currentProperty;
QString inObjectInstantiation;
@@ -225,46 +226,48 @@ QSet<const QMetaObject *> collectReachableMetaObjects(QQmlEngine *engine, const
qmlTypesByCppName[baseCpp] = baseExports;
}
- // find even more QMetaObjects by instantiating QML types and running
- // over the instances
- foreach (QQmlType *ty, QQmlMetaType::qmlTypes()) {
- if (skip.contains(ty))
- continue;
- if (ty->isExtendedType())
- continue;
- if (!ty->isCreatable())
- continue;
- if (ty->typeName() == "QQmlComponent")
- continue;
-
- QString tyName = ty->qmlTypeName();
- tyName = tyName.mid(tyName.lastIndexOf(QLatin1Char('/')) + 1);
- if (tyName.isEmpty())
- continue;
-
- inObjectInstantiation = tyName;
- QObject *object = 0;
-
- if (ty->isSingleton()) {
- QQmlType::SingletonInstanceInfo *siinfo = ty->singletonInstanceInfo();
- if (siinfo->qobjectCallback) {
- siinfo->init(engine);
- collectReachableMetaObjects(object, &metas);
- object = siinfo->qobjectApi(engine);
+ if (creatable) {
+ // find even more QMetaObjects by instantiating QML types and running
+ // over the instances
+ foreach (QQmlType *ty, QQmlMetaType::qmlTypes()) {
+ if (skip.contains(ty))
+ continue;
+ if (ty->isExtendedType())
+ continue;
+ if (!ty->isCreatable())
+ continue;
+ if (ty->typeName() == "QQmlComponent")
+ continue;
+
+ QString tyName = ty->qmlTypeName();
+ tyName = tyName.mid(tyName.lastIndexOf(QLatin1Char('/')) + 1);
+ if (tyName.isEmpty())
+ continue;
+
+ inObjectInstantiation = tyName;
+ QObject *object = 0;
+
+ if (ty->isSingleton()) {
+ QQmlType::SingletonInstanceInfo *siinfo = ty->singletonInstanceInfo();
+ if (siinfo->qobjectCallback) {
+ siinfo->init(engine);
+ collectReachableMetaObjects(object, &metas);
+ object = siinfo->qobjectApi(engine);
+ } else {
+ inObjectInstantiation.clear();
+ continue; // we don't handle QJSValue singleton types.
+ }
} else {
- inObjectInstantiation.clear();
- continue; // we don't handle QJSValue singleton types.
+ object = ty->create();
}
- } else {
- object = ty->create();
- }
- inObjectInstantiation.clear();
+ inObjectInstantiation.clear();
- if (object)
- collectReachableMetaObjects(object, &metas);
- else
- qWarning() << "Could not create" << tyName;
+ if (object)
+ collectReachableMetaObjects(object, &metas);
+ else
+ qWarning() << "Could not create" << tyName;
+ }
}
return metas;
@@ -330,17 +333,13 @@ public:
qSort(exportStrings);
qml->writeArrayBinding(QLatin1String("exports"), exportStrings);
- // write meta object revisions unless they're all zero
+ // write meta object revisions
QStringList metaObjectRevisions;
- bool shouldWriteMetaObjectRevisions = false;
foreach (const QString &exportString, exportStrings) {
int metaObjectRevision = exports[exportString]->metaObjectRevision();
- if (metaObjectRevision != 0)
- shouldWriteMetaObjectRevisions = true;
metaObjectRevisions += QString::number(metaObjectRevision);
}
- if (shouldWriteMetaObjectRevisions)
- qml->writeArrayBinding(QLatin1String("exportMetaObjectRevisions"), metaObjectRevisions);
+ qml->writeArrayBinding(QLatin1String("exportMetaObjectRevisions"), metaObjectRevisions);
if (const QMetaObject *attachedType = (*qmlTypes.begin())->attachedPropertiesType()) {
// Can happen when a type is registered that returns itself as attachedPropertiesType()
@@ -544,8 +543,8 @@ void sigSegvHandler(int) {
void printUsage(const QString &appName)
{
qWarning() << qPrintable(QString(
- "Usage: %1 [-v] [-notrelocatable] module.uri version [module/import/path]\n"
- " %1 [-v] -path path/to/qmldir/directory [version]\n"
+ "Usage: %1 [-v] [-noinstantiate] [-[non]relocatable] module.uri version [module/import/path]\n"
+ " %1 [-v] [-noinstantiate] -path path/to/qmldir/directory [version]\n"
" %1 [-v] -builtins\n"
"Example: %1 Qt.labs.folderlistmodel 2.0 /home/user/dev/qt-install/imports").arg(
appName));
@@ -566,7 +565,7 @@ int main(int argc, char *argv[])
#endif
#ifdef QT_SIMULATOR
- // Running this application would bring up the Qt Simulator (since it links QtGui), avoid that!
+ // Running this application would bring up the Qt Simulator (since it links Qt GUI), avoid that!
QtSimulatorPrivate::SimulatorConnection::createStubInstance();
#endif
@@ -595,8 +594,16 @@ int main(int argc, char *argv[])
}
if (arg == QLatin1String("--notrelocatable")
- || arg == QLatin1String("-notrelocatable")) {
+ || arg == QLatin1String("-notrelocatable")
+ || arg == QLatin1String("--nonrelocatable")
+ || arg == QLatin1String("-nonrelocatable")) {
relocatable = false;
+ } else if (arg == QLatin1String("--relocatable")
+ || arg == QLatin1String("-relocatable")) {
+ relocatable = true;
+ } else if (arg == QLatin1String("--noinstantiate")
+ || arg == QLatin1String("-noinstantiate")) {
+ creatable = false;
} else if (arg == QLatin1String("--path")
|| arg == QLatin1String("-path")) {
action = Path;