From e8c8968ab6e060de7e80fabd1758eb3ea27eb531 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 26 Feb 2015 17:30:56 +0100 Subject: [PATCH] QmlDesigner.QmlPuppet: Show import error messages on root item * If an import fails we show this as an error on the root item. * If all imports fail (including the QtQuick import) we also show an error message, but try to recover using QtQuick 2.0. Change-Id: Ibfece2acdb9f2a6ba26dfd9b31607507fec82dd1 Reviewed-by: Alessandro Portale --- .../qml2puppet/instances/nodeinstanceserver.cpp | 14 ++++++++++---- .../qml2puppet/instances/nodeinstanceserver.h | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index c691d0b328b..cc31c2ec567 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -420,11 +420,8 @@ void NodeInstanceServer::setupImports(const QVector &contain workingImportStatementList.prepend(firstWorkingImportStatement); } - QVector instanceIds; - foreach (const IdContainer &idContainer, idContainerVector) - instanceIds.append(idContainer.instanceId()); if (!errorMessage.isEmpty()) - sendDebugOutput(DebugOutputCommand::WarningType, errorMessage, instanceIds); + sendDebugOutput(DebugOutputCommand::WarningType, errorMessage); setupOnlyWorkingImports(workingImportStatementList); } @@ -438,6 +435,15 @@ void NodeInstanceServer::setupOnlyWorkingImports(const QStringList &workingImpor m_importComponent->setData(componentCode.append("\nItem {}\n"), fileUrl()); m_importComponentObject = m_importComponent->create(); + + if (!m_importComponentObject) { + delete m_importComponent; + m_importComponent = new QQmlComponent(engine(), quickView()); + m_importComponent->setData("import QtQuick 2.0\n\nItem {}\n", fileUrl()); + sendDebugOutput(DebugOutputCommand::WarningType, tr("No working QtQuick import")); + m_importComponentObject = m_importComponent->create(); + } + Q_ASSERT(m_importComponent && m_importComponentObject); Q_ASSERT_X(m_importComponent->errors().isEmpty(), __FUNCTION__, m_importComponent->errorString().toLatin1()); } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h index 6273ec1013c..2cfd859aea4 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h @@ -128,7 +128,7 @@ public: virtual QQmlView *declarativeView() const = 0; virtual QQuickView *quickView() const = 0; - void sendDebugOutput(DebugOutputCommand::Type type, const QString &message, qint32 instanceId); + void sendDebugOutput(DebugOutputCommand::Type type, const QString &message, qint32 instanceId = 0); void sendDebugOutput(DebugOutputCommand::Type type, const QString &message, const QVector &instanceIds); void removeInstanceRelationsipForDeletedObject(QObject *object);