From 2c4621196734e9db39e425653d2ea3e9ad9af601 Mon Sep 17 00:00:00 2001 From: Viktor Ostashevskyi Date: Wed, 10 Jul 2013 15:04:49 +0200 Subject: [PATCH 001/104] Fix names spelling in the contributor list Change-Id: I057f0ae070e4b66628dd2ff64aa716dc2000f594 Reviewed-by: Sergey Belyashov Reviewed-by: Dmitry Savchenko Reviewed-by: Viktor Ostashevskyi Reviewed-by: Andrey M. Tokarev Reviewed-by: Eike Ziller --- dist/changes-2.8.0 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/changes-2.8.0 b/dist/changes-2.8.0 index 60737f2f467..deca684bda3 100644 --- a/dist/changes-2.8.0 +++ b/dist/changes-2.8.0 @@ -173,7 +173,7 @@ Alessandro Portale Andreas Holzammer André Hartmann André Pönitz -Andrey M. Tokarev +Andrey M. Tokarev (Андрей М. Токарев) Aurindam Jana Christian Kandeler Christian Stenger @@ -181,7 +181,7 @@ Christian Strømme Daniel Teske David Schulz Debao Zhang -Dmitry Savchenko +Dmitry Savchenko (Дмитрий Савченко) Eike Ziller El Mehdi Fekari Erik Verbruggen @@ -215,7 +215,7 @@ Petar Perisin Przemyslaw Gorszkowski Rafael Roquetto Robert Löhning -Sergey Belyashov +Sergey Belyashov (Сергей Беляшов) Sergey Shambir Shane Peelar Thiago Macieira @@ -225,4 +225,4 @@ Timo Jyrinki Tobias Hunger Tobias Nätterlund Tor Arne Vestbø -Victor Ostashevsky +Viktor Ostashevskyi (Віктор Осташевський) From 7f09973ca219e4db9a9f320cb31f3294e6a2e80e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Oct 2013 15:26:25 +0200 Subject: [PATCH 002/104] QmlDesigner: Support for enums in alias properties Also the qmlpuppet could not handle enums in combination with alias properties. Enums on alias properties are handled as bindings. This is just an intermediate solution until we refactor the handling of enums in the model. Do not integrate this patch to 3.0 or master. Task-number: QTCREATORBUG-10114 Change-Id: I022637285deb5ff13b61d761d89b3ae1201575db Reviewed-by: Marco Bubke --- .../instances/objectnodeinstance.cpp | 160 +++++++++++++++--- 1 file changed, 139 insertions(+), 21 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/objectnodeinstance.cpp index 7da7543d576..bbb0ef5414b 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/objectnodeinstance.cpp @@ -434,6 +434,111 @@ QVariant ObjectNodeInstance::fixResourcePaths(const QVariant &value) return value; } + +QStringList qtQuickEnums() +{ + static QStringList stringList = QStringList() + +/* Font*/ + + << QLatin1String("Font.Light") + << QLatin1String("Font.Normal") + << QLatin1String("Font.DemiBold") + << QLatin1String("Font.Bold") + << QLatin1String("Font.Black") + +/* Text*/ + + << QLatin1String("Text.AutoText") + << QLatin1String("Text.PlainText") + << QLatin1String("Text.RichText") + << QLatin1String("Text.StyledText") + + << QLatin1String("Text.Normal") + << QLatin1String("Text.Outline") + << QLatin1String("Text.Raised") + << QLatin1String("Text.Sunken") + + << QLatin1String("Text.AlignLeft") + << QLatin1String("Text.AlignRight") + << QLatin1String("Text.AlignHCenter") + << QLatin1String("Text.AlignJustify") + + << QLatin1String("Text.AlignTop") + << QLatin1String("Text.AlignBottom") + << QLatin1String("Text.AlignVCenter") + + << QLatin1String("Text.QtRendering") + << QLatin1String("Text.NativeRendering") + + << QLatin1String("Text.NoWrap") + << QLatin1String("Text.WordWrap") + << QLatin1String("Text.WrapAnywhere") + << QLatin1String("Text.Wrap") + +/* Flickable */ + + << QLatin1String("Flickable.StopAtBounds") + << QLatin1String("Flickable.DragOverBounds") + << QLatin1String("Flickable.DragAndOvershootBounds") + + << QLatin1String("Flickable.AutoFlickDirection") + << QLatin1String("Flickable.HorizontalFlick") + << QLatin1String("Flickable.VerticalFlick") + << QLatin1String("Flickable.HorizontalAndVerticalFlick") + +/* Grid */ + + << QLatin1String("Grid.LeftToRight") + << QLatin1String("Grid.TopToBottom") + +/* Flow */ + + << QLatin1String("Flow.LeftToRight") + << QLatin1String("Flow.TopToBottom") + +/* GridView */ + + << QLatin1String("GridView.NoSnap") + << QLatin1String("GridView.SnapToRow") + << QLatin1String("GridView.SnapOneRow"); + + return stringList; +} + +static inline QStringList removeScope(QStringList enumList) +{ + QStringList stringList; + + foreach (const QString &enumString, enumList) { + QStringList splittedString = enumString.split(QLatin1String(".")); + Q_ASSERT(splittedString.count() == 2); + stringList.append(splittedString.last()); + } + + return stringList; +} + +QStringList qtQuickEnumsWithoutScope() +{ + static QStringList stringList = removeScope(qtQuickEnums()); + return stringList; +} + +QString qtQuickEnumScopeForEnumString(const QString &inputEnumString) +{ + if (qtQuickEnumsWithoutScope().contains(inputEnumString)) { + foreach (const QString &enumString, qtQuickEnums()) { + QStringList splittedString = enumString.split(QLatin1String(".")); + Q_ASSERT(splittedString.count() == 2); + if (splittedString.last() == inputEnumString) + return splittedString.first(); + } + } + + return QString(); +} + void ObjectNodeInstance::setPropertyVariant(const PropertyName &name, const QVariant &value) { QDeclarativeProperty property(object(), name, context()); @@ -441,32 +546,45 @@ void ObjectNodeInstance::setPropertyVariant(const PropertyName &name, const QVar if (!property.isValid()) return; - QVariant fixedValue = fixResourcePaths(value); + int idx = object()->metaObject()->indexOfProperty(name); - QVariant oldValue = property.read(); - if (oldValue.type() == QVariant::Url) { - QUrl url = oldValue.toUrl(); - QString path = url.toLocalFile(); - if (QFileInfo(path).exists() && nodeInstanceServer() && !path.isEmpty()) - nodeInstanceServer()->removeFilePropertyFromFileSystemWatcher(object(), name, path); - } + QMetaProperty metaProperty = object()->metaObject()->property(idx); - if (hasValidResetBinding(name)) { - QDeclarativePropertyPrivate::setBinding(property, 0, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); - resetBinding(name)->setEnabled(false); - } + //Alias properties are never enum types. We use a binding instead. + if (metaProperty.isValid() && !metaProperty.isEnumType() + && (QLatin1String(metaProperty.typeName()) == QLatin1String("int")) + && qtQuickEnumsWithoutScope().contains(value.toString()) + ) { + setPropertyBinding(name, qtQuickEnumScopeForEnumString(value.toString()) + QLatin1String(".") + value.toString()); + } else { - bool isWritten = property.write(convertSpecialCharacter(fixedValue)); + QVariant fixedValue = fixResourcePaths(value); - if (!isWritten) - qDebug() << "ObjectNodeInstance.setPropertyVariant: Cannot be written: " << object() << name << fixedValue; + QVariant oldValue = property.read(); + if (oldValue.type() == QVariant::Url) { + QUrl url = oldValue.toUrl(); + QString path = url.toLocalFile(); + if (QFileInfo(path).exists() && nodeInstanceServer() && !path.isEmpty()) + nodeInstanceServer()->removeFilePropertyFromFileSystemWatcher(object(), name, path); + } - QVariant newValue = property.read(); - if (newValue.type() == QVariant::Url) { - QUrl url = newValue.toUrl(); - QString path = url.toLocalFile(); - if (QFileInfo(path).exists() && nodeInstanceServer() && !path.isEmpty()) - nodeInstanceServer()->addFilePropertyToFileSystemWatcher(object(), name, path); + if (hasValidResetBinding(name)) { + QDeclarativePropertyPrivate::setBinding(property, 0, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); + resetBinding(name)->setEnabled(false); + } + + bool isWritten = property.write(convertSpecialCharacter(fixedValue)); + + if (!isWritten) + qDebug() << "ObjectNodeInstance.setPropertyVariant: Cannot be written: " << object() << name << fixedValue; + + QVariant newValue = property.read(); + if (newValue.type() == QVariant::Url) { + QUrl url = newValue.toUrl(); + QString path = url.toLocalFile(); + if (QFileInfo(path).exists() && nodeInstanceServer() && !path.isEmpty()) + nodeInstanceServer()->addFilePropertyToFileSystemWatcher(object(), name, path); + } } } From a6d6db3397b82dc9fca5517c3ad2595f00c89f90 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Oct 2013 15:23:30 +0200 Subject: [PATCH 003/104] QmlDesigner: Support for enums in alias properties Enums in combination with alias properties were not supported. The QML Engine does not distinguish between bindings and enums in this case. We want to distinguish between bindings/expressions and literal enums. This is not possible with the current code model, so we use a list of hardcoded enum keys for Qt Quick. There a several issues we want to properly fix in the future. * Make the model aware of enums. Currently enums are strings (the key) in the model. This has historical reasons. Instead we should use a custom type registered to QVariant that handles the scope, key and integer value. * The code model should be fully aware of enums even in the alias case. Do not integrate this patch to 3.0 or master. Task-number: QTCREATORBUG-10114 Change-Id: I780a201202f0949b1e2eb2f2525ddb031e1cd18b Reviewed-by: Marco Bubke --- .../designercore/include/nodemetainfo.h | 5 + .../designercore/metainfo/nodemetainfo.cpp | 104 ++++++++++++++++++ .../designercore/model/qmltextgenerator.cpp | 20 +++- .../designercore/model/texttomodelmerger.cpp | 9 ++ 4 files changed, 133 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h index c06b72a212e..46e638f54c0 100644 --- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h @@ -104,6 +104,11 @@ public: static void clearCache(); + //### TODO: These are hardcoded and ideally the code model should be able to provide them + static QStringList qtQuickEnums(); + static QStringList qtQuickEnumsWithoutScope(); + static QString qtQuickEnumScopeForEnumString(const QString &inputEnumString); + private: QSharedPointer m_privateData; }; diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index a10bfdd988f..750f9a3624a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1307,4 +1307,108 @@ bool NodeMetaInfo::isLayoutable() const return isSubclassOf("QtQuick.Positioner", -1, -1) || isSubclassOf("QtQuick.Layouts.Layout", -1, -1); } +QStringList NodeMetaInfo::qtQuickEnums() +{ + static QStringList stringList = QStringList() + +/* Font*/ + + << QLatin1String("Font.Light") + << QLatin1String("Font.Normal") + << QLatin1String("Font.DemiBold") + << QLatin1String("Font.Bold") + << QLatin1String("Font.Black") + +/* Text*/ + + << QLatin1String("Text.AutoText") + << QLatin1String("Text.PlainText") + << QLatin1String("Text.RichText") + << QLatin1String("Text.StyledText") + + << QLatin1String("Text.Normal") + << QLatin1String("Text.Outline") + << QLatin1String("Text.Raised") + << QLatin1String("Text.Sunken") + + << QLatin1String("Text.AlignLeft") + << QLatin1String("Text.AlignRight") + << QLatin1String("Text.AlignHCenter") + << QLatin1String("Text.AlignJustify") + + << QLatin1String("Text.AlignTop") + << QLatin1String("Text.AlignBottom") + << QLatin1String("Text.AlignVCenter") + + << QLatin1String("Text.QtRendering") + << QLatin1String("Text.NativeRendering") + + << QLatin1String("Text.NoWrap") + << QLatin1String("Text.WordWrap") + << QLatin1String("Text.WrapAnywhere") + << QLatin1String("Text.Wrap") + +/* Flickable */ + + << QLatin1String("Flickable.StopAtBounds") + << QLatin1String("Flickable.DragOverBounds") + << QLatin1String("Flickable.DragAndOvershootBounds") + + << QLatin1String("Flickable.AutoFlickDirection") + << QLatin1String("Flickable.HorizontalFlick") + << QLatin1String("Flickable.VerticalFlick") + << QLatin1String("Flickable.HorizontalAndVerticalFlick") + +/* Grid */ + + << QLatin1String("Grid.LeftToRight") + << QLatin1String("Grid.TopToBottom") + +/* Flow */ + + << QLatin1String("Flow.LeftToRight") + << QLatin1String("Flow.TopToBottom") + +/* GridView */ + + << QLatin1String("GridView.NoSnap") + << QLatin1String("GridView.SnapToRow") + << QLatin1String("GridView.SnapOneRow"); + + return stringList; +} + +static inline QStringList removeScope(QStringList enumList) +{ + QStringList stringList; + + foreach (const QString &enumString, enumList) { + QStringList splittedString = enumString.split(QLatin1String(".")); + Q_ASSERT(splittedString.count() == 2); + stringList.append(splittedString.last()); + } + + return stringList; +} + +QStringList NodeMetaInfo::qtQuickEnumsWithoutScope() +{ + static QStringList stringList = removeScope(qtQuickEnums()); + return stringList; +} + +QString NodeMetaInfo::qtQuickEnumScopeForEnumString(const QString &inputEnumString) +{ + if (qtQuickEnumsWithoutScope().contains(inputEnumString)) { + foreach (const QString &enumString, qtQuickEnums()) { + QStringList splittedString = enumString.split(QLatin1String(".")); + Q_ASSERT(splittedString.count() == 2); + if (splittedString.last() == inputEnumString) + return splittedString.first(); + } + } + + return QString(); +} + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp index 4fa4a8b82ba..467870a5792 100644 --- a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp @@ -111,11 +111,21 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept if (property.name() == "id") return stringValue; - if (false) { - } - if (variantProperty.parentModelNode().metaInfo().isValid() && - variantProperty.parentModelNode().metaInfo().propertyIsEnumType(variantProperty.name())) { - return variantProperty.parentModelNode().metaInfo().propertyEnumScope(variantProperty.name()) + '.' + stringValue; + if (variantProperty.parentModelNode().metaInfo().isValid() + && variantProperty.parentModelNode().metaInfo().propertyIsEnumType(variantProperty.name())) { + return variantProperty.parentModelNode().metaInfo().propertyEnumScope(variantProperty.name()) + + QLatin1String(".") + stringValue; + //Enums do not work with alias properties. This is a workaround. + } else if (variantProperty.parentModelNode().metaInfo().isValid() + //Enums are not strings + && variantProperty.parentModelNode().metaInfo().propertyTypeName(variantProperty.name()) + != ("string") + && variantProperty.parentModelNode().metaInfo().propertyTypeName(variantProperty.name()) + != ("QString") + //We check if the value of the property is one of the known Qt Quick enums. + && NodeMetaInfo::qtQuickEnumsWithoutScope().contains(stringValue) + ) { + return NodeMetaInfo::qtQuickEnumScopeForEnumString(stringValue) + QLatin1String(".") + stringValue; } else { switch (value.type()) { diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 8948278ec29..3d9ab7b8f9d 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -549,6 +549,10 @@ public: value.convert(QVariant::Bool); return value; } else if (property->asNumberValue()) { + //Enums in alias properties pretend to be a number. + //In Qt Quick 1 this was still valid syntax. + if (NodeMetaInfo::qtQuickEnumsWithoutScope().contains(value.toString())) + return value.toString(); value.convert(QVariant::Double); return value; } else if (property->asStringValue()) { @@ -569,6 +573,11 @@ public: && globalQtEnums().contains(astValueList.last())) return QVariant(astValueList.last()); + if (astValueList.count() == 2 //Check for global Qt Quick enums + && NodeMetaInfo::qtQuickEnums().contains(astValue)) { + return QVariant(astValueList.last()); + } + ExpressionStatement *eStmt = cast(rhs); if (!eStmt || !eStmt->expression) return QVariant(); From 02c484a343949ec79adaf80c72ed4f3452052237 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Oct 2013 17:36:19 +0200 Subject: [PATCH 004/104] QmlDesigner.MetaInfo: fix handling of enum scopes The codel model does not provide enum scopes at the moment. As a fallback we use class names, but this fails if we use the original cpp class name from the package. For this reason we always try to find an export with a package different from . As a final solution the code model should be able to provide the enum scopes. Task-number: QTCREATORBUG-10114 Change-Id: I15396c83590426ab0b9b55c8646a89c8d5712683 Reviewed-by: Fawzi Mohamed --- .../designercore/metainfo/nodemetainfo.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 750f9a3624a..000176d2075 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -40,6 +40,7 @@ #include #include #include +#include namespace QmlDesigner { @@ -775,8 +776,20 @@ QString NodeMetaInfoPrivate::propertyEnumScope(const PropertyName &propertyName) return QString(); const CppComponentValue *definedIn = 0; qmlObjectValue->getEnum(propertyType(propertyName), &definedIn); - if (definedIn) + if (definedIn) { + QString nonCppPackage; + foreach (const LanguageUtils::FakeMetaObject::Export &qmlExport, definedIn->metaObject()->exports()) { + if (qmlExport.package != QLatin1String("")) + nonCppPackage = qmlExport.package; + } + + const LanguageUtils::FakeMetaObject::Export qmlExport = + definedIn->metaObject()->exportInPackage(nonCppPackage); + if (qmlExport.isValid()) + return qmlExport.type; + return definedIn->className(); + } return QString(); } From a64adc4cd114526e57d6091dc9a7528264259e62 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Thu, 17 Oct 2013 08:54:15 +0300 Subject: [PATCH 005/104] Git: Fix crash on show stash * show() is called with a QString reference to the model * And editor is opened, which triggers stateChanged() * stateChanged() updates StashDialog, which refreshes the model with an empty directory (another bug) * The QString name reference is invalidated => crash on access Task-number: QTCREATORBUG-10397 Change-Id: I0c4077f8c4fc90905568f80d1cd89f61c4cd2cba Reviewed-by: Eike Ziller --- src/plugins/git/stashdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/git/stashdialog.cpp b/src/plugins/git/stashdialog.cpp index ffbf7ecb3fe..fecdedddd85 100644 --- a/src/plugins/git/stashdialog.cpp +++ b/src/plugins/git/stashdialog.cpp @@ -212,7 +212,7 @@ void StashDialog::showCurrent() { const int index = currentRow(); QTC_ASSERT(index >= 0, return); - gitClient()->show(m_repository, m_model->at(index).name); + gitClient()->show(m_repository, QString(m_model->at(index).name)); } // Suggest Branch name to restore 'stash@{0}' -> 'stash0-date' From 1a960865a2821c292c51a4d5acb870aaeb461b22 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 21 Oct 2013 12:03:41 +0200 Subject: [PATCH 006/104] QmlDesigner.PropertyEditor: fix for point and pixel size Task-number: QTCREATORBUG-9769 Change-Id: I1a1a9ebbda78daec0a62cb2e7c7859a636da57dd Reviewed-by: Thomas Hartmann --- .../HelperWidgets/FontGroupBox.qml | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyeditor/HelperWidgets/FontGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/HelperWidgets/FontGroupBox.qml index 3ecd6aaf640..85f552b6dc0 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/HelperWidgets/FontGroupBox.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/HelperWidgets/FontGroupBox.qml @@ -44,6 +44,14 @@ GroupBox { property variant underlineStyle: backendValues.font_underline property variant strikeoutStyle: backendValues.font_strikeout + onPointSizeChanged: { + sizeWidget.setPointPixelSize(); + } + + onPixelSizeChanged: { + sizeWidget.setPointPixelSize(); + } + layout: VerticalLayout { QWidget { @@ -61,17 +69,22 @@ GroupBox { QWidget { id: sizeWidget property bool selectionFlag: selectionChanged - + property bool pixelSize: sizeType.currentText == "pixels" property bool isSetup; - - onSelectionFlagChanged: { + + function setPointPixelSize() { isSetup = true; sizeType.currentText = "points"; - if (pixelSize.isInModel) + if (fontGroupBox.pixelSize.isInModel) sizeType.currentText = "pixels"; isSetup = false; - } + } + + onSelectionFlagChanged: { + setPointPixelSize(); + } + layout: HorizontalLayout { Label { text: qsTr("Size") From 50f522b2f7b3f81caf30dfcba0b8b267dcfc7fff Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 17 Oct 2013 13:48:04 +0200 Subject: [PATCH 007/104] Remove most trailing newlines from translated messages. They are a hassle for translators and reviewers alike. Change-Id: I07c1b61e8b6719e54fdc1f69cf63f573119a6776 Reviewed-by: hjk Reviewed-by: Robert Loehning Reviewed-by: Eike Ziller --- src/libs/extensionsystem/pluginmanager.cpp | 6 ++++-- src/libs/zeroconf/embeddedLib.cpp | 5 ++--- .../coreplugin/dialogs/readonlyfilesdialog.cpp | 13 +++++++++---- src/plugins/coreplugin/externaltool.cpp | 3 ++- src/plugins/coreplugin/outputwindow.cpp | 2 +- src/plugins/coreplugin/vcsmanager.cpp | 4 ++-- src/plugins/debugger/debuggerengine.cpp | 3 ++- src/plugins/debugger/debuggerrunner.cpp | 8 ++++---- src/plugins/debugger/gdb/coregdbadapter.cpp | 3 ++- src/plugins/debugger/gdb/gdbengine.cpp | 6 +++--- src/plugins/debugger/gdb/gdbplainengine.cpp | 2 +- .../debugger/gdb/remotegdbserveradapter.cpp | 3 ++- src/plugins/debugger/qml/qmladapter.cpp | 4 ++-- src/plugins/git/gitclient.cpp | 4 ++-- src/plugins/ios/iosruncontrol.cpp | 2 +- .../projectexplorer/applicationlauncher.cpp | 2 +- .../projectexplorer/localapplicationruncontrol.cpp | 12 ++++++------ src/plugins/projectexplorer/projectexplorer.cpp | 10 ++++++---- .../projectexplorer/projectfilewizardextension.cpp | 3 ++- .../projectexplorer/targetsettingspanel.cpp | 6 ++++-- src/plugins/qmljseditor/qmljswrapinloader.cpp | 7 ++++--- src/plugins/qmljstools/qmljsplugindumper.cpp | 4 ++-- src/plugins/qnx/blackberryinstallwizardpages.cpp | 4 ++-- .../qnx/cascadesimport/importlogconverter.cpp | 4 ++-- src/plugins/qnx/qnxanalyzesupport.cpp | 2 +- src/plugins/qnx/qnxdebugsupport.cpp | 2 +- src/plugins/qnx/qnxdevicetester.cpp | 8 ++++---- src/plugins/remotelinux/linuxdevicetester.cpp | 14 +++++++------- .../remotelinux/remotelinuxanalyzesupport.cpp | 2 +- .../remotelinux/remotelinuxdebugsupport.cpp | 2 +- src/plugins/valgrind/callgrindengine.cpp | 2 +- src/plugins/valgrind/memcheckengine.cpp | 2 +- src/plugins/valgrind/valgrindengine.cpp | 8 ++++---- src/plugins/vcsbase/vcsbaseoutputwindow.cpp | 6 +++--- 34 files changed, 92 insertions(+), 76 deletions(-) diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 2de78a7f137..917642e43c0 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -1079,11 +1079,13 @@ bool PluginManagerPrivate::loadQueue(PluginSpec *spec, QList &queu // check for circular dependencies if (circularityCheckQueue.contains(spec)) { spec->d->hasError = true; - spec->d->errorString = PluginManager::tr("Circular dependency detected:\n"); + spec->d->errorString = PluginManager::tr("Circular dependency detected:"); + spec->d->errorString += QLatin1Char('\n'); int index = circularityCheckQueue.indexOf(spec); for (int i = index; i < circularityCheckQueue.size(); ++i) { - spec->d->errorString.append(PluginManager::tr("%1(%2) depends on\n") + spec->d->errorString.append(PluginManager::tr("%1(%2) depends on") .arg(circularityCheckQueue.at(i)->name()).arg(circularityCheckQueue.at(i)->version())); + spec->d->errorString += QLatin1Char('\n'); } spec->d->errorString.append(PluginManager::tr("%1(%2)").arg(spec->name()).arg(spec->version())); return false; diff --git a/src/libs/zeroconf/embeddedLib.cpp b/src/libs/zeroconf/embeddedLib.cpp index b4ae626d494..993944d0b0e 100644 --- a/src/libs/zeroconf/embeddedLib.cpp +++ b/src/libs/zeroconf/embeddedLib.cpp @@ -126,9 +126,8 @@ public: if (logger) { QByteArray logBA = oldLog.readAll(); logger->appendError(ErrorMessage::NoteLevel, - ZConfLib::tr("%1: log of previous daemon run is: '%2'.\n") - .arg(name()) - .arg(QString::fromLatin1(logBA.constData(), logBA.size()))); + ZConfLib::tr("%1: log of previous daemon run is: '%2'.") + .arg(name(), QString::fromLatin1(logBA.constData(), logBA.size())) + QLatin1Char('\n')); qDebug()<versionControls[file]) { const QString openText = vc->vcsOpenText().remove(QLatin1Char('&')); title = tr("Failed to %1 File").arg(openText); - message = tr("%1 file %2 from version control system %3 failed.\n") + message = tr("%1 file %2 from version control system %3 failed.") .arg(openText) .arg(QDir::toNativeSeparators(file)) .arg(vc->displayName()); + message += QLatin1Char('\n'); message += d->failWarning; } else { title = tr("No Version Control System Found"); message = tr("Cannot open file %1 from version control system.\n" - "No version control system found.\n") + "No version control system found.") .arg(QDir::toNativeSeparators(file)); + message += QLatin1Char('\n'); message += d->failWarning; } break; } case RO_MakeWritable: title = tr("Cannot Set Permissions"); - message = tr("Cannot set permissions for %1 to writable.\n") + message = tr("Cannot set permissions for %1 to writable.") .arg(QDir::toNativeSeparators(file)); + message += QLatin1Char('\n'); message += d->failWarning; break; case RO_SaveAs: title = tr("Cannot Save File"); - message = tr("Cannot save file %1\n").arg(QDir::toNativeSeparators(file)); + message = tr("Cannot save file %1").arg(QDir::toNativeSeparators(file)); + message += QLatin1Char('\n'); message += d->failWarning; break; default: @@ -240,6 +244,7 @@ void ReadOnlyFilesDialog::promptFailWarning(const QStringList &files, ReadOnlyRe * Executes the ReadOnlyFilesDialog dialog. * Returns ReadOnlyResult to provide information about the operation that was * used to make the files writable. + * * \internal * * Also displays an error dialog when some operations cannot be executed and the diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp index 971704272e3..590806ff253 100644 --- a/src/plugins/coreplugin/externaltool.cpp +++ b/src/plugins/coreplugin/externaltool.cpp @@ -561,9 +561,10 @@ bool ExternalToolRunner::resolve() if (m_resolvedExecutable.isEmpty()) { m_hasError = true; for (int i = 0; i < expandedExecutables.size(); ++i) { - m_errorString += tr("Could not find executable for '%1' (expanded '%2')\n") + m_errorString += tr("Could not find executable for '%1' (expanded '%2')") .arg(m_tool->executables().at(i)) .arg(expandedExecutables.at(i)); + m_errorString += QLatin1Char('\n'); } if (!m_errorString.isEmpty()) m_errorString.chop(1); diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index bdd82784b13..8813ea21e9f 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -264,7 +264,7 @@ void OutputWindow::appendText(const QString &textIn, const QTextCharFormat &form if (m_maxLineCount > 0 && document()->blockCount() >= m_maxLineCount) { QTextCharFormat tmp; tmp.setFontWeight(QFont::Bold); - cursor.insertText(doNewlineEnforcement(tr("Additional output omitted\n")), tmp); + cursor.insertText(doNewlineEnforcement(tr("Additional output omitted") + QLatin1Char('\n')), tmp); } cursor.endEditBlock(); diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index d58a678d468..4e2636a9088 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -404,8 +404,8 @@ QString VcsManager::msgAddToVcsFailedTitle() QString VcsManager::msgToAddToVcsFailed(const QStringList &files, const IVersionControl *vc) { return files.size() == 1 - ? tr("Could not add the file\n%1\nto version control (%2)\n") - .arg(files.front(), vc->displayName()) + ? tr("Could not add the file\n%1\nto version control (%2)") + .arg(files.front(), vc->displayName()) + QLatin1Char('\n') : tr("Could not add the following files to version control (%1)\n%2") .arg(vc->displayName(), files.join(QString(QLatin1Char('\n')))); } diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 30c4cf5a911..59058769bf4 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1810,7 +1810,8 @@ void DebuggerEngine::checkForReleaseBuild(const DebuggerStartParameters &sp) } showMessageBox(QMessageBox::Information, tr("Warning"), tr("This does not seem to be a \"Debug\" build.\n" - "Setting breakpoints by file name and line number may fail.\n").append(detailedWarning)); + "Setting breakpoints by file name and line number may fail.") + + QLatin1Char('\n') + detailedWarning); } } // namespace Debugger diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index a301f443fe7..a7d33fdb5ec 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -192,7 +192,7 @@ void DebuggerRunControl::start() // User canceled input dialog asking for executable when working on library project. if (d->m_engine->startParameters().startMode == StartInternal && d->m_engine->startParameters().executable.isEmpty()) { - appendMessage(tr("No executable specified.\n"), ErrorMessageFormat); + appendMessage(tr("No executable specified.") + QLatin1Char('\n'), ErrorMessageFormat); emit started(); emit finished(); return; @@ -232,12 +232,12 @@ void DebuggerRunControl::start() d->m_engine->startDebugger(this); if (d->m_running) - appendMessage(tr("Debugging starts\n"), NormalMessageFormat); + appendMessage(tr("Debugging starts") + QLatin1Char('\n'), NormalMessageFormat); } void DebuggerRunControl::startFailed() { - appendMessage(tr("Debugging has failed\n"), NormalMessageFormat); + appendMessage(tr("Debugging has failed") + QLatin1Char('\n'), NormalMessageFormat); d->m_running = false; emit finished(); d->m_engine->handleStartFailed(); @@ -245,7 +245,7 @@ void DebuggerRunControl::startFailed() void DebuggerRunControl::handleFinished() { - appendMessage(tr("Debugging has finished\n"), NormalMessageFormat); + appendMessage(tr("Debugging has finished") + QLatin1Char('\n'), NormalMessageFormat); if (d->m_engine) d->m_engine->handleFinished(); debuggerCore()->runControlFinished(d->m_engine); diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp index ce66963e525..13f6326a21f 100644 --- a/src/plugins/debugger/gdb/coregdbadapter.cpp +++ b/src/plugins/debugger/gdb/coregdbadapter.cpp @@ -211,8 +211,9 @@ void GdbCoreEngine::handleTargetCore(const GdbResponse &response) postCommand("p 5", CB(handleRoundTrip)); return; } - QString msg = tr("Attach to core \"%1\" failed:\n") + QString msg = tr("Attach to core \"%1\" failed:") .arg(startParameters().coreFile) + + QLatin1Char('\n') + QString::fromLocal8Bit(response.data["msg"].data()); notifyInferiorSetupFailed(msg); } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index bdd1c40b36a..ea2b2381c49 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1893,7 +1893,7 @@ void GdbEngine::pythonDumpersFailed() void GdbEngine::showExecutionError(const QString &message) { showMessageBox(QMessageBox::Critical, tr("Execution Error"), - tr("Cannot continue debugged process:\n") + message); + tr("Cannot continue debugged process:") + QLatin1Char('\n') + message); } void GdbEngine::handleExecuteContinue(const GdbResponse &response) @@ -2296,7 +2296,7 @@ void GdbEngine::handleExecuteNext(const GdbResponse &response) notifyInferiorRunFailed(); } else { showMessageBox(QMessageBox::Critical, tr("Execution Error"), - tr("Cannot continue debugged process:\n") + QString::fromLocal8Bit(msg)); + tr("Cannot continue debugged process:") + QLatin1Char('\n') + QString::fromLocal8Bit(msg)); notifyInferiorIll(); } } @@ -3848,7 +3848,7 @@ void GdbEngine::handleMakeSnapshot(const GdbResponse &response) } else { QByteArray msg = response.data["msg"].data(); showMessageBox(QMessageBox::Critical, tr("Snapshot Creation Error"), - tr("Cannot create snapshot:\n") + QString::fromLocal8Bit(msg)); + tr("Cannot create snapshot:") + QLatin1Char('\n') + QString::fromLocal8Bit(msg)); } } diff --git a/src/plugins/debugger/gdb/gdbplainengine.cpp b/src/plugins/debugger/gdb/gdbplainengine.cpp index eaa992ec75a..4050e9048e5 100644 --- a/src/plugins/debugger/gdb/gdbplainengine.cpp +++ b/src/plugins/debugger/gdb/gdbplainengine.cpp @@ -78,7 +78,7 @@ void GdbPlainEngine::handleFileExecAndSymbols(const GdbResponse &response) QString msg = fromLocalEncoding(ba); // Extend the message a bit in unknown cases. if (!ba.endsWith("File format not recognized")) - msg = tr("Starting executable failed:\n") + msg; + msg = tr("Starting executable failed:") + QLatin1Char('\n') + msg; notifyInferiorSetupFailed(msg); } } diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index fe1913d64e6..dfe65871129 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -252,7 +252,8 @@ void GdbRemoteServerEngine::handleFileExecAndSymbols(const GdbResponse &response callTargetRemote(); } else { QByteArray reason = response.data["msg"].data(); - QString msg = tr("Reading debug information failed:\n"); + QString msg = tr("Reading debug information failed:"); + msg += QLatin1Char('\n'); msg += QString::fromLocal8Bit(reason); if (reason.endsWith("No such file or directory.")) { showMessage(_("INFERIOR STARTUP: BINARY NOT FOUND")); diff --git a/src/plugins/debugger/qml/qmladapter.cpp b/src/plugins/debugger/qml/qmladapter.cpp index ef7a7434d35..16c66285252 100644 --- a/src/plugins/debugger/qml/qmladapter.cpp +++ b/src/plugins/debugger/qml/qmladapter.cpp @@ -141,7 +141,7 @@ void QmlAdapter::connectionStateChanged() switch (m_conn->state()) { case QAbstractSocket::UnconnectedState: { - showConnectionStatusMessage(tr("Disconnected.\n\n")); + showConnectionStatusMessage(tr("Disconnected.") + QLatin1String("\n\n")); emit disconnected(); break; @@ -154,7 +154,7 @@ void QmlAdapter::connectionStateChanged() break; case QAbstractSocket::ConnectedState: { - showConnectionStatusMessage(tr("Connected.\n")); + showConnectionStatusMessage(tr("Connected.") + QLatin1Char('\n')); m_connectionTimer.stop(); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index f74f4d94f15..edb9dcd551f 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -3027,9 +3027,9 @@ bool GitClient::getCommitData(const QString &workingDirectory, static inline QString msgCommitted(const QString &amendSHA1, int fileCount) { if (amendSHA1.isEmpty()) - return GitClient::tr("Committed %n file(s).\n", 0, fileCount); + return GitClient::tr("Committed %n file(s).", 0, fileCount) + QLatin1Char('\n'); if (fileCount) - return GitClient::tr("Amended \"%1\" (%n file(s)).\n", 0, fileCount).arg(amendSHA1); + return GitClient::tr("Amended \"%1\" (%n file(s)).", 0, fileCount).arg(amendSHA1) + QLatin1Char('\n'); return GitClient::tr("Amended \"%1\".").arg(amendSHA1); } diff --git a/src/plugins/ios/iosruncontrol.cpp b/src/plugins/ios/iosruncontrol.cpp index 551ef33f85f..6db4fa7d446 100644 --- a/src/plugins/ios/iosruncontrol.cpp +++ b/src/plugins/ios/iosruncontrol.cpp @@ -64,7 +64,7 @@ void IosRunControl::start() SLOT(handleRemoteOutput(QString))); connect(m_runner, SIGNAL(finished(bool)), SLOT(handleRemoteProcessFinished(bool))); - appendMessage(tr("Starting remote process.\n"), Utils::NormalMessageFormat); + appendMessage(tr("Starting remote process.") + QLatin1Char('\n'), Utils::NormalMessageFormat); m_runner->start(); } diff --git a/src/plugins/projectexplorer/applicationlauncher.cpp b/src/plugins/projectexplorer/applicationlauncher.cpp index dbfef44220a..a3667fbeceb 100644 --- a/src/plugins/projectexplorer/applicationlauncher.cpp +++ b/src/plugins/projectexplorer/applicationlauncher.cpp @@ -285,7 +285,7 @@ void ApplicationLauncher::bringToForeground() QString ApplicationLauncher::msgWinCannotRetrieveDebuggingOutput() { - return tr("Cannot retrieve debugging output.\n"); + return tr("Cannot retrieve debugging output.") + QLatin1Char('\n'); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp index ff19195f15c..4a680a551dc 100644 --- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp +++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp @@ -98,15 +98,15 @@ void LocalApplicationRunControl::start() { emit started(); if (m_executable.isEmpty()) { - appendMessage(tr("No executable specified.\n"), Utils::ErrorMessageFormat); + appendMessage(tr("No executable specified.") + QLatin1Char('\n'), Utils::ErrorMessageFormat); emit finished(); } else if (!QFileInfo(m_executable).exists()){ - appendMessage(tr("Executable %1 does not exist.\n").arg(m_executable), + appendMessage(tr("Executable %1 does not exist.").arg(m_executable) + QLatin1Char('\n'), Utils::ErrorMessageFormat); emit finished(); } else { m_running = true; - QString msg = tr("Starting %1...\n").arg(QDir::toNativeSeparators(m_executable)); + QString msg = tr("Starting %1...").arg(QDir::toNativeSeparators(m_executable)) + QLatin1Char('\n'); appendMessage(msg, Utils::NormalMessageFormat); m_applicationLauncher.start(m_runMode, m_executable, m_commandLineArguments); setApplicationProcessHandle(ProcessHandle(m_applicationLauncher.applicationPID())); @@ -147,13 +147,13 @@ void LocalApplicationRunControl::processExited(int exitCode, QProcess::ExitStatu setApplicationProcessHandle(ProcessHandle()); QString msg; if (status == QProcess::CrashExit) { - msg = tr("%1 crashed\n") + msg = tr("%1 crashed") .arg(QDir::toNativeSeparators(m_executable)); } else { - msg = tr("%1 exited with code %2\n") + msg = tr("%1 exited with code %2") .arg(QDir::toNativeSeparators(m_executable)).arg(exitCode); } - appendMessage(msg, Utils::NormalMessageFormat); + appendMessage(msg + QLatin1Char('\n'), Utils::NormalMessageFormat); emit finished(); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 26385f6c123..6321d7a0dab 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1985,8 +1985,8 @@ int ProjectExplorerPlugin::queue(QList projects, QList stepIds) foreach (Project *pro, projects) if (pro && pro->needsConfiguration()) - preambleMessage.append(tr("The project %1 is not configured, skipping it.\n") - .arg(pro->displayName())); + preambleMessage.append(tr("The project %1 is not configured, skipping it.") + .arg(pro->displayName()) + QLatin1Char('\n')); foreach (Id id, stepIds) { foreach (Project *pro, projects) { if (!pro || !pro->activeTarget()) @@ -2204,9 +2204,10 @@ QPair ProjectExplorerPlugin::buildSettingsEnabledForSession() && project->activeTarget()->activeBuildConfiguration() && !project->activeTarget()->activeBuildConfiguration()->isEnabled()) { result.first = false; - result.second += tr("Building '%1' is disabled: %2\n") + result.second += tr("Building '%1' is disabled: %2") .arg(project->displayName(), project->activeTarget()->activeBuildConfiguration()->disabledReason()); + result.second += QLatin1Char('\n'); } } } @@ -2788,7 +2789,8 @@ void ProjectExplorerPlugin::addExistingFiles(ProjectNode *projectNode, const QSt projectNode->addFiles(fileNames, ¬Added); if (!notAdded.isEmpty()) { - QString message = tr("Could not add following files to project %1:\n").arg(projectNode->displayName()); + QString message = tr("Could not add following files to project %1:").arg(projectNode->displayName()); + message += QLatin1Char('\n'); QString files = notAdded.join(QString(QLatin1Char('\n'))); QMessageBox::warning(ICore::mainWindow(), tr("Adding Files to Project Failed"), message + files); diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index f7d3c32db42..24cba5f192a 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -303,7 +303,8 @@ void ProjectFileWizardExtension::firstExtensionPageShown( // m_context->page->setNoneLabel(tr("")); - QString text = tr("The files are implicitly added to the projects:\n"); + QString text = tr("The files are implicitly added to the projects:"); + text += QLatin1Char('\n'); foreach (const ProjectEntry &project, deployingProjects) { text += project.fileName; text += QLatin1Char('\n'); diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index d062862a2c6..504871cb5b6 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -403,13 +403,15 @@ Target *TargetSettingsPanelWidget::cloneTarget(Target *sourceTarget, Kit *k) QString error; if (!buildconfigurationError.isEmpty()) - error += tr("Build configurations:\n") + error += tr("Build configurations:") + + QLatin1Char('\n') + buildconfigurationError.join(QLatin1String("\n")); if (!deployconfigurationError.isEmpty()) { if (!error.isEmpty()) error.append(QLatin1Char('\n')); - error += tr("Deploy configurations:\n") + error += tr("Deploy configurations:") + + QLatin1Char('\n') + deployconfigurationError.join(QLatin1String("\n")); } diff --git a/src/plugins/qmljseditor/qmljswrapinloader.cpp b/src/plugins/qmljseditor/qmljswrapinloader.cpp index d7ee184eb1f..8605db7f22f 100644 --- a/src/plugins/qmljseditor/qmljswrapinloader.cpp +++ b/src/plugins/qmljseditor/qmljswrapinloader.cpp @@ -132,10 +132,11 @@ public: innerIds.remove(id); QString comment = tr("// TODO: Move position bindings from the component to the Loader.\n" - "// Check all uses of 'parent' inside the root element of the component.\n"); + "// Check all uses of 'parent' inside the root element of the component.") + + QLatin1Char('\n'); if (idBinding) { - comment += tr("// Rename all outer uses of the id '%1' to '%2.item'.\n").arg( - id, loaderId); + comment += tr("// Rename all outer uses of the id '%1' to '%2.item'.").arg( + id, loaderId) + QLatin1Char('\n'); } // handle inner ids diff --git a/src/plugins/qmljstools/qmljsplugindumper.cpp b/src/plugins/qmljstools/qmljsplugindumper.cpp index 33565307673..bb8a4a8835b 100644 --- a/src/plugins/qmljstools/qmljsplugindumper.cpp +++ b/src/plugins/qmljstools/qmljsplugindumper.cpp @@ -233,8 +233,8 @@ static QString noTypeinfoError(const QString &libraryPath) static QString qmldumpErrorMessage(const QString &libraryPath, const QString &error) { return noTypeinfoError(libraryPath) + QLatin1String("\n\n") + - PluginDumper::tr("Automatic type dump of QML module failed.\nErrors:\n%1\n"). - arg(error); + PluginDumper::tr("Automatic type dump of QML module failed.\nErrors:\n%1"). + arg(error) + QLatin1Char('\n'); } static QString qmldumpFailedMessage(const QString &libraryPath, const QString &error) diff --git a/src/plugins/qnx/blackberryinstallwizardpages.cpp b/src/plugins/qnx/blackberryinstallwizardpages.cpp index 790a88cdb96..19c9055815e 100644 --- a/src/plugins/qnx/blackberryinstallwizardpages.cpp +++ b/src/plugins/qnx/blackberryinstallwizardpages.cpp @@ -385,9 +385,9 @@ void BlackBerryInstallWizardProcessPage::initializePage() } } - m_ui->label->setText(tr("Uninstalling target:\n") + m_data.target); + m_ui->label->setText(tr("Uninstalling target:") + QLatin1Char('\n') + m_data.target); } else { - m_ui->label->setText(tr("Installing target:\n") + m_data.target); + m_ui->label->setText(tr("Installing target:") + QLatin1Char('\n') + m_data.target); } // m_targetProcess could be running if (m_targetProcess->state() == QProcess::Running) { diff --git a/src/plugins/qnx/cascadesimport/importlogconverter.cpp b/src/plugins/qnx/cascadesimport/importlogconverter.cpp index 896545aa21f..bbcb2029d3a 100644 --- a/src/plugins/qnx/cascadesimport/importlogconverter.cpp +++ b/src/plugins/qnx/cascadesimport/importlogconverter.cpp @@ -54,10 +54,10 @@ bool ImportLogConverter::convertFile(Core::GeneratedFile &file, QString &errorMe Q_UNUSED(errorMessage); QString content; content += QLatin1String("========================================================\n"); - content += tr("Generated by cascades importer ver: %1, %2\n") + content += tr("Generated by cascades importer ver: %1, %2") .arg(QLatin1String(Qnx::Constants::QNX_BLACKBERRY_CASCADESIMPORTER_VERSION)) .arg(QDateTime::currentDateTime().toString(Qt::ISODate)); - content += QLatin1String("========================================================\n\n"); + content += QLatin1String("\n========================================================\n\n"); content += convertedProjectContext().importLog().toString(); file.setContents(content); file.setAttributes(file.attributes() | Core::GeneratedFile::OpenEditorAttribute); diff --git a/src/plugins/qnx/qnxanalyzesupport.cpp b/src/plugins/qnx/qnxanalyzesupport.cpp index fe9caf70bf7..027a4b3b37c 100644 --- a/src/plugins/qnx/qnxanalyzesupport.cpp +++ b/src/plugins/qnx/qnxanalyzesupport.cpp @@ -65,7 +65,7 @@ void QnxAnalyzeSupport::handleAdapterSetupRequested() { QTC_ASSERT(state() == Inactive, return); - showMessage(tr("Preparing remote side...\n"), Utils::NormalMessageFormat); + showMessage(tr("Preparing remote side...") + QLatin1Char('\n'), Utils::NormalMessageFormat); QnxAbstractRunSupport::handleAdapterSetupRequested(); } diff --git a/src/plugins/qnx/qnxdebugsupport.cpp b/src/plugins/qnx/qnxdebugsupport.cpp index 20c238cfdcc..df1a7c16e78 100644 --- a/src/plugins/qnx/qnxdebugsupport.cpp +++ b/src/plugins/qnx/qnxdebugsupport.cpp @@ -73,7 +73,7 @@ void QnxDebugSupport::handleAdapterSetupRequested() QTC_ASSERT(state() == Inactive, return); if (m_engine) - m_engine->showMessage(tr("Preparing remote side...\n"), Debugger::AppStuff); + m_engine->showMessage(tr("Preparing remote side...") + QLatin1Char('\n'), Debugger::AppStuff); QnxAbstractRunSupport::handleAdapterSetupRequested(); } diff --git a/src/plugins/qnx/qnxdevicetester.cpp b/src/plugins/qnx/qnxdevicetester.cpp index 634ab3ce429..723e8cc3505 100644 --- a/src/plugins/qnx/qnxdevicetester.cpp +++ b/src/plugins/qnx/qnxdevicetester.cpp @@ -117,13 +117,13 @@ void QnxDeviceTester::handleProcessFinished(int exitStatus) const QString command = m_commandsToTest[m_currentCommandIndex]; if (exitStatus == QSsh::SshRemoteProcess::NormalExit) { if (m_processRunner->processExitCode() == 0) { - emit progressMessage(tr("%1 found.\n").arg(command)); + emit progressMessage(tr("%1 found.").arg(command) + QLatin1Char('\n')); } else { - emit errorMessage(tr("%1 not found.\n").arg(command)); + emit errorMessage(tr("%1 not found.").arg(command) + QLatin1Char('\n')); m_result = TestFailure; } } else { - emit errorMessage(tr("An error occurred checking for %1.\n").arg(command)); + emit errorMessage(tr("An error occurred checking for %1.").arg(command) + QLatin1Char('\n')); m_result = TestFailure; } testNextCommand(); @@ -134,7 +134,7 @@ void QnxDeviceTester::handleConnectionError() QTC_ASSERT(m_state == CommandsTest, return); m_result = TestFailure; - emit errorMessage(tr("SSH connection error: %1\n").arg(m_processRunner->lastConnectionErrorString())); + emit errorMessage(tr("SSH connection error: %1").arg(m_processRunner->lastConnectionErrorString()) + QLatin1Char('\n')); setFinished(); } diff --git a/src/plugins/remotelinux/linuxdevicetester.cpp b/src/plugins/remotelinux/linuxdevicetester.cpp index 7b30be03a97..4a62f1d6028 100644 --- a/src/plugins/remotelinux/linuxdevicetester.cpp +++ b/src/plugins/remotelinux/linuxdevicetester.cpp @@ -128,7 +128,7 @@ void GenericLinuxDeviceTester::handleConnectionFailure() { QTC_ASSERT(d->state != Inactive, return); - emit errorMessage(tr("SSH connection failure: %1\n").arg(d->connection->errorString())); + emit errorMessage(tr("SSH connection failure: %1").arg(d->connection->errorString()) + QLatin1Char('\n')); setFinished(TestFailure); } @@ -139,9 +139,9 @@ void GenericLinuxDeviceTester::handleProcessFinished(int exitStatus) if (exitStatus != SshRemoteProcess::NormalExit || d->process->exitCode() != 0) { const QByteArray stderrOutput = d->process->readAllStandardError(); if (!stderrOutput.isEmpty()) - emit errorMessage(tr("uname failed: %1\n").arg(QString::fromUtf8(stderrOutput))); + emit errorMessage(tr("uname failed: %1").arg(QString::fromUtf8(stderrOutput)) + QLatin1Char('\n')); else - emit errorMessage(tr("uname failed.\n")); + emit errorMessage(tr("uname failed.") + QLatin1Char('\n')); } else { emit progressMessage(QString::fromUtf8(d->process->readAllStandardOutput())); } @@ -158,7 +158,7 @@ void GenericLinuxDeviceTester::handlePortsGatheringError(const QString &message) { QTC_ASSERT(d->state == TestingPorts, return); - emit errorMessage(tr("Error gathering ports: %1\n").arg(message)); + emit errorMessage(tr("Error gathering ports: %1").arg(message) + QLatin1Char('\n')); setFinished(TestFailure); } @@ -167,14 +167,14 @@ void GenericLinuxDeviceTester::handlePortListReady() QTC_ASSERT(d->state == TestingPorts, return); if (d->portsGatherer.usedPorts().isEmpty()) { - emit progressMessage(tr("All specified ports are available.\n")); + emit progressMessage(tr("All specified ports are available.") + QLatin1Char('\n')); } else { QString portList; foreach (const int port, d->portsGatherer.usedPorts()) portList += QString::number(port) + QLatin1String(", "); portList.remove(portList.count() - 2, 2); - emit errorMessage(tr("The following specified ports are currently in use: %1\n") - .arg(portList)); + emit errorMessage(tr("The following specified ports are currently in use: %1") + .arg(portList) + QLatin1Char('\n')); } setFinished(TestSuccess); } diff --git a/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp b/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp index 48680b861fe..508e9c0c21d 100644 --- a/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp +++ b/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp @@ -115,7 +115,7 @@ void RemoteLinuxAnalyzeSupport::handleRemoteSetupRequested() { QTC_ASSERT(state() == Inactive, return); - showMessage(tr("Checking available ports...\n"), Utils::NormalMessageFormat); + showMessage(tr("Checking available ports...") + QLatin1Char('\n'), Utils::NormalMessageFormat); AbstractRemoteLinuxRunSupport::handleRemoteSetupRequested(); } diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index 030df3661ef..ab1c0d4150a 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -141,7 +141,7 @@ void LinuxDeviceDebugSupport::handleRemoteSetupRequested() { QTC_ASSERT(state() == Inactive, return); - showMessage(tr("Checking available ports...\n"), LogStatus); + showMessage(tr("Checking available ports...") + QLatin1Char('\n'), LogStatus); AbstractRemoteLinuxRunSupport::handleRemoteSetupRequested(); } diff --git a/src/plugins/valgrind/callgrindengine.cpp b/src/plugins/valgrind/callgrindengine.cpp index c8e6099c25c..574f286370a 100644 --- a/src/plugins/valgrind/callgrindengine.cpp +++ b/src/plugins/valgrind/callgrindengine.cpp @@ -100,7 +100,7 @@ Valgrind::ValgrindRunner * CallgrindRunControl::runner() bool CallgrindRunControl::startEngine() { - appendMessage(tr("Profiling %1\n").arg(executable()), Utils::NormalMessageFormat); + appendMessage(tr("Profiling %1").arg(executable()) + QLatin1Char('\n'), Utils::NormalMessageFormat); return ValgrindRunControl::startEngine(); } diff --git a/src/plugins/valgrind/memcheckengine.cpp b/src/plugins/valgrind/memcheckengine.cpp index 232b01e72fe..b416dddc0ee 100644 --- a/src/plugins/valgrind/memcheckengine.cpp +++ b/src/plugins/valgrind/memcheckengine.cpp @@ -80,7 +80,7 @@ bool MemcheckRunControl::startEngine() // Clear about-to-be-outdated tasks. TaskHub::clearTasks(Analyzer::Constants::ANALYZERTASK_ID); - appendMessage(tr("Analyzing memory of %1\n").arg(executable()), + appendMessage(tr("Analyzing memory of %1").arg(executable()) + QLatin1Char('\n'), Utils::NormalMessageFormat); return ValgrindRunControl::startEngine(); } diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp index 337fee3a098..7f5cb77edf0 100644 --- a/src/plugins/valgrind/valgrindengine.cpp +++ b/src/plugins/valgrind/valgrindengine.cpp @@ -173,7 +173,7 @@ void ValgrindRunControl::handleProgressFinished() void ValgrindRunControl::runnerFinished() { - appendMessage(tr("Analyzing finished.\n"), NormalMessageFormat); + appendMessage(tr("Analyzing finished.") + QLatin1Char('\n'), NormalMessageFormat); emit finished(); m_progress->reportFinished(); @@ -200,11 +200,11 @@ void ValgrindRunControl::receiveProcessError(const QString &message, QProcess::P if (error == QProcess::FailedToStart) { const QString valgrind = m_settings->valgrindExecutable(); if (!valgrind.isEmpty()) - appendMessage(tr("Error: \"%1\" could not be started: %2\n").arg(valgrind).arg(message), ErrorMessageFormat); + appendMessage(tr("Error: \"%1\" could not be started: %2").arg(valgrind, message) + QLatin1Char('\n'), ErrorMessageFormat); else - appendMessage(tr("Error: no Valgrind executable set.\n"), ErrorMessageFormat); + appendMessage(tr("Error: no Valgrind executable set.") + QLatin1Char('\n'), ErrorMessageFormat); } else if (m_isStopping && error == QProcess::Crashed) { // process gets killed on stop - appendMessage(tr("Process terminated.\n"), ErrorMessageFormat); + appendMessage(tr("Process terminated.") + QLatin1Char('\n'), ErrorMessageFormat); } else { appendMessage(QString::fromLatin1("** %1 **\n").arg(message), ErrorMessageFormat); } diff --git a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp index 200271a325c..9fbfe75548b 100644 --- a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp +++ b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp @@ -429,9 +429,9 @@ QString VcsBaseOutputWindow::msgExecutionLogEntry(const QString &workingDir, const QString args = formatArguments(arguments); const QString nativeExecutable = QDir::toNativeSeparators(executable); if (workingDir.isEmpty()) - return tr("Executing: %1 %2\n").arg(nativeExecutable, args); - return tr("Executing in %1: %2 %3\n"). - arg(QDir::toNativeSeparators(workingDir), nativeExecutable, args); + return tr("Executing: %1 %2").arg(nativeExecutable, args) + QLatin1Char('\n'); + return tr("Executing in %1: %2 %3"). + arg(QDir::toNativeSeparators(workingDir), nativeExecutable, args) + QLatin1Char('\n'); } void VcsBaseOutputWindow::appendCommand(const QString &text) From 4ffd5403d5893fcf5303dee1489c691fe7170898 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Oct 2013 08:27:07 +0200 Subject: [PATCH 008/104] QNX: Fix compilation with Qt 4. Change-Id: I8607dd339f5c6e3580f2e17c8ca3b7bcbbb11a8e Reviewed-by: Eike Ziller --- src/plugins/qnx/qnxutils.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/plugins/qnx/qnxutils.cpp b/src/plugins/qnx/qnxutils.cpp index 83129c624a2..f799fb524fa 100644 --- a/src/plugins/qnx/qnxutils.cpp +++ b/src/plugins/qnx/qnxutils.cpp @@ -196,13 +196,7 @@ QList QnxUtils::qnxEnvironmentFromNdkFile(const QString } } - QString modifieddValue; - if (Utils::HostOsInfo::isWindowsHost()) - modifieddValue = modifiedValues.join(QLatin1Char(';')); - else if (Utils::HostOsInfo::isAnyUnixHost()) - modifieddValue = modifiedValues.join(QLatin1Char(':')); - - items.append(Utils::EnvironmentItem(key, modifieddValue)); + items.append(Utils::EnvironmentItem(key, modifiedValues.join(QString(Utils::HostOsInfo::pathListSeparator())))); } return items; From 43ceec94f4e73564d57f01e0e0f6ec7039dfb6e2 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 21 Oct 2013 18:26:08 +0200 Subject: [PATCH 009/104] FakeVim: Initialize new m_inFakeVim member Also move initialization before connection setup. Task-number: QTCREATORBUG-10443 Change-Id: I3f3d074534a44a0aa6b8cc60c8ffbcd22d96ca33 Reviewed-by: Christian Stenger --- src/plugins/fakevim/fakevimhandler.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index d8cb935fa63..bb0614f1f82 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2056,22 +2056,23 @@ FakeVimHandler::Private::GlobalData FakeVimHandler::Private::g; FakeVimHandler::Private::Private(FakeVimHandler *parent, QWidget *widget) { - //static PythonHighlighterRules pythonRules; q = parent; m_textedit = qobject_cast(widget); m_plaintextedit = qobject_cast(widget); + + init(); + if (editor()) { connect(EDITOR(document()), SIGNAL(contentsChange(int,int,int)), SLOT(onContentsChanged(int,int,int))); connect(EDITOR(document()), SIGNAL(undoCommandAdded()), SLOT(onUndoCommandAdded())); m_lastRevision = revision(); } - //new Highlighter(document(), &pythonRules); - init(); } void FakeVimHandler::Private::init() { + m_inFakeVim = false; m_findStartPosition = -1; m_visualBlockInsert = false; m_fakeEnd = false; From fc52b304501af293accb8b72c3b0f8c5b445fb8d Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 21 Oct 2013 16:31:06 +0200 Subject: [PATCH 010/104] Debugger: Simplify QVariant{Hash,Map} dumper Change-Id: I4c5c79f9b2b2d739971d9f50a2b48cfde005e167 Reviewed-by: Christian Stenger Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 95 ++++++------------- .../debugger/simple/simple_test_app.cpp | 3 +- 2 files changed, 32 insertions(+), 66 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 0d54286127d..5370e358e97 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1098,15 +1098,10 @@ def qdump__QObject(d, value): gdb.execute("set $d.d.is_null = %s" % value1["is_null"]) prop = d.parseAndEvaluate("$d").dereference() - val, inner, innert, handled = \ - qdumpHelper__QVariant(d, prop) + val, innert, handled = qdumpHelper__QVariant(d, prop) if handled: pass - elif len(inner): - # Build-in types. - d.putType(inner) - d.putItem(val) else: # User types. # func = "typeToName(('%sQVariant::Type')%d)" @@ -1737,8 +1732,8 @@ qdumpHelper_QVariants_A = [ qdumpHelper_QVariants_B = [ "QChar", # 7 - None, # 8, QVariantMap - None, # 9, QVariantList + "QVariantMap", # 8 + "QVariantList",# 9 "QString", # 10 "QStringList", # 11 "QByteArray", # 12 @@ -1757,7 +1752,7 @@ qdumpHelper_QVariants_B = [ "QPoint", # 25 "QPointF", # 26 "QRegExp", # 27 - None, # 28, QVariantHash + "QVariantHash",# 28 ] qdumpHelper_QVariants_C = [ @@ -1791,80 +1786,50 @@ def qdumpHelper__QVariant(d, value): variantType = int(value["d"]["type"]) #warn("VARIANT TYPE: %s : " % variantType) + # Well-known simple type. if variantType <= 6: qdumpHelper_QVariants_A[variantType](d, data) d.putNumChild(0) - return (None, None, None, True) + return (None, None, True) - inner = "" - innert = "" - val = None + # Unknown user type. + if variantType > 86: + return (None, "", False) + # Known Core or Gui type. if variantType <= 28: - inner = qdumpHelper_QVariants_B[variantType - 7] - if not inner is None: - innert = inner - elif variantType == 8: # QVariant::VariantMap - inner = d.ns + "QMap<" + d.ns + "QString," + d.ns + "QVariant>" - innert = "QVariantMap" - elif variantType == 9: # QVariant::VariantList - inner = d.ns + "QList<" + d.ns + "QVariant>" - innert = "QVariantList" - elif variantType == 28: # QVariant::VariantHash - inner = d.ns + "QHash<" + d.ns + "QString," + d.ns + "QVariant>" - innert = "QVariantHash" + innert = qdumpHelper_QVariants_B[variantType - 7] + else: + innert = qdumpHelper_QVariants_C[variantType - 64] - elif variantType <= 86: - inner = d.ns + qdumpHelper_QVariants_C[variantType - 64] - innert = inner + inner = d.ns + innert - if len(inner): - innerType = d.lookupType(inner) - sizePD = 8 # sizeof(QVariant::Private::Data) - if innerType.sizeof > sizePD: - sizePS = 2 * d.ptrSize() # sizeof(QVariant::PrivateShared) - val = (data.cast(d.charPtrType()) + sizePS) \ - .cast(innerType.pointer()).dereference() - else: - val = data.cast(innerType) + innerType = d.lookupType(inner) + sizePD = 8 # sizeof(QVariant::Private::Data) + if innerType.sizeof > sizePD: + sizePS = 2 * d.ptrSize() # sizeof(QVariant::PrivateShared) + val = (data.cast(d.charPtrType()) + sizePS) \ + .cast(innerType.pointer()).dereference() + else: + val = data.cast(innerType) - return (val, inner, innert, False) + d.putEmptyValue(-99) + d.putItem(val) + d.putBetterType("%sQVariant (%s)" % (d.ns, innert)) + + return (None, innert, True) def qdump__QVariant(d, value): - d_ptr = value["d"] - d_data = d_ptr["data"] - - (val, inner, innert, handled) = qdumpHelper__QVariant(d, value) + (val, innert, handled) = qdumpHelper__QVariant(d, value) if handled: - return - - if len(inner): - innerType = d.lookupType(inner) - if innerType.sizeof > d_data.type.sizeof: - # FIXME: - #if int(d_ptr["is_shared"]): - # v = d_data["ptr"].cast(innerType.pointer().pointer().pointer()) \ - # .dereference().dereference().dereference() - #else: - v = d_data["ptr"].cast(innerType.pointer().pointer()) \ - .dereference().dereference() - else: - v = d_data.cast(innerType) - d.putEmptyValue(-99) - d.putItem(v) - d.putBetterType("%sQVariant (%s)" % (d.ns, innert)) return innert # User types. + d_ptr = value["d"] typeCode = int(d_ptr["type"]) - if d.isGdb: - type = str(d.call(value, "typeToName", - "('%sQVariant::Type')%d" % (d.ns, typeCode))) - if d.isLldb: - type = str(d.call(value, "typeToName", - "(%sQVariant::Type)%d" % (d.ns, typeCode))) + type = str(d.parseAndEvaluate("QMetaType::typeName(%d)" % typeCode)) type = type[type.find('"') + 1 : type.rfind('"')] type = type.replace("Q", d.ns + "Q") # HACK! type = type.replace("uint", "unsigned int") # HACK! diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 76960dfa24d..88facd246c8 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -4168,6 +4168,7 @@ namespace qvariant { // FIXME: Known to break //QString type = var.typeName(); var.setValue(my); + const char *name = QMetaType::typeName(var.userType()); BREAK_HERE; // Expand my my.0 my.0.value my.1 my.1.value var var.data var.data.0 var.data.0.value var.data.1 var.data.1.value. // Check my <2 items> qvariant::MyType. @@ -4193,7 +4194,7 @@ namespace qvariant { var.setValue(my); var.setValue(my); var.setValue(my); - dummyStatement(&var); + dummyStatement(&var, &name); } void testQVariant6() From 515a958083a31eabd24c917516f86c06b5a6949d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 18 Oct 2013 10:52:53 +0200 Subject: [PATCH 011/104] Fix Qt5 QUrl dumper Change-Id: I5da72aebe30a3f7030b44566561fca25ce867c0a Reviewed-by: hjk --- share/qtcreator/debugger/gdbbridge.py | 6 ++++++ share/qtcreator/debugger/lldbbridge.py | 6 ++++++ share/qtcreator/debugger/qttypes.py | 29 +++++++++++++++++++------- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index f8f74b3c713..1fc5021e059 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -1422,6 +1422,12 @@ class Dumper(DumperBase): self.putType("bool") self.putNumChild(0) + def putGenericItem(self, name, type, value, encoding = None): + with SubItem(self, name): + self.putValue(value, encoding) + self.putType(type) + self.putNumChild(0) + def currentItemFormat(self): format = self.formats.get(self.currentIName) if format is None: diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 0105e426e21..913c71d48a6 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -577,6 +577,12 @@ class Dumper(DumperBase): self.putType("bool") self.putNumChild(0) + def putGenericItem(self, name, type, value, encoding = None): + with SubItem(self, name): + self.putValue(value, encoding) + self.putType(type) + self.putNumChild(0) + def putNumChild(self, numchild): #warn("NUM CHILD: '%s' '%s'" % (numchild, self.currentChildNumChild)) #if numchild != self.currentChildNumChild: diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 5370e358e97..cd525cfa104 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1669,17 +1669,30 @@ def qdump__QUrl(d, value): # - QString query; # - QString fragment; schemeAddr = d.dereferenceValue(value) + 2 * d.intSize() - scheme = d.dereference(schemeAddr) - host = d.dereference(schemeAddr + 3 * d.ptrSize()) - path = d.dereference(schemeAddr + 4 * d.ptrSize()) + scheme = d.encodeStringHelper(d.dereference(schemeAddr)) + userName = d.encodeStringHelper(d.dereference(schemeAddr + 1 * d.ptrSize())) + password = d.encodeStringHelper(d.dereference(schemeAddr + 2 * d.ptrSize())) + host = d.encodeStringHelper(d.dereference(schemeAddr + 3 * d.ptrSize())) + path = d.encodeStringHelper(d.dereference(schemeAddr + 4 * d.ptrSize())) + query = d.encodeStringHelper(d.dereference(schemeAddr + 5 * d.ptrSize())) + fragment = d.encodeStringHelper(d.dereference(schemeAddr + 6 * d.ptrSize())) - str = d.encodeString(scheme) + str = scheme str += "3a002f002f00" - str += d.encodeString(host) - str += d.encodeString(path) + str += host + str += path d.putValue(str, Hex4EncodedLittleEndian) - d.putPlainChildren(value) - + d.putNumChild(8) + if d.isExpanded(): + with Children(d): + d.putIntItem("port", d.extractInt(d.dereferenceValue(value) + d.intSize())) + d.putGenericItem("scheme", "QString", scheme, Hex4EncodedLittleEndian) + d.putGenericItem("userName", "QString", userName, Hex4EncodedLittleEndian) + d.putGenericItem("password", "QString", password, Hex4EncodedLittleEndian) + d.putGenericItem("host", "QString", host, Hex4EncodedLittleEndian) + d.putGenericItem("path", "QString", path, Hex4EncodedLittleEndian) + d.putGenericItem("query", "QString", query, Hex4EncodedLittleEndian) + d.putGenericItem("fragment", "QString", fragment, Hex4EncodedLittleEndian) def qdumpHelper_QVariant_0(d, data): # QVariant::Invalid From 52d8cd2529d5409867daa225f0f64e41d450720a Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 21 Oct 2013 19:39:55 +0200 Subject: [PATCH 012/104] QmlDesigner: Remove qml2puppet test file Task-number: QTCREATORBUG-10449 Change-Id: Ied72268910bc2312c3d293da0ef38c1ff8b72fc4 Reviewed-by: Robert Loehning Reviewed-by: Thomas Hartmann --- src/tools/qml2puppet/qml2puppet/qml2puppet.pro | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/qml2puppet/qml2puppet/qml2puppet.pro b/src/tools/qml2puppet/qml2puppet/qml2puppet.pro index 383affb2048..38ae1af1108 100644 --- a/src/tools/qml2puppet/qml2puppet/qml2puppet.pro +++ b/src/tools/qml2puppet/qml2puppet/qml2puppet.pro @@ -8,9 +8,11 @@ BUILD_PUPPET_IN_CREATOR_BINPATH = $$(BUILD_PUPPET_IN_CREATOR_BINPATH) CONFIG(debug, debug|release):isEmpty(BUILD_PUPPET_IN_CREATOR_BINPATH) { QML_TARGET_PATH=$$[QT_INSTALL_BINS]/$$TARGET$$TARGET_EXT if(write_file($$QML_TARGET_PATH)) { + CONVERTED_PATH=$$system_quote($$system_path($$QML_TARGET_PATH)) win32 { - CONVERTED_PATH=$$system_quote($$system_path($$QML_TARGET_PATH)) system(del $$CONVERTED_PATH) + } else { + system(rm $$CONVERTED_PATH) } DESTDIR = $$[QT_INSTALL_BINS] message("Build Qml Puppet to the Qt binary directory!") From bdf8655376a9a7fd513140f5adf1147ccff3e98d Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 21 Oct 2013 15:39:15 +0200 Subject: [PATCH 013/104] Debugger: Make LLDB auto test start again Change-Id: I11358adc8c01dd1261627f35d0f35500e8b34989 Reviewed-by: Eike Ziller --- share/qtcreator/debugger/lldbbridge.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 913c71d48a6..5d70363e199 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -689,9 +689,9 @@ class Dumper(DumperBase): error = lldb.SBError() self.executable_ = args['executable'] - self.startMode_ = args['startMode'] - self.processArgs_ = args['processArgs'] - self.attachPid_ = args['attachPid'] + self.startMode_ = args.get('startMode', 1) + self.processArgs_ = args.get('processArgs', '') + self.attachPid_ = args.get('attachPid', 0) self.target = self.debugger.CreateTarget(self.executable_, None, None, True, error) self.importDumpers() From d8aadac3231d7d8265ffc6d9a5223286fb136c74 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Tue, 22 Oct 2013 13:51:17 +0300 Subject: [PATCH 014/104] Remove adb daemon logs If adb daemon is not started, adb devices command will add two lines to the output, messing up the devices list. Change-Id: I40dcf586d2661df2de0a56aaac543c3b4739ab0d Reviewed-by: Daniel Teske --- src/plugins/android/androidconfigurations.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 543c66ab26a..5524043b620 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -457,7 +457,12 @@ QVector AndroidConfigurations::connectedDevices(QString *erro return devices; } QList adbDevs = adbProc.readAll().trimmed().split('\n'); - adbDevs.removeFirst(); + if (adbDevs.empty()) + return devices; + + while (adbDevs.first().startsWith("* daemon")) + adbDevs.removeFirst(); // remove the daemon logs + adbDevs.removeFirst(); // remove "List of devices attached" header line // workaround for '????????????' serial numbers: // can use "adb -d" when only one usb device attached @@ -578,7 +583,13 @@ QVector AndroidConfigurations::androidVirtualDevices() const return devices; } QList avds = proc.readAll().trimmed().split('\n'); - avds.removeFirst(); + if (avds.empty()) + return devices; + + while (avds.first().startsWith("* daemon")) + avds.removeFirst(); // remove the daemon logs + avds.removeFirst(); // remove "List of devices attached" header line + AndroidDeviceInfo dev; for (int i = 0; i < avds.size(); i++) { QString line = QLatin1String(avds[i]); From 5686f5fd70ef28b842cc3b37b362fb75d3e8e127 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 22 Oct 2013 11:15:50 +0200 Subject: [PATCH 015/104] QUrl dumper: use correct string type name and extend test Change-Id: I7fe88d11b3d52ba31d3e8564b673a35001e31488 Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 34 ++++++++++++++++++----------- tests/auto/debugger/tst_dumpers.cpp | 23 +++++++++++++++---- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index cd525cfa104..1546ee5ef25 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1676,23 +1676,31 @@ def qdump__QUrl(d, value): path = d.encodeStringHelper(d.dereference(schemeAddr + 4 * d.ptrSize())) query = d.encodeStringHelper(d.dereference(schemeAddr + 5 * d.ptrSize())) fragment = d.encodeStringHelper(d.dereference(schemeAddr + 6 * d.ptrSize())) + port = d.extractInt(d.dereferenceValue(value) + d.intSize()) - str = scheme - str += "3a002f002f00" - str += host - str += path - d.putValue(str, Hex4EncodedLittleEndian) + url = scheme + url += "3a002f002f00" + if len(userName): + url += userName + url += "4000" + url += host + if port >= 0: + url += "3a00" + url += ''.join(["%02x00" % ord(c) for c in str(port)]) + url += path + d.putValue(url, Hex4EncodedLittleEndian) d.putNumChild(8) if d.isExpanded(): + stringType = d.lookupType(d.ns + "QString") with Children(d): - d.putIntItem("port", d.extractInt(d.dereferenceValue(value) + d.intSize())) - d.putGenericItem("scheme", "QString", scheme, Hex4EncodedLittleEndian) - d.putGenericItem("userName", "QString", userName, Hex4EncodedLittleEndian) - d.putGenericItem("password", "QString", password, Hex4EncodedLittleEndian) - d.putGenericItem("host", "QString", host, Hex4EncodedLittleEndian) - d.putGenericItem("path", "QString", path, Hex4EncodedLittleEndian) - d.putGenericItem("query", "QString", query, Hex4EncodedLittleEndian) - d.putGenericItem("fragment", "QString", fragment, Hex4EncodedLittleEndian) + d.putIntItem("port", port) + d.putGenericItem("scheme", stringType, scheme, Hex4EncodedLittleEndian) + d.putGenericItem("userName", stringType, userName, Hex4EncodedLittleEndian) + d.putGenericItem("password", stringType, password, Hex4EncodedLittleEndian) + d.putGenericItem("host", stringType, host, Hex4EncodedLittleEndian) + d.putGenericItem("path", stringType, path, Hex4EncodedLittleEndian) + d.putGenericItem("query", stringType, query, Hex4EncodedLittleEndian) + d.putGenericItem("fragment", stringType, fragment, Hex4EncodedLittleEndian) def qdumpHelper_QVariant_0(d, data): # QVariant::Invalid diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index f57dee2a142..4760aba1d97 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -196,10 +196,11 @@ static QByteArray parentIName(const QByteArray &iname) struct ValueBase { - ValueBase() : hasPtrSuffix(false), isFloatValue(false), version(0) {} + ValueBase() : hasPtrSuffix(false), isFloatValue(false), substituteNamespace(true), version(0) {} bool hasPtrSuffix; bool isFloatValue; + bool substituteNamespace; int version; }; @@ -232,7 +233,8 @@ struct Value : public ValueBase if (actualValue == QLatin1String(" ")) actualValue.clear(); // FIXME: Remove later. QString expectedValue = value; - expectedValue.replace(QLatin1Char('@'), QString::fromLatin1(context.nameSpace)); + if (substituteNamespace) + expectedValue.replace(QLatin1Char('@'), QString::fromLatin1(context.nameSpace)); if (hasPtrSuffix) return actualValue.startsWith(expectedValue + QLatin1String(" @0x")) @@ -277,6 +279,11 @@ struct Value5 : Value Value5(const QByteArray &value) : Value(value) { version = 5; } }; +struct UnsubstitutedValue : Value +{ + UnsubstitutedValue(const QByteArray &value) : Value(value) { substituteNamespace = false; } +}; + struct Type { Type() {} @@ -3171,10 +3178,18 @@ void tst_Dumpers::dumper_data() QTest::newRow("QUrl") << Data("#include ", - "QUrl url = QUrl::fromEncoded(\"http://qt-project.org/have_fun\");\n" + "QUrl url = QUrl::fromEncoded(\"http://foo@qt-project.org:10/have_fun\");\n" "unused(&url);\n") % CoreProfile() - % Check("url", "\"http://qt-project.org/have_fun\"", "@QUrl"); + % Check("url", UnsubstitutedValue("\"http://foo@qt-project.org:10/have_fun\""), "@QUrl") + % Check("url.port", Value5("10"), "int") + % Check("url.scheme", Value5("\"http\""), "@QString") + % Check("url.userName", Value5("\"foo\""), "@QString") + % Check("url.password", Value5("\"\""), "@QString") + % Check("url.host", Value5("\"qt-project.org\""), "@QString") + % Check("url.path", Value5("\"/have_fun\""), "@QString") + //% Check("url.query", Value5("\"\""), "@QString") That's a QByteArray in Qt 4 + % Check("url.fragment", Value5("\"\""), "@QString"); QTest::newRow("QStringQuotes") << Data("#include \n", From 9dd656914abf49eb1f7bede08191019f36c6e597 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 21 Oct 2013 17:43:10 +0200 Subject: [PATCH 016/104] Qbs: Fix memory leak in Qbs Project Manager Make sure the root node of the project tree is actually deleted. Change-Id: Idf32460d7b5d0518da9536084cccb074638cfce3 Reviewed-by: Tobias Hunger --- src/plugins/qbsprojectmanager/qbsproject.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 32536961ae1..5bd01b39b54 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -114,6 +114,8 @@ QbsProject::QbsProject(QbsManager *manager, const QString &fileName) : connect(&m_parsingDelay, SIGNAL(timeout()), this, SLOT(parseCurrentBuildConfiguration())); updateDocuments(QSet() << fileName); + + // NOTE: QbsProjectNode does not use this as a parent! m_rootProjectNode = new QbsProjectNode(this); // needs documents to be initialized! } @@ -125,6 +127,12 @@ QbsProject::~QbsProject() m_qbsSetupProjectJob->cancel(); delete m_qbsSetupProjectJob; } + + // Deleting the root node triggers a few things, make sure rootProjectNode + // returns 0 already + QbsProjectNode *root = m_rootProjectNode; + m_rootProjectNode = 0; + delete root; } QString QbsProject::displayName() const From ceba333683e64db4b35781e456c73eaf2d677ec7 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 18 Oct 2013 17:46:04 +0200 Subject: [PATCH 017/104] RunSettings: Do not needlessly recreate RunConfiguartionConfigWidgets Change-Id: I0b8afe05b12123117959eec6f7465ebd4950e197 Reviewed-by: Daniel Teske --- .../projectexplorer/runsettingspropertiespage.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index 0cf020a9c72..edf84b03cbf 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -237,14 +237,15 @@ RunSettingsWidget::RunSettingsWidget(Target *target) m_addRunMenu = new QMenu(m_addRunToolButton); m_addRunToolButton->setMenu(m_addRunMenu); + RunConfiguration *rc = m_target->activeRunConfiguration(); m_runConfigurationCombo->setModel(m_runConfigurationsModel); m_runConfigurationCombo->setCurrentIndex( - m_runConfigurationsModel->indexFor(m_target->activeRunConfiguration()).row()); + m_runConfigurationsModel->indexFor(rc).row()); m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1); - m_renameRunButton->setEnabled(m_target->activeRunConfiguration()); + m_renameRunButton->setEnabled(rc); - setConfigurationWidget(m_target->activeRunConfiguration()); + setConfigurationWidget(rc); connect(m_addRunMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowAddMenu())); @@ -523,12 +524,16 @@ void RunSettingsWidget::updateDeployConfiguration(DeployConfiguration *dc) void RunSettingsWidget::setConfigurationWidget(RunConfiguration *rc) { + if (rc == m_runConfiguration) + return; + delete m_runConfigurationWidget; m_runConfigurationWidget = 0; removeSubWidgets(); if (!rc) return; m_runConfigurationWidget = rc->createConfigurationWidget(); + m_runConfiguration = rc; if (m_runConfigurationWidget) m_runLayout->addWidget(m_runConfigurationWidget); @@ -567,7 +572,7 @@ QString RunSettingsWidget::uniqueRCName(const QString &name) void RunSettingsWidget::addRunControlWidgets() { - foreach (IRunConfigurationAspect *aspect, m_target->activeRunConfiguration()->extraAspects()) { + foreach (IRunConfigurationAspect *aspect, m_runConfiguration->extraAspects()) { ProjectExplorer::RunConfigWidget *rcw = aspect->createConfigurationWidget(); if (rcw) addSubWidget(rcw); From 964d42850de5551b9a4a2bb678d720a4dc5983bd Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 22 Oct 2013 09:38:37 +0200 Subject: [PATCH 018/104] Doc: the Welcome screen was updated Task-number: QTCREATORBUG-10446 Change-Id: I1bfda7119ebd541d4dbfa1b7a65c3155221b3c6d Reviewed-by: Robert Loehning --- doc/images/qtcreator-breakdown.png | Bin 33962 -> 123579 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/images/qtcreator-breakdown.png b/doc/images/qtcreator-breakdown.png index 5cbaa5e9a8bc6d40f719dd6145bcef7728aefcb3..6ace91bcc7ff278a5de634c838e8391a6c263393 100644 GIT binary patch literal 123579 zcmeAS@N?(olHy`uVBq!ia0y~yU}k1uU~=GKV_;yoICEDh0|S?1rn7T^r?ay{Kv8~L zW=<*tg9q>2Y2_ioH^th|?=|0hK}bnK^@~&$r@|#`4^fuDPS1t_rnVNfG8a}i5kbwc zl#m0A?(Is+t|HvcO-a`|KM4dJI~eHV`t)v3Hs|}brl0T4`g=U`{>|sxuis36UweHQ zL%^RVmO~{Gj149WBShZ4J{Th;eEP_DCJ6yXz6izx57W|E+<&+*UHP-ucIM0#9>+F+ zd#Bfsvir8q{s6V&YyayfDw#X0urYACUNy6+Qxkv6G$nZRQAwl!ET_Iq)ii1|G!k3L zxoC~j<0I>HzAb;Iz5C>h>1t0FN=2TN++#AYXLrE8S*i~g_pmICnW6e1eQ^zY>fR8~ zSqx9VYh1qkV~!7lfym7GGtbo)=5!jlib%fe{KUk-G3AKmo+7^PpOzW(7%G;fKj~uW z^h{bNczs6Z(-$Ywetp~={4>c=d&*(ohaD9@=f7;>=`#>-Sf4-5l~FY^cV@=Kw`*nI zzKy*0EaT_?oA>4Fg8$l{sQMlHQSHt7d5%5vBJbzCS);#KjNzL~)NI+!`=*96Y{_MF zc=~XS|9b_7Ppk}E?#=lu*On7E>Bu7>zcY*(p4_IcNJ$YDX&in)7A6s992ELfW z+0vP@yVa&KVuD@@S4;iXhxHO>>g(3wuVSiw z9W7wUbzD=(njp4>f2Pwl0qH1?N@vFa3lZj{ z&YcqkCOQ1PpteFnt9jKz=K$L;$|X{}IAWWBEnvT(V8Zs7v9?8U2Giw4-Wv?t8g6c| zmf>(ebozlyh3Fi1@dLLXdhHOiw zP%(R=(h{bXuCpfaEs@^Y>oKwL2{T*!!o(R8V#g#Ow@3CoObSc9mgHq{bw=`xFdy+} zW@!S(jX#@~CSBdQEJA&aeHo{j;Ot)ABVh^s3DFy-Z)Coa_{Lg>@Av`9M=}L0-Ry;{|O%Ju2x)8qB#tH&$W zd;MGXX9rW@L5G9Ejf*#gEp&Uh<&bTwr|YamQQlh>GIObOFOpsZn3(Rddoo8-F(UK%adOo{UZNj?-$Ng)zs*x8c$`ONw4*S%=B+0vhu2lt1oITj#_Me%p!SPVb@2y$I)sV zI_G*$^6Wk78+_x+y^w@m=eL~a$$plhX0qCJ_whv=?nFkeal5v_^03W`n#Gl~e`<5v zc1Lv26}u}Iuk%(XSogJ#e57V1YeeprR~vpEzI9|)c5HI(@wTkT$(zqDyZdbG+LgNZ z%l5ymwVoBb;jY+jzuo7*@qJVJt@hiH-L}1=eJ|hl8zp5LyIX3n3ch~vaL2iiJ&)Pd ztJODN_FR5{Zsa-5bG+vkbMuIQ5Wk`;QFO8J;SQOiiFzq|J@FL<3$KLUp87cI^{+F& z*L$Cr9mzd%_lE7wzdL?w^Lz78bniYsW%=aiQs=qjI;O7=pBTP=`=swl@3Y=7x3jYA zwClAK-dDD7b*=u7#J@~`%YNPceEq}oU)O*8vskdK;e5fhgvE^|jNOjgh*OBQl;!Y2 z#)G??irJLeEH9lE6Wx|xj zn#LK`^)Y~Z}>ROZ!pp~8zCE>85(D2`0qJ)`fR z&sUEgmD#Gzk=&cJHr-2iPn~}%@QmQIFHdGY$vZ83^7F~xb*5>i<)!KS%Ko+eIcWMW zn{RFFwRJJKclwpb9^Cct>%Q0hxeB=+H$R+qJKdWqeLt`3-j%=wfgAQEWNd!_?3mL| zr@)7Mb z{ayZ`jHCR{-Iu#QN6bu$jJtVZ-GkV*PtSZ>^lAI<@HhLy5~B+f_%r)c`nMRZ*tFMc zeU|&x<*$~!YLx1q^=$8}>g{jm-a3B!`u_X5^_LlYnUAvD$%)A9sXy^OAbYK2?$N|M z57!(%|9a7@UHjAPG4DTrB|)5TsL1~KE>=%@1$cJ9~U0a|NG#p zbG7j5mjT9$cm80pP_+E`==cx$_w#scZdP{Hu6n8dcmB6+7oxhN7GAq^t#jKFv&?Fr z>iaJnF3*)cC#!2e`+v=so^LZ}Z9bLmeSYFO(K)j%=a<)gayr)fvAa{e-737qZr7G4 zm*%e9u~_8~-2vQ|I^Em)CIq`Bb5n zoA&Jf_mKE-P`&ou)pb|P%CB$AF1@+>zef1Z+{dlg59w`K$faW-!JH(g z)9BDJq2)ruk`S*Y&*nU@k&WN;ed#yub332!o30-`(_h`_d~e6z`rq5j-xR;wDfoO& z_5Bk^j<{^9`M&%9+=vYcj!|2)LZddNbUsoxy)kj(MCDrPiO!M1vbnQ&WX;@jaosc5 z@*f`_9@~+X6CJ<*TJDZ0y?yJBYHqjBxtnJ0VaHQ`CRsRKcd>tG+1B}X|21bWw=yra zf41?Q>5VA0{4J|3XTOBzsXWag3@g|!8wEn);d5^NCmRtOM6U{%Vdu3(v{jxP%n`bZb+qvn6 z{jD-vzTel3pI%?L7NV+>psM0I)!*Ow`rH34StQqgVB^M(C9hU4pClRK{-E?k0cxOE0IT^v5GYAGgiUdgJEq z-v7b%-7+(yibZ;Tp7N&aB%X*r-X@lQf6puCy}NFRiNDR2W-i;P(Z6ZgHj8Y7jlTD1 zOxXPOXZ<&p)OCJS{%qc_aZL2}^V1*C&(Qp8r+Mg=>NEE}MhlHC|81RkSjy7o_@_U~ ze~u;Gxptzr{nv$s&Z_e?COb=-<$n9bYbD>X&}E>jAosp<7QS~TUP#UvJd=ZFZp(J<=W$qEGAg%<*vxCnc^yIQz~~P z==Jiv<8~6>Px^Adelq>Z`oHG1eWjuQwNoq3hTrY`Yxn>BKK~Qks?UmoKCM}E?dJAt z^Q@lD|95Jtw)*oIhA;VTJ{&mm<3|PK=d@2xxEIQQuv~N`I&^nOW5n}P+n>)^8VpZ# zo@7{d?}x{hg}xW{O}|Y$`TgaQi4s$;Z#7KH-?)~~(&$&tmh7HS5!u&|X}4Fd&fS{5 zdiE#%^ev6k7xh{FTJ?MD+Onb(>GOXaJh6C=Rnp7ru798Gn=iNAD(8vYGW{n>Q;tVj zXK|H@9tZj?w*;=;C)$ii+zru?D z4cQ)>hCN;)e_ZX{M)$d9eW5wAtL-B{pI2$yxasKQqjL=6j%WC-xN3gY(EZia%xwE> zf#SCXFJC!!Jm*vY+@lt+qxNnsbe(^zLvmYNcEGud!4H<-FmKzot6_QEs~cN7C2j|b z-+p!b)eP=88YdRz|2)#A`9O2ejEL3S!_@h|Zg7qM_~rK>|Fpxkq1T_CvU+B)?JEDO z>_0Up?UT!Lu84ff(0jSs{n>N<-0mB@!tRHhmMs0%Z`5D7WBFZ4hYj`r|0%0a%P^Vs zUh2*1?Lyz4ShHPu{IhV8>gj1qTW$QNyyX#*p7Y4%rpLS!@9*!|e|vAI?c4j)bH(+1 zyr-}8;1<*M6aLA(T<=!!WSOK}TdUn~)hEe-5QfI{o%v`7$-rJ@=pT{4&Ai zKJ2fucG{decroqusr{3=Hkj`JIq|*A`TdoP%509kyRjmDQvKVr8}EF&y!?vAmz?66 z^_DA>SJp0GZ7Aq}+eYHP!k&n?S?iYB)!dMj-ukWdpC#MZ_{TQSwk&1S-e2@?j#j_f zk3|8eV_AaroBQg2RG3VDWO3xQbm_L08@HZ!m3fmT{cH2tdKvq=2Z_pl6}^{t$nLIs ze7NmS;Dn8d`h0t9EsrEF?uj~gLrj_dZ^VS{Hy0NB+<0ML^iqCq?$4)N_1P`VeopOn z7SBBz6g}(D%Ee*&)3+6!T)&4izoySTDZ9EPFl~0kmzB0g+;@_c*{l9$v-h2?IN&lj z_sNuw*;9PZcmH|O(^w|U{&yC4&0GHH?y8+fPA#nyxcB3WF8j6|k<=>_gZD~Ub_G^A z>V@%LIdP-!*^m5Boa%KqE*xIJ|I!J4L%x)xmAap9tk3>hl&L+v>g^l%Js&OkEDvl7 zoO1HEnVjX9^tJXopImj1{&)1X{GQyMi~YY|J9aw#aP9ZI)9wEMJU{)s)SpJjf9J~g zeLi7mkZXA07{NL|ij_~iB$M?QYYpLt$%bMx2v({Cdy?y!SY`xRlF5kaWc%VP8 zR;Bipw!C+F?oQpeced;5O2tnyTf5gF_W$I3-{<*zG&c7yX=dk_D?IM-TK3EV--gab z+b(=-=Dj^5!QjTK>uphbljRpLdFX||tl73~zRykbI7PRK9Cx%8|2cj7tsh;B{|J4~pL0dz&*rOUrha=1#UHN} zFFo~S%X3Y81V!B%A3ofy7w-+{CWVgHc@cp{o@4S}JEsKiUTUGk9`Lel1 za+lE)kggk|6jP#ZHO zM&oDH9*cO6SyJ3($GGF}pP2HRS?~4>jg8l)S&0>^%{RMsc(vX$=DpjBj@wl|-J)6K zzH?5XS!bP?zx>{zYzQzr7jS zX0Im5`u=;^wP%|w`>*F(|9|xwDk{sLNcuNb(!9#7Sa;gKO%`Pvuf5Q@F)KOs+JmbH zv(LQR>dJ2R?Wn@`8)E%2=QLJ-{Bkk+baJf7&(^xL$??@2e@$h!H9FSNbL(@z(asC6 zx$Tb2rk;2iogICAVN6c1x>{xL&I!-N|DF>3o%CesHr;;*8ksXMFY|3xxBnX~#+dNK z=kWB~9c>ft)qcOb)7sKNxVh%{$f9YZH_T}dB-=~$F z+jaWVF6~{XH&I^p?+f{v|1!-*KlC})zVUxn|H-WWiMd_Qgy^jL!0_Y; z6WC*pNL@cUsXkdfuj{Xs{IdhM3bWd4mi_Giach3zi~cAcyPF4gbQ-U_`6Pb+m0v+> z|6}C;f12(7``7jS*yDv+!k;bAeB_U_zxHe5WV;xDn~yHPt}M3;^;^(y^T}i8hV`+# zxB2Xg|NrZ{{LC%Q&kwUoCoS<^xVArbciGfV6XD1Cb)RRyd@TRJBB`kN{AvCDd$#QV zb#?u+>wDjozMK;5XIbQPDzMnd^Z#c1-mT_=ill-kKea5d2 zWcbhCX!GTQ^UGxU-!~?<@^jDFzV~fz=HWKpr#sRYZn241xWp%2^ZDqO{Xb{#_dK$r z?(eTpsivR4Ei>Pn8Rgg0K8rW{v58sI#y2-MF8*_ZwcGHxM&CZ0qKx#rEr#M(`kKq0 z6vTXZ;4FRnSVNp_ZkNrqz%YhjiCe$I_<+gH8U0cE;%0{RCuD`+ z+WkK-=lrBONpJ1qH4MuPw*3BMU;Xh!P2rid-+r_|uD<^}Zs&(1trA?_jp2J9i7xH^ zcl;fX!VyJvq1)xP--%ZLee2wwmf8qD1h0Q5Xt2>)+?>GJ$j@_pS!0q6Jqbay{~N%#KWq^gof^S*fJ|Cm|wE%NoHM(6(JSGA`v zdmSD(`(M@f_RG)rfBgRPOsVuK_H4<(x{tkQr6>P*-6UtZRsFP-^M1RB8OqCREh-+L zUVYEv&FtVTE^DQCHV4q}61gY#zg^KBeS1Z}#M2*vc|NBebnJV& z<=todn15%NS1x<^`Tv`r?T=61xsqFS{I|xbvv)Tf-+z3i-HTwGzKP0@U;RJ-@6GvX z-+tfwzOP91-`o89>X}cPQjN|`%~yM$6Z6r%O?G?o_cu3#b2?u)%l}EJddM9gq4v%v z>)@Y1=l|DO_CJ_ie5&+%>~xFF!-rdD9qPB*(D0y-(eB}`U8UI@ALlha7yi)yoZI4$ zl8ilvW1b@j>??c<8-^TNQ`b_-$EdO8H z&gc)}^YlA*PfkkwHogAm^p{iD*QD-Jxj$7+J>i6XGPC=g4^sBsYy~3yf}a}o zzt;x(?VTb1CbwCY@8b)b|Jl-|fo*I5O^|NB<9kEnu=vtv^H)EfZy~dK-xv4!XJ@S4 zx{*IFy5v~bokjEZ{meKtQ~blWlZj7U&2#=eZEQ|DQzZUy%AH!(zFRwbul`%`C)xdC zn^a!zOKZ8Tj9Jb>d&3!nRX9%NgObf-<5e@xO|DW`P^B@%I)TT`}<*cW=Y~U+a30@ z_rChaK^GJ^^h`ROZ?Agrk^I|iP-gt7=c=ChUDU;Ga@jkgxV{Byi<%H(8m5XJqiWU7N zV_y7dIPA9f&aKGB=6rt_HXpY*pwMlW^p*Wup+xo;!)YfN*Vj$S?mpMVXF0p>N#3Sz znJt<(PAbY9-8v@w^u~+z+nkrj7oIwEymQiji@f9|+s>%`zcE8U%lyfc6LYTQelg@L zcor6&o3*p-fyN8XUyEc@`_yl_=Dl6>RXll-F8?2qlv@|BpZnWuf9u3o_Inl+0+rZn z|7u(po68!z8%auiG)9fp>D|3#<<#E!95Bzn7xU@ktML6+hMn%m*qJ83o4)6X z>dQZ$&)ZK*PckTf(zvbG;$d3h!Ib$DGa2@p+?V}#=egZu#C<=j41J z{ko6cr)4{D=j~qW^CeQ@PQhW`mm81EX+KVr-@x(cqsF^+4<_%4tNnWQW$5~<&|Ocb zMPHg*elODCj$xv`1>>SJot~Ly$!U8&N;o|K*fftxO!CGI?NZh$@mn@uW3Rns>c2(! za)@;L6Nck%6T|JYAEn-D?)rD+KV(?Tr`K zpYEJfpQQTC?*I9D|4()vPhG>l)t2wkM#tT+f6PDq=ka-qA2o{tir+nDI_dxCi2szo zXBIF0xYst<(BZ%&hX^k_2eH&9-qX{TEoJ|Fb)M~R%dAhTJO4bKy4`r1p5Jo2&Bkxf zhc6a0&^+gMR7xa2!;iIo--&IVI7S83W?PvXP%yi}4nxk=gH7~_;uSm*&vig7G%HhE6y@CI) zh?RWHjaHt{zsF|FV&2+&3UO;)*u&($h^6HIWM9nxIpDc`ZS=p5=6bh}EB!y#!p~iI z^UQQhhxaq41V&%Dxjna6#;%{gazn4#mwwlOAD8?8*?4h&_n*_=XA2M4{knC1U)Z_` zW6yNP11wWkUyE@~KUDpG?{~5PHcUrCf1lRdtz&p|>Ay$f`yD-ubPPxt;G-An$Sc+~vO_`FT9+QluB;{CrjyjXCyokO@> z?amEhe(6uf=PVZADSH<7`TG8UU%$L7-@p6GtQ#9sll-LZj-9QrP_wan@U*#e<3#18 zzhC43e=RC+=={?v9yjBh)$28z3L2l=zOVGZn0sf(#-5jF^XrON{{PYcf5)BJ%ImxD zg%*8kE+5S_WerIC% zo{hyl3C{91(o5e-^Z)wwqu(wwI^(c^=eJjDx0bIt^)XfEqMVG?+Z6``W#mnde!S3E z@oUNnW6ha0SLYixuHNbJDu3BebFshHezjL>A3NHM|GaLWyn%On-NfT{U(V0CnCX7^ z`Tv`iayu7Kn7-}t{X3n?^9}ExNS5DYc3k;?OvJBa=KCg|vwS|M=-j_++xLaq>F*Hu zH0%1FwhyOvPKemSaoECEZJ92cMWytP<`eGTQIqojzPmlk-(>mo=TXe z>c7nSCv$F1>b}_%KE1upe5bDVTf$Srg;!7edvo(WJ9^|&@TFC(l@ATJDZRDcqi$RK z;N_O;hJu1!AdCVtU^(~O`@%QHA=6j1?Pn!DYk%gy+&W*xF0eQS`d|Ah&_+`GF z*s#3g>b<%xrfvp-`OQx+I111PjH<- zRvbM|``-R<+55x3aZXMuIxSkGc6f_dPv*4EAs3&7 z&VGIgiyf727jS+3@=DEDIraqhnre-<~Nug#CPd-7_< z#o(OV`iC?vxAnNsHI*n4NxkxG!CGCTq|oCZop!HXF}Xj=?sn3Oqc0E7$nx2;)VJ?o z#T*ywFB@fi|9y3gJ>J5fa!jmN$-MnoGVeO=|DS?pOW!&l`meL`NAK&M=jzX#JUOZU z+wQ{4X44DhmCetecq{+@&*T2&DH0X^fxACe9$?ivx3=bb_aRoLea+7*Mb`9huDatN z&GW!Py;X7lhs_JT*H4@6MF7=-H^puZ@qn z$8p2c&dO@iv~~4~RVm+nGY?nf>7VWHXsvuWLH!3iU%r2InXE_hYW>sUf5n$KS31q- z?T&uq?yi1mXSSXvzwNiLTQV*$+G7wgS>D;o^sVg{?fbkpW`E1OJO5l%VV#uh%sB=| z7JrS{9tX79i9J1W3zu#cTiQ-?zH9_U*Z~K)EeKiEn3Z;g`D)I$d>)9&Hrs?=dtJ&3$a~ zp>xm6X4OZT*~@vq#yp*0@ijfV{@EqFs#~QO<>s0toLT*&!#OQprgrTT<2Mc-t=S^`|B0jCEwMLeRe!1NPx|QH`R_%tGJmaoL1j&==dbgB@0_1{ zQeU{JRWC#D-^T7L(PTCG3)@d^i8oK>aNZ#ncSO02x-KvESJyvtI>R3sPb#S->~%F@k+iBY?){#ylZ+xz_B+02sPv%UyR#|7nh%;LN_Z%M#} z=u;KTemzoRlRnnhYb_qLg*pEF;x)PKZuXy~nQPyC5&i5Ry)${Cyy3Ttlk3$re{5+e z_c^g)VS=-Dk@E9iuZM@HZQHqUTZZ@iZ5uCrU!tQg<6F07={0tmx4#QxTw$K6cw$*K2aDxXe$D*503*J69E z@KgF{_pdpYGWYh@^>trYpPpL#PU_EN`+vz*KTpTU$$kHMY5KmBCpVhB;QfBK4ot>x0()X-G86{ns&*)1u<|p{u1i zZ>8C5pZL7``RPl#{qLJ!{(axS|HuKR7FKqfIm#bSmrGZCyC3gxXkPT?n)yxov7ZmR zypcA~^LakEJnmz<&5IwVDnEWYnRfH9fXJy-n-%Ui{&4b+>=ias02y=l+Ei+O|8H#6zqRFK!@>0tZ_YUPgjQ$e zvOSHrdpxCkpHbz5E9*D@_!q3V?49!U>A96FHGi!uJT?FIA8B^e+Z%p<-}_8LR=@Um z*1Dr}I(|Oib7;r>)sO49{e1r8`HhEj&fX0@*Itv}(`}){^&r*WK<_jEzBjXXZ2oj| ztIWzbGWX9g9RGB(uJGQs{5p-dr{X27cNACG_0@YuO%iAFHp}z+J!3=5lY^Y>t@c9O z3LN(_ZPBea%&Go&$f@o~dPz-X)Q&fMwv=2=trXm-z)rqH9eVVq+bw$`YAlX@ZPRfu zA}MHM<3#0O&gn5PdfE3_eEoIs*yN^)oUiNiEe|L=%cq{uELdQ_>2tBY*kh+<^5V?D zj)%$r63^!i)644m_Nl9}IYRe^?YFGCl@o=flN z&W~Q)>Pe5jNmg%&`TC5R%`)QFiA-VR@b$VM4l=eevDsFvUneX*=f{zLi9X#YN80x8 z+i+NJ=3^7_E2loNpSvTZpKEcGUq@yK_rX}Eq+2u8ztu?2JZZi$gPpy#P(VI>=>_A9 z%LUq#8DCd)$j3c8X1?dk$FtAaXC)sIt1Hn7*s$1t_N+tfN>w!*0@rk2|6URJL_Foi z%7^CmTdr2ViAeUgF6z8GU1H};_qv^5n&-&~?6%6;+BiRH{x-YCJeFl20xn#fzM125 zx6zZN4HLO7A79R&Y%B9(>&ADd_7@6wzdgaMAM@%{S?3xm8QZ1YdddFx z;uHC5%ZKw{|8cLo^`juC@AR*VC-Wt~xc|=hl)q>5NqfTy?5A=*zyEC^*IaP)vHhpZ z^D_TE?4ENh=iZ|Hk{<85k2f8&Z{73Jmhs%>Ioul`{yCXEC8l8E0apH_e?zmF9VV{- z^W@!=*-F=5RK#@5Pka32OuMKxr@GDhljW=jHa~1(P}DC=J+SyFU$mXfg}0~Vd8{|- zax><7n7GRQ;uhD@(VlbETWmS&?+$bJLT8J`-T^;-;=8AXMOvj)#qPE`+g~XaZ~A^?8?(_ zebhMIUbiT|pg>@H&8>#T8Q#)7`<`k2Kb8xM>5qcqTMdtGGkOJ@eO5ma82qpDeG$)w ziQ(LD)gsUA|Ka$PUAXXA&!9 z*YB-(t)ZTlJSE!JDkZ09sqX({3*#Rjm}lndm%KH9Eq_+!hQ;}Dnc9oj#(&wDd13bR z#LxWwg;r@5NjarFf%&%!rT2e(k=$8S(SFkYxRu3@*N^4xy6SqF^KOaM&NBaf?L_V3 zQ_ZrUs@|MYRdRyp-Hdo!=8y;k^447+lb!c#{%=u}x3FAXqxDBA#PGbskFpFU{HWW0~yE zrwh}Z`Tg!m*c)+Kcs*Gtzw<~}aDKc_?PI0=^P(q6Z_ho}AuEyf^_NlJPZ{oS$GX;O z{-1dL#)_}Lx%Z_c_vAExl7FnMmOSyY-JWATJ-ro+<#VSb3ct+_j?QVm+Fq7$=K97{ z^K4oBjXMap%Y8`%~)sJZl4j4+L)6+!vF?ZLq)K;=GglCBEFzOlvfF@ninC zxr|`~Y*XqVsk={DZ!3!@Z0>qENPmmQr}r&@_&^8=NDdu zV~t(bH5%%6kDnG!I4XW}=9$w^_)hIen*Q{|`_unBS}k5|PWW(^VcnmpkN!MmDGSi~ zp}jFJFXv-p{D-6QWzIGtIs8xgWj+)LudiuUKK!9q*R<8JsqoB`#!e2q2Zz{yP3q3! z_p9HbyX~g`#`&i{hFBb(rXTnC^q<3#KYl2=>23KK`uzSKv4A?wN`?QD-1VKx+kZZn zxWWG?yj{1V=E?dJ`IGE1f2^k1os#&pL#aQRg;{>-Is1w)Ne>g{C&zz&|MAccZnMYT z^C#3B2nYYJi~46Qp8QDSc$?61xA`+}oIl}R6Paf7;-Rx&&XlIpxqnX1<-N4Vqp4%ywL;j$_bQ|7h@S)A`Rk?$jS?x)bzi zex>)n&g56NFMnSzX4v=Y&+EfBQ@)?OQs^vGu;}rA%Ra+PX)>v2DrJ5gi%Zi=8Pg1et z-uLa@&FUw6fm0W3B@mn;1XjCqod_3@5 z@UcG;|CZkqf6;xvr;z7pzT7gawl{?*{RS3^j+I)E zbnVUbn{_pg^Zq}nujYRm&wBd*1Zn@3#TjD#{fB1OCZ!+TX7|rF@APkTXYZOCG5_AV z7B}V}IlBLmzHn7fka6APAbZkbkOUDy7y(c}56&cejBuxMO zod5W6+qTEbekrP_H0#dWpRoOR{B!b;gs;v%yUX6q`eOTaW`ocDkAIy1Y0j%(rpvbP z*VXl6s``8r%p9GLxfvQRog6>qcKnw{FX=IG%L3%~|eomqqSZ@BN(ePj9(Ip7or6Cu-KQOGkuL z4bz@}iac&}b;b&2f1AV4xk{JsY_au@aAyh{cV32&8TARkL&rCv}n$@ik(UE zIcN48+&mwdCe+`RXmNv!_UTwRewWv}LySuV3uK zh1;_GZq2X#U}*OC>g(t^rd7v7lP3n>s+j05cY9;soD;8`&KPccIYF8`_qfw;y^GuT z{JQGL^LO2!>}L7OE!+F7YL3;td?H@CWux2s8%H9p7wueea6_Y@e)^iND>t4xI7>bC z+N&3rr-j#_O16I%Y*{wt#`3dbA3uo~)Gd@x4vxS6U}E5{Px6&q275BHYpxmoKV@*a z{_eC**OZU%o2H%J&08bW|IJXWHmdvLv{}7Dzc23JDzmX~*NL@rW-ZeDrtJSVde63` zjnkE%$?q-7eOdh{z`gbh`@Fg%FZ^XoW3MPKKikIt*W}^Eh1bKZpBOId5bp00`h8LS zqkl9{!R_*Z&U4u^M{*`yQ)OGAmy~HP`iEER;<{r+qFw1xGoO53n>Fcb*sMp{hn22} ze~Ev5kmpkO^waycZp*DIykhEhyF<`iW1ZT(j`g=q_t*aU{j6h7^P?c~j}!gxZ**Hf z_xRk}+_h7?gY(wTs|)6Nl%%V7%k1UiHF@QQ4ejwUx$?hrXDs`1Ys06N`I}f5$JGR{ z%@yBvEjzq;*ZW&v9z1l?Pwx$t-#In%w6LLXZtaTIwVKQG4qe;y!v5B+vY4&0S1#vW zUOc(EEWFbuH@SO;nO*Mg4Y^fsmFuO$dVZ-z8@#xA>r0^C^gFk@GcUR49O3;WnLF#& z*7+y6=k5Dry6u_p?Uu>rw@e<+`r^Ay@cOm9O~pF5BsQBCz3n-F{^u>Tq)hXd%F8_C ze|P=Zm1}d$rFJr(?NYhf5hZ>8UwvnEEVs=yJYeja zd-UKDhFKf7#_dkrVCuHcQRY_1*7HgY&zH<_n4)jVAHkCld|NsD^X(Q^dF~lzzoo=~ zZ`&$+ZF}lBX=-G$wTJ$>s5c7pleVnP{@QG@K`{Kb`))IzTxGpm zZau#=R^Lv#WpSi?vwU_gd!o`jvxv7@bAPG*%t^^De7WB@{&$x}E_-6u+}a%F>7RDx z9e%OfH~#Yl@zuG#f$^u`y6@I|qwse_^6~s9o&S1Q9&@S8$(H`P=w8|Exaz_yNwZ4= z<#UsEpWeqQox0_#Zur{uzXg}SRq$E6S>IpUy?1l|+POBT*smsSUAysBc4hefUjN;R zUw`%gxG_!tTHyWEe!E9c9j~R_R=K>-ll{IyRj%^Ah*wejI_9peJu7QDyJV}}e&3H7 z(XX?s3pe)FG{2E8K63n9wC1vP%XQge zLa#4K{AJa}$d}CSc3bNHQPHI4^kUgEyT$UBQ+Q8@-p;i5d2@^JwRX|%X@~#$?8v%3vmn7*IKC*_{HNTs^(V#d z>HW^Q-fHUiI%9QDm6}bi%*6F;*S_`nb8u;_@cRuh%@(sN7W>>ztTnyqcGIWgi|pI> z+-z&%`l9UY`ek1)-mnkf)>pXgUwU@?{lyzi-$j&vJR2haaieVQt-MR_kvYl1-?JmH z++Ox=N8hFlYmfDQdt|;Xj*~P^o$%iC$d~IUY-5dYT1(k(Ykre$`?%}J4YgTndnJmK z_OD~Vxvfxny812c;Pv^xU#(?-nLStL+SWL~FQtyxm#)uUrps1Qwtw}J2Bom$xxYHL z>V`!>z4q$u_0lcbhZdzb9^SD_%qsWWR{vkVH>B9rj)lK|yS*^;_Ok2qb{)%*HuT-$ z_{)qhH*5Z>l^bQ3^hexEV*e=;eEU|oeTVX|OXsX^om{$Zt(bVOa#-z@tGR}`GLMel z?BBYr*+9@=dQI6@zuL()W}CL{_;P>Q`dZgH+nNowp0nFF(YrFXJTa>_+ULWy8)os% z7F#kOU)tttekeJ5(~-(6w%)8s!UE$-R2E%%p{ zeBmv=LszVRf7()b#p3t1TPGLS1n7p{mRh}UTKU)8KekARt^eQApZhaO_G|377s_#R zDZbkdzj&Ixx&O|G&iqGxn{MPi788E0_HV`d+op9B_MMB*jeh-bm7(#&{%^jP9d}~) zvEN+X{jWz@{?+3BiJ-)$Tt5B%i}Pi{w(G^2?Sijwl~^Hsd&&xp?AwmMGc>y2R;9bg z=DgNEm67ego3~kSnqJHm_kSl6t&^rk+Kc}*nRoM;?As?rHo04OWJqs(wRlZlcjjXO z{d0A}ciS=_9(U_-)+1Wwr)lD+o<)iM{ca! zcxvtLFB5ljTYK=ISJ?Y8z&+;6{kG0eH?Em|a^3sZZ11;6D{gN{x?+BlFIoQWlS#YR z?f&veS?|;8<$W_W`a#i?boA!-YwLXV^{ypt?X|jvkv)B@Qa{|hc5L6i3EHb~C(Zie zyDP)qW4+#^O!KK~_kAr=1=s6bJ05)AV)6bPYRjVf*BrZHp8hR6NBp`%b*bs{+OHSQ zt++Os?fs$mSLJg5{;dCxXL))~uDg}A;Pop@6Si>ciFR%ef`eiqN`;WZ`{9Le zbB-;`?MYR$@%=V2J0SY@%pcN6#7m3ZZyLP4dF$$(iRo&OyUR?|#rwC#?wECb-?wio z(@%?9&boCmJm>Z1X-Dl0Z?1p6;_~_#W_eEpg>P@|vr|o)b?d~LxxaSFEeT()pZnH* zuThrQx81-tBmTzHNN*%!mm9o-uBDN?N`Conqz^lr@GhVbT41lu>R|bsirR% z^Xa%o-qky$SsR=q2u^3ScP!2cs1}%CcC9ey#H)Q4uV=o<)+xNY=|+F8 zORg4}p1kzEq-F>`mf)1f0?MiZEOFg8+n)fqj?M}-)XUhKUT@V ze7)jVY{b_h^Fj^b?D!||`)x~Tgi`hQH=3lWfTlZ~EMWbE{+X{gCa6 zPx3CGZ}DCeQ>2~0>ZsYv3A~pM+k41cDzDRB*U`Dn_pRBQJGsAR7IaSa&I8qP{Htzn zDBAuq`&?q-jgzs(7v4X*xD6DP`;MNHEj@hXO4|Kn>h){;Yb}!HrGGb<_}=mTcrx_y zQMdY1>suZ9kGmsoHGg<@;A+iQp1nWxbheeQ%zafSUN>RiGo^D;V!t=?=8MbqnE6@; znCpa}6@Pm%FiY~U+WpBdUjFEK`zY)3>D6)fPbJrETw8Z5>45f2t=X?`Irgsn>gxyU zC4h_ZV~dIn5A0A1`xkNj+lyN{vo=iZE)#cqrx!Cj?ssC1WVCenWV=tR`@j0^SS0&) z*6wcZ*?K*{W=Y?UIN}<4H}CM3JGmA=cYS$qV$Em*E>UHAI1KSgy=3RcReGMGH(V*HP zct5Xp`Rskqq}bHm-py*>H$zR3?5`90VeeKfUb}DF?eO^9*K0ps+iLgiVNY$& z8~#hCh2}@q!+XW0|6YBYp}enGKPmG(i~hD}3;ON9Zq5IC%k=72-@EH`vufW6yT3WU z%_gvHONGVL>{E@q5^Ky8w@kPGHJdkX->tBJW_y3^TKDnri{-j(&o0kpoRsLaOU&|t zPu1Kl%l;We82rkA6mad>(%ji`)vpo_1l7x*bo`3CcSZim=ba~>FQ`cRle=TaWHX;9 z3-7je|2iRGsib!5^*4n%cbW~1A2MrCze8josl`s``Iq>%{piEb5y$Qxxhony{hp0! z;p)wD)4XfeDE~LGIh^pM|IVpri}D`L^^EZ~G%0NA{&d5w{d|C{Kh?J%4+=wntLJ&eP^iE^j?n3368yevx{TlcNJe=PR*Ci#!2R@^?d<*38;C6beF zIr_%De(mU5)7xuxEB4ok*yNXs(`Uckp;X_q_M2$ww%rCrf@>~&(L z()4W`+v?Ztc+$FF_uaaRClW2)cMc!B2MR5F9~(hqjl7Z~_xi21ci$gcHNAS-H$naI zDHo^h_Kknsez0@m?q?f7Ef`xKwOhQOZXUh5wEs@*4ZYf)n`KYJ&3MimNbKCbA-3vq z*Va3MZo9izd&^hu-VpoC%Iw!f`&aD`UmZGexApa<<2!Or=icAd?OmH2|NZG=xA51= z@_xTd*VaDi&i!!fO3|;0v;Qg7T)y#S+qC9g$GSJNIWN?|R(Iq`nc<4K3*8&nDO}!V zx@@)mS&MSEhqFIfp7@vXv0(er;9~wmi;Cr4_T6A}c2v7o7wGdcC)&N{?DZ@8kK5LB zuAjeb*RkfA+ax4P(j6X41WcZ+SGz?}yZp+HUb;^%3h53zDAn{Y#3DnR4|lI6Ka2uLEUSUzt-! zZmoZP^Tq5xWgj1uOZ0$4Q)YR@&c%5%c5GSy_Ko{Jy`1TB=Q_IoyjrQOb}D%{w{p4o zI`8{Wg5RxJeD~^L+ax z`-n^BT{*VvZJD3$wq4Di9(Tu}R6KlbewVnt>AI8O4QA-+{VgvneVJU7^t5l+x{9`= zr`E2&b*^rDotnkYFKcsyb+>u8ukpQqWEt5?K0O67j@>ZR`#ELzeBQZIj3^D zc=&X?qVB2IuQFDzfBNm}^>3x|drBc8Hv0ys!*F*AsQvKC^hEsS3g!4Mxrf~L8k*nC zzTMJUaa(Zxnv-FXYj%IwYIo~W->(~P?lD_+z9m;n*vz(1rkk^Y+dEif+m<>Aw2w~snJ z>3@4G{L0O1`~Pm+)xFwRzW7?(%G$DryS{vQxt;s=(*BK|Q>|a+bZ?Bm9$WP>cgKs} zyvpsR;(D)?_kX)0DEzdvS|Ubz*~xP0u>G-Bg@>=i#>D zF;hFXaO+LQ_WFq5i3NufWP-)FdEYnD+nF6J9zK2Fv+P%|t0UGW7XFyD`{a9{idk=V zr}*yczm_hnUg%Ppv-ohjZg=gijq*Qt|0$H8m$j!VtLvB4`a4xZe|7A> zZJnAwf!FHeqcvNn?_Mci>ig?NX!7n4TXhSsff{i;c7JI8bN5aLLtNP7y-%5Gkw`MLjT=!x- zs5CpcrPrIMR6KmPUD5W$Me`Sb4Eu%ioX!3A(()&y1h1ZP!o@Wi0 zF4wge+m|KZr+w=AseIw`FV5BLYFzJ`?LU4f{EK(={o{wG-`VP4yY*#q%&jKbmi*0u zcEZscuN6sfe{`Q)lyYkAMbqB!+F18>X3WM;?Pf6?4}Z{JsyRX?{LyYlzes%!kO zuK&zFWOg!Z{pbO4bAP>9f9&%7 zZ4x&&r=RcV^-%7VnN#%IY;RHF#=OT}GaTQZxO?QNQiHu+*@p)Q9Zg)Xr^x?Qb`&;y zmC4`SY4#|4{wd{cdEE!iwjEXMwt8B+R=4Q!g))I{*Dm(QY>mr%+PvX#(k_cHH(L+O zOMH;AmT}H4pSEkqqPYKk$E}j4m|krzDB?eKWe%utKWo0?{xQ?bJCyskZN1;IvUH<8 z&pO`4@6BqzB=6>49hdiZR@O$}U5P2~+48k#T2}MEo^kuj#rbdb)>Q4>x;ZSrKHzSv z?2`U}%6g|3zwhY$bmJYQ7BK%g#rjo7dEv_SZ(rA)jRv=D`?vXi(#YQ2JL5*%?S09e zn|Ar`*SmGS==aunb+h$zvTAg@zxhV|jRK7$+?{@W*R|tyInDXE>hoo8-&>yF^<~b$u75UVnt|Q1<=M>opIS>#~{U-kLH^Co-slXVJRAb0K26eWAOb z$;!+7M{mpVv@U<=lYMQCV=R|vLh>SaL(RUEtS*7irr)UFcY6}|CzIJRb91)!6dv!B zeR?BuXVKDj=lJiEFN`mwFF5ZoztN8Q{9_&q_M(3tT2tn($(*@OV#m8(uZ6go*p8-D z&WP%%_)BOg9DA5E~a%)w##|Z{8Ui$){$dP3VL!8 z0&`Yu(+QGbH++A0_xBS@ZJZk)E30pOUorpuw!;6%?#$3m`ThO9|L*elZdaz;F+&^z z38e#j&K!8M*(lh#*vWQ9U!=szxgRfX{Bq;n+fOx_?Xa@|UcQcg?|uJnY51NS1!spaoZzjQohV&^{LB()9^Io2Y_11YyW6>n5b zKX6j*#>^W@>~&^!>B+0--4-T{E_Sas28(i!;_pFkJlXkik!Y` z+5C?2oT)NA5ZmZpZaewkhtu_w%lhl>*IHIb-kPp{<@YC>>f1;9OeV_twts(qyya5F zuj6;QKYgiBj564yaNjdx*15QnGOPN7Ghe=GO{KM~-8M`HeqkG)C&P@yXBgxIM4VD7X5_y)Cbnc3-}6$j7wupshWh%PO_~XJ*!~ zSC^e-F{Ny|?arC?yS{wb_T|Vy_siRjn>=3~IS~=3pyT~qFJ}6`t1tf-@5=f)^<}_6 z^YEjd2I0SEezD}-(l4)88)I4i>5a;UW7qx)AG|iBV`j~*bVcXeb(brye%)q2Pg{&x z&bqi%=bH_h^MrMoH`jH{KY8h#?Cr}Z9@-S17k-(kTFx(fYVykFpVKQom9y@!FQ`Z= zT6!Sav8J4XdtXjWnDWoxtlQu3v$m~z(D~`Z1(S7_FAA>C?lclk;;Q8mPE)JN(P5h* zV(j>BmBFUP8=rEo*!kZy7N`u-+bRQ=9g!s?@c=9HuKl>-Hbm! zE=3;)%iHrZ+T#}HZ^mb2m{IBWR^~Qhg_5bbN zl3-HbY3_foFEw-4mB;5fm4%(uC+KkONp8royJ0l%X5aRc(>hIdzCLxeGtK+Xu``d> zXa2utIQ__1^u$y-tI;x=X9|1krze%)|0=(<|MTVltZO>tpH$Q(v&4lw_ z^PIVv)UdpkFUNXo>n4@aJr+`fF@WBc8D_b97vHnBxNOkbAY z|2F^9(e(NA&&Aip{koj}&pT>=QgR%hPu=o_b<m)oP+@n%dsJ>#PE`U61Fl)vbHBTle?8nu*8veL;29vuw6!C59XFuOIv} zsZ@NKXt((E8rx0Z-7}T`-);Q3kva2raKGqH)@<`XK9vePSp8Y@qDtbWkHS4 zt8}A#8Q#0mBkSj!M$1?pnKSh%59WxzzVzrLt7*b@c)%n1-JL63RUX}opsre+w^AreS^djA&;}6`ES^KC-}QW zzfZdIIQ8IRrL=%EpRZ0!KK1vs#NGX|k4p_pb^1=u+YG6IVTre3QA)x)G3H7a;h(3z zoceh6=dAxvM6VwH`JOw#?X$exjnabh%+K9Uj~{b;&)&`a^Y@Y97n*_IN1xP~wR+B< z?4Wkk=hKWQ#+KXo^>fv_5;T1j9=8O(@yY2w_I|^*BUxv3k}~YWx9QE>RaCkr`B_Ba z|6}pyPI>F@>@Qunw1B8zU{V?L&O+=bP0$4da*Z2@7lf_H*Xouw7ItJ$cZ0GXMU6_ zy_T4>!uVOoT<_>(zhZu@J%0Mfu4AV^I_0t5EV4OMCU~pN=G!Nz^@*RBW{JXgNgA#**@J4sJN)_8L z7o0QS-`ksN6z`Gt;n0)ms}B@dIxabX#59hztf{B(kxJdNexA7++kA>{jIiT^wx~rQ^Ds; z4E}$8xU^eMoZ0$Yo^Nuc;Q^O!Yc_WEPoZ~K?)S@Cblgo{{`t*arP)=_W~QHF$=fDu zy#9?5XUd`HOU`>P;AZ;bBcQqEqxf(2Rl42NKzTa+%;v3M^PInQ>w8VV|2Xk<((-%z zx5g*scJ188dL5$}K6~JfF59QMjjr0qFU$7dn>g>zHh-_cmm|~j zPHpNec^%8e;VjI!IdNr%TENoZf~?{8mTEbdoIy_ekIXjHcv{;9_MaS^)Fp_;Ofq* zbvZZvzgBck|0|N5(`9+%N>*`|tP4|J(7p89S^jQ+;~a zXHLH3*l%gbIPd*7zfXIWFPO&lsrL6eZhNu=qfD69c=Gi9Vv}8+e~z5G^jUnV^!tCO zOAd;k_u5~0_WaWSZx7Ql8&|9JYJV^ zeRAe+zcrrh!Y)s8w%h~-Fo#c@Y`>v$cQ^aj!ae8NqmP}v%gEKe+;L};;YEyeaQ?uY zyOIWhi<1{;o^<_v`F;KC|6cq5-2eamPwJyT+{TqtKh)Pe|9*M;_Bz$4FH56#l-cA) ze%brQ{@tI5s%O>KpPU|uU;3K9&u;Gz*YM?AUtgQ1&uyG}duw+1%q<^xT*wh;^6Aj@ zsd<=iDSJL={GKKsX`X#ImA<)bO|9`YH2(Ou>*vq3*G((#?a$r$>4qk|54NcPe3Zdb z>ZI`d(C0nNX6OCh{pGBDow=?|?390xyZ@d4@{KoNGhWQjW~0L1e-B;?#a9B|Nj&Ep7ZD2F){lie`0Q)Qwu+?lqO!-{4IZWeD2-!rw%XUL0t|= zOCQ`H`fS2{JjHOre%?9tK_w=0s~#@=l5hXh`eiYHjiRn}{Jd*=QFHm8)L&noec9gf z&#aQGuHnl|)8|bS)0tD#)B2v>U}mb)Ic29mwT)L-f0j2qz3HaddZyhB1wt>F8aS0F z*Z+PoQ{a+)RP>It*X0q>MZw2oZcnm4E`Hql`nD(9ecvm7u04KQcH+8^yBZ@9Db@>te2M`+`waua}(hbuOdYujT7wrr#?%`SshY{C4xF`l{U9`mBb2 z$!R_hUR*BQ^ZDkrzt*!qW_jhp9BQ6@=@WDJCuN7% zmo&LQiPwqiYlVMNS6}dRdgZ4jUGb8K(yISuUUY6(uYcIyDHbpBjK9m!G4;_gd5PPb zQoXJIez|=4)6>)aR`30~9xnCe5vj3!xj6RwK?BK>#sZ@oQi~0PjpIJO`EliDdEp<@We>^mdwU+JO++M(Ys1AE4Ms9b9ni4eMbE==UJZqUwl4pBHQtl$%mFq**CdR z?f)G{hyI?EzxrgYPsz(#zuj{AlI8O`!Ea`qNHV{@Xz%0%^%EZo!<+18cMIN%GyLwo z?8F=!>HnP>ucw!H8XoiMlRUj(#`D#>zc2lje&12jJN@t3jh8VBv~ve~_8T8)nXCWX z$npNp;`GWb=?5RRX8u0+c5-*4j{9?#dD{Pd*68@0yHWRLvHaAd43jqf2-kj22@AG_KbzWxj`9+MNG?tbDQvzw=mK3ag`=vj@D z_G%>uS;d$9ez$x5A6^Ev&;E8lQ+_^9u)Fs8=J~p9F<e$|Nr}a`Reuic6})L{t&b;dghbb zABW}r{ycdx``(vjM`T+Pxw$7=99({$Wx}kJ%17;t)Fyq4oN%G6uwc^-Bg6EChkqoU z(b*)?{Wx3d{mHD;buuP#-%@W^%+8tk6}>Gw-`L=f>bI3T1+4S6zvyu2?R+w6OZxeF zCExFsFYo<%abETNz2>?1_UznZ|8=FmsH||1T0;DvN8+cM9)Zp{_-S|G`~LrbFV(-z zj*k{&)Y01aeee6FxAS)EevEDTzW04?YS6#A?`xLZ*p-~t-9E*dr{?AlW%-{TGhgs+ zPTsT0o5!c=W=ChI;^aDc?!rkN>cVLTFErIR=}xZlk~Mz(TIzjH?#IyEkGd~C{a$fn zlfsJc?>E$C-!@wD58WI7#s-UzG6<)OG5t~8VEt}~a%{;(*VISnk`jFXr7G@YKk%qw z_0Jm48`@`Lrq(Oet3Oz^dYx7|ci6g^NHO6%zB``H%0A^XZ8xLOgSfx1!k3Hh`_TH5 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 pfxJ#}}d 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%0DQ}X|y|F!D+z8UojaeH?b9-lIg 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 Date: Tue, 22 Oct 2013 12:11:47 +0200 Subject: [PATCH 019/104] Doc: replace Qt GUI Application with Qt Widgets Application Qt GUI application could also be a Qt Quick application. Update screenshots. Task-number: QTCREATORBUG-10263 Change-Id: I8c0dd34e1222c3b42fddaf3f562e402490ce1037 Reviewed-by: Friedemann Kleint Reviewed-by: Eike Ziller --- doc/images/qmldesigner-new-project.png | Bin 57693 -> 80229 bytes .../qtcreator-new-qt-gui-application.png | Bin 69668 -> 51792 bytes .../qtcreator-new-qt-quick-project-wizard.png | Bin 75500 -> 80709 bytes .../projects/creator-projects-creating.qdoc | 2 +- doc/src/widgets/qtdesigner-app-tutorial.qdoc | 2 +- .../wizards/guiappwizard.cpp | 2 +- .../wizards/guiappwizarddialog.cpp | 2 +- 7 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/images/qmldesigner-new-project.png b/doc/images/qmldesigner-new-project.png index 635329b9789f5395d51f4568ef1e31f3d2a9a2a4..7a6cce9fa1c5edab48b97d9def60dbaf3c3e64eb 100644 GIT binary patch literal 80229 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

Sn?IPXUwgko;y};# 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 diff --git a/doc/images/qtcreator-new-qt-gui-application.png b/doc/images/qtcreator-new-qt-gui-application.png index 95353a38ca8152451a7c275eba983006a3a7b19a..9682d5abd57e66bb3fe596d32f58d6824eff9f9b 100644 GIT binary patch literal 51792 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

HWaUA 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 literal 69668 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 diff --git a/doc/images/qtcreator-new-qt-quick-project-wizard.png b/doc/images/qtcreator-new-qt-quick-project-wizard.png index 571a67eb31bbbbad9d7572125abdaee51bb7b3f7..9b4c79f6a8ba3d7d4a2f6aea4bd12f3dac8bea91 100644 GIT binary patch delta 78685 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%0Dd4mb%^ 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 G&;$T^&_HVd delta 73435 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 F0sx^NY New File or Project > Applications > Qt Gui + \li Select \gui{File > New File or Project > Applications > Qt Widgets Application > Choose}. \image qtcreator-new-qt-gui-application.png "New File or Project dialog" diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp index aaa1f95abcf..171277b616c 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp @@ -78,7 +78,7 @@ GuiAppWizard::GuiAppWizard(bool isMobile) setCategory(QLatin1String(ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY)); setDisplayCategory(QCoreApplication::translate("ProjectExplorer", ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY_DISPLAY)); - setDisplayName(tr("Qt Gui Application")); + setDisplayName(tr("Qt Widgets Application")); setDescription(tr("Creates a Qt application for the desktop. " "Includes a Qt Designer-based main window.\n\n" "Preselects a desktop Qt for building the application if available.")); diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp index cf15d1f2fa2..d6a1c534d56 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp +++ b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp @@ -57,7 +57,7 @@ GuiAppWizardDialog::GuiAppWizardDialog(const QString &templateName, setWindowTitle(templateName); setSelectedModules(QLatin1String("core gui"), true); - setIntroDescription(tr("This wizard generates a Qt GUI application " + setIntroDescription(tr("This wizard generates a Qt Widgets Application " "project. The application derives by default from QApplication " "and includes an empty widget.")); From f1750ba4f7338f29509ade52da25efa83aa3d118 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 22 Oct 2013 13:55:47 +0200 Subject: [PATCH 020/104] Doc: new filters in the Issues output pane The Debug Information, Debugger Runtime, and Deployment filters were added. Change-Id: Ifc22e1dfb1d1a9b0b72e371bfa7963c646d3ff2f Reviewed-by: hjk --- doc/images/qtcreator-build-issues.png | Bin 21723 -> 15546 bytes doc/src/howto/creator-ui.qdoc | 9 +++++++++ 2 files changed, 9 insertions(+) diff --git a/doc/images/qtcreator-build-issues.png b/doc/images/qtcreator-build-issues.png index b0d77588402c24fdc6c97f24aebc9429fd0fc71e..c8f4c138c7860e42d7d0d3ab5d29028b2cda643d 100644 GIT binary patch literal 15546 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 Date: Tue, 22 Oct 2013 08:23:27 +0200 Subject: [PATCH 021/104] CppEditor: Adjust Title in preprocessor dialog. Now its more consistent with the other text in this dialog. Change-Id: I424428a6fb892a2f0be2a3c6b11ae652ea39c679 Reviewed-by: Nikolai Kosjar --- src/plugins/cppeditor/cpppreprocessordialog.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/cppeditor/cpppreprocessordialog.ui b/src/plugins/cppeditor/cpppreprocessordialog.ui index 28c7b5f47bd..38609011565 100644 --- a/src/plugins/cppeditor/cpppreprocessordialog.ui +++ b/src/plugins/cppeditor/cpppreprocessordialog.ui @@ -11,7 +11,7 @@ - Additional C++ Preprocess Directives + Additional C++ Preprocessor Directives From e79d4ed2e1aa079884179e04f47cac7ffb29d2f8 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 21 Oct 2013 12:59:48 +0200 Subject: [PATCH 022/104] CppEditor: Follow Symbol Under Cursor opens the preprocessor dialog ... when invoked on a macro that is defined inside that dialog. Change-Id: I419c6675d70cfb8dd174f6a33f502b4c584baa3a Reviewed-by: David Schulz --- src/plugins/cppeditor/cppfollowsymbolundercursor.cpp | 10 ++++++---- src/plugins/cpptools/cppmodelmanagerinterface.cpp | 5 +++++ src/plugins/cpptools/cppmodelmanagerinterface.h | 1 + src/plugins/cpptools/cppsnapshotupdater.cpp | 3 ++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp index bd2acf05abf..ad4a8c30121 100644 --- a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp +++ b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp @@ -454,16 +454,18 @@ BaseTextEditorWidget::Link FollowSymbolUnderCursor::findLink(const QTextCursor & const QByteArray name = CPPEditorWidget::identifierUnderCursor(¯oCursor).toLatin1(); if (macro->name() == name) return link; //already on definition! - } else { - const Document::MacroUse *use = doc->findMacroUseAt(endOfToken - 1); - if (use && use->macro().fileName() != CppModelManagerInterface::configurationFileName()) { + } else if (const Document::MacroUse *use = doc->findMacroUseAt(endOfToken - 1)) { + const QString fileName = use->macro().fileName(); + if (fileName == CppModelManagerInterface::editorConfigurationFileName()) { + m_widget->showPreProcessorWidget(); + } else if (fileName != CppModelManagerInterface::configurationFileName()) { const Macro ¯o = use->macro(); link.targetFileName = macro.fileName(); link.targetLine = macro.line(); link.linkTextStart = use->begin(); link.linkTextEnd = use->end(); - return link; } + return link; } // Find the last symbol up to the cursor position diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.cpp b/src/plugins/cpptools/cppmodelmanagerinterface.cpp index e2a7c6f10eb..31f1b55e18f 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.cpp +++ b/src/plugins/cpptools/cppmodelmanagerinterface.cpp @@ -175,6 +175,11 @@ static CppModelManagerInterface *g_instance = 0; const QString CppModelManagerInterface::configurationFileName() { return CPlusPlus::Preprocessor::configurationFileName; } +const QString CppModelManagerInterface::editorConfigurationFileName() +{ + return QLatin1String(""); +} + CppModelManagerInterface::CppModelManagerInterface(QObject *parent) : QObject(parent) { diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index eacfa6f756a..bb6787bd2f2 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -216,6 +216,7 @@ public: public: static const QString configurationFileName(); + static const QString editorConfigurationFileName(); public: CppModelManagerInterface(QObject *parent = 0); diff --git a/src/plugins/cpptools/cppsnapshotupdater.cpp b/src/plugins/cpptools/cppsnapshotupdater.cpp index cf4a7cec749..4b3e9fedb4c 100644 --- a/src/plugins/cpptools/cppsnapshotupdater.cpp +++ b/src/plugins/cpptools/cppsnapshotupdater.cpp @@ -138,7 +138,8 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy) workingCopy.insert(configurationFileName, m_configFile); m_snapshot.remove(m_fileInEditor); - static const QString editorDefinesFileName = QLatin1String(""); + static const QString editorDefinesFileName + = CppModelManagerInterface::editorConfigurationFileName(); if (editorDefinesChanged) { m_snapshot.remove(editorDefinesFileName); workingCopy.insert(editorDefinesFileName, m_editorDefines); From 5e9f67bf48bcfb65c54c5dee978dee1bffea141d Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 15:52:51 +0200 Subject: [PATCH 023/104] Debugger: Make namedemangler test run without X Change-Id: Ia04d6b7999eaa2de6471031100fa4143549185d7 Reviewed-by: hjk --- tests/auto/debugger/namedemangler.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/debugger/namedemangler.pro b/tests/auto/debugger/namedemangler.pro index 872cadc7fc9..ec021e6eb80 100644 --- a/tests/auto/debugger/namedemangler.pro +++ b/tests/auto/debugger/namedemangler.pro @@ -1,4 +1,5 @@ QTC_LIB_DEPENDS += utils +QT -= gui include(../qttest.pri) From 3716791d0b477735fdb10613e79f737d6b5ef351 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Oct 2013 15:31:08 +0200 Subject: [PATCH 024/104] Library wizard: Don't use base class unless it is a plugin. Task-number: QTCREATORBUG-10444 Change-Id: Iae6559e27573dcdfdde70292f637eb820bf99c93 Reviewed-by: Jarek Kobus --- src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp index c5a7b52a607..1d978acdc9d 100644 --- a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp +++ b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp @@ -349,7 +349,8 @@ LibraryParameters LibraryWizardDialog::libraryParameters() const { LibraryParameters rc; rc.className = m_filesPage->className(); - rc.baseClassName = m_filesPage->baseClassName(); + rc.baseClassName = type() == QtProjectParameters::Qt4Plugin ? + m_filesPage->baseClassName() : QString(); rc.sourceFileName = m_filesPage->sourceFileName(); rc.headerFileName = m_filesPage->headerFileName(); return rc; From ac627bb77001fa6d182a8a247646a810a94a06ee Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Tue, 22 Oct 2013 15:51:21 +0200 Subject: [PATCH 025/104] CMake: Don't expect the version in --help output Since we don't actually need it anymore, just remove the code. Task-number: QTCREATORBUG-10452 Change-Id: I59f55f3a319240826569de308491cac697c4f045 Reviewed-by: Tobias Hunger --- src/plugins/cmakeprojectmanager/cmakevalidator.cpp | 7 +------ src/plugins/cmakeprojectmanager/cmakevalidator.h | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakevalidator.cpp b/src/plugins/cmakeprojectmanager/cmakevalidator.cpp index 8a85a756fa7..203dfe8706d 100644 --- a/src/plugins/cmakeprojectmanager/cmakevalidator.cpp +++ b/src/plugins/cmakeprojectmanager/cmakevalidator.cpp @@ -86,16 +86,11 @@ void CMakeValidator::finished(int exitCode) } if (m_state == CMakeValidator::RunningBasic) { QByteArray response = m_process->readAll(); - QRegExp versionRegexp(QLatin1String("^cmake version ([\\d\\.]*)")); - versionRegexp.indexIn(QString::fromLocal8Bit(response)); m_hasCodeBlocksMsvcGenerator = response.contains("CodeBlocks - NMake Makefiles"); m_hasCodeBlocksNinjaGenerator = response.contains("CodeBlocks - Ninja"); - m_version = versionRegexp.cap(1); - if (versionRegexp.capturedTexts().size() > 3) - m_version += QLatin1Char('.') + versionRegexp.cap(3); - if (m_version.isEmpty()) { + if (response.isEmpty()) { m_state = CMakeValidator::Invalid; } else { m_state = CMakeValidator::RunningFunctionList; diff --git a/src/plugins/cmakeprojectmanager/cmakevalidator.h b/src/plugins/cmakeprojectmanager/cmakevalidator.h index 945a2271ff7..c4c39283a59 100644 --- a/src/plugins/cmakeprojectmanager/cmakevalidator.h +++ b/src/plugins/cmakeprojectmanager/cmakevalidator.h @@ -74,7 +74,6 @@ private: QProcess *m_process; bool m_hasCodeBlocksMsvcGenerator; bool m_hasCodeBlocksNinjaGenerator; - QString m_version; QString m_executable; QMap m_functionArgs; From 2f64fecd457b6b15b8afddb752d88d926a9d19b3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Oct 2013 16:59:33 +0200 Subject: [PATCH 026/104] QmlDesigner.PropertyEditor: fix warnings about missing NOTIFIER Change-Id: I7386bead0b1f8d4c577c318dae5873491885901b Reviewed-by: Thomas Hartmann --- .../HelperWidgets/RoundedPanel.qml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml index 992ff27bf20..9bfcf12b7b9 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml @@ -58,21 +58,25 @@ Rectangle { border.color: roundLeft ? "#7f7f7f" : "#2e2e2e" Rectangle { - gradient: parent.gradient anchors.fill: parent visible: roundLeft anchors.leftMargin: 10 anchors.topMargin: 1 anchors.bottomMargin: 1 + Component.onCompleted: { + gradient = parent.gradient + } } Rectangle { - gradient: parent.gradient anchors.fill: parent visible: roundRight anchors.rightMargin: 10 anchors.topMargin: 1 anchors.bottomMargin: 1 + Component.onCompleted: { + gradient = parent.gradient + } } Rectangle { From 50c9661ca3e0ff3744ad94ce865c3af2e4b9101e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Oct 2013 17:00:50 +0200 Subject: [PATCH 027/104] QmlDesigner.PropertyEditor: fix for ComboBox Change-Id: I766cdf7831509fa7d4e6c6b98f304b814f2f4e76 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/ComboBox.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml index 1534cbdfd3e..5d3cd4bf342 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml @@ -39,7 +39,7 @@ Controls.ComboBox { QtObject { property string valueFromBackend: lineEdit.backendValue.valueToString; onValueFromBackendChanged: { - lineEdit.currentText = valueFromBackend; + lineEdit.currentIndex = comboBox.find(valueFromBackend); } } From 4c42a8ee958c790445fb50d34e5b250e8586398f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Oct 2013 17:00:40 +0200 Subject: [PATCH 028/104] QmlDesigner.PropertyEditor: fix for CheckBox Change-Id: I8ca2642b50c8f1b529db77ffb4e91f34a0a3b2bf Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/CheckBox.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml index a1158cc5c69..3462599b434 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml @@ -49,7 +49,7 @@ Controls.CheckBox { ExtendedFunctionButton { x: 22 backendValue: checkBox.backendValue - visible: spinBox.enabled + visible: checkBox.enabled } QtObject { From 92baa15ed0ad631466fafa1dce4e27aa795e2480 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Oct 2013 17:00:10 +0200 Subject: [PATCH 029/104] QmlDesigner.PropertyEditor: fixing combo box for font Change-Id: If1a72549568bfddac3e02151ff9a13be4b578e40 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/FontSection.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml index 96a8b64f58b..fd7757d00ec 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml @@ -59,7 +59,7 @@ Section { property variant underlineStyle: backendValues.font_underline property variant strikeoutStyle: backendValues.font_strikeout - GridLayout { + SectionLayout { columns: 2 rows: 3 Label { @@ -85,9 +85,9 @@ Section { onSelectionFlagChanged: { print("selection changed"); isSetup = true; - sizeType.currentText = "points"; + sizeType.currentIndex = 1 if (pixelSize.isInModel) - sizeType.currentText = "pixels"; + sizeType.currentIndex = 0 isSetup = false; } From cde0a8828d89817bd6193e4ff12314a726cc46e1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Oct 2013 17:04:40 +0200 Subject: [PATCH 030/104] QmlDesigner.PropertyEditor: fix combobox for anchor targets Change-Id: Ib66e19ad2d70cb8c5fd295288a625af06104d40e Reviewed-by: Thomas Hartmann --- .../HelperWidgets/qmldir | 1 + .../QtQuick/LayoutSection.qml | 29 ++- .../QtQuick/TargetComboBox.qml | 58 ++++++ .../propertyeditor/qmlanchorbindingproxy.cpp | 169 ++++++++++++++++-- .../propertyeditor/qmlanchorbindingproxy.h | 48 +++-- 5 files changed, 265 insertions(+), 40 deletions(-) create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/qmldir b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/qmldir index ec6e3d0a8fa..e74806a6272 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/qmldir +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/qmldir @@ -9,6 +9,7 @@ TabView 2.0 TabView.qml Tab 2.0 Tab.qml ScrollView 2.0 ScrollView.qml ComboBox 2.0 ComboBox.qml +CustomComboBoxStyle 2.0 CustomComboBoxStyle.qml SectionLayout 2.0 SectionLayout.qml SecondColumnLayout 2.0 SecondColumnLayout.qml ExpandingSpacer 2.0 ExpandingSpacer.qml diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml index b85d8b731fd..eefb408740b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml @@ -41,6 +41,7 @@ import QtQuick 2.0 import HelperWidgets 2.0 import QtQuick.Layouts 1.0 +import QtQuick.Controls 1.0 as Controls Section { anchors.left: parent.left @@ -79,8 +80,11 @@ Section { elide: Text.ElideRight } - ComboBox { - + TargetComboBox { + targetName: anchorBackend.topTarget + onCurrentTextChanged: { + anchorBackend.topTarget = currentText + } } @@ -137,8 +141,11 @@ Section { elide: Text.ElideRight } - ComboBox { - + TargetComboBox { + targetName: anchorBackend.bottomTarget + onCurrentTextChanged: { + anchorBackend.bottomTarget = currentText + } } @@ -196,8 +203,11 @@ Section { } - ComboBox { - + TargetComboBox { + targetName: anchorBackend.leftTarget + onCurrentTextChanged: { + anchorBackend.leftTarget = currentText + } } @@ -256,8 +266,11 @@ Section { } - ComboBox { - + TargetComboBox { + targetName: anchorBackend.rightTarget + onCurrentTextChanged: { + anchorBackend.rightTarget = currentText + } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml new file mode 100644 index 00000000000..178dd8a7db7 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +import QtQuick 2.0 +import HelperWidgets 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.Controls 1.0 as Controls + +Controls.ComboBox { + + property string targetName: anchorBackend.topTarget + + id: targetComboBox + + Connections { + target: anchorBackend + onInvalidated: { + targetComboBox.currentIndex = + anchorBackend.indexOfPossibleTargetItem(targetComboBox.targetName) + } + } + + onTargetNameChanged: { + targetComboBox.currentIndex = + anchorBackend.indexOfPossibleTargetItem(targetComboBox.targetName) + } + + model: anchorBackend.possibleTargetItems + + style: CustomComboBoxStyle { + } +} diff --git a/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp b/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp index 5375d03a0af..1bb16e1cb77 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp @@ -64,7 +64,7 @@ static inline void restoreProperty(ModelNode node, const PropertyName &propertyN namespace Internal { QmlAnchorBindingProxy::QmlAnchorBindingProxy(QObject *parent) : - QObject(parent), m_locked(false) + QObject(parent), m_locked(false), m_ignoreQml(false) { } @@ -76,6 +76,8 @@ void QmlAnchorBindingProxy::setup(const QmlItemNode &fxItemNode) { m_qmlItemNode = fxItemNode; + m_ignoreQml = true; + if (m_qmlItemNode.modelNode().hasParentProperty()) { setDefaultAnchorTarget(m_qmlItemNode.modelNode().parentProperty().parentModelNode()); } else { @@ -137,6 +139,10 @@ void QmlAnchorBindingProxy::setup(const QmlItemNode &fxItemNode) emit verticalTargetChanged(); emit horizontalTargetChanged(); } + + emit invalidated(); + + m_ignoreQml = false; } void QmlAnchorBindingProxy::invalidate(const QmlItemNode &fxItemNode) @@ -146,6 +152,8 @@ void QmlAnchorBindingProxy::invalidate(const QmlItemNode &fxItemNode) m_qmlItemNode = fxItemNode; + m_ignoreQml = true; + m_verticalTarget = m_horizontalTarget = m_topTarget = m_bottomTarget = m_leftTarget = m_rightTarget = m_qmlItemNode.modelNode().parentProperty().parentModelNode(); if (topAnchored()) { @@ -201,6 +209,10 @@ void QmlAnchorBindingProxy::invalidate(const QmlItemNode &fxItemNode) emit verticalTargetChanged(); emit horizontalTargetChanged(); } + + emit invalidated(); + + m_ignoreQml = false; } bool QmlAnchorBindingProxy::hasParent() @@ -243,13 +255,20 @@ bool QmlAnchorBindingProxy::hasAnchors() } -void QmlAnchorBindingProxy::setTopTarget(const QVariant &target) +void QmlAnchorBindingProxy::setTopTarget(const QString &target) { - QmlItemNode newTarget(target.value()); + + if (m_ignoreQml) + return; + + QmlItemNode newTarget(targetIdToNode(target)); if (newTarget == m_topTarget) return; + if (!newTarget.isValid()) + return; + RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); m_topTarget = newTarget; @@ -259,13 +278,22 @@ void QmlAnchorBindingProxy::setTopTarget(const QVariant &target) } -void QmlAnchorBindingProxy::setBottomTarget(const QVariant &target) +void QmlAnchorBindingProxy::setBottomTarget(const QString &target) { - QmlItemNode newTarget(target.value()); + if (m_ignoreQml) + return; + + if (m_ignoreQml) + return; + + QmlItemNode newTarget(targetIdToNode(target)); if (newTarget == m_bottomTarget) return; + if (!newTarget.isValid()) + return; + RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); m_bottomTarget = newTarget; @@ -274,13 +302,19 @@ void QmlAnchorBindingProxy::setBottomTarget(const QVariant &target) emit bottomTargetChanged(); } -void QmlAnchorBindingProxy::setLeftTarget(const QVariant &target) +void QmlAnchorBindingProxy::setLeftTarget(const QString &target) { - QmlItemNode newTarget(target.value()); + if (m_ignoreQml) + return; + + QmlItemNode newTarget(targetIdToNode(target)); if (newTarget == m_leftTarget) return; + if (!newTarget.isValid()) + return; + RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); m_leftTarget = newTarget; @@ -289,13 +323,19 @@ void QmlAnchorBindingProxy::setLeftTarget(const QVariant &target) emit leftTargetChanged(); } -void QmlAnchorBindingProxy::setRightTarget(const QVariant &target) +void QmlAnchorBindingProxy::setRightTarget(const QString &target) { - QmlItemNode newTarget(target.value()); + if (m_ignoreQml) + return; + + QmlItemNode newTarget(targetIdToNode(target)); if (newTarget == m_rightTarget) return; + if (!newTarget.isValid()) + return; + RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); m_rightTarget = newTarget; @@ -304,13 +344,19 @@ void QmlAnchorBindingProxy::setRightTarget(const QVariant &target) emit rightTargetChanged(); } -void QmlAnchorBindingProxy::setVerticalTarget(const QVariant &target) +void QmlAnchorBindingProxy::setVerticalTarget(const QString &target) { - QmlItemNode newTarget(target.value()); + if (m_ignoreQml) + return; + + QmlItemNode newTarget(targetIdToNode(target)); if (newTarget == m_verticalTarget) return; + if (!newTarget.isValid()) + return; + RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); m_verticalTarget = newTarget; @@ -319,13 +365,19 @@ void QmlAnchorBindingProxy::setVerticalTarget(const QVariant &target) emit verticalTargetChanged(); } -void QmlAnchorBindingProxy::setHorizontalTarget(const QVariant &target) +void QmlAnchorBindingProxy::setHorizontalTarget(const QString &target) { - QmlItemNode newTarget(target.value()); + if (m_ignoreQml) + return; + + QmlItemNode newTarget(targetIdToNode(target)); if (newTarget == m_horizontalTarget) return; + if (!newTarget.isValid()) + return; + RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); m_horizontalTarget = newTarget; @@ -334,6 +386,43 @@ void QmlAnchorBindingProxy::setHorizontalTarget(const QVariant &target) emit horizontalTargetChanged(); } +QStringList QmlAnchorBindingProxy::possibleTargetItems() const +{ + QStringList stringList; + if (!m_qmlItemNode.isValid()) + return stringList; + + QList itemList; + + if (m_qmlItemNode.instanceParent().modelNode().isValid()) + itemList = toQmlItemNodeList(m_qmlItemNode.instanceParent().modelNode().allDirectSubModelNodes()); + itemList.removeOne(m_qmlItemNode); + //We currently have no instanceChildren(). + //So we double check here if the instanceParents are equal. + foreach (const QmlItemNode &node, itemList) + if (node.isValid() && (node.instanceParent().modelNode() != m_qmlItemNode.instanceParent().modelNode())) + itemList.removeAll(node); + + foreach (const QmlItemNode &itemNode, itemList) { + if (itemNode.isValid() && !itemNode.id().isEmpty()) { + stringList.append(itemNode.id()); + } + } + + QmlItemNode parent(m_qmlItemNode.instanceParent().toQmlItemNode()); + + if (parent.isValid()) { + stringList.append(QLatin1String("parent")); + } + + return stringList; +} + +int QmlAnchorBindingProxy::indexOfPossibleTargetItem(const QString &targetName) const +{ + return possibleTargetItems().indexOf(targetName); +} + void QmlAnchorBindingProxy::resetLayout() { RewriterTransaction transaction = m_qmlItemNode.modelNode().view()->beginRewriterTransaction(); @@ -512,6 +601,29 @@ void QmlAnchorBindingProxy::calcRightMargin() m_locked = false; } +QmlItemNode QmlAnchorBindingProxy::targetIdToNode(const QString &id) const +{ + QmlItemNode itemNode; + + if (m_qmlItemNode.isValid() && m_qmlItemNode.view()) { + + itemNode = m_qmlItemNode.view()->modelNodeForId(id); + + if (id == QLatin1String("parent")) + itemNode = m_qmlItemNode.instanceParent().modelNode(); + } + + return itemNode; +} + +QString QmlAnchorBindingProxy::idForNode(const QmlItemNode &qmlItemNode) const +{ + if (m_qmlItemNode.instanceParent().modelNode() == qmlItemNode) + return QLatin1String("parent"); + + return qmlItemNode.id(); +} + ModelNode QmlAnchorBindingProxy::modelNode() const { return m_qmlItemNode.modelNode(); @@ -633,6 +745,37 @@ bool QmlAnchorBindingProxy::verticalCentered() return m_qmlItemNode.isValid() && m_qmlItemNode.anchors().instanceHasAnchor(AnchorLine::VerticalCenter); } +QString QmlAnchorBindingProxy::topTarget() const +{ + qDebug() << "top node" << idForNode(m_topTarget); + return idForNode(m_topTarget); +} + +QString QmlAnchorBindingProxy::bottomTarget() const +{ + return idForNode(m_bottomTarget); +} + +QString QmlAnchorBindingProxy::leftTarget() const +{ + return idForNode(m_leftTarget); +} + +QString QmlAnchorBindingProxy::rightTarget() const +{ + return idForNode(m_rightTarget); +} + +QString QmlAnchorBindingProxy::verticalTarget() const +{ + return idForNode(m_verticalTarget); +} + +QString QmlAnchorBindingProxy::horizontalTarget() const +{ + return idForNode(m_horizontalTarget); +} + bool QmlAnchorBindingProxy::horizontalCentered() { return m_qmlItemNode.isValid() && m_qmlItemNode.anchors().instanceHasAnchor(AnchorLine::HorizontalCenter); diff --git a/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.h b/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.h index 619fcf0c5ca..f79e1b5b936 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.h +++ b/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.h @@ -52,13 +52,13 @@ class QmlAnchorBindingProxy : public QObject Q_PROPERTY(bool rightAnchored READ rightAnchored WRITE setRightAnchor NOTIFY rightAnchorChanged) Q_PROPERTY(bool hasParent READ hasParent NOTIFY parentChanged) - Q_PROPERTY(QVariant topTarget READ topTarget WRITE setTopTarget NOTIFY topTargetChanged) - Q_PROPERTY(QVariant bottomTarget READ bottomTarget WRITE setBottomTarget NOTIFY bottomTargetChanged) - Q_PROPERTY(QVariant leftTarget READ leftTarget WRITE setLeftTarget NOTIFY leftTargetChanged) - Q_PROPERTY(QVariant rightTarget READ rightTarget WRITE setRightTarget NOTIFY rightTargetChanged) + Q_PROPERTY(QString topTarget READ topTarget WRITE setTopTarget NOTIFY topTargetChanged) + Q_PROPERTY(QString bottomTarget READ bottomTarget WRITE setBottomTarget NOTIFY bottomTargetChanged) + Q_PROPERTY(QString leftTarget READ leftTarget WRITE setLeftTarget NOTIFY leftTargetChanged) + Q_PROPERTY(QString rightTarget READ rightTarget WRITE setRightTarget NOTIFY rightTargetChanged) - Q_PROPERTY(QVariant verticalTarget READ verticalTarget WRITE setVerticalTarget NOTIFY verticalTargetChanged) - Q_PROPERTY(QVariant horizontalTarget READ horizontalTarget WRITE setHorizontalTarget NOTIFY horizontalTargetChanged) + Q_PROPERTY(QString verticalTarget READ verticalTarget WRITE setVerticalTarget NOTIFY verticalTargetChanged) + Q_PROPERTY(QString horizontalTarget READ horizontalTarget WRITE setHorizontalTarget NOTIFY horizontalTargetChanged) Q_PROPERTY(bool hasAnchors READ hasAnchors NOTIFY anchorsChanged) Q_PROPERTY(bool isFilled READ isFilled NOTIFY anchorsChanged) @@ -67,6 +67,8 @@ class QmlAnchorBindingProxy : public QObject Q_PROPERTY(bool verticalCentered READ verticalCentered WRITE setVerticalCentered NOTIFY centeredVChanged) Q_PROPERTY(QVariant itemNode READ itemNode NOTIFY itemNodeChanged) + Q_PROPERTY(QStringList possibleTargetItems READ possibleTargetItems NOTIFY itemNodeChanged) + public: //only enable if node has parent @@ -92,23 +94,26 @@ public: bool horizontalCentered(); bool verticalCentered(); - QVariant itemNode() const { return QVariant::fromValue(m_qmlItemNode.modelNode()); } + QVariant itemNode() const { return QVariant::fromValue(m_qmlItemNode.modelNode().id()); } - QVariant topTarget() const { return QVariant::fromValue(m_topTarget.modelNode()); } - QVariant bottomTarget() const { return QVariant::fromValue(m_bottomTarget.modelNode()); } - QVariant leftTarget() const { return QVariant::fromValue(m_leftTarget.modelNode()); } - QVariant rightTarget() const { return QVariant::fromValue(m_rightTarget.modelNode()); } + QString topTarget() const; + QString bottomTarget() const; + QString leftTarget() const; + QString rightTarget() const; - QVariant verticalTarget() const { return QVariant::fromValue(m_verticalTarget.modelNode()); } - QVariant horizontalTarget() const { return QVariant::fromValue(m_horizontalTarget.modelNode()); } + QString verticalTarget() const; + QString horizontalTarget() const; public: - void setTopTarget(const QVariant &target); - void setBottomTarget(const QVariant &target); - void setLeftTarget(const QVariant &target); - void setRightTarget(const QVariant &target); - void setVerticalTarget(const QVariant &target); - void setHorizontalTarget(const QVariant &target); + void setTopTarget(const QString &target); + void setBottomTarget(const QString &target); + void setLeftTarget(const QString &target); + void setRightTarget(const QString &target); + void setVerticalTarget(const QString &target); + void setHorizontalTarget(const QString &target); + + QStringList possibleTargetItems() const; + Q_INVOKABLE int indexOfPossibleTargetItem(const QString &targetName) const; public slots: @@ -142,12 +147,16 @@ signals: void verticalTargetChanged(); void horizontalTargetChanged(); + void invalidated(); + private: void setDefaultAnchorTarget(const ModelNode &modelNode); void calcTopMargin(); void calcBottomMargin(); void calcLeftMargin(); void calcRightMargin(); + QmlItemNode targetIdToNode(const QString &id) const; + QString idForNode(const QmlItemNode &qmlItemNode) const; ModelNode modelNode() const; @@ -168,6 +177,7 @@ private: QmlItemNode m_horizontalTarget; bool m_locked; + bool m_ignoreQml; }; } // namespace Internal From e643f3bf7400661bebb170e286da6976c8893667 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 16:07:08 +0200 Subject: [PATCH 031/104] Debugger: Avoid Gui dependency of dumper autotest Change-Id: Ie51554216ad7b132839c2779c2f647ad6222db5f Reviewed-by: Christian Stenger --- src/plugins/debugger/watchdata.cpp | 28 ++++++++++++++++++++++++++-- tests/auto/debugger/dumpers.pro | 1 + tests/auto/debugger/tst_dumpers.cpp | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp index 9cbe253d7e4..8cad1a3c13c 100644 --- a/src/plugins/debugger/watchdata.cpp +++ b/src/plugins/debugger/watchdata.cpp @@ -34,7 +34,6 @@ #include "watchutils.h" #include "debuggerprotocol.h" -#include // Qt::escape() in Qt 4 #include //////////////////////////////////////////////////////////////////// @@ -338,11 +337,36 @@ QString WatchData::toString() const return res + QLatin1Char('}'); } +static QString htmlEscape(const QString &plain) +{ +#if QT_VERSION >= 0x050000 + return Qt::escape(plain); +#else + // Copied from Qt to avoid GUI dependency + // (Qt::escape has been moved in Qt 5) + QString rich; + rich.reserve(int(plain.length() * qreal(1.1))); + for (int i = 0; i < plain.length(); ++i) { + if (plain.at(i) == QLatin1Char('<')) + rich += QLatin1String("<"); + else if (plain.at(i) == QLatin1Char('>')) + rich += QLatin1String(">"); + else if (plain.at(i) == QLatin1Char('&')) + rich += QLatin1String("&"); + else if (plain.at(i) == QLatin1Char('"')) + rich += QLatin1String("""); + else + rich += plain.at(i); + } + return rich; +#endif +} + // Format a tooltip fow with aligned colon. static void formatToolTipRow(QTextStream &str, const QString &category, const QString &value) { - QString val = Qt::escape(value); + QString val = htmlEscape(value); val.replace(QLatin1Char('\n'), QLatin1String("
")); str << "" << category << " : " << val << ""; diff --git a/tests/auto/debugger/dumpers.pro b/tests/auto/debugger/dumpers.pro index 0cba83242fd..331ddc10243 100644 --- a/tests/auto/debugger/dumpers.pro +++ b/tests/auto/debugger/dumpers.pro @@ -1,6 +1,7 @@ QTC_LIB_DEPENDS += cplusplus utils QT += network +QT -= gui include(../qttest.pri) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 4760aba1d97..959ef948e4f 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4920,7 +4920,7 @@ void tst_Dumpers::dumper_data() int main(int argc, char *argv[]) { - QApplication app(argc, argv); + QCoreApplication app(argc, argv); tst_Dumpers test; return QTest::qExec(&test, argc, argv); } From 3e789de36d93baa9dea8a9241e1f04776b0a3cce Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 17:13:53 +0200 Subject: [PATCH 032/104] Debugger: Fix Qt 5 QHostAddress autotest Dumper was working, but the default constructor doesn't do the parsing already nowadays. Change-Id: I098b0a03ad7d994b5746f3a4a6c39d29133509b0 Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 959ef948e4f..f0b52463bfa 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -1436,7 +1436,9 @@ void tst_Dumpers::dumper_data() QTest::newRow("QHostAddress1") << Data("#include \n", "QHostAddress ha1(129u * 256u * 256u * 256u + 130u);\n" - "QHostAddress ha2(\"127.0.0.1\");\n") + "QHostAddress ha2;\n" + "ha2.setAddress(\"127.0.0.1\");\n" + "unused(&ha1, &ha2);\n") % CoreProfile() % Profile("QT += network\n") % Check("ha1", "129.0.0.130", "@QHostAddress") @@ -1461,7 +1463,8 @@ void tst_Dumpers::dumper_data() "addr.c[13] = 0;\n" "addr.c[14] = 0;\n" "addr.c[15] = 0;\n" - "QHostAddress ha1(addr);\n") + "QHostAddress ha1(addr);\n" + "unused(&ha1);\n") % CoreProfile() % Profile("QT += network\n") % Check("addr", "1:203:506:0:809:a0b:0:0", "@QIPv6Address"); From 04ea1898b55b8c95c924f64a827cac5a117303b2 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 17 Oct 2013 17:40:56 +0200 Subject: [PATCH 033/104] Android: Search for a suitable emulator before starting a new avd Note, that we don't know the names of the started avds, so we look for a avd that has the same abi and apiLevel. Task-number: QTCREATORBUG-10411 Change-Id: I5f6ff3ee0dddcf2bb8fca981ccedf437e32da677 Reviewed-by: BogDan Vatra --- src/plugins/android/androidconfigurations.cpp | 17 ++++++++++++++++- src/plugins/android/androidconfigurations.h | 1 + src/plugins/android/androiddeployqtstep.cpp | 3 ++- src/plugins/android/androiddeploystep.cpp | 3 ++- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 5524043b620..7538282690e 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -621,7 +621,7 @@ QVector AndroidConfigurations::androidVirtualDevices() const QString AndroidConfigurations::startAVD(const QString &name, int apiLevel, QString cpuAbi) const { - if (startAVDAsync(name)) + if (findAvd(apiLevel, cpuAbi) || startAVDAsync(name)) return waitForAvd(apiLevel, cpuAbi); return QString(); } @@ -643,6 +643,21 @@ bool AndroidConfigurations::startAVDAsync(const QString &avdName) const return true; } +bool AndroidConfigurations::findAvd(int apiLevel, const QString &cpuAbi) const +{ + QVector devices = connectedDevices(); + foreach (AndroidDeviceInfo device, devices) { + if (!device.serialNumber.startsWith(QLatin1String("emulator"))) + continue; + if (!device.cpuAbi.contains(cpuAbi)) + continue; + if (device.sdk != apiLevel) + continue; + return true; + } + return false; +} + QString AndroidConfigurations::waitForAvd(int apiLevel, const QString &cpuAbi) const { // we cannot use adb -e wait-for-device, since that doesn't work if a emulator is already running diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 64d7e080684..38af17330fe 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -106,6 +106,7 @@ public: QVector androidVirtualDevices() const; QString startAVD(const QString &name, int apiLevel, QString cpuAbi) const; bool startAVDAsync(const QString &avdName) const; + bool findAvd(int apiLevel, const QString &cpuAbi) const; QString waitForAvd(int apiLevel, const QString &cpuAbi) const; QString bestNdkPlatformMatch(const QString &targetAPI) const; diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 349af217347..405f317ef50 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -287,7 +287,8 @@ bool AndroidDeployQtStep::init() if (!result) return false; - AndroidConfigurations::instance().startAVDAsync(m_avdName); + if (!AndroidConfigurations::instance().findAvd(m_deviceAPILevel, m_targetArch)) + AndroidConfigurations::instance().startAVDAsync(m_avdName); return true; } diff --git a/src/plugins/android/androiddeploystep.cpp b/src/plugins/android/androiddeploystep.cpp index 3fadfce5fe8..d8264898d87 100644 --- a/src/plugins/android/androiddeploystep.cpp +++ b/src/plugins/android/androiddeploystep.cpp @@ -389,7 +389,8 @@ void AndroidDeployStep::deployFiles(QProcess *process, const QList & bool AndroidDeployStep::deployPackage() { if (!m_avdName.isEmpty()) { - if (!AndroidConfigurations::instance().startAVDAsync(m_avdName)) + if (!AndroidConfigurations::instance().findAvd(m_deviceAPILevel, m_targetArch) + && !AndroidConfigurations::instance().startAVDAsync(m_avdName)) return false; m_deviceSerialNumber = AndroidConfigurations::instance().waitForAvd(m_deviceAPILevel, m_targetArch); } From eb944974ac97e709f08a39e9694d2934727568c4 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 22 Oct 2013 17:23:34 +0200 Subject: [PATCH 034/104] Debugger: Have 64bit debuggers handle 32bit targets, too Prefer 32bit debuggers if possible though. In the setup Robert used there is only a 64bit CDB and thus the debugger of his 64bit Qt was unset. Add unit tests to make sure changes will not effect currently working setups. Task-number: QTCREATORBUG-10463 Change-Id: I4afae314bc75d4465dbc8de5b2a4267a521a4ea1 Reviewed-by: hjk Reviewed-by: Friedemann Kleint --- .../debugger/debuggerkitinformation.cpp | 115 +++++++++++++++++- src/plugins/debugger/debuggerplugin.h | 3 + 2 files changed, 114 insertions(+), 4 deletions(-) diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp index fc01bf2e6a7..667e61b07d0 100644 --- a/src/plugins/debugger/debuggerkitinformation.cpp +++ b/src/plugins/debugger/debuggerkitinformation.cpp @@ -199,17 +199,18 @@ static DebuggerItem::MatchLevel matchSingle(const Abi &debuggerAbi, const Abi &t && debuggerAbi.binaryFormat() != targetAbi.binaryFormat()) return DebuggerItem::DoesNotMatch; - if (debuggerAbi.wordWidth() != 0 && debuggerAbi.wordWidth() != targetAbi.wordWidth()) - return DebuggerItem::DoesNotMatch; - if (debuggerAbi.os() == Abi::WindowsOS) { if (debuggerAbi.osFlavor() == Abi::WindowsMSysFlavor && targetAbi.osFlavor() != Abi::WindowsMSysFlavor) return DebuggerItem::DoesNotMatch; if (debuggerAbi.osFlavor() != Abi::WindowsMSysFlavor && targetAbi.osFlavor() == Abi::WindowsMSysFlavor) return DebuggerItem::DoesNotMatch; - return DebuggerItem::MatchesSomewhat; } + if (debuggerAbi.wordWidth() == 64 and targetAbi.wordWidth() == 32) + return DebuggerItem::MatchesSomewhat; + if (debuggerAbi.wordWidth() != 0 && debuggerAbi.wordWidth() != targetAbi.wordWidth()) + return DebuggerItem::DoesNotMatch; + return DebuggerItem::MatchesPerfectly; } @@ -230,3 +231,109 @@ bool Debugger::DebuggerItem::isValid() const } } // namespace Debugger; + +#ifdef WITH_TESTS + +# include +# include "debuggerplugin.h" + +void Debugger::DebuggerPlugin::testDebuggerMatching_data() +{ + QTest::addColumn("debugger"); + QTest::addColumn("target"); + QTest::addColumn("result"); + + QTest::newRow("Invalid data") + << QStringList() + << QString() + << int(DebuggerItem::DoesNotMatch); + QTest::newRow("Invalid debugger") + << QStringList() + << QString::fromLatin1("x86-linux-generic-elf-32bit") + << int(DebuggerItem::DoesNotMatch); + QTest::newRow("Invalid target") + << (QStringList() << QLatin1String("x86-linux-generic-elf-32bit")) + << QString() + << int(DebuggerItem::DoesNotMatch); + + QTest::newRow("Fuzzy match 1") + << (QStringList() << QLatin1String("unknown-unknown-unknown-unknown-0bit")) + << QString::fromLatin1("x86-linux-generic-elf-32bit") + << int(DebuggerItem::MatchesPerfectly); // Is this the expected behavior? + QTest::newRow("Fuzzy match 2") + << (QStringList() << QLatin1String("unknown-unknown-unknown-unknown-0bit")) + << QString::fromLatin1("arm-windows-msys-pe-64bit") + << int(DebuggerItem::MatchesPerfectly); // Is this the expected behavior? + + QTest::newRow("Architecture mismatch") + << (QStringList() << QLatin1String("x86-linux-generic-elf-32bit")) + << QString::fromLatin1("arm-linux-generic-elf-32bit") + << int(DebuggerItem::DoesNotMatch); + QTest::newRow("OS mismatch") + << (QStringList() << QLatin1String("x86-linux-generic-elf-32bit")) + << QString::fromLatin1("x86-macosx-generic-elf-32bit") + << int(DebuggerItem::DoesNotMatch); + QTest::newRow("Format mismatch") + << (QStringList() << QLatin1String("x86-linux-generic-elf-32bit")) + << QString::fromLatin1("x86-linux-generic-pe-32bit") + << int(DebuggerItem::DoesNotMatch); + + QTest::newRow("Linux perfect match") + << (QStringList() << QLatin1String("x86-linux-generic-elf-32bit")) + << QString::fromLatin1("x86-linux-generic-elf-32bit") + << int(DebuggerItem::MatchesPerfectly); + QTest::newRow("Linux match") + << (QStringList() << QLatin1String("x86-linux-generic-elf-64bit")) + << QString::fromLatin1("x86-linux-generic-elf-32bit") + << int(DebuggerItem::MatchesSomewhat); + + QTest::newRow("Windows perfect match 1") + << (QStringList() << QLatin1String("x86-windows-msvc2013-pe-64bit")) + << QString::fromLatin1("x86-windows-msvc2013-pe-64bit") + << int(DebuggerItem::MatchesPerfectly); + QTest::newRow("Windows perfect match 2") + << (QStringList() << QLatin1String("x86-windows-msvc2013-pe-64bit")) + << QString::fromLatin1("x86-windows-msvc2012-pe-64bit") + << int(DebuggerItem::MatchesPerfectly); + QTest::newRow("Windows match 1") + << (QStringList() << QLatin1String("x86-windows-msvc2013-pe-64bit")) + << QString::fromLatin1("x86-windows-msvc2013-pe-32bit") + << int(DebuggerItem::MatchesSomewhat); + QTest::newRow("Windows match 2") + << (QStringList() << QLatin1String("x86-windows-msvc2013-pe-64bit")) + << QString::fromLatin1("x86-windows-msvc2012-pe-32bit") + << int(DebuggerItem::MatchesSomewhat); + QTest::newRow("Windows mismatch on word size") + << (QStringList() << QLatin1String("x86-windows-msvc2013-pe-32bit")) + << QString::fromLatin1("x86-windows-msvc2013-pe-64bit") + << int(DebuggerItem::DoesNotMatch); + QTest::newRow("Windows mismatch on osflavor 1") + << (QStringList() << QLatin1String("x86-windows-msvc2013-pe-32bit")) + << QString::fromLatin1("x86-windows-msys-pe-64bit") + << int(DebuggerItem::DoesNotMatch); + QTest::newRow("Windows mismatch on osflavor 2") + << (QStringList() << QLatin1String("x86-windows-msys-pe-32bit")) + << QString::fromLatin1("x86-windows-msvc2010-pe-64bit") + << int(DebuggerItem::DoesNotMatch); +} + +void Debugger::DebuggerPlugin::testDebuggerMatching() +{ + QFETCH(QStringList, debugger); + QFETCH(QString, target); + QFETCH(int, result); + + DebuggerItem::MatchLevel expectedLevel = static_cast(result); + + QList debuggerAbis; + foreach (const QString &abi, debugger) + debuggerAbis << Abi(abi); + + DebuggerItem item; + item.setAbis(debuggerAbis); + + DebuggerItem::MatchLevel level = item.matchTarget(Abi(target)); + + QCOMPARE(expectedLevel, level); +} +#endif diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h index c0f6429742f..32790efd4f0 100644 --- a/src/plugins/debugger/debuggerplugin.h +++ b/src/plugins/debugger/debuggerplugin.h @@ -76,6 +76,9 @@ private: #ifdef WITH_TESTS private slots: + void testDebuggerMatching_data(); + void testDebuggerMatching(); + void testBenchmark(); // void testStateMachine(); #endif From 363c9c87b2acf3e1394574299b135561696d6779 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 18:54:53 +0200 Subject: [PATCH 035/104] Debugger: Work around strange GDB behavior with overload resolution Contrary to the documention, using the default (i.e. 'on') it seems to _require_ xplicit casting of function pointers: (gdb) p &Myns::QMetaType::typeName -> $1 = (const char *(*)(int)) 0xb7cf73b0 (gdb) p Myns::QMetaType::typeName(1024) -> 31^error,msg="Couldn't find method Myns::QMetaType::typeName" But we can work around on the dumper side. So let's use the default from now on. Change-Id: I3e2a87df797c6abab6183b4c121b843e5035cd47 Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 1546ee5ef25..2a0067deb67 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1850,7 +1850,8 @@ def qdump__QVariant(d, value): # User types. d_ptr = value["d"] typeCode = int(d_ptr["type"]) - type = str(d.parseAndEvaluate("QMetaType::typeName(%d)" % typeCode)) + exp = "((const char *(*)(int))%sQMetaType::typeName)(%d)" % (d.ns, typeCode) + type = str(d.parseAndEvaluate(exp)) type = type[type.find('"') + 1 : type.rfind('"')] type = type.replace("Q", d.ns + "Q") # HACK! type = type.replace("uint", "unsigned int") # HACK! From 4497d136ceb23d7dc1727812ac41fd541adf3648 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 18:58:19 +0200 Subject: [PATCH 036/104] Debugger: Leave GDB default setting for 'set overload resolution' ... and work around the pecularities on the dumper side instead. Change-Id: I0c2703aae13dabc0f3f45efb46bd556c8741a15f Reviewed-by: hjk --- src/plugins/debugger/gdb/gdbengine.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index ea2b2381c49..7e8febf779c 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4836,8 +4836,15 @@ void GdbEngine::startGdb(const QStringList &args) // template T foo() { return T(0); } // int main() { return foo(); } // (gdb) call 'int foo'() - // /build/buildd/gdb-6.8/gdb/valops.c:2069: internal-error: - postCommand("set overload-resolution off"); + // /build/buildd/gdb-6.8/gdb/valops.c:2069: internal-error + // This seems to be fixed, however, with 'on' it seems to _require_ + // explicit casting of function pointers: + // GNU gdb (GDB) 7.5.91.20130417-cvs-ubuntu + // (gdb) p &Myns::QMetaType::typeName -> $1 = (const char *(*)(int)) 0xb7cf73b0 + // (gdb) p Myns::QMetaType::typeName(1024) -> 31^error,msg="Couldn't find method Myns::QMetaType::typeName" + // But we can work around on the dumper side. So let's use the default (i.e. 'on') + //postCommand("set overload-resolution off"); + //postCommand(_("set demangle-style none")); // From the docs: // Stop means reenter debugger if this signal happens (implies print). From 6851f019e4ed04bae3c0d4f29c251ec401165758 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 18:59:51 +0200 Subject: [PATCH 037/104] Debugger: Some autotest cosmetics Change-Id: Ib174e84f97511b28cd7649c219a62fe606186bf2 Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index f0b52463bfa..9a79f4404a2 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -3471,26 +3471,27 @@ void tst_Dumpers::dumper_data() "#include \n" "Q_DECLARE_METATYPE(QHostAddress)\n", "QVariant var;\n" - "QHostAddress ha(\"127.0.0.1\");\n" + "QHostAddress ha;\n" + "ha.setAddress(\"127.0.0.1\");\n" "var.setValue(ha);\n" "QHostAddress ha1 = var.value();\n" "unused(&ha1);\n") % CoreProfile() % Profile("QT += network\n") % Check("ha", "\"127.0.0.1\"", "@QHostAddress") - % Check("ha.a", "0", "@quint32") + % Check("ha.a", "2130706433", "@quint32") % Check("ha.a6", "0:0:0:0:0:0:0:0", "@Q_IPV6ADDR") % Check("ha.ipString", "\"127.0.0.1\"", "@QString") - % Check("ha.isParsed", "false", "bool") - % Check("ha.protocol", "@QAbstractSocket::UnknownNetworkLayerProtocol (-1)", + % Check("ha.isParsed", "true", "bool") + % Check("ha.protocol", "@QAbstractSocket::IPv4Protocol (0)", "@QAbstractSocket::NetworkLayerProtocol") % Check("ha.scopeId", "\"\"", "@QString") % Check("ha1", "\"127.0.0.1\"", "@QHostAddress") - % Check("ha1.a", "0", "@quint32") + % Check("ha1.a", "2130706433", "@quint32") % Check("ha1.a6", "0:0:0:0:0:0:0:0", "@Q_IPV6ADDR") % Check("ha1.ipString", "\"127.0.0.1\"", "@QString") - % Check("ha1.isParsed", "false", "bool") - % Check("ha1.protocol", "@QAbstractSocket::UnknownNetworkLayerProtocol (-1)", + % Check("ha1.isParsed", "true", "bool") + % Check("ha1.protocol", "@QAbstractSocket::IPv4Protocol (0)", "@QAbstractSocket::NetworkLayerProtocol") % Check("ha1.scopeId", "\"\"", "@QString") % Check("var", "", "@QVariant (@QHostAddress)") @@ -3504,14 +3505,16 @@ void tst_Dumpers::dumper_data() "typedef QMap MyType;\n" "Q_DECLARE_METATYPE(QList)\n" "Q_DECLARE_METATYPE(QStringList)\n" - "#define COMMA ,\n" - "Q_DECLARE_METATYPE(QMap)\n", + "Q_DECLARE_METATYPE(MyType)\n", "MyType my;\n" "my[1] = (QStringList() << \"Hello\");\n" "my[3] = (QStringList() << \"World\");\n" "QVariant var;\n" "var.setValue(my);\n" - "breakHere();\n") + "int t = QMetaType::type(\"MyType\");\n" + "const char *s = QMetaType::typeName(t);\n" + "breakHere();\n" + "unused(&var, &t, &s);\n") % CoreProfile() % Check("my", "<2 items>", "MyType") % Check("my.0", "[0]", "", "@QMapNode") @@ -3522,8 +3525,8 @@ void tst_Dumpers::dumper_data() % Check("my.1.key", "3", "unsigned int") % Check("my.1.value", "<1 items>", "@QStringList") % Check("my.1.value.0", "[0]", "\"World\"", "@QString") - % CheckType("var", "@QVariant (@QMap)") - % Check("var.data", "<2 items>", "@QMap") + % CheckType("var", "@QVariant (MyType)") + % Check("var.data", "<2 items>", "MyType") % Check("var.data.0", "[0]", "", "@QMapNode") % Check("var.data.0.key", "1", "unsigned int") % Check("var.data.0.value", "<1 items>", "@QStringList") From a6c060cc65731239ab4c07d3bffce9c53571b424 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 13:21:56 +0200 Subject: [PATCH 038/104] Debugger: Try to extract Qt version from QtCore This won't work without inferior calls (e.g. when loading core files), so the old code is needed as fallback. Change-Id: I1c9efc06374b00bc391bf55528546ccefc60349b Reviewed-by: hjk --- share/qtcreator/debugger/gdbbridge.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 1fc5021e059..be26cfff95c 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -794,6 +794,11 @@ registerCommand("bb", bb) registerCommand("p1", p1) registerCommand("p2", p2) +def extractQtVersion(): + version = str(gdb.parse_and_eval("qVersion()")) + (major, minor, patch) = version[version.find('"')+1:version.rfind('"')].split('.') + return 0x10000 * int(major) + 0x100 * int(minor) + int(patch) + ####################################################################### # @@ -826,6 +831,7 @@ class Dumper(DumperBase): self.useDynamicType = True self.expandedINames = {} self.childEventAddress = None + self.cachedQtVersion = None watchers = "" resultVarName = "" @@ -1293,16 +1299,17 @@ class Dumper(DumperBase): return xrange(min(toInteger(self.currentMaxNumChild), toInteger(self.currentNumChild))) def qtVersion(self): - global qqVersion - if not qqVersion is None: - return qqVersion - try: - # This will fail on Qt 5 - gdb.execute("ptype QString::shared_empty", to_string=True) - qqVersion = 0x040800 - except: - qqVersion = 0x050000 - return qqVersion + if self.cachedQtVersion is None: + try: + self.cachedQtVersion = extractQtVersion() + except: + try: + # This will fail on Qt 5 + gdb.execute("ptype QString::shared_empty", to_string=True) + self.cachedQtVersion = 0x040800 + except: + self.cachedQtVersion = 0x050000 + return self.cachedQtVersion # Convenience function. def putItemCount(self, count, maximum = 1000000000): From 4c35310cec2d9084329c3bccd0d10873585192f4 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 13:51:35 +0200 Subject: [PATCH 039/104] Debugger: Adjust QDateTime dumper after Qt 5.2 changes Task-number: QTCREATORBUG-10232 Change-Id: I10551a258edb9456c4a9f93a3bfb374a8f07fc7d Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 5 +-- share/qtcreator/debugger/gdbbridge.py | 3 ++ share/qtcreator/debugger/qttypes.py | 43 +++++++++++++++-------- src/plugins/debugger/debuggerprotocol.cpp | 7 ++++ src/plugins/debugger/debuggerprotocol.h | 3 +- tests/auto/debugger/tst_dumpers.cpp | 9 +++-- 6 files changed, 49 insertions(+), 21 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index a1b9c8ddbbe..9de1ed38e13 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -514,8 +514,9 @@ Hex2EncodedUInt8, \ Hex2EncodedFloat4, \ Hex2EncodedFloat8, \ IPv6AddressAndHexScopeId, \ -Hex2EncodedUtf8WithoutQuotes \ - = range(29) +Hex2EncodedUtf8WithoutQuotes, \ +MillisecondsSinceEpoch \ + = range(30) # Display modes. Keep that synchronized with DebuggerDisplay in watchutils.h StopDisplay, \ diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index be26cfff95c..8a0bc863659 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -1242,6 +1242,9 @@ class Dumper(DumperBase): #return long(gdb.Value(addr).cast(self.voidPtrType().pointer()).dereference()) return struct.unpack("P", self.readRawMemory(addr, self.ptrSize()))[0] + def extractInt64(self, addr): + return struct.unpack("q", self.readRawMemory(addr, 8))[0] + def extractInt(self, addr): #return long(gdb.Value(addr).cast(self.intPtrType()).dereference()) return struct.unpack("i", self.readRawMemory(addr, 4))[0] diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 2a0067deb67..d743f5e6888 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -221,24 +221,37 @@ def qdump__QTime(d, value): d.putNumChild(0) -# This relies on the Qt4/Qt5 internal structure layout: -# {sharedref(4), date(8), time(4+x)} def qdump__QDateTime(d, value): + qtVersion = d.qtVersion() + isValid = False + # This relies on the Qt4/Qt5 internal structure layout: + # {sharedref(4), ... base = d.dereferenceValue(value) - # QDateTimePrivate: - # - QAtomicInt ref; (padded on 64 bit) - # - [QDate date;] - # - - uint jd in Qt 4, qint64 in Qt 5; padded on 64 bit - # - [QTime time;] - # - - uint mds; - # - Spec spec; - dateSize = 4 if d.qtVersion() < 0x050000 and d.is32bit() else 8 dateBase = base + d.ptrSize() # Only QAtomicInt, but will be padded. - timeBase = dateBase + dateSize - mds = d.extractInt(timeBase) - if mds >= 0: - jd = d.extractInt(dateBase) - d.putValue("%s/%s" % (jd, mds), JulianDateAndMillisecondsSinceMidnight) + if qtVersion >= 0x050200: + ms = d.extractInt64(dateBase) + offset = d.extractInt(dateBase + 12) + isValid = ms > 0 + if isValid: + d.putValue("%s" % (ms - offset * 1000), MillisecondsSinceEpoch) + else: + # This relies on the Qt4/Qt5 internal structure layout: + # {sharedref(4), date(8), time(4+x)} + # QDateTimePrivate: + # - QAtomicInt ref; (padded on 64 bit) + # - [QDate date;] + # - - uint jd in Qt 4, qint64 in Qt 5.0 and Qt 5.2; padded on 64 bit + # - [QTime time;] + # - - uint mds; + # - Spec spec; + dateSize = 4 if qtVersion < 0x050000 and d.is32bit() else 8 + timeBase = dateBase + dateSize + mds = d.extractInt(timeBase) + isValid = mds > 0 + if isValid: + jd = d.extractInt(dateBase) + d.putValue("%s/%s" % (jd, mds), JulianDateAndMillisecondsSinceMidnight) + if isValid: d.putNumChild(1) if d.isExpanded(): # FIXME: This improperly uses complex return values. diff --git a/src/plugins/debugger/debuggerprotocol.cpp b/src/plugins/debugger/debuggerprotocol.cpp index 13335773326..1e50d13c3ac 100644 --- a/src/plugins/debugger/debuggerprotocol.cpp +++ b/src/plugins/debugger/debuggerprotocol.cpp @@ -628,6 +628,13 @@ QString decodeData(const QByteArray &ba, int encoding) const QByteArray decodedBa = QByteArray::fromHex(ba); return QString::fromUtf8(decodedBa); } + case MillisecondsSinceEpoch: { + const qint64 ms = ba.toLongLong(); + QDateTime d; + d.setTimeSpec(Qt::UTC); + d.setMSecsSinceEpoch(ms); + return d.toString(Qt::TextDate); + } } qDebug() << "ENCODING ERROR: " << encoding; return QCoreApplication::translate("Debugger", ""); diff --git a/src/plugins/debugger/debuggerprotocol.h b/src/plugins/debugger/debuggerprotocol.h index 6bce7e1aec6..a71bb6f1331 100644 --- a/src/plugins/debugger/debuggerprotocol.h +++ b/src/plugins/debugger/debuggerprotocol.h @@ -204,7 +204,8 @@ enum DebuggerEncoding Hex2EncodedFloat4 = 25, Hex2EncodedFloat8 = 26, IPv6AddressAndHexScopeId = 27, - Hex2EncodedUtf8WithoutQuotes = 28 + Hex2EncodedUtf8WithoutQuotes = 28, + MillisecondsSinceEpoch = 29 }; // Keep in sync with dumper.py, symbolgroupvalue.cpp of CDB diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 9a79f4404a2..d582078aa22 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -1226,12 +1226,15 @@ void tst_Dumpers::dumper_data() "QDateTime date(QDate(1980, 1, 1), QTime(13, 15, 32), Qt::UTC);\n" "unused(&date);\n") % CoreProfile() - % Check("date", "Tue Jan 1 13:15:32 1980", "@QDateTime") + % Check("date", Value4("Tue Jan 1 13:15:32 1980"), "@QDateTime") + % Check("date", Value5("Tue Jan 1 13:15:32 1980 GMT"), "@QDateTime") % Check("date.(ISO)", "\"1980-01-01T13:15:32Z\"", "@QString") % CheckType("date.(Locale)", "@QString") % CheckType("date.(SystemLocale)", "@QString") - % Check("date.toString", "\"Tue Jan 1 13:15:32 1980\"", "@QString") - % Check("date.toUTC", "Tue Jan 1 13:15:32 1980", "@QDateTime"); + % Check("date.toString", Value4("\"Tue Jan 1 13:15:32 1980\""), "@QString") + % Check("date.toString", Value5("\"Tue Jan 1 13:15:32 1980 GMT\""), "@QString") + % Check("date.toUTC", Value4("Tue Jan 1 13:15:32 1980"), "@QDateTime") + % Check("date.toUTC", Value5("Tue Jan 1 13:15:32 1980 GMT"), "@QDateTime"); #ifdef Q_OS_WIN QByteArray tempDir = "\"C:/Program Files\""; From 9f66b6384a9c42ca2ff670a82311be3a1b9d1995 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Oct 2013 19:09:41 +0200 Subject: [PATCH 040/104] Debugger: Fix QVariant{Map,Hash} dumper with Qt 5 Change-Id: I5be3b960a7a3091dc77555883d93e3d89b17381d Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index d743f5e6888..a219d9682ac 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1840,7 +1840,9 @@ def qdumpHelper__QVariant(d, value): innerType = d.lookupType(inner) sizePD = 8 # sizeof(QVariant::Private::Data) - if innerType.sizeof > sizePD: + isSpecial = d.qtVersion() >= 0x050000 \ + and (innert == "QVariantMap" or innert == "QVariantHash") + if innerType.sizeof > sizePD or isSpecial: sizePS = 2 * d.ptrSize() # sizeof(QVariant::PrivateShared) val = (data.cast(d.charPtrType()) + sizePS) \ .cast(innerType.pointer()).dereference() From 36e6a705052c005529eb8558736e1c9df6865355 Mon Sep 17 00:00:00 2001 From: El Mehdi Fekari Date: Fri, 18 Oct 2013 19:27:31 +0200 Subject: [PATCH 041/104] Debugger: Fix the way to register/add new debuggers DebuggerItemManager::registerDebugger() should return the id of the added debugger in order to use it when setting a kit's debugger (addDebugger() creates and adds a copy of the passed debugger object with a unique id). The DebuggerKitInformation::setDebugger() method should set only already existing and registered debuggers. Task-number: QTCREATORBUG-10436 Change-Id: Icdcd1ed92aafe9eda44abf831aa9983dd6801980 Reviewed-by: hjk Reviewed-by: Daniel Teske --- src/plugins/android/androidconfigurations.cpp | 3 ++- .../debugger/debuggerkitconfigwidget.cpp | 24 +++++++++---------- src/plugins/debugger/debuggerkitinformation.h | 6 ++--- src/plugins/ios/iosconfigurations.cpp | 3 ++- src/plugins/qnx/blackberryconfiguration.cpp | 4 ++-- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 7538282690e..4b6df3fd5e1 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -867,7 +867,8 @@ void AndroidConfigurations::updateAutomaticKitList() debugger.setDisplayName(tr("Android Debugger for %1").arg(tc->displayName())); debugger.setAutoDetected(true); debugger.setAbi(tc->targetAbi()); - Debugger::DebuggerKitInformation::setDebugger(newKit, debugger); + QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger); + Debugger::DebuggerKitInformation::setDebugger(newKit, id); AndroidGdbServerKitInformation::setGdbSever(newKit, tc->suggestedGdbServer()); newKit->makeSticky(); diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index ece61bb99e5..9d9f0b23a9a 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -345,16 +345,11 @@ QString DebuggerKitInformation::displayString(const Kit *k) return binary.isEmpty() ? tr("%1 ").arg(name) : tr("%1 using \"%2\"").arg(name, binary); } -void DebuggerKitInformation::setDebugger(Kit *k, const DebuggerItem &item) +void DebuggerKitInformation::setDebugger(Kit *k, const QVariant &id) { // Only register reasonably complete debuggers. - QTC_ASSERT(!item.id().isValid(), return); - QTC_ASSERT(!item.command().isEmpty(), return); - QTC_ASSERT(!item.displayName().isEmpty(), return); - QTC_ASSERT(item.engineType() != NoEngineType, return); - // Only set registered/existing debuggers - QTC_ASSERT(DebuggerItemManager::findByCommand(item.command()), return); - k->setValue(DebuggerKitInformation::id(), item.id()); + QTC_ASSERT(DebuggerItemManager::findById(id), return); + k->setValue(DebuggerKitInformation::id(), id); } Core::Id DebuggerKitInformation::id() @@ -651,11 +646,12 @@ void DebuggerItemManager::saveDebuggers() // Do not save default debuggers as they are set by the SDK. } -void DebuggerItemManager::registerDebugger(const DebuggerItem &item) +QVariant DebuggerItemManager::registerDebugger(const DebuggerItem &item) { if (findByCommand(item.command())) - return; - addDebugger(item); + return item.id(); + + return addDebugger(item); } void DebuggerItemManager::deregisterDebugger(const DebuggerItem &item) @@ -664,13 +660,17 @@ void DebuggerItemManager::deregisterDebugger(const DebuggerItem &item) removeDebugger(item.id()); } -void DebuggerItemManager::addDebugger(const DebuggerItem& item0) +QVariant DebuggerItemManager::addDebugger(const DebuggerItem& item0) { DebuggerItem item = item0; + QTC_ASSERT(!item.command().isEmpty(), return QVariant()); + QTC_ASSERT(!item.displayName().isEmpty(), return QVariant()); + QTC_ASSERT(item.engineType() != NoEngineType, return QVariant()); if (item.id().isNull()) item.setId(QUuid::createUuid().toString()); m_debuggers.append(item); m_model->addDebugger(item); + return item.id(); } void DebuggerItemManager::removeDebugger(const QVariant &id) diff --git a/src/plugins/debugger/debuggerkitinformation.h b/src/plugins/debugger/debuggerkitinformation.h index de965ca9858..dfdf6350a4e 100644 --- a/src/plugins/debugger/debuggerkitinformation.h +++ b/src/plugins/debugger/debuggerkitinformation.h @@ -110,7 +110,7 @@ public: static QList debuggers(); static Debugger::Internal::DebuggerItemModel *model(); - static void registerDebugger(const DebuggerItem &item); + static QVariant registerDebugger(const DebuggerItem &item); static void deregisterDebugger(const DebuggerItem &item); static const DebuggerItem *findByCommand(const Utils::FileName &command); @@ -121,7 +121,7 @@ public: static void setItemData(const QVariant &id, const QString& displayName, const Utils::FileName &fileName); static void removeDebugger(const QVariant &id); - static void addDebugger(const DebuggerItem &item); + static QVariant addDebugger(const DebuggerItem &item); public slots: void saveDebuggers(); @@ -164,7 +164,7 @@ public: ItemList toUserOutput(const ProjectExplorer::Kit *k) const; - static void setDebugger(ProjectExplorer::Kit *k, const DebuggerItem &item); + static void setDebugger(ProjectExplorer::Kit *k, const QVariant &id); static Core::Id id(); static Utils::FileName debuggerCommand(const ProjectExplorer::Kit *k); diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index 9dac4889b3d..ebfca0293fc 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -316,7 +316,8 @@ void IosConfigurations::updateAutomaticKitList() debugger.setDisplayName(tr("IOS Debugger")); debugger.setAutoDetected(true); debugger.setAbi(pToolchain->targetAbi()); - Debugger::DebuggerKitInformation::setDebugger(newKit, debugger); + QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger); + Debugger::DebuggerKitInformation::setDebugger(newKit, id); SysRootKitInformation::setSysRoot(newKit, p.sdkPath); // QmakeProjectManager::QmakeKitInformation::setMkspec(newKit, diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp index 81f5ed0469d..78b01a30d88 100644 --- a/src/plugins/qnx/blackberryconfiguration.cpp +++ b/src/plugins/qnx/blackberryconfiguration.cpp @@ -237,8 +237,8 @@ Kit *BlackBerryConfiguration::createKit(QnxAbstractQtVersion *version, ToolChain version->qtVersionString(), version->platformDisplayName(), version->archString(), m_targetName)); - DebuggerItemManager::registerDebugger(debugger); - DebuggerKitInformation::setDebugger(kit, debugger); + QVariant id = DebuggerItemManager::registerDebugger(debugger); + DebuggerKitInformation::setDebugger(kit, id); if (isSimulator) QmakeProjectManager::QmakeKitInformation::setMkspec( From ab71755326eeee537fb9eee157d7fffcd54cb723 Mon Sep 17 00:00:00 2001 From: Petar Perisin Date: Sat, 5 Oct 2013 16:10:54 +0200 Subject: [PATCH 042/104] Git: Fix popup message for merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie3ef79343b84d615255b70b786347c57511c3309 Reviewed-by: Orgad Shaneh Reviewed-by: André Hartmann Reviewed-by: Leena Miettinen Reviewed-by: Tobias Hunger --- src/plugins/git/gitclient.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index edb9dcd551f..70abaa0f6f1 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2665,11 +2665,6 @@ void GitClient::continueCommandIfNeeded(const QString &workingDirectory) { CommandInProgress command = checkCommandInProgress(workingDirectory); switch (command) { - case Merge: - continuePreviousGitCommand(workingDirectory, tr("Continue Merge"), - tr("Merge is in progress. What do you want to do?"), - tr("Continue"), QLatin1String("merge")); - break; case Rebase: case RebaseMerge: continuePreviousGitCommand(workingDirectory, tr("Continue Rebase"), @@ -2677,6 +2672,11 @@ void GitClient::continueCommandIfNeeded(const QString &workingDirectory) tr("Continue"), QLatin1String("rebase"), command != RebaseMerge); break; + case Merge: + continuePreviousGitCommand(workingDirectory, tr("Continue Merge"), + tr("You need to commit changes to finish merge.\nCommit now?"), + tr("Commit"), QLatin1String("merge")); + break; case Revert: continuePreviousGitCommand(workingDirectory, tr("Continue Revert"), tr("You need to commit changes to finish revert.\nCommit now?"), From 0a4310d3148861062b9679e1415197b3a883164f Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Wed, 16 Oct 2013 14:59:28 +0200 Subject: [PATCH 043/104] qmljs: added qmljsconstants.h Moved Document::Language, Import::Type and StaticAnalysis::Severity enums to qmljsconstants.h and renamed values removing the redundant part. Thus the effective length changed little or improved (Document::QmlLanguage => Language::Qml). The separate file allows better reuse of enum values without introducing circular dependencies. Change-Id: I5186d7c04f5d3f6c289068b919be5ff1ff118326 Reviewed-by: Fawzi Mohamed --- src/libs/qmljs/parser/qmljsengine_p.h | 13 ++-- src/libs/qmljs/parser/qmljsparser.cpp | 18 ++--- src/libs/qmljs/parser/qmljsparser_p.h | 2 +- src/libs/qmljs/qmljs-lib.pri | 3 +- src/libs/qmljs/qmljs.qbs | 1 + src/libs/qmljs/qmljsbind.cpp | 10 +-- src/libs/qmljs/qmljsbundle.cpp | 8 +- src/libs/qmljs/qmljsbundle.h | 8 +- src/libs/qmljs/qmljsconstants.h | 76 +++++++++++++++++++ src/libs/qmljs/qmljsdocument.cpp | 73 +++++++++--------- src/libs/qmljs/qmljsdocument.h | 33 +++----- src/libs/qmljs/qmljsinterpreter.cpp | 34 ++++----- src/libs/qmljs/qmljsinterpreter.h | 16 +--- src/libs/qmljs/qmljslink.cpp | 28 +++---- src/libs/qmljs/qmljsscopechain.cpp | 6 +- src/libs/qmljs/qmljsstaticanalysismessage.cpp | 30 ++++---- src/libs/qmljs/qmljsstaticanalysismessage.h | 14 +--- src/libs/qmljs/qmljsutils.cpp | 2 +- src/libs/qmljs/qmljsutils.h | 2 +- .../filemanager/astobjecttextextractor.cpp | 2 +- .../filemanager/firstdefinitionfinder.cpp | 2 +- .../filemanager/objectlengthcalculator.cpp | 2 +- .../filemanager/qmlrefactoring.cpp | 2 +- .../designercore/metainfo/nodemetainfo.cpp | 6 +- .../metainfo/subcomponentmanager.cpp | 2 +- .../designercore/model/modeltotextmerger.cpp | 2 +- .../designercore/model/texttomodelmerger.cpp | 20 ++--- .../qmljseditor/qmlexpressionundercursor.cpp | 2 +- src/plugins/qmljseditor/qmljseditor.cpp | 2 +- .../qmljseditor/qmljsfindreferences.cpp | 2 +- src/plugins/qmljseditor/qmljshoverhandler.cpp | 10 +-- .../qmljseditor/qmljssemantichighlighter.cpp | 6 +- .../qmljseditor/qmljssemanticinfoupdater.cpp | 2 +- .../qmljstools/qmljsbundleprovider.cpp | 36 ++++----- src/plugins/qmljstools/qmljsmodelmanager.cpp | 32 ++++---- src/plugins/qmljstools/qmljsmodelmanager.h | 2 +- .../qmljstools/qmljsrefactoringchanges.cpp | 2 +- 37 files changed, 280 insertions(+), 231 deletions(-) create mode 100644 src/libs/qmljs/qmljsconstants.h diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h index 5b1fe269f0d..b43b1be239d 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.h +++ b/src/libs/qmljs/parser/qmljsengine_p.h @@ -44,6 +44,7 @@ #include "qmljsglobal_p.h" #include "qmljsastfwd_p.h" #include "qmljsmemorypool_p.h" +#include #include #include @@ -59,21 +60,19 @@ class MemoryPool; class QML_PARSER_EXPORT DiagnosticMessage { public: - enum Kind { Warning, Error }; - DiagnosticMessage() - : kind(Error) {} + : kind(Severity::Error) {} - DiagnosticMessage(Kind kind, const AST::SourceLocation &loc, const QString &message) + DiagnosticMessage(Severity::Enum kind, const AST::SourceLocation &loc, const QString &message) : kind(kind), loc(loc), message(message) {} bool isWarning() const - { return kind == Warning; } + { return kind == Severity::Warning; } bool isError() const - { return kind == Error; } + { return kind == Severity::Error; } - Kind kind; + Severity::Enum kind; AST::SourceLocation loc; QString message; }; diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp index 5b95f16b257..ecf18954804 100644 --- a/src/libs/qmljs/parser/qmljsparser.cpp +++ b/src/libs/qmljs/parser/qmljsparser.cpp @@ -289,7 +289,7 @@ case 20: { if (node) { node->importToken = loc(1); } else { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, loc(1), + diagnostic_messages.append(DiagnosticMessage(Severity::Error, loc(1), QLatin1String("Expected a qualified name id or a string literal"))); return false; // ### remove me @@ -583,7 +583,7 @@ case 78: { case 79: { bool rx = lexer->scanRegExp(Lexer::NoPrefix); if (!rx) { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, location(lexer), lexer->errorMessage())); return false; // ### remove me } @@ -599,7 +599,7 @@ case 79: { case 80: { bool rx = lexer->scanRegExp(Lexer::EqualPrefix); if (!rx) { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, location(lexer), lexer->errorMessage())); return false; } @@ -680,7 +680,7 @@ case 88: { case 89: { if (AST::ArrayMemberExpression *mem = AST::cast(sym(1).Expression)) { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken, + diagnostic_messages.append(DiagnosticMessage(Severity::Warning, mem->lbracketToken, QLatin1String("Ignored annotation"))); sym(1).Expression = mem->base; @@ -691,7 +691,7 @@ case 89: { } else { sym(1).UiQualifiedId = 0; - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, loc(1), + diagnostic_messages.append(DiagnosticMessage(Severity::Error, loc(1), QLatin1String("Expected a qualified name id"))); return false; // ### recover @@ -1747,7 +1747,7 @@ case 347: { msg = qApp->translate("QmlParser", "Syntax error"); else msg = qApp->translate("QmlParser", "Unexpected token `%1'").arg(QLatin1String(spell[token])); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); action = errorState; goto _Lcheck_token; @@ -1775,7 +1775,7 @@ case 347: { int a = t_action(errorState, *tk); if (a > 0 && t_action(a, yytoken)) { const QString msg = qApp->translate("QmlParser", "Expected token `%1'").arg(QLatin1String(spell[*tk])); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); yytoken = *tk; yylval = 0; @@ -1799,7 +1799,7 @@ case 347: { int a = t_action(errorState, tk); if (a > 0 && t_action(a, yytoken)) { const QString msg = qApp->translate("QmlParser", "Expected token `%1'").arg(QLatin1String(spell[tk])); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); yytoken = tk; yylval = 0; @@ -1812,7 +1812,7 @@ case 347: { } const QString msg = qApp->translate("QmlParser", "Syntax error"); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); } return false; diff --git a/src/libs/qmljs/parser/qmljsparser_p.h b/src/libs/qmljs/parser/qmljsparser_p.h index eafea8f405d..9b41ce3412e 100644 --- a/src/libs/qmljs/parser/qmljsparser_p.h +++ b/src/libs/qmljs/parser/qmljsparser_p.h @@ -162,7 +162,7 @@ public: inline DiagnosticMessage diagnosticMessage() const { foreach (const DiagnosticMessage &d, diagnostic_messages) { - if (d.kind != DiagnosticMessage::Warning) + if (d.kind != Severity::Warning) return d; } diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri index 1ea154d3ad2..d4e83127daa 100644 --- a/src/libs/qmljs/qmljs-lib.pri +++ b/src/libs/qmljs/qmljs-lib.pri @@ -38,7 +38,8 @@ HEADERS += \ $$PWD/iscriptevaluator.h \ $$PWD/qmljssimplereader.h \ $$PWD/persistenttrie.h \ - $$PWD/qmljsqrcparser.h + $$PWD/qmljsqrcparser.h \ + $$PWD/qmljsconstants.h SOURCES += \ $$PWD/qmljsbind.cpp \ diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs index ae5334c4bbc..c79197475fe 100644 --- a/src/libs/qmljs/qmljs.qbs +++ b/src/libs/qmljs/qmljs.qbs @@ -28,6 +28,7 @@ QtcLibrary { "qmljscheck.cpp", "qmljscheck.h", "qmljscodeformatter.cpp", "qmljscodeformatter.h", "qmljscompletioncontextfinder.cpp", "qmljscompletioncontextfinder.h", + "qmljsconstants.h", "qmljscontext.cpp", "qmljscontext.h", "qmljsdelta.cpp", "qmljsdelta.h", "qmljsdocument.cpp", "qmljsdocument.h", diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index fd7c7c68cb8..65804d72a09 100644 --- a/src/libs/qmljs/qmljsbind.cpp +++ b/src/libs/qmljs/qmljsbind.cpp @@ -204,17 +204,17 @@ bool Bind::visit(UiImport *ast) const QString importId = ast->importId.toString(); ImportInfo import = ImportInfo::moduleImport(toString(ast->importUri), version, importId, ast); - if (_doc->language() == Document::QmlLanguage) { + if (_doc->language() == Language::Qml) { const QString importStr = import.name() + importId; QmlLanguageBundles langBundles = ModelManagerInterface::instance()->extendedBundles(); - QmlBundle qq1 = langBundles.bundleForLanguage(Document::QmlQtQuick1Language); - QmlBundle qq2 = langBundles.bundleForLanguage(Document::QmlQtQuick2Language); + QmlBundle qq1 = langBundles.bundleForLanguage(Language::QmlQtQuick1); + QmlBundle qq2 = langBundles.bundleForLanguage(Language::QmlQtQuick2); bool isQQ1 = qq1.supportedImports().contains(importStr); bool isQQ2 = qq2.supportedImports().contains(importStr); if (isQQ1 && ! isQQ2) - _doc->setLanguage(Document::QmlQtQuick1Language); + _doc->setLanguage(Language::QmlQtQuick1); if (isQQ2 && ! isQQ1) - _doc->setLanguage(Document::QmlQtQuick2Language); + _doc->setLanguage(Language::QmlQtQuick2); } _imports += import; } else if (!ast->fileName.isEmpty()) { diff --git a/src/libs/qmljs/qmljsbundle.cpp b/src/libs/qmljs/qmljsbundle.cpp index 8b2ff587b43..198808a9f29 100644 --- a/src/libs/qmljs/qmljsbundle.cpp +++ b/src/libs/qmljs/qmljsbundle.cpp @@ -288,14 +288,14 @@ bool QmlBundle::readFrom(QString path, QStringList *errors) return errs.isEmpty(); } -QmlBundle QmlLanguageBundles::bundleForLanguage(Document::Language l) const +QmlBundle QmlLanguageBundles::bundleForLanguage(Language::Enum l) const { if (m_bundles.contains(l)) return m_bundles.value(l); return QmlBundle(); } -void QmlLanguageBundles::mergeBundleForLanguage(Document::Language l, const QmlBundle &bundle) +void QmlLanguageBundles::mergeBundleForLanguage(Language::Enum l, const QmlBundle &bundle) { if (bundle.isEmpty()) return; @@ -305,14 +305,14 @@ void QmlLanguageBundles::mergeBundleForLanguage(Document::Language l, const QmlB m_bundles.insert(l,bundle); } -QList QmlLanguageBundles::languages() const +QList QmlLanguageBundles::languages() const { return m_bundles.keys(); } void QmlLanguageBundles::mergeLanguageBundles(const QmlLanguageBundles &o) { - foreach (Document::Language l, o.languages()) + foreach (Language::Enum l, o.languages()) mergeBundleForLanguage(l, o.bundleForLanguage(l)); } diff --git a/src/libs/qmljs/qmljsbundle.h b/src/libs/qmljs/qmljsbundle.h index 63acca2da53..3357ee5a0c9 100644 --- a/src/libs/qmljs/qmljsbundle.h +++ b/src/libs/qmljs/qmljsbundle.h @@ -102,12 +102,12 @@ private: class QMLJS_EXPORT QmlLanguageBundles { public: - QmlBundle bundleForLanguage(Document::Language l) const; - void mergeBundleForLanguage(Document::Language l, const QmlBundle &bundle); - QList languages() const; + QmlBundle bundleForLanguage(Language::Enum l) const; + void mergeBundleForLanguage(Language::Enum l, const QmlBundle &bundle); + QList languages() const; void mergeLanguageBundles(const QmlLanguageBundles &); private: - QHash m_bundles; + QHash m_bundles; }; } // namespace QmlJS diff --git a/src/libs/qmljs/qmljsconstants.h b/src/libs/qmljs/qmljsconstants.h new file mode 100644 index 00000000000..fcb117050f0 --- /dev/null +++ b/src/libs/qmljs/qmljsconstants.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef QMLJSCONSTANTS_H +#define QMLJSCONSTANTS_H + +namespace QmlJS { + +namespace ImportType { +enum Enum { + Invalid, + ImplicitDirectory, + Library, + File, + Directory, + QrcFile, + QrcDirectory, + ImplicitQrcDirectory, + UnknownFile // refers a file/directory that wasn't found +}; +} + +namespace Severity { +enum Enum +{ + Hint, // cosmetic or convention + MaybeWarning, // possibly a warning, insufficient information + Warning, // could cause unintended behavior + MaybeError, // possibly an error, insufficient information + Error // definitely an error +}; +} + +namespace Language { +enum Enum +{ + Unknown = 0, + JavaScript = 1, + Json = 2, + Qml = 3, + QmlQtQuick1 = 4, + QmlQtQuick2 = 5, + QmlQbs = 6, + QmlProject = 7, + QmlTypeInfo = 8 +}; +} + +} // namespace QmlJS +#endif // QMLJSCONSTANTS_H diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index 942882ef1ac..fe169f795c4 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -29,6 +29,7 @@ #include "qmljsdocument.h" #include "qmljsbind.h" +#include "qmljsconstants.h" #include #include @@ -81,56 +82,56 @@ using namespace QmlJS::AST; */ -bool Document::isQmlLikeLanguage(Document::Language language) +bool Document::isQmlLikeLanguage(Language::Enum language) { switch (language) { - case QmlLanguage: - case QmlQtQuick1Language: - case QmlQtQuick2Language: - case QmlQbsLanguage: - case QmlProjectLanguage: - case QmlTypeInfoLanguage: + case Language::Qml: + case Language::QmlQtQuick1: + case Language::QmlQtQuick2: + case Language::QmlQbs: + case Language::QmlProject: + case Language::QmlTypeInfo: return true; default: return false; } } -bool Document::isFullySupportedLanguage(Document::Language language) +bool Document::isFullySupportedLanguage(Language::Enum language) { switch (language) { - case JavaScriptLanguage: - case JsonLanguage: - case QmlLanguage: - case QmlQtQuick1Language: - case QmlQtQuick2Language: + case Language::JavaScript: + case Language::Json: + case Language::Qml: + case Language::QmlQtQuick1: + case Language::QmlQtQuick2: return true; - case UnknownLanguage: - case QmlQbsLanguage: - case QmlProjectLanguage: - case QmlTypeInfoLanguage: + case Language::Unknown: + case Language::QmlQbs: + case Language::QmlProject: + case Language::QmlTypeInfo: break; } return false; } -bool Document::isQmlLikeOrJsLanguage(Document::Language language) +bool Document::isQmlLikeOrJsLanguage(Language::Enum language) { switch (language) { - case QmlLanguage: - case QmlQtQuick1Language: - case QmlQtQuick2Language: - case QmlQbsLanguage: - case QmlProjectLanguage: - case QmlTypeInfoLanguage: - case JavaScriptLanguage: + case Language::Qml: + case Language::QmlQtQuick1: + case Language::QmlQtQuick2: + case Language::QmlQbs: + case Language::QmlProject: + case Language::QmlTypeInfo: + case Language::JavaScript: return true; default: return false; } } -Document::Document(const QString &fileName, Language language) +Document::Document(const QString &fileName, Language::Enum language) : _engine(0) , _ast(0) , _bind(0) @@ -163,24 +164,24 @@ Document::~Document() delete _engine; } -Document::MutablePtr Document::create(const QString &fileName, Language language) +Document::MutablePtr Document::create(const QString &fileName, Language::Enum language) { Document::MutablePtr doc(new Document(fileName, language)); doc->_ptr = doc; return doc; } -Document::Language Document::guessLanguageFromSuffix(const QString &fileName) +Language::Enum Document::guessLanguageFromSuffix(const QString &fileName) { if (fileName.endsWith(QLatin1String(".qml"), Qt::CaseInsensitive)) - return QmlLanguage; + return Language::Qml; if (fileName.endsWith(QLatin1String(".qbs"), Qt::CaseInsensitive)) - return QmlQbsLanguage; + return Language::QmlQbs; if (fileName.endsWith(QLatin1String(".js"), Qt::CaseInsensitive)) - return JavaScriptLanguage; + return Language::JavaScript; if (fileName.endsWith(QLatin1String(".json"), Qt::CaseInsensitive)) - return JsonLanguage; - return UnknownLanguage; + return Language::Json; + return Language::Unknown; } Document::Ptr Document::ptr() const @@ -193,12 +194,12 @@ bool Document::isQmlDocument() const return isQmlLikeLanguage(_language); } -Document::Language Document::language() const +Language::Enum Document::language() const { return _language; } -void Document::setLanguage(Document::Language l) +void Document::setLanguage(Language::Enum l) { _language = l; } @@ -428,7 +429,7 @@ void Snapshot::remove(const QString &fileName) Document::MutablePtr Snapshot::documentFromSource( const QString &code, const QString &fileName, - Document::Language language) const + Language::Enum language) const { Document::MutablePtr newDoc = Document::create(fileName, language); diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h index 56ebb7061e8..3d9491e165f 100644 --- a/src/libs/qmljs/qmljsdocument.h +++ b/src/libs/qmljs/qmljsdocument.h @@ -50,36 +50,23 @@ public: typedef QSharedPointer Ptr; typedef QSharedPointer MutablePtr; - enum Language - { - UnknownLanguage = 0, - JavaScriptLanguage = 1, - JsonLanguage = 2, - QmlLanguage = 3, - QmlQtQuick1Language = 4, - QmlQtQuick2Language = 5, - QmlQbsLanguage = 6, - QmlProjectLanguage = 7, - QmlTypeInfoLanguage = 8 - }; - - static bool isQmlLikeLanguage(Language languge); - static bool isFullySupportedLanguage(Language language); - static bool isQmlLikeOrJsLanguage(Language language); + static bool isQmlLikeLanguage(Language::Enum languge); + static bool isFullySupportedLanguage(Language::Enum language); + static bool isQmlLikeOrJsLanguage(Language::Enum language); protected: - Document(const QString &fileName, Language language); + Document(const QString &fileName, Language::Enum language); public: ~Document(); - static MutablePtr create(const QString &fileName, Language language); - static Language guessLanguageFromSuffix(const QString &fileName); + static MutablePtr create(const QString &fileName, Language::Enum language); + static Language::Enum guessLanguageFromSuffix(const QString &fileName); Document::Ptr ptr() const; bool isQmlDocument() const; - Language language() const; - void setLanguage(Language l); + Language::Enum language() const; + void setLanguage(Language::Enum l); AST::UiProgram *qmlProgram() const; AST::Program *jsProgram() const; @@ -124,7 +111,7 @@ private: QString _source; QWeakPointer _ptr; int _editorRevision; - Language _language; + Language::Enum _language; bool _parsedCorrectly; // for documentFromSource @@ -237,7 +224,7 @@ public: Document::MutablePtr documentFromSource(const QString &code, const QString &fileName, - Document::Language language) const; + Language::Enum language) const; }; } // namespace QmlJS diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index ddecffd2f19..feb6fa65057 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -2074,7 +2074,7 @@ bool ASTSignal::getSourceLocation(QString *fileName, int *line, int *column) con ImportInfo::ImportInfo() - : _type(InvalidImport) + : _type(ImportType::Invalid) , _ast(0) { } @@ -2089,7 +2089,7 @@ ImportInfo ImportInfo::moduleImport(QString uri, ComponentVersion version, } ImportInfo info; - info._type = LibraryImport; + info._type = ImportType::Library; info._name = uri; info._path = uri; info._path.replace(QLatin1Char('.'), QDir::separator()); @@ -2111,17 +2111,17 @@ ImportInfo ImportInfo::pathImport(const QString &docPath, const QString &path, info._path = importFileInfo.absoluteFilePath(); if (importFileInfo.isFile()) { - info._type = FileImport; + info._type = ImportType::File; } else if (importFileInfo.isDir()) { - info._type = DirectoryImport; + info._type = ImportType::Directory; } else if (path.startsWith(QLatin1String("qrc:"))) { info._path = path; if (ModelManagerInterface::instance()->filesAtQrcPath(info.path()).isEmpty()) - info._type = QrcDirectoryImport; + info._type = ImportType::QrcDirectory; else - info._type = QrcFileImport; + info._type = ImportType::QrcFile; } else { - info._type = UnknownFileImport; + info._type = ImportType::UnknownFile; } info._version = version; info._as = as; @@ -2132,7 +2132,7 @@ ImportInfo ImportInfo::pathImport(const QString &docPath, const QString &path, ImportInfo ImportInfo::invalidImport(UiImport *ast) { ImportInfo info; - info._type = InvalidImport; + info._type = ImportType::Invalid; info._ast = ast; return info; } @@ -2140,17 +2140,17 @@ ImportInfo ImportInfo::invalidImport(UiImport *ast) ImportInfo ImportInfo::implicitDirectoryImport(const QString &directory) { ImportInfo info; - info._type = ImplicitDirectoryImport; + info._type = ImportType::ImplicitDirectory; info._path = directory; return info; } bool ImportInfo::isValid() const { - return _type != InvalidImport; + return _type != ImportType::Invalid; } -ImportInfo::Type ImportInfo::type() const +ImportType::Enum ImportInfo::type() const { return _type; } @@ -2201,7 +2201,7 @@ const Value *TypeScope::lookupMember(const QString &name, const Context *context const ImportInfo &info = i.info; // JS import has no types - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) continue; if (!info.as().isEmpty()) { @@ -2231,7 +2231,7 @@ void TypeScope::processMembers(MemberProcessor *processor) const const ImportInfo &info = i.info; // JS import has no types - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) continue; if (!info.as().isEmpty()) @@ -2258,7 +2258,7 @@ const Value *JSImportScope::lookupMember(const QString &name, const Context *, const ImportInfo &info = i.info; // JS imports are always: import "somefile.js" as Foo - if (info.type() != ImportInfo::FileImport && info.type() != ImportInfo::QrcFileImport) + if (info.type() != ImportType::File && info.type() != ImportType::QrcFile) continue; if (info.as() == name) { @@ -2281,7 +2281,7 @@ void JSImportScope::processMembers(MemberProcessor *processor) const const ObjectValue *import = i.object; const ImportInfo &info = i.info; - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) processor->processProperty(info.as(), import); } } @@ -2338,7 +2338,7 @@ ImportInfo Imports::info(const QString &name, const Context *context) const continue; } - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) { + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) { if (import->className() == firstId) return info; } else { @@ -2358,7 +2358,7 @@ QString Imports::nameForImportedObject(const ObjectValue *value, const Context * const ObjectValue *import = i.object; const ImportInfo &info = i.info; - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) { + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) { if (import == value) return import->className(); } else { diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 356f52bb387..936edced6e6 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -32,6 +32,7 @@ #include #include +#include #include #include @@ -866,17 +867,6 @@ public: class QMLJS_EXPORT ImportInfo { public: - enum Type { - InvalidImport, - ImplicitDirectoryImport, - LibraryImport, - FileImport, - DirectoryImport, - QrcFileImport, - QrcDirectoryImport, - UnknownFileImport // refers a file/directory that wasn't found - }; - ImportInfo(); static ImportInfo moduleImport(QString uri, LanguageUtils::ComponentVersion version, @@ -888,7 +878,7 @@ public: static ImportInfo implicitDirectoryImport(const QString &directory); bool isValid() const; - Type type() const; + ImportType::Enum type() const; // LibraryImport: uri with ',' separator // Other: non-absolute path @@ -905,7 +895,7 @@ public: AST::UiImport *ast() const; private: - Type _type; + ImportType::Enum _type; LanguageUtils::ComponentVersion _version; QString _name; QString _path; diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 1515286a54f..8868ceee21f 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -244,16 +244,16 @@ void LinkPrivate::populateImportedTypes(Imports *imports, Document::Ptr doc) if (!import.object) { switch (info.type()) { - case ImportInfo::FileImport: - case ImportInfo::DirectoryImport: - case ImportInfo::QrcFileImport: - case ImportInfo::QrcDirectoryImport: + case ImportType::File: + case ImportType::Directory: + case ImportType::QrcFile: + case ImportType::QrcDirectory: import = importFileOrDirectory(doc, info); break; - case ImportInfo::LibraryImport: + case ImportType::Library: import = importNonFile(doc, info); break; - case ImportInfo::UnknownFileImport: + case ImportType::UnknownFile: imports->setImportFailed(); if (info.ast()) { error(doc, info.ast()->fileNameToken, @@ -290,8 +290,8 @@ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &i QString path = importInfo.path(); - if (importInfo.type() == ImportInfo::DirectoryImport - || importInfo.type() == ImportInfo::ImplicitDirectoryImport) { + if (importInfo.type() == ImportType::Directory + || importInfo.type() == ImportType::ImplicitDirectory) { import.object = new ObjectValue(valueOwner); importLibrary(doc, path, &import); @@ -303,11 +303,11 @@ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &i import.object->setMember(targetName, importedDoc->bind()->rootObjectValue()); } } - } else if (importInfo.type() == ImportInfo::FileImport) { + } else if (importInfo.type() == ImportType::File) { Document::Ptr importedDoc = snapshot.document(path); if (importedDoc) import.object = importedDoc->bind()->rootObjectValue(); - } else if (importInfo.type() == ImportInfo::QrcFileImport) { + } else if (importInfo.type() == ImportType::QrcFile) { QLocale locale; QStringList filePaths = ModelManagerInterface::instance() ->filesAtQrcPath(path, &locale, 0, ModelManagerInterface::ActiveQrcResources); @@ -319,7 +319,7 @@ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &i if (importedDoc) import.object = importedDoc->bind()->rootObjectValue(); } - } else if (importInfo.type() == ImportInfo::QrcDirectoryImport){ + } else if (importInfo.type() == ImportType::QrcDirectory){ import.object = new ObjectValue(valueOwner); importLibrary(doc, path, &import); @@ -454,7 +454,7 @@ bool LinkPrivate::importLibrary(Document::Ptr doc, if (libraryInfo.pluginTypeInfoStatus() == LibraryInfo::NoTypeInfo) { ModelManagerInterface *modelManager = ModelManagerInterface::instance(); if (modelManager) { - if (importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.type() == ImportType::Library) { if (version.isValid()) { const QString uri = importInfo.name(); modelManager->loadPluginTypes( @@ -510,12 +510,12 @@ bool LinkPrivate::importLibrary(Document::Ptr doc, void LinkPrivate::error(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message) { - appendDiagnostic(doc, DiagnosticMessage(DiagnosticMessage::Error, loc, message)); + appendDiagnostic(doc, DiagnosticMessage(Severity::Error, loc, message)); } void LinkPrivate::warning(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message) { - appendDiagnostic(doc, DiagnosticMessage(DiagnosticMessage::Warning, loc, message)); + appendDiagnostic(doc, DiagnosticMessage(Severity::Warning, loc, message)); } void LinkPrivate::appendDiagnostic(const Document::Ptr &doc, const DiagnosticMessage &message) diff --git a/src/libs/qmljs/qmljsscopechain.cpp b/src/libs/qmljs/qmljsscopechain.cpp index 9ec4d0cf374..41cb3fb3567 100644 --- a/src/libs/qmljs/qmljsscopechain.cpp +++ b/src/libs/qmljs/qmljsscopechain.cpp @@ -258,7 +258,7 @@ void ScopeChain::update() const m_all += m_cppContextProperties; // the root scope in js files doesn't see instantiating components - if (m_document->language() != Document::JavaScriptLanguage || m_jsScopes.count() != 1) { + if (m_document->language() != Language::JavaScript || m_jsScopes.count() != 1) { if (m_qmlComponentScope) { foreach (const QmlComponentChain *parent, m_qmlComponentScope->instantiatingComponents()) collectScopes(parent, &m_all); @@ -312,8 +312,8 @@ void ScopeChain::initializeRootScope() if (!m_document->bind()->isJsLibrary()) { foreach (Document::Ptr otherDoc, snapshot) { foreach (const ImportInfo &import, otherDoc->bind()->imports()) { - if ((import.type() == ImportInfo::FileImport && m_document->fileName() == import.path()) - || (import.type() == ImportInfo::QrcFileImport + if ((import.type() == ImportType::File && m_document->fileName() == import.path()) + || (import.type() == ImportType::QrcFile && ModelManagerInterface::instance()->filesAtQrcPath(import.path()) .contains(m_document->fileName()))) { QmlComponentChain *component = new QmlComponentChain(otherDoc); diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.cpp b/src/libs/qmljs/qmljsstaticanalysismessage.cpp index 6336bc21e29..57dc9b9ba70 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.cpp +++ b/src/libs/qmljs/qmljsstaticanalysismessage.cpp @@ -28,6 +28,7 @@ ****************************************************************************/ #include "qmljsstaticanalysismessage.h" +#include "qmljsconstants.h" #include @@ -35,6 +36,7 @@ using namespace QmlJS; using namespace QmlJS::StaticAnalysis; +using namespace QmlJS::Severity; namespace { @@ -43,7 +45,7 @@ class StaticAnalysisMessages Q_DECLARE_TR_FUNCTIONS(QmlJS::StaticAnalysisMessages) public: - void newMsg(Type type, Severity severity, const QString &message, int placeholders = 0) + void newMsg(Type type, Enum severity, const QString &message, int placeholders = 0) { PrototypeMessageData prototype; prototype.type = type; @@ -152,7 +154,7 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Unnecessary parentheses.")); newMsg(MaybeWarnEqualityTypeCoercion, MaybeWarning, tr("== and != may perform type coercion, use === or !== to avoid it.")); - newMsg(WarnConfusingExpressionStatement, Warning, + newMsg(WarnConfusingExpressionStatement, Error, tr("Expression statements should be assignments, calls or delete expressions only.")); newMsg(HintDeclarationsShouldBeAtStartOfFunction, Hint, tr("Place var declarations at the start of a function.")); @@ -168,17 +170,17 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Prototype cycle, the last non-repeated component is '%1'."), 1); newMsg(ErrInvalidPropertyType, Error, tr("Invalid property type '%1'."), 1); - newMsg(WarnEqualityTypeCoercion, Warning, + newMsg(WarnEqualityTypeCoercion, Error, tr("== and != perform type coercion, use === or !== to avoid it.")); - newMsg(WarnExpectedNewWithUppercaseFunction, Warning, + newMsg(WarnExpectedNewWithUppercaseFunction, Error, tr("Calls of functions that start with an uppercase letter should use 'new'.")); - newMsg(WarnNewWithLowercaseFunction, Warning, + newMsg(WarnNewWithLowercaseFunction, Error, tr("Use 'new' only with functions that start with an uppercase letter.")); - newMsg(WarnNumberConstructor, Warning, + newMsg(WarnNumberConstructor, Error, msgInvalidConstructor("Function")); newMsg(HintBinaryOperatorSpacing, Hint, tr("Use spaces around binary operators.")); - newMsg(WarnUnintentinalEmptyBlock, Warning, + newMsg(WarnUnintentinalEmptyBlock, Error, tr("Unintentional empty block, use ({}) for empty object literal.")); newMsg(HintPreferNonVarPropertyType, Hint, tr("Use %1 instead of 'var' or 'variant' to improve performance."), 1); @@ -206,16 +208,16 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Maximum string value length is %1."), 1); newMsg(ErrInvalidArrayValueLength, Error, tr("%1 elements expected in array value."), 1); - newMsg(WarnImperativeCodeNotEditableInVisualDesigner, Warning, + newMsg(WarnImperativeCodeNotEditableInVisualDesigner, Error, tr("Imperative code is not supported in the Qt Quick Designer.")); - newMsg(WarnUnsupportedTypeInVisualDesigner, Warning, + newMsg(WarnUnsupportedTypeInVisualDesigner, Error, tr("This type is not supported in the Qt Quick Designer.")); - newMsg(WarnReferenceToParentItemNotSupportedByVisualDesigner, Warning, + newMsg(WarnReferenceToParentItemNotSupportedByVisualDesigner, Error, tr("Reference to parent item cannot be resolved correctly by the Qt Quick Designer.")); - newMsg(WarnUndefinedValueForVisualDesigner, Warning, + newMsg(WarnUndefinedValueForVisualDesigner, Error, tr("This visual property binding cannot be evaluated in the local context " "and might not show up in Qt Quick Designer as expected.")); - newMsg(WarnStatesOnlyInRootItemForVisualDesigner, Warning, + newMsg(WarnStatesOnlyInRootItemForVisualDesigner, Error, tr("Qt Quick Designer only supports states in the root item.")); } @@ -271,10 +273,10 @@ DiagnosticMessage Message::toDiagnosticMessage() const case Hint: case MaybeWarning: case Warning: - diagnostic.kind = DiagnosticMessage::Warning; + diagnostic.kind = Warning; break; default: - diagnostic.kind = DiagnosticMessage::Error; + diagnostic.kind = Error; break; } diagnostic.loc = location; diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.h b/src/libs/qmljs/qmljsstaticanalysismessage.h index 3cf29d7bba0..4e1ca5afc60 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.h +++ b/src/libs/qmljs/qmljsstaticanalysismessage.h @@ -31,6 +31,7 @@ #define QMLJS_STATICANALYSIS_QMLJSSTATICANALYSISMESSAGE_H #include "qmljs_global.h" +#include "qmljsconstants.h" #include "parser/qmljsengine_p.h" #include @@ -40,15 +41,6 @@ namespace QmlJS { namespace StaticAnalysis { -enum Severity -{ - Hint, // cosmetic or convention - MaybeWarning, // possibly a warning, insufficient information - Warning, // could cause unintended behavior - MaybeError, // possibly an error, insufficient information - Error // definitely an error -}; - enum Type { // Changing the numbers can break user code. @@ -134,7 +126,7 @@ enum Type class QMLJS_EXPORT PrototypeMessageData { public: Type type; - Severity severity; + Severity::Enum severity; QString message; int placeholders; }; @@ -159,7 +151,7 @@ public: AST::SourceLocation location; QString message; Type type; - Severity severity; + Severity::Enum severity; static const PrototypeMessageData prototypeForMessageType(Type type); }; diff --git a/src/libs/qmljs/qmljsutils.cpp b/src/libs/qmljs/qmljsutils.cpp index 28363502912..764a5c0f486 100644 --- a/src/libs/qmljs/qmljsutils.cpp +++ b/src/libs/qmljs/qmljsutils.cpp @@ -194,7 +194,7 @@ UiQualifiedId *QmlJS::qualifiedTypeNameId(Node *node) DiagnosticMessage QmlJS::errorMessage(const AST::SourceLocation &loc, const QString &message) { - return DiagnosticMessage(DiagnosticMessage::Error, loc, message); + return DiagnosticMessage(Severity::Error, loc, message); } bool QmlJS::isValidBuiltinPropertyType(const QString &name) diff --git a/src/libs/qmljs/qmljsutils.h b/src/libs/qmljs/qmljsutils.h index 30ec1ba69e7..5ac47f72077 100644 --- a/src/libs/qmljs/qmljsutils.h +++ b/src/libs/qmljs/qmljsutils.h @@ -67,7 +67,7 @@ AST::SourceLocation locationFromRange(const T *node) template DiagnosticMessage errorMessage(const T *node, const QString &message) { - return DiagnosticMessage(DiagnosticMessage::Error, + return DiagnosticMessage(Severity::Error, locationFromRange(node), message); } diff --git a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp index 0bb87dd813e..97f0a00eba4 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp @@ -36,7 +36,7 @@ using namespace QmlDesigner; using namespace QmlJS::AST; ASTObjectTextExtractor::ASTObjectTextExtractor(const QString &text): - m_document(Document::create("", Document::QmlLanguage)) + m_document(Document::create("", Language::Qml)) { m_document->setSource(text); m_document->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp index d35b1d5f931..615d049925d 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp @@ -38,7 +38,7 @@ using namespace QmlDesigner; using namespace QmlJS::AST; FirstDefinitionFinder::FirstDefinitionFinder(const QString &text): - m_doc(Document::create("", Document::QmlLanguage)) + m_doc(Document::create("", Language::Qml)) { m_doc->setSource(text); bool ok = m_doc->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp index 7e0cedd4d47..3290c86d454 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp @@ -36,7 +36,7 @@ using namespace QmlDesigner; using namespace QmlJS::AST; ObjectLengthCalculator::ObjectLengthCalculator(): - m_doc(Document::create("", Document::QmlLanguage)) + m_doc(Document::create("", Language::Qml)) { } diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp index 674e2a1aa7f..5b1916a9b12 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp @@ -59,7 +59,7 @@ bool QmlRefactoring::reparseDocument() // qDebug() << "QmlRefactoring::reparseDocument() new QML source:" << newSource; - Document::MutablePtr tmpDocument(Document::create("", Document::QmlLanguage)); + Document::MutablePtr tmpDocument(Document::create("", Language::Qml)); tmpDocument->setSource(newSource); if (tmpDocument->parseQml()) { diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 9d56d7a857e..e5b5180233a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -545,7 +545,7 @@ NodeMetaInfoPrivate::NodeMetaInfoPrivate(Model *model, TypeName type, int maj, i m_isFileComponent = true; const Imports *imports = context()->imports(document()); ImportInfo importInfo = imports->info(lookupNameComponent().last(), context().data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { m_majorVersion = importInfo.version().majorVersion(); m_minorVersion = importInfo.version().minorVersion(); } @@ -950,9 +950,9 @@ QString NodeMetaInfoPrivate::importDirectoryPath() const const Imports *imports = context()->imports(document()); ImportInfo importInfo = imports->info(lookupNameComponent().last(), context().data()); - if (importInfo.type() == ImportInfo::DirectoryImport) { + if (importInfo.type() == ImportType::Directory) { return importInfo.path(); - } else if (importInfo.type() == ImportInfo::LibraryImport) { + } else if (importInfo.type() == ImportType::Library) { if (modelManager) { foreach (const QString &importPath, modelManager->importPaths()) { const QString targetPath = QDir(importPath).filePath(importInfo.path()); diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index 69191cbe9e9..2405ef8412c 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -91,7 +91,7 @@ static inline bool checkIfDerivedFromItem(const QString &fileName) QmlJS::Document::MutablePtr document = QmlJS::Document::create(fileName.isEmpty() ? - QLatin1String("") : fileName, QmlJS::Document::QmlLanguage); + QLatin1String("") : fileName, QmlJS::Language::Qml); document->setSource(source); document->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp index 232b2151c66..67cf034d62e 100644 --- a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp @@ -221,7 +221,7 @@ void ModelToTextMerger::applyChanges() if (m_rewriteActions.isEmpty()) return; - Document::MutablePtr tmpDocument(Document::create(QLatin1String(""), Document::QmlLanguage)); + Document::MutablePtr tmpDocument(Document::create(QLatin1String(""), Language::Qml)); tmpDocument->setSource(m_rewriterView->textModifier()->text()); if (!tmpDocument->parseQml()) { qDebug() << "*** Possible problem: QML file wasn't parsed correctly."; diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 520b07dac7c..106af608691 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -359,12 +359,12 @@ public: const Imports *imports = m_context->imports(m_doc.data()); ImportInfo importInfo = imports->info(fullTypeName, m_context.data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { QString name = importInfo.name(); majorVersion = importInfo.version().majorVersion(); minorVersion = importInfo.version().minorVersion(); typeName.prepend(name + QLatin1Char('.')); - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::DirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::Directory) { QString path = importInfo.path(); QDir dir(m_doc->path()); // should probably try to make it relatve to some import path, not to the document path @@ -372,7 +372,7 @@ public: QString name = relativeDir.replace(QLatin1Char('/'), QLatin1Char('.')); if (!name.isEmpty()) typeName.prepend(name + QLatin1Char('.')); - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::QrcDirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::QrcDirectory) { QString path = QrcParser::normalizedQrcDirectoryPath(importInfo.path()); path = path.mid(1, path.size() - ((path.size() > 1) ? 2 : 1)); const QString name = path.replace(QLatin1Char('/'), QLatin1Char('.')); @@ -738,7 +738,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH try { Snapshot snapshot = m_rewriterView->textModifier()->getSnapshot(); const QString fileName = url.toLocalFile(); - Document::MutablePtr doc = Document::create(fileName.isEmpty() ? QLatin1String("") : fileName, Document::QmlLanguage); + Document::MutablePtr doc = Document::create(fileName.isEmpty() ? QLatin1String("") : fileName, Language::Qml); doc->setSource(data); doc->parseQml(); @@ -766,13 +766,13 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH setupImports(doc, differenceHandler); if (m_rewriterView->model()->imports().isEmpty()) { - const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::DiagnosticMessage::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found")); + const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found")); errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); } foreach (const QmlDesigner::Import &import, m_rewriterView->model()->imports()) { if (import.isLibraryImport() && import.url() == QLatin1String("QtQuick") && !supportedQtQuickVersion(import.version())) { - const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::DiagnosticMessage::Error, AST::SourceLocation(0, 0, 0, 0), + const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "Unsupported QtQuick version")); errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); } @@ -787,8 +787,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH foreach (StaticAnalysis::Type type, StaticAnalysis::Message::allMessageTypes()) { StaticAnalysis::PrototypeMessageData prototypeMessageData = StaticAnalysis::Message::prototypeForMessageType(type); - if (prototypeMessageData.severity == StaticAnalysis::MaybeWarning - || prototypeMessageData.severity == StaticAnalysis::Warning) { + if (prototypeMessageData.severity == Severity::MaybeWarning + || prototypeMessageData.severity == Severity::Warning) { check.disableMessage(type); } } @@ -800,9 +800,9 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH check.enableMessage(StaticAnalysis::WarnStatesOnlyInRootItemForVisualDesigner); foreach (const StaticAnalysis::Message &message, check()) { - if (message.severity == StaticAnalysis::Error) + if (message.severity == Severity::Error) errors.append(RewriterView::Error(message.toDiagnosticMessage(), QUrl::fromLocalFile(doc->fileName()))); - if (message.severity == StaticAnalysis::Warning) + if (message.severity == Severity::Warning) warnings.append(RewriterView::Error(message.toDiagnosticMessage(), QUrl::fromLocalFile(doc->fileName()))); } diff --git a/src/plugins/qmljseditor/qmlexpressionundercursor.cpp b/src/plugins/qmljseditor/qmlexpressionundercursor.cpp index 7e7ea48f656..5f2fe8f94c1 100644 --- a/src/plugins/qmljseditor/qmlexpressionundercursor.cpp +++ b/src/plugins/qmljseditor/qmlexpressionundercursor.cpp @@ -134,7 +134,7 @@ QmlJS::AST::ExpressionNode *QmlExpressionUnderCursor::operator()(const QTextCurs _text = expressionUnderCursor(cursor); Document::MutablePtr newDoc = Document::create( - QLatin1String(""), Document::JavaScriptLanguage); + QLatin1String(""), Language::JavaScript); newDoc->setSource(_text); newDoc->parseExpression(); exprDoc = newDoc; diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index c8b71c9bdad..dc0b419a0a1 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1079,7 +1079,7 @@ TextEditor::BaseTextEditorWidget::Link QmlJSTextEditorWidget::findLinkAt(const Q if (AST::UiImport *importAst = cast(node)) { // if it's a file import, link to the file foreach (const ImportInfo &import, semanticInfo.document->bind()->imports()) { - if (import.ast() == importAst && import.type() == ImportInfo::FileImport) { + if (import.ast() == importAst && import.type() == ImportType::File) { BaseTextEditorWidget::Link link(import.path()); link.linkTextStart = importAst->firstSourceLocation().begin(); link.linkTextEnd = importAst->lastSourceLocation().end(); diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp index 11e22d50285..a8b7d70914d 100644 --- a/src/plugins/qmljseditor/qmljsfindreferences.cpp +++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp @@ -812,7 +812,7 @@ static void find_helper(QFutureInterface &future, if (oldDoc && oldDoc->editorRevision() == it.value().second) continue; - Document::Language language; + Language::Enum language; if (oldDoc) language = oldDoc->language(); else diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp index 472cff9c269..b32537362ee 100644 --- a/src/plugins/qmljseditor/qmljshoverhandler.cpp +++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp @@ -115,7 +115,7 @@ static inline QString getModuleName(const ScopeChain &scopeChain, const Document const QString moduleName = qmlValue->moduleName(); const Imports *imports = scopeChain.context()->imports(qmlDocument.data()); const ImportInfo importInfo = imports->info(qmlValue->className(), scopeChain.context().data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { const int majorVersion = importInfo.version().majorVersion(); const int minorVersion = importInfo.version().minorVersion(); return moduleName + QString::number(majorVersion) + QLatin1Char('.') @@ -127,20 +127,20 @@ static inline QString getModuleName(const ScopeChain &scopeChain, const Document const Imports *imports = scopeChain.context()->imports(qmlDocument.data()); const ImportInfo importInfo = imports->info(typeName, scopeChain.context().data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { const QString moduleName = importInfo.name(); const int majorVersion = importInfo.version().majorVersion(); const int minorVersion = importInfo.version().minorVersion(); return moduleName + QString::number(majorVersion) + QLatin1Char('.') + QString::number(minorVersion) ; - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::DirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::Directory) { const QString path = importInfo.path(); const QDir dir(qmlDocument->path()); // should probably try to make it relatve to some import path, not to the document path QString relativeDir = dir.relativeFilePath(path); const QString name = relativeDir.replace(QLatin1Char('/'), QLatin1Char('.')); return name; - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::QrcDirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::QrcDirectory) { QString path = QrcParser::normalizedQrcDirectoryPath(importInfo.path()); path = path.mid(1, path.size() - ((path.size() > 1) ? 2 : 1)); const QString name = path.replace(QLatin1Char('/'), QLatin1Char('.')); @@ -350,7 +350,7 @@ void HoverHandler::handleImport(const ScopeChain &scopeChain, AST::UiImport *nod foreach (const Import &import, imports->all()) { if (import.info.ast() == node) { - if (import.info.type() == ImportInfo::LibraryImport + if (import.info.type() == ImportType::Library && !import.libraryPath.isEmpty()) { QString msg = tr("Library at %1").arg(import.libraryPath); const LibraryInfo &libraryInfo = scopeChain.context()->snapshot().libraryInfo(import.libraryPath); diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp index 7350583abb9..ffafb7a8fe0 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp @@ -413,11 +413,11 @@ protected: length = end-begin; } QTextCharFormat format; - if (d.severity == StaticAnalysis::Warning || d.severity == StaticAnalysis::MaybeWarning) + if (d.severity == Severity::Warning || d.severity == Severity::MaybeWarning) format.setUnderlineColor(Qt::darkYellow); - else if (d.severity == StaticAnalysis::Error || d.severity == StaticAnalysis::MaybeError) + else if (d.severity == Severity::Error || d.severity == Severity::MaybeError) format.setUnderlineColor(Qt::red); - else if (d.severity == StaticAnalysis::Hint) + else if (d.severity == Severity::Hint) format.setUnderlineColor(Qt::darkGreen); format.setUnderlineStyle(QTextCharFormat::WaveUnderline); diff --git a/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp b/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp index 38674c9b0c4..2e4a73b57e7 100644 --- a/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp +++ b/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp @@ -128,7 +128,7 @@ QmlJSTools::SemanticInfo SemanticInfoUpdater::makeNewSemanticInfo(const QmlJS::D ScopeChain *scopeChain = new ScopeChain(doc, semanticInfo.context); semanticInfo.setRootScopeChain(QSharedPointer(scopeChain)); - if (doc->language() == Document::JsonLanguage) { + if (doc->language() == Language::Json) { Utils::JsonSchema *schema = QmlJSEditorPlugin::instance()->jsonManager()->schemaForFile(doc->fileName()); if (schema) { diff --git a/src/plugins/qmljstools/qmljsbundleprovider.cpp b/src/plugins/qmljstools/qmljsbundleprovider.cpp index 390618c2bbb..a938e9d18cb 100644 --- a/src/plugins/qmljstools/qmljsbundleprovider.cpp +++ b/src/plugins/qmljstools/qmljsbundleprovider.cpp @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -39,10 +40,10 @@ namespace QmlJSTools { namespace { -typedef QmlJS::Document::Language Language; typedef QmlJS::QmlBundle QmlBundle; typedef QmlJS::QmlLanguageBundles QmlLanguageBundles; } +using namespace QmlJS; /*! \class QmlJSEditor::BasicBundleProvider @@ -106,27 +107,26 @@ QmlBundle BasicBundleProvider::defaultQmlprojectBundle() } void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit - , QmlJS::QmlLanguageBundles &bundles + , QmlLanguageBundles &bundles , const QHash &replacements) { - typedef QmlJS::Document Doc; QHash myReplacements = replacements; - bundles.mergeBundleForLanguage(Doc::QmlQbsLanguage, defaultQbsBundle()); - bundles.mergeBundleForLanguage(Doc::QmlTypeInfoLanguage, defaultQmltypesBundle()); - bundles.mergeBundleForLanguage(Doc::QmlProjectLanguage, defaultQmlprojectBundle()); + bundles.mergeBundleForLanguage(Language::QmlQbs, defaultQbsBundle()); + bundles.mergeBundleForLanguage(Language::QmlTypeInfo, defaultQmltypesBundle()); + bundles.mergeBundleForLanguage(Language::QmlProject, defaultQmlprojectBundle()); QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(kit); if (!qtVersion) { QmlBundle b1(defaultQt4QtQuick1Bundle()); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, b1); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick1Language, b1); + bundles.mergeBundleForLanguage(Language::Qml, b1); + bundles.mergeBundleForLanguage(Language::QmlQtQuick1, b1); QmlBundle b11(defaultQt5QtQuick1Bundle()); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, b11); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick1Language, b11); + bundles.mergeBundleForLanguage(Language::Qml, b11); + bundles.mergeBundleForLanguage(Language::QmlQtQuick1, b11); QmlBundle b2(defaultQt5QtQuick2Bundle()); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, b2); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick2Language, b2); + bundles.mergeBundleForLanguage(Language::Qml, b2); + bundles.mergeBundleForLanguage(Language::QmlQtQuick2, b2); return; } QString qtImportsPath = qtVersion->qmakeProperty("QT_INSTALL_IMPORTS"); @@ -150,15 +150,15 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit qtQuick1Bundle.merge(bAtt); } if (!qtQuick1Bundle.supportedImports().contains(QLatin1String("QtQuick 1."), - QmlJS::PersistentTrie::Partial)) { + PersistentTrie::Partial)) { if (qtVersion->qtVersion().majorVersion == 4) qtQuick1Bundle.merge(defaultQt4QtQuick1Bundle()); else if (qtVersion->qtVersion().majorVersion > 4) qtQuick1Bundle.merge(defaultQt5QtQuick1Bundle()); } qtQuick1Bundle.replaceVars(myReplacements); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, qtQuick1Bundle); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick1Language, qtQuick1Bundle); + bundles.mergeBundleForLanguage(Language::Qml, qtQuick1Bundle); + bundles.mergeBundleForLanguage(Language::QmlQtQuick1, qtQuick1Bundle); } if (features.contains(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2))) { myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtQmlPath); @@ -175,12 +175,12 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit qtQuick2Bundle.merge(bAtt); } if (!qtQuick2Bundle.supportedImports().contains(QLatin1String("QtQuick 2."), - QmlJS::PersistentTrie::Partial)) { + PersistentTrie::Partial)) { qtQuick2Bundle.merge(defaultQt5QtQuick2Bundle()); } qtQuick2Bundle.replaceVars(myReplacements); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, qtQuick2Bundle); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick2Language, qtQuick2Bundle); + bundles.mergeBundleForLanguage(Language::Qml, qtQuick2Bundle); + bundles.mergeBundleForLanguage(Language::QmlQtQuick2, qtQuick2Bundle); } } diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index a0bdef083c6..24134e4da08 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -178,7 +178,7 @@ static void mergeSuffixes(QStringList &l1, const QStringList &l2) l1 = l2; } -QmlJS::Document::Language QmlJSTools::languageOfFile(const QString &fileName) +QmlJS::Language::Enum QmlJSTools::languageOfFile(const QString &fileName) { QStringList jsSuffixes(QLatin1String("js")); QStringList qmlSuffixes(QLatin1String("qml")); @@ -202,14 +202,14 @@ QmlJS::Document::Language QmlJSTools::languageOfFile(const QString &fileName) const QFileInfo info(fileName); const QString fileSuffix = info.suffix(); if (jsSuffixes.contains(fileSuffix)) - return QmlJS::Document::JavaScriptLanguage; + return QmlJS::Language::JavaScript; if (qbsSuffixes.contains(fileSuffix)) - return QmlJS::Document::QmlQbsLanguage; + return QmlJS::Language::QmlQbs; if (qmlSuffixes.contains(fileSuffix) || qmlProjectSuffixes.contains(fileSuffix)) - return QmlJS::Document::QmlLanguage; + return QmlJS::Language::Qml; if (jsonSuffixes.contains(fileSuffix)) - return QmlJS::Document::JsonLanguage; - return QmlJS::Document::UnknownLanguage; + return QmlJS::Language::Json; + return QmlJS::Language::Unknown; } QStringList QmlJSTools::qmlAndJsGlobPatterns() @@ -666,23 +666,23 @@ static void findNewFileImports(const Document::Ptr &doc, const Snapshot &snapsho // scan files and directories that are explicitly imported foreach (const ImportInfo &import, doc->bind()->imports()) { const QString &importName = import.path(); - if (import.type() == ImportInfo::FileImport) { + if (import.type() == ImportType::File) { if (! snapshot.document(importName)) *importedFiles += importName; - } else if (import.type() == ImportInfo::DirectoryImport) { + } else if (import.type() == ImportType::Directory) { if (snapshot.documentsInDirectory(importName).isEmpty()) { if (! scannedPaths->contains(importName)) { *importedFiles += qmlFilesInDirectory(importName); scannedPaths->insert(importName); } } - } else if (import.type() == ImportInfo::QrcFileImport) { + } else if (import.type() == ImportType::QrcFile) { QStringList importPaths = ModelManagerInterface::instance()->filesAtQrcPath(importName); foreach (const QString &importPath, importPaths) { if (! snapshot.document(importPath)) *importedFiles += importPath; } - } else if (import.type() == ImportInfo::QrcDirectoryImport) { + } else if (import.type() == ImportType::QrcDirectory) { QMapIterator dirContents(ModelManagerInterface::instance()->filesInQrcPath(importName)); while (dirContents.hasNext()) { dirContents.next(); @@ -792,13 +792,13 @@ static void findNewLibraryImports(const Document::Ptr &doc, const Snapshot &snap // scan dir and lib imports const QStringList importPaths = modelManager->importPaths(); foreach (const ImportInfo &import, doc->bind()->imports()) { - if (import.type() == ImportInfo::DirectoryImport) { + if (import.type() == ImportType::Directory) { const QString targetPath = import.path(); findNewQmlLibraryInPath(targetPath, snapshot, modelManager, importedFiles, scannedPaths, newLibraries); } - if (import.type() == ImportInfo::LibraryImport) { + if (import.type() == ImportType::Library) { if (!import.version().isValid()) continue; foreach (const QString &importPath, importPaths) { @@ -829,8 +829,8 @@ void ModelManager::parse(QFutureInterface &future, const QString fileName = files.at(i); - Document::Language language = languageOfFile(fileName); - if (language == Document::UnknownLanguage) { + Language::Enum language = languageOfFile(fileName); + if (language == Language::Unknown) { if (fileName.endsWith(QLatin1String(".qrc"))) modelManager->updateQrcFile(fileName); continue; @@ -951,7 +951,7 @@ void ModelManager::updateImportPaths() while (it.hasNext()) { it.next(); activeBundles.mergeLanguageBundles(it.value().activeBundle); - foreach (Document::Language l, it.value().activeBundle.languages()) { + foreach (Language::Enum l, it.value().activeBundle.languages()) { foreach (const QString &path, it.value().activeBundle.bundleForLanguage(l) .searchPaths().stringList()) { const QString canonicalPath = QFileInfo(path).canonicalFilePath(); @@ -964,7 +964,7 @@ void ModelManager::updateImportPaths() while (it.hasNext()) { it.next(); extendedBundles.mergeLanguageBundles(it.value().extendedBundle); - foreach (Document::Language l, it.value().extendedBundle.languages()) { + foreach (Language::Enum l, it.value().extendedBundle.languages()) { foreach (const QString &path, it.value().extendedBundle.bundleForLanguage(l) .searchPaths().stringList()) { const QString canonicalPath = QFileInfo(path).canonicalFilePath(); diff --git a/src/plugins/qmljstools/qmljsmodelmanager.h b/src/plugins/qmljstools/qmljsmodelmanager.h index 9f6d2a35f36..f9f4121e39a 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.h +++ b/src/plugins/qmljstools/qmljsmodelmanager.h @@ -58,7 +58,7 @@ class QrcParser; namespace QmlJSTools { -QMLJSTOOLS_EXPORT QmlJS::Document::Language languageOfFile(const QString &fileName); +QMLJSTOOLS_EXPORT QmlJS::Language::Enum languageOfFile(const QString &fileName); QMLJSTOOLS_EXPORT QStringList qmlAndJsGlobPatterns(); namespace Internal { diff --git a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp index 827a3fddde8..06381b313b8 100644 --- a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp +++ b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp @@ -123,7 +123,7 @@ QmlJSRefactoringFile::QmlJSRefactoringFile(const QString &fileName, const QShare : RefactoringFile(fileName, data) { // the RefactoringFile is invalid if its not for a file with qml or js code - if (languageOfFile(fileName) == Document::UnknownLanguage) + if (languageOfFile(fileName) == Language::Unknown) m_fileName.clear(); } From eed81ea87143e7e06506473dbf71dbf19786c8c3 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Thu, 17 Oct 2013 17:16:29 +0200 Subject: [PATCH 044/104] qmljs: simple tracking of used modules Change-Id: Idc977a8c5a6c6caa3749599cb6f4a236046f53d7 Reviewed-by: Fawzi Mohamed --- src/libs/qmljs/qmljsinterpreter.cpp | 9 ++++++++- src/libs/qmljs/qmljsinterpreter.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index feb6fa65057..bb36c1b25c1 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -2181,9 +2181,14 @@ UiImport *ImportInfo::ast() const } Import::Import() - : object(0) + : object(0), valid(false), used(false) {} +Import::Import(const Import &other) + : object(other.object), info(other.info), libraryPath(other.libraryPath), + valid(other.valid), used(false) +{ } + TypeScope::TypeScope(const Imports *imports, ValueOwner *valueOwner) : ObjectValue(valueOwner) , _imports(imports) @@ -2208,6 +2213,7 @@ const Value *TypeScope::lookupMember(const QString &name, const Context *context if (info.as() == name) { if (foundInObject) *foundInObject = this; + i.used = true; return import; } continue; @@ -2264,6 +2270,7 @@ const Value *JSImportScope::lookupMember(const QString &name, const Context *, if (info.as() == name) { if (foundInObject) *foundInObject = this; + i.used = true; return import; } } diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 936edced6e6..cf8d22a3846 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -40,6 +40,7 @@ #include #include #include +#include namespace QmlJS { @@ -906,6 +907,7 @@ private: class QMLJS_EXPORT Import { public: Import(); + Import(const Import &other); // const! ObjectValue *object; @@ -914,6 +916,7 @@ public: QString libraryPath; // whether the import succeeded bool valid; + mutable bool used; }; class Imports; From 719c87e5990f8b45f406fe2c3bd6309e6c1bcfc9 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Oct 2013 14:43:43 +0200 Subject: [PATCH 045/104] Remove setting of Qt::AA_DontCreateNativeWidgetSiblings . Change qtbase 72a7882cec07a9ad187c9e1772fb08f59a4b9519 avoids unnecessary creation of native siblings in Qt 5. Task-number: QTBUG-34138 Change-Id: Ie6b847f57a40d56028c771628f31acb182179066 Reviewed-by: Gunnar Sletta --- src/app/main.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 6393458d31b..87d988313f5 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -313,11 +313,6 @@ int main(int argc, char **argv) #if QT_VERSION >= 0x050100 app.setAttribute(Qt::AA_UseHighDpiPixmaps); - if (Utils::HostOsInfo::isWindowsHost() || Utils::HostOsInfo::isMacHost()) { - // Prevent native windows from being created for the sibling widgets of the welcome screen. - // Causes flicker on Linux, though. - app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); - } #endif // Manually determine -settingspath command line option From 03dbb665b781e0dd7d4e5228ebd71808745e90f3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 23 Oct 2013 08:38:21 +0200 Subject: [PATCH 046/104] Fix build on windows in debuggerkitinformation. Change-Id: I45137f08147d073f8c111c94a6303a90085183ef Reviewed-by: Orgad Shaneh --- src/plugins/debugger/debuggerkitinformation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp index 667e61b07d0..30ca4f2c230 100644 --- a/src/plugins/debugger/debuggerkitinformation.cpp +++ b/src/plugins/debugger/debuggerkitinformation.cpp @@ -206,7 +206,7 @@ static DebuggerItem::MatchLevel matchSingle(const Abi &debuggerAbi, const Abi &t return DebuggerItem::DoesNotMatch; } - if (debuggerAbi.wordWidth() == 64 and targetAbi.wordWidth() == 32) + if (debuggerAbi.wordWidth() == 64 && targetAbi.wordWidth() == 32) return DebuggerItem::MatchesSomewhat; if (debuggerAbi.wordWidth() != 0 && debuggerAbi.wordWidth() != targetAbi.wordWidth()) return DebuggerItem::DoesNotMatch; From d597d79515d596abf5812b5ff6d735835c43c3e5 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 23 Oct 2013 08:45:33 +0200 Subject: [PATCH 047/104] CdbExt: version bump Change-Id: I3912bb9da93acd4474a15a6f6a8736e547e84ea1 Reviewed-by: Friedemann Kleint --- src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp b/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp index f3cc7bbedf9..b43a9c7b3a4 100644 --- a/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp +++ b/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp @@ -275,7 +275,7 @@ extern "C" HRESULT CALLBACK pid(CIDebugClient *client, PCSTR args) int token; commandTokens(args, &token); - dprintf("Qt Creator CDB extension version 2.8 %d bit built %s.\n", + dprintf("Qt Creator CDB extension version 3.0 %d bit built %s.\n", sizeof(void *) * 8, __DATE__); if (const ULONG pid = currentProcessId(client)) ExtensionContext::instance().report('R', token, 0, "pid", "%u", pid); From d60f87d92584c66c8ec78d98acf5f73b576f0f88 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 10:13:39 +0200 Subject: [PATCH 048/104] QmlDesigner.PropertyEditor: adding color constants Change-Id: Iced7b432da397485015a4ea4a3e742f0ab475b6a Reviewed-by: Thomas Hartmann --- .../HelperWidgets/Constants.js | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js new file mode 100644 index 00000000000..a673afe5b08 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js @@ -0,0 +1,36 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +.pragma library + +var colorsDisabledText = "gray" +var colorsDefaultText = "white" +var colorsBoldText = "#dedede" +var colorsChangedBaseText = "#9999ff" +var colorsChangedStateText = "#99ccff" From 4a8a33179aca80cd351ce711fd1600fba6c7a0c6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 10:15:21 +0200 Subject: [PATCH 049/104] QmlDesigner.PropertyEditor: adding functionality to ComboBox * Adding the ExtendedFunctionButton * Adding blue highlight for modified values Change-Id: I2035ebba61b27ec5c75f02abc3a435709cc69f43 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/ComboBox.qml | 48 ++++++++++++++++++- .../HelperWidgets/CustomComboBoxStyle.qml | 2 +- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml index 5d3cd4bf342..a2d8f56a173 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml @@ -30,20 +30,56 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 as Controls import QtQuick.Controls.Styles 1.1 +import "Constants.js" as Constants Controls.ComboBox { id: comboBox property variant backendValue + property color textColor: Constants.colorsDefaultText + + onBackendValueChanged: { + innerObject.evaluate(); + } + QtObject { - property string valueFromBackend: lineEdit.backendValue.valueToString; + id: innerObject + + property bool baseStateFlag: isBaseState; + property string valueFromBackend: comboBox.backendValue.value; onValueFromBackendChanged: { - lineEdit.currentIndex = comboBox.find(valueFromBackend); + comboBox.currentIndex = comboBox.find( comboBox.backendValue.valueToString); + evaluate(); + } + + onBaseStateFlagChanged: { + evaluate(); + } + + function evaluate() { + if (backendValue === undefined) + return; + + if (baseStateFlag) { + if (backendValue.isInModel) + comboBox.textColor = Constants.colorsChangedBaseText + else + comboBox.textColor = Constants.colorsDefaultText + } else { + if (backendValue.isInSubState) + comboBox.textColor = Constants.colorsChangedStateText + else + comboBox.textColor = Constants.colorsDefaultText + } + } } onCurrentTextChanged: { + if (backendValue === undefined) + return; + if (backendValue.value !== currentText) backendValue.value = currentText; } @@ -57,5 +93,13 @@ Controls.ComboBox { } style: CustomComboBoxStyle { + textColor: comboBox.textColor + } + + ExtendedFunctionButton { + x: 2 + y: 4 + backendValue: comboBox.backendValue + visible: comboBox.enabled } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml index d522f8bfed0..4724fe7c51d 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml @@ -82,7 +82,7 @@ ComboBoxStyle { Text { id: textitem anchors.left: parent.left - anchors.leftMargin: 4 + anchors.leftMargin: 14 anchors.verticalCenter: parent.verticalCenter text: control.currentText renderType: Text.NativeRendering From d510167e4a65b99acec15d3b1b25af7718c99e4e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 10:15:39 +0200 Subject: [PATCH 050/104] QmlDesigner.PropertyEditor: adding functionality to LineEdit * Adding the ExtendedFunctionButton * Adding blue highlight for modified values Change-Id: I44f7d3bfbf58f0fe60321b5c696d3e3ba9c6578f Reviewed-by: Thomas Hartmann --- .../HelperWidgets/LineEdit.qml | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml index 8e75dbf0b3f..5777afaede4 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml @@ -31,6 +31,7 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 as Controls import QtQuick.Controls.Styles 1.0 +import "Constants.js" as Constants Controls.TextField { @@ -40,17 +41,49 @@ Controls.TextField { property color highlightColor: "orange" property color textColor: "#eee" -// ExtendedFunctionButton { -// x: 2 -// y: 2 -// backendValue: checkBox.backendValue -// visible: spinBox.enabled -// } + ExtendedFunctionButton { + x: 2 + y: 4 + backendValue: lineEdit.backendValue + visible: lineEdit.enabled + } + + onBackendValueChanged: { + innerObject.evaluate(); + } QtObject { - property string valueFromBackend: lineEdit.backendValue.valueToString; + id: innerObject + + property string valueFromBackend: lineEdit.backendValue.value; + property bool baseStateFlag: isBaseState; + onValueFromBackendChanged: { lineEdit.text = valueFromBackend; + evaluate(); + } + + onBaseStateFlagChanged: { + evaluate(); + } + + function evaluate() { + print("evaluate") + if (lineEdit.backendValue === undefined) + return; + + if (baseStateFlag) { + if (lineEdit.backendValue.isInModel) + lineEdit.textColor = Constants.colorsChangedBaseText + else + lineEdit.textColor = Constants.colorsDefaultText + } else { + if (lineEdit.backendValue.isInSubState) + lineEdit.textColor = Constants.colorsChangedStateText + else + lineEdit.textColor = Constants.colorsDefaultText + } + } } @@ -74,6 +107,7 @@ Controls.TextField { textColor: lineEdit.textColor padding.top: 3 padding.bottom: 1 + padding.left: 16 background: Rectangle { implicitWidth: 100 implicitHeight: 23 From 62b0f4372bbc1f83a1a87b2c75e038400e28ad04 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 10:16:01 +0200 Subject: [PATCH 051/104] QmlDesigner.PropertyEditor: adding functionality to SpinBox * Adding blue highlight for modified values Change-Id: I8d68dc2e23a7c1c3d2055a5be13d7f57e94860ed Reviewed-by: Thomas Hartmann --- .../HelperWidgets/SpinBox.qml | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml index 6e5f6c06db5..75eea4c42f7 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml @@ -30,12 +30,13 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 as Controls import QtQuick.Controls.Styles 1.1 +import "Constants.js" as Constants Controls.SpinBox { id: spinBox property color borderColor: "#222" property color highlightColor: "orange" - property color textColor: "#eee" + property color textColor: Constants.colorsDefaultText property variant backendValue; prefix: " " @@ -47,10 +48,41 @@ Controls.SpinBox { visible: spinBox.enabled } + onBackendValueChanged: { + innerObject.evaluate(); + } + QtObject { + id: innerObject + property int valueFromBackend: spinBox.backendValue.value; + property bool baseStateFlag: isBaseState; + onValueFromBackendChanged: { spinBox.value = valueFromBackend; + evaluate(); + } + + onBaseStateFlagChanged: { + evaluate(); + } + + function evaluate() { + if (backendValue === undefined) + return; + + if (baseStateFlag) { + if (backendValue.isInModel) + textColor = Constants.colorsChangedBaseText + else + textColor = Constants.colorsDefaultText + } else { + if (backendValue.isInSubState) + textColor = Constants.colorsChangedStateText + else + textColor = Constants.colorsDefaultText + } + } } From 067c789c09dba92b05b01347589f205ba1c8eccc Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 10:19:22 +0200 Subject: [PATCH 052/104] QmlDesigner.PropertyEditor: adjusting combobox sizes Using Layout.fillWidth: true. Task-Number: QTCREATORBUG-10413 Change-Id: Ia2771fa6e8a4cbb3acc3c2893fccbcb23fa78f6f Reviewed-by: Thomas Hartmann --- .../HelperWidgets/CustomComboBoxStyle.qml | 2 +- .../HelperWidgets/FlickableSection.qml | 10 +++------- .../HelperWidgets/FontSection.qml | 2 ++ .../QtQuick/BorderImageSpecifics.qml | 9 ++------- .../QtQuick/FlowSpecifics.qml | 4 +--- .../QtQuick/GeometrySection.qml | 8 ++++++-- .../QtQuick/GridSpecifics.qml | 9 ++------- .../QtQuick/GridViewSpecifics.qml | 20 ++++--------------- .../QtQuick/ImageSpecifics.qml | 1 + .../QtQuick/ListViewSpecifics.qml | 4 +--- .../QtQuick/RowSpecifics.qml | 5 +---- 11 files changed, 24 insertions(+), 50 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml index 4724fe7c51d..185ac8b7ce7 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml @@ -37,7 +37,7 @@ ComboBoxStyle { property color textColor: "#eee" background: Item { - implicitWidth: 100 + implicitWidth: 120 implicitHeight: 25 RoundedPanel { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml index 90aa27dff56..4f150e2afa9 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml @@ -90,10 +90,9 @@ Section { ComboBox { backendValue: backendValues.flickableDirection model: ["AutoFlickDirection", "HorizontalFlick", "VerticalFlick", "HorizontalAndVerticalFlick"] + Layout.fillWidth: true } - ExpandingSpacer { - } } Label { @@ -105,10 +104,9 @@ Section { ComboBox { backendValue: backendValues.boundsBehavior model: ["StopAtBounds", "DragOverBounds", "DragAndOvershootBounds"] + Layout.fillWidth: true } - ExpandingSpacer { - } } Label { @@ -120,9 +118,7 @@ Section { ComboBox { backendValue: backendValues.boundsBehavior model: ["StopAtBounds", "DragOverBounds", "DragAndOvershootBounds"] - } - - ExpandingSpacer { + Layout.fillWidth: true } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml index fd7757d00ec..5373026463b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml @@ -120,6 +120,8 @@ Section { } + Layout.fillWidth: true + style: CustomComboBoxStyle { } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml index f87ec5d9ded..cc3dd56d998 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml @@ -136,10 +136,7 @@ Column { model: ["Stretch", "Repeat", "Round"] backendValue: backendValues.horizontalTileMode implicitWidth: 180 - } - - ExpandingSpacer { - + Layout.fillWidth: true } } @@ -152,11 +149,9 @@ Column { model: ["Stretch", "Repeat", "Round"] backendValue: backendValues.verticalTileMode implicitWidth: 180 + Layout.fillWidth: true } - ExpandingSpacer { - - } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/FlowSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/FlowSpecifics.qml index 57f640cfc02..995874e73d7 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/FlowSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/FlowSpecifics.qml @@ -64,11 +64,9 @@ Column { ComboBox { model: ["LeftToRight", "RightToLeft"] backendValue: backendValues.layoutDirection + Layout.fillWidth: true } - ExpandingSpacer { - - } } Label { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml index d174be3bdc9..31da1cec599 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml @@ -78,7 +78,9 @@ Section { minimumValue: -0xffff decimals: 0 } - ExpandingSpacer{} + ExpandingSpacer { + + } } Label { text: qsTr("Size") @@ -110,7 +112,9 @@ Section { minimumValue: -0xffff decimals: 0 } - ExpandingSpacer{} + ExpandingSpacer { + + } } } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridSpecifics.qml index c4a13f597f9..c22a26ac890 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridSpecifics.qml @@ -83,10 +83,7 @@ Column { ComboBox { model: ["LeftToRight", "TopToBottom"] backendValue: backendValues.flow - } - - ExpandingSpacer { - + Layout.fillWidth: true } } @@ -98,11 +95,9 @@ Column { ComboBox { model: ["LeftToRight", "RightToLeft"] backendValue: backendValues.layoutDirection + Layout.fillWidth: true } - ExpandingSpacer { - - } } Label { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridViewSpecifics.qml index cf13bf93bdd..69b5f7a9ba9 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridViewSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GridViewSpecifics.qml @@ -109,10 +109,7 @@ Column { ComboBox { model: ["LeftToRight", "TopToBottom"] backendValue: backendValues.flow - } - - ExpandingSpacer { - + Layout.fillWidth: true } } @@ -139,10 +136,7 @@ Column { ComboBox { model: ["LeftToRight", "RightToLeft"] backendValue: backendValues.layoutDirection - } - - ExpandingSpacer { - + Layout.fillWidth: true } } @@ -155,10 +149,7 @@ Column { ComboBox { model: ["NoSnap", "SnapToRow", "SnapOneRow"] backendValue: backendValues.snapMode - } - - ExpandingSpacer { - + Layout.fillWidth: true } } @@ -181,10 +172,7 @@ Column { ComboBox { model: ["NoHighlightRange", "ApplyRange", "StrictlyEnforceRange"] backendValue: backendValues.highlightRangeMode - } - - ExpandingSpacer { - + Layout.fillWidth: true } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ImageSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ImageSpecifics.qml index 3fba1ff36b6..f7dd4a70339 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ImageSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ImageSpecifics.qml @@ -64,6 +64,7 @@ Column { model: ["Stretch", "PreserveAspectFit", "PreserveAspectCrop", "Tile", "TileVertically", "TileHorizontally"] backendValue: backendValues.fillMode implicitWidth: 180 + Layout.fillWidth: true } ExpandingSpacer { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ListViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ListViewSpecifics.qml index c72364f0dfd..ed60426cc01 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ListViewSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ListViewSpecifics.qml @@ -89,11 +89,9 @@ Column { ComboBox { model: ["Horizontal", "Vertical"] backendValue: backendValues.orientation + Layout.fillWidth: true } - ExpandingSpacer { - - } } Label { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/RowSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/RowSpecifics.qml index e26f165a43f..a65994eeea2 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/RowSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/RowSpecifics.qml @@ -49,10 +49,7 @@ Column { ComboBox { model: ["LeftToRight", "RightToLeft"] backendValue: backendValues.layoutDirection - } - - ExpandingSpacer { - + Layout.fillWidth: true } } From 2448cab1c401f8a2c63f24b99dce95a066f007ef Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 10:19:53 +0200 Subject: [PATCH 053/104] QmlDesigner.PropertyEditor: fully qualify property Change-Id: I2a2a6f1908fa96bdaca4e3128bf9bfe54ab67d53 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml index 5bf7df9b041..737b49afe71 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml @@ -63,7 +63,7 @@ Item { } RoundedPanel { - roundLeft: isFirst() && roundLeftButton + roundLeft: isFirst() && buttonRowButton.roundLeftButton roundRight: isLast() anchors.fill: parent From 1a5c7d8ef58660da8125ee78014d6e05fd55c1a9 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 22 Oct 2013 11:24:29 +0200 Subject: [PATCH 054/104] C++: Safe accessing of elements of TranslationUnit::_tokens Until now std::vector::at() was used to access the elements. This is handy for debugging since an exception is thrown for invalid indices, but it does not stop Qt Creator from crashing because exceptions are not caught. This is especially a problem for the parser, which has to look ahead via LA(n), which accesses TranslationUnit::_tokens. With this patch, explicit bounds checking is done before accessing the elements and thus calls to std::vector::at() // bounds checking, throwing out_of_range were replaced by calls to std::vector::operator[]() // no bounds checking, not throwing out_of_range Measuring the parse time for the Qt Creator project shows that there is no slowdown. In both cases, with and without the patch, about 15s are needed on the authors machine. Task-number: QTCREATORBUG-10453 Change-Id: I32b12a526ff7199bcadfc21a3deb5354063a3e3b Reviewed-by: Erik Verbruggen --- .../3rdparty/cplusplus/TranslationUnit.cpp | 46 +++++++++++-------- src/libs/3rdparty/cplusplus/TranslationUnit.h | 11 +++-- tests/auto/cplusplus/ast/tst_ast.cpp | 9 ++++ 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp index 53725dc1a0c..040ddc55a49 100644 --- a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp +++ b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp @@ -40,6 +40,8 @@ using namespace CPlusPlus; +const Token TranslationUnit::nullToken; + TranslationUnit::TranslationUnit(Control *control, const StringLiteral *fileId) : _control(control), _fileId(fileId), @@ -58,9 +60,7 @@ TranslationUnit::TranslationUnit(Control *control, const StringLiteral *fileId) TranslationUnit::~TranslationUnit() { (void) _control->switchTranslationUnit(_previousTranslationUnit); - delete _tokens; - delete _comments; - delete _pool; + release(); } Control *TranslationUnit::control() const @@ -95,7 +95,7 @@ const char *TranslationUnit::spell(unsigned index) const if (! index) return 0; - return _tokens->at(index).spell(); + return tokenAt(index).spell(); } unsigned TranslationUnit::commentCount() const @@ -105,19 +105,19 @@ const Token &TranslationUnit::commentAt(unsigned index) const { return _comments->at(index); } const Identifier *TranslationUnit::identifier(unsigned index) const -{ return _tokens->at(index).identifier; } +{ return tokenAt(index).identifier; } const Literal *TranslationUnit::literal(unsigned index) const -{ return _tokens->at(index).literal; } +{ return tokenAt(index).literal; } const StringLiteral *TranslationUnit::stringLiteral(unsigned index) const -{ return _tokens->at(index).string; } +{ return tokenAt(index).string; } const NumericLiteral *TranslationUnit::numericLiteral(unsigned index) const -{ return _tokens->at(index).number; } +{ return tokenAt(index).number; } unsigned TranslationUnit::matchingBrace(unsigned index) const -{ return _tokens->at(index).close_brace; } +{ return tokenAt(index).close_brace; } MemoryPool *TranslationUnit::memoryPool() const { return _pool; } @@ -143,7 +143,7 @@ void TranslationUnit::tokenize() lex.setScanCommentTokens(true); std::stack braces; - _tokens->push_back(Token()); // the first token needs to be invalid! + _tokens->push_back(nullToken); // the first token needs to be invalid! pushLineOffset(0); pushPreprocessorLine(0, 1, fileId()); @@ -250,7 +250,8 @@ void TranslationUnit::tokenize() } else if (tk.f.kind == T_RBRACE && ! braces.empty()) { const unsigned open_brace_index = braces.top(); braces.pop(); - (*_tokens)[open_brace_index].close_brace = unsigned(_tokens->size()); + if (open_brace_index < tokenCount()) + (*_tokens)[open_brace_index].close_brace = unsigned(_tokens->size()); } else if (tk.isComment()) { _comments->push_back(tk); continue; // comments are not in the regular token stream @@ -507,13 +508,15 @@ void TranslationUnit::fatal(unsigned index, const char *format, ...) unsigned TranslationUnit::findPreviousLineOffset(unsigned tokenIndex) const { - unsigned lineOffset = _lineOffsets[findLineNumber(_tokens->at(tokenIndex).offset)]; + unsigned lineOffset = _lineOffsets[findLineNumber(tokenAt(tokenIndex).offset)]; return lineOffset; } bool TranslationUnit::maybeSplitGreaterGreaterToken(unsigned tokenIndex) { - Token &tok = _tokens->at(tokenIndex); + if (tokenIndex >= tokenCount()) + return false; + Token &tok = (*_tokens)[tokenIndex]; if (tok.kind() != T_GREATER_GREATER) return false; @@ -538,9 +541,17 @@ bool TranslationUnit::maybeSplitGreaterGreaterToken(unsigned tokenIndex) return true; } +void TranslationUnit::releaseTokensAndComments() +{ + delete _tokens; + _tokens = 0; + delete _comments; + _comments = 0; +} + void TranslationUnit::showErrorLine(unsigned index, unsigned column, FILE *out) { - unsigned lineOffset = _lineOffsets[findLineNumber(_tokens->at(index).offset)]; + unsigned lineOffset = _lineOffsets[findLineNumber(tokenAt(index).offset)]; for (const char *cp = _firstSourceChar + lineOffset + 1; *cp && *cp != '\n'; ++cp) { fputc(*cp, out); } @@ -567,10 +578,5 @@ void TranslationUnit::resetAST() void TranslationUnit::release() { resetAST(); - delete _tokens; - _tokens = 0; - delete _comments; - _comments = 0; + releaseTokensAndComments(); } - - diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.h b/src/libs/3rdparty/cplusplus/TranslationUnit.h index 885820732e3..81df75f2aa2 100644 --- a/src/libs/3rdparty/cplusplus/TranslationUnit.h +++ b/src/libs/3rdparty/cplusplus/TranslationUnit.h @@ -63,9 +63,11 @@ public: void setSource(const char *source, unsigned size); - unsigned tokenCount() const { return unsigned(_tokens->size()); } - const Token &tokenAt(unsigned index) const { return _tokens->at(index); } - int tokenKind(unsigned index) const { return _tokens->at(index).f.kind; } + unsigned tokenCount() const { return _tokens ? unsigned(_tokens->size()) : unsigned(0); } + const Token &tokenAt(unsigned index) const + { return _tokens && index < tokenCount() ? (*_tokens)[index] : nullToken; } + + int tokenKind(unsigned index) const { return tokenAt(index).f.kind; } const char *spell(unsigned index) const; unsigned commentCount() const; @@ -167,11 +169,14 @@ private: { return offset < other.offset; } }; + void releaseTokensAndComments(); unsigned findLineNumber(unsigned offset) const; unsigned findColumnNumber(unsigned offset, unsigned lineNumber) const; PPLine findPreprocessorLine(unsigned offset) const; void showErrorLine(unsigned index, unsigned column, FILE *out); + static const Token nullToken; + Control *_control; const StringLiteral *_fileId; const char *_firstSourceChar; diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 968d80e1104..449c8db6e53 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -180,6 +180,8 @@ private slots: // Qt "keywords" void q_enum_1(); + + void incomplete_ast(); }; void tst_AST::gcc_attributes_1() @@ -1723,6 +1725,13 @@ void tst_AST::q_enum_1() QCOMPARE(unit->spell(e->identifier_token), "e"); } +void tst_AST::incomplete_ast() +{ + QSharedPointer unit(parseStatement("class A { virtual void a() =\n")); + AST *ast = unit->ast(); + QVERIFY(ast); +} + void tst_AST::initTestCase() { control.setDiagnosticClient(&diag); From c06004b4ab5b055dd5dc19be6f7bed3bace42205 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Sat, 19 Oct 2013 15:57:12 +0200 Subject: [PATCH 055/104] CppEditor: Extract VirtualFunctionProposalItem into separate files ...for tests. Change-Id: Idc408e30ee0cdc22610e3037f94de5f7d246accf Reviewed-by: Erik Verbruggen --- src/plugins/cppeditor/cppeditor.pro | 2 + src/plugins/cppeditor/cppeditor.qbs | 2 + .../cppvirtualfunctionassistprovider.cpp | 29 +--------- .../cppvirtualfunctionproposalitem.cpp | 55 +++++++++++++++++++ .../cppvirtualfunctionproposalitem.h | 53 ++++++++++++++++++ 5 files changed, 114 insertions(+), 27 deletions(-) create mode 100644 src/plugins/cppeditor/cppvirtualfunctionproposalitem.cpp create mode 100644 src/plugins/cppeditor/cppvirtualfunctionproposalitem.h diff --git a/src/plugins/cppeditor/cppeditor.pro b/src/plugins/cppeditor/cppeditor.pro index 64ffa94641f..f7fe4eb9af5 100644 --- a/src/plugins/cppeditor/cppeditor.pro +++ b/src/plugins/cppeditor/cppeditor.pro @@ -25,6 +25,7 @@ HEADERS += cppeditorplugin.h \ cppincludehierarchyitem.h \ cppincludehierarchytreeview.h \ cppvirtualfunctionassistprovider.h \ + cppvirtualfunctionproposalitem.h \ cpppreprocessordialog.h SOURCES += cppeditorplugin.cpp \ @@ -49,6 +50,7 @@ SOURCES += cppeditorplugin.cpp \ cppincludehierarchyitem.cpp \ cppincludehierarchytreeview.cpp \ cppvirtualfunctionassistprovider.cpp \ + cppvirtualfunctionproposalitem.cpp \ cpppreprocessordialog.cpp RESOURCES += cppeditor.qrc diff --git a/src/plugins/cppeditor/cppeditor.qbs b/src/plugins/cppeditor/cppeditor.qbs index d8c465ad557..920b3a834bf 100644 --- a/src/plugins/cppeditor/cppeditor.qbs +++ b/src/plugins/cppeditor/cppeditor.qbs @@ -65,6 +65,8 @@ QtcPlugin { "cpptypehierarchy.h", "cppvirtualfunctionassistprovider.cpp", "cppvirtualfunctionassistprovider.h", + "cppvirtualfunctionproposalitem.cpp", + "cppvirtualfunctionproposalitem.h", ] Group { diff --git a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp index fb9c7621baf..5f445898855 100644 --- a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp +++ b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp @@ -32,6 +32,7 @@ #include "cppeditorconstants.h" #include "cppelementevaluator.h" +#include "cppvirtualfunctionproposalitem.h" #include #include @@ -39,7 +40,6 @@ #include #include -#include #include #include #include @@ -53,31 +53,6 @@ using namespace CPlusPlus; using namespace CppEditor::Internal; using namespace TextEditor; -class VirtualFunctionProposalItem: public BasicProposalItem { -public: - VirtualFunctionProposalItem(const BaseTextEditorWidget::Link &link, bool openInSplit = true) - : m_link(link), m_openInSplit(openInSplit) {} - - void apply(BaseTextEditor * /* editor */, int /* basePosition */) const - { - if (!m_link.hasValidTarget()) - return; - - Core::EditorManager::OpenEditorFlags flags; - if (m_openInSplit) - flags |= Core::EditorManager::OpenInOtherSplit; - Core::EditorManager::openEditorAt(m_link.targetFileName, - m_link.targetLine, - m_link.targetColumn, - CppEditor::Constants::CPPEDITOR_ID, - flags); - } - -private: - BaseTextEditorWidget::Link m_link; - bool m_openInSplit; -}; - /// Activate current item with the same shortcut that is configured for Follow Symbol Under Cursor. /// This is limited to single-key shortcuts without modifiers. class VirtualFunctionProposalWidget : public GenericProposalWidget @@ -166,7 +141,7 @@ public: QTC_ASSERT(!m_snapshot.isEmpty(), return 0); const QList overrides = FunctionHelper::overrides(m_startClass, m_function, - m_snapshot); + m_snapshot); QList items; foreach (Symbol *symbol, overrides) items << itemFromSymbol(symbol, m_function); diff --git a/src/plugins/cppeditor/cppvirtualfunctionproposalitem.cpp b/src/plugins/cppeditor/cppvirtualfunctionproposalitem.cpp new file mode 100644 index 00000000000..91335af54de --- /dev/null +++ b/src/plugins/cppeditor/cppvirtualfunctionproposalitem.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "cppvirtualfunctionproposalitem.h" + +#include "cppeditorconstants.h" + +using namespace CppEditor::Internal; + +VirtualFunctionProposalItem::VirtualFunctionProposalItem( + const TextEditor::BaseTextEditorWidget::Link &link, bool openInSplit) + : m_link(link), m_openInSplit(openInSplit) +{ +} + +void VirtualFunctionProposalItem::apply(TextEditor::BaseTextEditor *, int) const +{ + if (!m_link.hasValidTarget()) + return; + + Core::EditorManager::OpenEditorFlags flags; + if (m_openInSplit) + flags |= Core::EditorManager::OpenInOtherSplit; + Core::EditorManager::openEditorAt(m_link.targetFileName, + m_link.targetLine, + m_link.targetColumn, + CppEditor::Constants::CPPEDITOR_ID, + flags); +} diff --git a/src/plugins/cppeditor/cppvirtualfunctionproposalitem.h b/src/plugins/cppeditor/cppvirtualfunctionproposalitem.h new file mode 100644 index 00000000000..7d09c9db2cd --- /dev/null +++ b/src/plugins/cppeditor/cppvirtualfunctionproposalitem.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef CPPVIRTUALFUNCTIONPROPOSALITEM_H +#define CPPVIRTUALFUNCTIONPROPOSALITEM_H + +#include +#include + +namespace CppEditor { +namespace Internal { + +class VirtualFunctionProposalItem: public TextEditor::BasicProposalItem { +public: + VirtualFunctionProposalItem(const TextEditor::BaseTextEditorWidget::Link &link, + bool openInSplit = true); + void apply(TextEditor::BaseTextEditor * /* editor */, int /* basePosition */) const; + +private: + TextEditor::BaseTextEditorWidget::Link m_link; + bool m_openInSplit; +}; + +} // namespace Internal +} // namespace CppEditor + +#endif // CPPVIRTUALFUNCTIONPROPOSALITEM_H From bfb1f31c4773b856ee951897001b674ff08c623b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 11:16:46 +0200 Subject: [PATCH 056/104] QmlDesigner.PropertyEditor: adjustment to the CustomSpinBoxStyle Moving the controls slighlt to the right. Change-Id: I09a3599d88830367abd9caa6c1b62504c573b813 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/CustomSpinBoxStyle.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml index 1e11856a227..47553f1ad96 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml @@ -47,7 +47,7 @@ SpinBoxStyle { source: "images/up-arrow.png" anchors.centerIn: parent anchors.verticalCenterOffset: 2 - anchors.horizontalCenterOffset: -4 + anchors.horizontalCenterOffset: -2 } } @@ -59,7 +59,7 @@ SpinBoxStyle { source: "images/down-arrow.png" anchors.centerIn: parent anchors.verticalCenterOffset: -1 - anchors.horizontalCenterOffset: -4 + anchors.horizontalCenterOffset: -2 } } From be8cee36bb366256de8111317b3009f1565c7f20 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 11:18:08 +0200 Subject: [PATCH 057/104] QmlDesigner.PropertyEditor: fixing the layout for StandardTextSection Change-Id: Iea1a30b8718ccaafec3388aa793119443b1fe38c Reviewed-by: Thomas Hartmann --- .../HelperWidgets/StandardTextSection.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/StandardTextSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/StandardTextSection.qml index 5ef3f0a8ef0..ac14ca8ef79 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/StandardTextSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/StandardTextSection.qml @@ -51,7 +51,7 @@ Section { property bool showVerticalAlignment: false property bool useLineEdit: true - GridLayout { + SectionLayout { columns: 2 rows: 3 Label { @@ -60,6 +60,7 @@ Section { LineEdit { //visible: useLineEdit backendValue: backendValues.text + Layout.fillWidth: true } Label { From e0ecb9c7979e883d0ede31b8bbdbf652e7780a9d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 11:24:00 +0200 Subject: [PATCH 058/104] QmlDesigner.PropertyEditor: adjusting RoundedPanel Getting rid of the ugly shading Change-Id: Ib2fa68028533ad6af7cbbc29c07ab43a5b5b4f69 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/RoundedPanel.qml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml index 9bfcf12b7b9..fdf294c148b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml @@ -55,11 +55,11 @@ Rectangle { } border.width: roundLeft || roundRight ? 1 : 0 - border.color: roundLeft ? "#7f7f7f" : "#2e2e2e" + border.color: "#2e2e2e" Rectangle { anchors.fill: parent - visible: roundLeft + visible: roundLeft && !roundRight anchors.leftMargin: 10 anchors.topMargin: 1 anchors.bottomMargin: 1 @@ -70,7 +70,7 @@ Rectangle { Rectangle { anchors.fill: parent - visible: roundRight + visible: roundRight && !roundLeft anchors.rightMargin: 10 anchors.topMargin: 1 anchors.bottomMargin: 1 @@ -80,7 +80,7 @@ Rectangle { } Rectangle { - color: "#7f7f7f" + color: "#2e2e2e" anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right @@ -98,4 +98,5 @@ Rectangle { anchors.leftMargin: roundLeft ? 2 : 0 anchors.rightMargin: roundRight ? 2 : 0 } + } From 957f09a2f059516d433679612c82e6680fd44888 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 11:24:56 +0200 Subject: [PATCH 059/104] QmlDesigner.PropertyEditor: adjusting Section Removing the light border so it blends better with the rest. Change-Id: I7fe5647b46fc20b960ae66fef5ade1ce7e4a2311 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/Section.qml | 2 +- .../propertyEditorQmlSources/HelperWidgets/TabView.qml | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Section.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Section.qml index 2858d6c6151..c59fe14ad98 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Section.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Section.qml @@ -69,7 +69,7 @@ Item { } Rectangle { - color: "#666" + color:"#333" width: parent.width height: 1 } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/TabView.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/TabView.qml index 27a474e94e1..9a5bdbdb9cd 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/TabView.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/TabView.qml @@ -63,12 +63,6 @@ Controls.TabView { width: parent.width height: 1 } - Rectangle { - color: "#333" - width: parent.width - height: 1 - anchors.bottom: parent.bottom - } } } } From f18eb6727601756a7dc2e47f676ae732ddb42208 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Tue, 22 Oct 2013 16:36:19 +0200 Subject: [PATCH 060/104] Generic Project: Change order of includes Task-number: QTCREATORBUG-10198 Change-Id: Iff86f5ea19a4e4730b1bb1d21381d689369efea1 Reviewed-by: Tobias Hunger --- src/plugins/genericprojectmanager/genericproject.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 784f425235e..3a8af924bb9 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -254,6 +254,8 @@ void GenericProject::refresh(RefreshOptions options) part->displayName = displayName(); part->projectFile = projectFilePath(); + part->includePaths += allIncludePaths(); + Kit *k = activeTarget() ? activeTarget()->kit() : KitManager::defaultKit(); if (ToolChain *tc = ToolChainKitInformation::toolChain(k)) { QStringList cxxflags; // FIXME: Can we do better? @@ -262,7 +264,6 @@ void GenericProject::refresh(RefreshOptions options) } part->cxxVersion = CppTools::ProjectPart::CXX11; // assume C++11 - part->includePaths += allIncludePaths(); part->defines += m_defines; // ### add _defines. From 26b989b0ced4119cd6b22aa9a6be71f5b99b8150 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Tue, 22 Oct 2013 16:38:28 +0200 Subject: [PATCH 061/104] GenericProject: Simnplfy code handling includes Change-Id: I42ee45920907d3d55a3adf77901b37fbf45bb70b Reviewed-by: Tobias Hunger --- .../genericprojectmanager/genericproject.cpp | 23 +------------------ .../genericprojectmanager/genericproject.h | 2 -- 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 3a8af924bb9..ad39fa8f051 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -254,7 +254,7 @@ void GenericProject::refresh(RefreshOptions options) part->displayName = displayName(); part->projectFile = projectFilePath(); - part->includePaths += allIncludePaths(); + part->includePaths += projectIncludePaths(); Kit *k = activeTarget() ? activeTarget()->kit() : KitManager::defaultKit(); if (ToolChain *tc = ToolChainKitInformation::toolChain(k)) { @@ -337,15 +337,6 @@ QStringList GenericProject::processEntries(const QStringList &paths, return absolutePaths; } -QStringList GenericProject::allIncludePaths() const -{ - QStringList paths; - paths += m_includePaths; - paths += m_projectIncludePaths; - paths.removeDuplicates(); - return paths; -} - QStringList GenericProject::projectIncludePaths() const { return m_projectIncludePaths; @@ -356,16 +347,6 @@ QStringList GenericProject::files() const return m_files; } -QStringList GenericProject::includePaths() const -{ - return m_includePaths; -} - -void GenericProject::setIncludePaths(const QStringList &includePaths) -{ - m_includePaths = includePaths; -} - QByteArray GenericProject::defines() const { return m_defines; @@ -430,8 +411,6 @@ bool GenericProject::fromMap(const QVariantMap &map) t->addRunConfiguration(new QtSupport::CustomExecutableRunConfiguration(t)); } - setIncludePaths(allIncludePaths()); - refresh(Everything); return true; } diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index f4f2fb54573..70d1f096083 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -86,7 +86,6 @@ public: void setIncludePaths(const QStringList &includePaths); QByteArray defines() const; - QStringList allIncludePaths() const; QStringList projectIncludePaths() const; QStringList files() const; @@ -112,7 +111,6 @@ private: QStringList m_rawFileList; QStringList m_files; QHash m_rawListEntries; - QStringList m_includePaths; QStringList m_projectIncludePaths; QByteArray m_defines; From 15c8bdeba66796c3bddb8b53389050e6ae931d0d Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Tue, 22 Oct 2013 16:44:02 +0200 Subject: [PATCH 062/104] QtVersionManger: Save one save() We are saving anyway in extensionsInitialized() Task-number: QTCREATORBUG-10455 Change-Id: I6cdc0f11a3f0f9db5061ef1c00646de4c3251d05 Reviewed-by: Tobias Hunger --- src/plugins/qtsupport/qtversionmanager.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 0e761bb67a3..136a78b4f00 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -361,7 +361,6 @@ void QtVersionManager::updateFromInstaller(bool emitSignal) } if (emitSignal) emit qtVersionsChanged(added, removed, changed); - saveQtVersions(); } void QtVersionManager::saveQtVersions() From 7bf1c64df9cd3203c2739e3afd80305696b575b6 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Tue, 22 Oct 2013 17:21:34 +0200 Subject: [PATCH 063/104] Generic Project: Use relative paths for importing Task-number: QTCREATORBUG-10387 Change-Id: I75746491dc7dee358748aa89829ba2d6f12c0e1b Reviewed-by: Tobias Hunger --- .../genericprojectmanager/genericprojectwizard.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp index 5f97652ca53..0f7cbdeacd3 100644 --- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp +++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp @@ -163,11 +163,15 @@ Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w, QStringList includePaths; foreach (const QString &path, paths) { - QFileInfo fileInfo(dir, path); + QFileInfo fileInfo(path); QDir thisDir(fileInfo.absoluteFilePath()); - if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) - includePaths.append(path); + if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) { + QString relative = dir.relativeFilePath(path); + if (relative.isEmpty()) + relative = QLatin1String("."); + includePaths.append(relative); + } } Core::GeneratedFile generatedCreatorFile(creatorFileName); From d13a8c1ada19321417e2e18575968288db9a1c88 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 00:38:06 +0200 Subject: [PATCH 064/104] Debugger: Add dumper for QByteArrayData Change-Id: Ia13be75a6466b710ddfe66665b124b1e2335a72c Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index a219d9682ac..f5087d407f4 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -69,6 +69,14 @@ def qdump__QByteArray(d, value): if d.isExpanded(): d.putArrayData(d.charType(), data, size) +def qdump__QByteArrayData(d, value): + data, size, alloc = d.byteArrayDataHelper(d.addressOf(value)) + d.putValue(d.readMemory(data, size), Hex2EncodedLatin1) + d.putNumChild(1) + if d.isExpanded(): + with Children(d): + d.putIntItem("size", size) + d.putIntItem("alloc", alloc) def qdump__QChar(d, value): d.putValue(int(value["ucs"])) From ad7e12447c61c10f794413b9e62b55be877345e1 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 11:42:48 +0200 Subject: [PATCH 065/104] Debugger: Add 64 bit int extraction for LLDB Fixes QDateTime dumper Change-Id: I1c408e30ee0cdc22610e3037f94de5f7d246accf Reviewed-by: hjk --- share/qtcreator/debugger/lldbbridge.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 5d70363e199..fb55ce47b1a 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -321,6 +321,7 @@ class Dumper(DumperBase): self.charType_ = None self.intType_ = None + self.int64Type_ = None self.sizetType_ = None self.charPtrType_ = None self.voidPtrType_ = None @@ -499,6 +500,11 @@ class Dumper(DumperBase): self.intType_ = self.target.FindFirstType('int') return self.intType_ + def int64Type(self): + if self.int64Type_ is None: + self.int64Type_ = self.target.FindFirstType('long long int') + return self.int64Type_ + def charType(self): if self.charType_ is None: self.charType_ = self.target.FindFirstType('char') @@ -534,6 +540,9 @@ class Dumper(DumperBase): def extractInt(self, address): return int(self.createValue(address, self.intType())) + def extractInt64(self, address): + return int(self.createValue(address, self.int64Type())) + def extractByte(self, address): return int(self.createValue(address, self.charType())) & 0xFF From 0dba50ee3dbb4e26d5b91c8000bef2679eecf48c Mon Sep 17 00:00:00 2001 From: hluk Date: Wed, 16 Oct 2013 18:53:45 +0200 Subject: [PATCH 066/104] FakeVim: Scrolls correctly if text cursor moves on wrapped lines Change-Id: I789fc822ad4f60d7e3a39f8231d7d0cb4a78bf70 Reviewed-by: hjk --- src/plugins/fakevim/fakevimhandler.cpp | 31 ++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index bb0614f1f82..ec71ccc050b 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2316,10 +2316,6 @@ void FakeVimHandler::Private::setupWidget() enterFakeVim(); resetCommandMode(); - if (m_textedit) - m_textedit->setLineWrapMode(QTextEdit::NoWrap); - else if (m_plaintextedit) - m_plaintextedit->setLineWrapMode(QPlainTextEdit::NoWrap); m_wasReadOnly = EDITOR(isReadOnly()); updateEditor(); @@ -6471,19 +6467,22 @@ int FakeVimHandler::Private::linesInDocument() const void FakeVimHandler::Private::scrollToLine(int line) { - const QTextCursor tc = EDITOR(textCursor()); - // Don't scroll if the line is already at the top. updateFirstVisibleLine(); if (line == m_firstVisibleLine) return; + const QTextCursor tc = m_cursor; + QTextCursor tc2 = tc; tc2.setPosition(document()->lastBlock().position()); EDITOR(setTextCursor(tc2)); EDITOR(ensureCursorVisible()); - tc2.setPosition(document()->findBlockByLineNumber(line).position()); + const QTextBlock block = document()->findBlockByLineNumber(line); + const QTextLine textLine = block.isValid() + ? block.layout()->lineAt(line - block.firstLineNumber()) : QTextLine(); + tc2.setPosition(block.position() + (textLine.isValid() ? textLine.textStart() : 0)); EDITOR(setTextCursor(tc2)); EDITOR(ensureCursorVisible()); @@ -6497,7 +6496,7 @@ void FakeVimHandler::Private::scrollToLine(int line) void FakeVimHandler::Private::updateFirstVisibleLine() { const QTextCursor tc = EDITOR(cursorForPosition(QPoint(0,0))); - m_firstVisibleLine = tc.block().firstLineNumber(); + m_firstVisibleLine = lineForPosition(tc.position()) - 1; } int FakeVimHandler::Private::firstVisibleLine() const @@ -6507,9 +6506,9 @@ int FakeVimHandler::Private::firstVisibleLine() const int FakeVimHandler::Private::lastVisibleLine() const { - const QTextBlock block = - document()->findBlockByLineNumber(m_firstVisibleLine + linesOnScreen()); - return block.isValid() ? block.firstLineNumber() : document()->lastBlock().firstLineNumber(); + const int line = m_firstVisibleLine + linesOnScreen(); + const QTextBlock block = document()->findBlockByLineNumber(line); + return block.isValid() ? line : document()->lastBlock().firstLineNumber(); } int FakeVimHandler::Private::lineOnTop(int count) const @@ -6538,7 +6537,7 @@ void FakeVimHandler::Private::updateScrollOffset() if (line < lineOnTop()) scrollToLine(qMax(0, line - windowScrollOffset())); else if (line > lineOnBottom()) - scrollToLine(line - linesOnScreen() + windowScrollOffset() + 1); + scrollToLine(firstVisibleLine() + line - lineOnBottom()); } void FakeVimHandler::Private::alignViewportToCursor(AlignmentFlag align, int line, @@ -7156,8 +7155,12 @@ int FakeVimHandler::Private::lastPositionInLine(int line, bool onlyVisibleLines) int FakeVimHandler::Private::lineForPosition(int pos) const { - QTextBlock block = document()->findBlock(pos); - return lineNumber(block); + const QTextBlock block = document()->findBlock(pos); + if (!block.isValid()) + return 0; + const int positionInBlock = pos - block.position(); + const int lineNumberInBlock = block.layout()->lineForTextPosition(positionInBlock).lineNumber(); + return block.firstLineNumber() + lineNumberInBlock + 1; } void FakeVimHandler::Private::toggleVisualMode(VisualMode visualMode) From a590f8de05e660d9d31f91cc0a5bfb2815b644a5 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 12:29:38 +0200 Subject: [PATCH 067/104] Debugger: Fix some of the array dumpers with LLDB Change-Id: Ie2b12a526ff7199bcadfc21a3deb5354063a3e3b Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 5 +++-- share/qtcreator/debugger/stdtypes.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 9de1ed38e13..55aaff207df 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -181,11 +181,12 @@ class Children: self.childNumChild = childNumChild try: if not addrBase is None and not addrStep is None: - self.d.put('addrbase="0x%x",' % long(addrBase)) - self.d.put('addrstep="0x%x",' % long(addrStep)) + self.d.put('addrbase="0x%x",' % toInteger(addrBase)) + self.d.put('addrstep="0x%x",' % toInteger(addrStep)) self.printsAddress = False except: warn("ADDRBASE: %s" % addrBase) + warn("ADDRSTEP: %s" % addrStep) #warn("CHILDREN: %s %s %s" % (numChild, childType, childNumChild)) def __enter__(self): diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py index 4d6ac1bd1a9..d0fac283c0b 100644 --- a/share/qtcreator/debugger/stdtypes.py +++ b/share/qtcreator/debugger/stdtypes.py @@ -38,7 +38,7 @@ def qdump____c_style_array__(d, value): format = d.currentItemFormat() isDefault = format == None and str(targetType.unqualified()) == "char" if isDefault or format == 0 or format == 1 or format == 2: - blob = d.readMemory(value.address, type.sizeof) + blob = d.readMemory(d.addressOf(value), type.sizeof) if isDefault: # Use Latin1 as default for char []. @@ -56,7 +56,7 @@ def qdump____c_style_array__(d, value): d.putValue("@0x%x" % d.pointerValue(value.cast(targetType.pointer()))) if d.currentIName in d.expandedINames: - p = value.address + p = d.addressOf(value) ts = targetType.sizeof if not d.tryPutArrayContents(targetType, p, int(type.sizeof / ts)): with Children(d, childType=targetType, From 336644a70dc6b6d9b1be0d8a6f14eb2aadf38778 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 12:34:08 +0200 Subject: [PATCH 068/104] Debugger: Silence IPv6 part in QVariant(QHostAddress) dumper. Wrong test when putting a IPv4 address in... Change-Id: I8fcd68574586fdaf463d59b6f4dfb9149a120089 Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index d582078aa22..87b08e8af1b 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -3483,7 +3483,6 @@ void tst_Dumpers::dumper_data() % Profile("QT += network\n") % Check("ha", "\"127.0.0.1\"", "@QHostAddress") % Check("ha.a", "2130706433", "@quint32") - % Check("ha.a6", "0:0:0:0:0:0:0:0", "@Q_IPV6ADDR") % Check("ha.ipString", "\"127.0.0.1\"", "@QString") % Check("ha.isParsed", "true", "bool") % Check("ha.protocol", "@QAbstractSocket::IPv4Protocol (0)", @@ -3491,7 +3490,6 @@ void tst_Dumpers::dumper_data() % Check("ha.scopeId", "\"\"", "@QString") % Check("ha1", "\"127.0.0.1\"", "@QHostAddress") % Check("ha1.a", "2130706433", "@quint32") - % Check("ha1.a6", "0:0:0:0:0:0:0:0", "@Q_IPV6ADDR") % Check("ha1.ipString", "\"127.0.0.1\"", "@QString") % Check("ha1.isParsed", "true", "bool") % Check("ha1.protocol", "@QAbstractSocket::IPv4Protocol (0)", From d57b405f298994eafe192914d4efb6697c7e0b48 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 1 Oct 2013 14:48:31 +0200 Subject: [PATCH 069/104] CppTools: fix inclusion of "injected" defines. Task-number: QTCREATORBUG-10280 Change-Id: Ibc6ffeedb97a31a35a2d1f00625506f844692e16 Reviewed-by: Nikolai Kosjar --- src/libs/cplusplus/FastPreprocessor.cpp | 6 +++++- src/libs/cplusplus/PreprocessorClient.h | 7 ++++++- src/plugins/cpptools/cpppreprocessor.cpp | 1 - src/plugins/cpptools/cppsnapshotupdater.cpp | 10 ++++++++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp index 45f1d24d37a..66df01c3488 100644 --- a/src/libs/cplusplus/FastPreprocessor.cpp +++ b/src/libs/cplusplus/FastPreprocessor.cpp @@ -63,7 +63,11 @@ QByteArray FastPreprocessor::run(Document::Ptr newDoc, const QByteArray &source) if (Document::Ptr doc = _snapshot.document(fileName)) { _merged.insert(fileName); - mergeEnvironment(Preprocessor::configurationFileName); + for (Snapshot::const_iterator i = _snapshot.begin(), ei = _snapshot.end(); i != ei; ++i) { + if (isInjectedFile(i.key())) + mergeEnvironment(i.key()); + } + foreach (const Document::Include &i, doc->resolvedIncludes()) mergeEnvironment(i.resolvedFileName()); } diff --git a/src/libs/cplusplus/PreprocessorClient.h b/src/libs/cplusplus/PreprocessorClient.h index 9b0ad80d19a..217337a112b 100644 --- a/src/libs/cplusplus/PreprocessorClient.h +++ b/src/libs/cplusplus/PreprocessorClient.h @@ -32,11 +32,11 @@ #include +#include #include QT_BEGIN_NAMESPACE class QByteArray; -class QString; QT_END_NAMESPACE namespace CPlusPlus { @@ -99,6 +99,11 @@ public: virtual void stopSkippingBlocks(unsigned offset) = 0; virtual void sourceNeeded(unsigned line, const QString &fileName, IncludeType mode) = 0; + + static inline bool isInjectedFile(const QString &fileName) + { + return fileName.startsWith(QLatin1Char('<')) && fileName.endsWith(QLatin1Char('>')); + } }; } // namespace CPlusPlus diff --git a/src/plugins/cpptools/cpppreprocessor.cpp b/src/plugins/cpptools/cpppreprocessor.cpp index f60c853b832..63e64c61a16 100644 --- a/src/plugins/cpptools/cpppreprocessor.cpp +++ b/src/plugins/cpptools/cpppreprocessor.cpp @@ -416,7 +416,6 @@ void CppPreprocessor::sourceNeeded(unsigned line, const QString &fileName, Inclu if (m_dumpFileNameWhileParsing) { qDebug() << "Parsing file:" << absoluteFileName << "contents:" << contents.size() << "bytes"; - ; } Document::Ptr doc = m_snapshot.document(absoluteFileName); diff --git a/src/plugins/cpptools/cppsnapshotupdater.cpp b/src/plugins/cpptools/cppsnapshotupdater.cpp index 4b3e9fedb4c..11cd3ff5b32 100644 --- a/src/plugins/cpptools/cppsnapshotupdater.cpp +++ b/src/plugins/cpptools/cppsnapshotupdater.cpp @@ -153,15 +153,21 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy) preproc.setIncludePaths(m_includePaths); preproc.setFrameworkPaths(m_frameworkPaths); preproc.run(configurationFileName); - if (m_usePrecompiledHeaders) + if (m_usePrecompiledHeaders) { foreach (const QString &precompiledHeader, m_precompiledHeaders) preproc.run(precompiledHeader); + } if (!m_editorDefines.isEmpty()) preproc.run(editorDefinesFileName); preproc.run(m_fileInEditor); m_snapshot = preproc.snapshot(); - m_snapshot = m_snapshot.simplified(document()); + Snapshot newSnapshot = m_snapshot.simplified(document()); + for (Snapshot::const_iterator i = m_snapshot.begin(), ei = m_snapshot.end(); i != ei; ++i) { + if (Client::isInjectedFile(i.key())) + newSnapshot.insert(i.value()); + } + m_snapshot = newSnapshot; m_deps.build(m_snapshot); foreach (Document::Ptr doc, m_snapshot) { From 07492890f72111ec1596e0f3276800e54340697a Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 12:51:11 +0200 Subject: [PATCH 070/104] Debugger: Add a parseAndEval implementation to the LLDB bridge Makes e.g. QVariant5 dumper pass Change-Id: I8fad68574586fdaf463d59b6f4dfb9149a120089 Reviewed-by: hjk --- share/qtcreator/debugger/lldbbridge.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index fb55ce47b1a..adefefdac0b 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -413,6 +413,11 @@ class Dumper(DumperBase): #warn(" -> %s" % result) return result + def parseAndEvaluate(self, expr): + thread = self.currentThread() + frame = thread.GetFrameAtIndex(0) + return frame.EvaluateExpression(expr) + def call(self, value, func, *args): return self.call2(value, func, args) From de40fff331c9013e7b8ae27093c46ea179f38894 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 12:56:44 +0200 Subject: [PATCH 071/104] Debugger: Silence some debug output Change-Id: I80cd68574586fdaf463d59b6f4dfb9149a120089 Reviewed-by: hjk --- share/qtcreator/debugger/lldbbridge.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index adefefdac0b..6b187927c0d 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -690,13 +690,13 @@ class Dumper(DumperBase): self.putFields(value) def lookupType(self, name): - warn("LOOKUP TYPE NAME: %s" % name) + #warn("LOOKUP TYPE NAME: %s" % name) if name.endswith('*'): type = self.lookupType(name[:-1].strip()) return type.GetPointerType() if type.IsValid() else None type = self.target.FindFirstType(name) - warn("LOOKUP RESULT: %s" % type.name) - warn("LOOKUP VALID: %s" % type.IsValid()) + #warn("LOOKUP RESULT: %s" % type.name) + #warn("LOOKUP VALID: %s" % type.IsValid()) return type if type.IsValid() else None def setupInferior(self, args): From a083d7368cf09788e5303034bcef2a4afd31b5c8 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 13:31:35 +0200 Subject: [PATCH 072/104] Debugger: Make boost dumper autotests compilable on Mac Brew puts the headers under /usr/local/include. Change-Id: I12ad68574586fdaf463d59b6f4dfb9149a120089 Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 87b08e8af1b..f233907b662 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -354,6 +354,13 @@ struct Cxx11Profile : public Profile {} }; +struct BoostProfile : public Profile +{ + BoostProfile() + : Profile("macx:INCLUDEPATH += /usr/local/include") + {} +}; + struct MacLibCppProfile : public Profile { MacLibCppProfile() @@ -4333,6 +4340,7 @@ void tst_Dumpers::dumper_data() "boost::optional i0, i1;\n" "i1 = 1;\n" "unused(&i0, &i1);\n") + % BoostProfile() % Check("i0", "", "boost::optional") % Check("i1", "1", "boost::optional"); @@ -4343,6 +4351,7 @@ void tst_Dumpers::dumper_data() "sl = (QStringList() << \"xxx\" << \"yyy\");\n" "sl.get().append(\"zzz\");\n" "unused(&sl);\n") + % BoostProfile() % Check("sl", "<3 items>", "boost::optional<@QStringList>"); QTest::newRow("BoostSharedPtr") @@ -4353,6 +4362,7 @@ void tst_Dumpers::dumper_data() "boost::shared_ptr j = i;\n" "boost::shared_ptr sl(new QStringList(QStringList() << \"HUH!\"));\n" "unused(&s, &i, &j, &sl);\n") + % BoostProfile() % Check("s", "(null)", "boost::shared_ptr") % Check("i", "43", "boost::shared_ptr") % Check("j", "43", "boost::shared_ptr") @@ -4375,6 +4385,7 @@ void tst_Dumpers::dumper_data() "// Not where we started (expected in boost)\n" "date d5 = d -= months(4);\n" "unused(&d1, &d2, &d3, &d4, &d5);\n") + % BoostProfile() % Check("d0", "Tue Nov 29 2005", "boost::gregorian::date") % Check("d1", "Thu Dec 29 2005", "boost::gregorian::date") % Check("d2", "Sun Jan 29 2006", "boost::gregorian::date") @@ -4392,6 +4403,7 @@ void tst_Dumpers::dumper_data() "time_duration d2(0, 1, 0);\n" "time_duration d3(0, 0, 1);\n" "unused(&d1, &d2, &d3);\n") + % BoostProfile() % Check("d1", "01:00:00", "boost::posix_time::time_duration") % Check("d2", "00:01:00", "boost::posix_time::time_duration") % Check("d3", "00:00:01", "boost::posix_time::time_duration"); @@ -4405,6 +4417,7 @@ void tst_Dumpers::dumper_data() "int l = it->first;\n" "int r = it->second;\n" "unused(&l, &r);\n") + % BoostProfile() % Check("b", "<1 items>", "B"); QTest::newRow("BoostPosixTimePtime") @@ -4417,7 +4430,8 @@ void tst_Dumpers::dumper_data() "ptime p1(date(2002, 1, 10), time_duration(1, 0, 0));\n" "ptime p2(date(2002, 1, 10), time_duration(0, 0, 0));\n" "ptime p3(date(1970, 1, 1), time_duration(0, 0, 0));\n" - "unused(&p1, &p2, p3);\n") + "unused(&p1, &p2, &p3);\n") + % BoostProfile() % Check("p1", "Thu Jan 10 01:00:00 2002", "boost::posix_time::ptime") % Check("p2", "Thu Jan 10 00:00:00 2002", "boost::posix_time::ptime") % Check("p3", "Thu Jan 1 00:00:00 1970", "boost::posix_time::ptime"); @@ -4855,6 +4869,7 @@ void tst_Dumpers::dumper_data() "#endif\n" "unused(&ptrConst, &ref, &refConst, &ptrToPtr, &sharedPtr);\n") % GdbVersion(70500) + % BoostProfile() % Check("d", "", "Derived") % Check("d.@1", "[Base]", "", "Base") % Check("d.b", "2", "int") From 922286bf1a6c1d99d9cb66977b04d9b91909950a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 12:15:10 +0200 Subject: [PATCH 073/104] QmlDesigner.PropertyEditor: fixing LayoutSection Change-Id: I8c8bcee36b2e2ee1d2e32535da135ac5182459a5 Reviewed-by: Thomas Hartmann --- .../QtQuick/LayoutSection.qml | 134 ++++++++++++++---- 1 file changed, 109 insertions(+), 25 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml index eefb408740b..a1820677f0c 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml @@ -63,7 +63,6 @@ Section { visible: anchorBackend.topAnchored; IconLabel { - source: "../HelperWidgets/images/anchor-top.png" Layout.alignment: Qt.AlignTop } @@ -73,7 +72,6 @@ Section { rows: 2 columns: 2 - Text { text: qsTr("Target") color: "#eee" @@ -87,7 +85,6 @@ Section { } } - Text { text: "Margin" color: "#eee" @@ -112,13 +109,10 @@ Section { iconSource: "../HelperWidgets/images/anchor-bottom.png" } } - } - } } - RowLayout { visible: anchorBackend.bottomAnchored; anchors.left: parent.left @@ -134,7 +128,6 @@ Section { rows: 2 columns: 2 - Text { text: qsTr("Target") color: "#eee" @@ -148,7 +141,6 @@ Section { } } - Text { text: qsTr("Margin") color: "#eee" @@ -167,16 +159,13 @@ Section { exclusive: true ButtonRowButton { iconSource: "../HelperWidgets/images/anchor-top.png" - } ButtonRowButton { iconSource: "../HelperWidgets/images/anchor-bottom.png" } } - } - } } @@ -195,12 +184,10 @@ Section { rows: 2 columns: 2 - Text { text: qsTr("Target") color: "#eee" elide: Text.ElideRight - } TargetComboBox { @@ -210,12 +197,10 @@ Section { } } - Text { text: qsTr("Margin") color: "#eee" elide: Text.ElideRight - } RowLayout { @@ -223,7 +208,6 @@ Section { maximumValue: 0xffff minimumValue: -0xffff backendValue: backendValues.anchors_leftMargin - } ButtonRow { @@ -237,9 +221,7 @@ Section { iconSource: "../HelperWidgets/images/anchor-right.png" } } - } - } } @@ -258,12 +240,10 @@ Section { rows: 2 columns: 2 - Text { text: qsTr("Target") color: "#eee" elide: Text.ElideRight - } TargetComboBox { @@ -273,7 +253,6 @@ Section { } } - Text { text: qsTr("Margin") color: "#eee" @@ -286,7 +265,6 @@ Section { maximumValue: 0xffff minimumValue: -0xffff backendValue: backendValues.anchors_rightMargin - } ButtonRow { @@ -300,12 +278,118 @@ Section { iconSource: "../HelperWidgets/images/anchor-right.png" } } - } - } } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + visible: anchorBackend.horizontalCentered; + IconLabel { + source: "../HelperWidgets/images/anchor-horizontal.png" + Layout.alignment: Qt.AlignTop + } + + GridLayout { + Layout.fillWidth: true + rows: 2 + columns: 2 + + Text { + text: qsTr("Target") + color: "#eee" + elide: Text.ElideRight + } + + TargetComboBox { + targetName: anchorBackend.horizontalTarget + onCurrentTextChanged: { + anchorBackend.horizontalTarget = currentText + } + } + + Text { + text: qsTr("Margin") + color: "#eee" + elide: Text.ElideRight + } + + RowLayout { + SpinBox { + maximumValue: 0xffff + minimumValue: -0xffff + backendValue: backendValues.anchors_horizontalMargin + } + + ButtonRow { + exclusive: true + + ButtonRowButton { + iconSource: "../HelperWidgets/images/anchor-left.png" + } + + ButtonRowButton { + iconSource: "../HelperWidgets/images/anchor-right.png" + } + } + } + } + } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + visible: anchorBackend.verticalAnchored; + + IconLabel { + source: "../HelperWidgets/images/anchor-vertical.png" + Layout.alignment: Qt.AlignTop + } + + GridLayout { + Layout.fillWidth: true + rows: 2 + columns: 2 + + Text { + text: qsTr("Target") + color: "#eee" + elide: Text.ElideRight + } + + TargetComboBox { + targetName: anchorBackend.verticalTarget + onCurrentTextChanged: { + anchorBackend.verticalTarget = currentText + } + } + + Text { + text: qsTr("Margin") + color: "#eee" + elide: Text.ElideRight + } + + RowLayout { + SpinBox { + maximumValue: 0xffff + minimumValue: -0xffff + backendValue: backendValues.anchors_verticalMargin + } + + ButtonRow { + exclusive: true + + ButtonRowButton { + iconSource: "../HelperWidgets/images/anchor-top.png" + } + + ButtonRowButton { + iconSource: "../HelperWidgets/images/anchor-bottom.png" + } + } + } + } + } } - } From c932d99470d6c02a319048e02e3d3e2b9fe0cb12 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:34:08 +0200 Subject: [PATCH 074/104] QmlDesigner.PropertyEditor: adding TextInputSection Change-Id: Iee3416c098608de5a76b1ef017a95efb7077c2bf Reviewed-by: Thomas Hartmann --- .../QtQuick/TextInputSection.qml | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSection.qml diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSection.qml new file mode 100644 index 00000000000..770ba6a1bb7 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSection.qml @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +import QtQuick 2.1 +import HelperWidgets 2.0 +import QtQuick.Layouts 1.0 + + +Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Text Input") + + SectionLayout { + rows: 4 + columns: 2 + + + Label { + text: qsTr("Input mask") + } + + LineEdit { + backendValue: backendValues.inputMask + Layout.fillWidth: true + } + + Label { + visible: showVerticalAlignment + text: qsTr("Echo mode") + } + + ComboBox { + visible: showVerticalAlignment + Layout.fillWidth: true + backendValue: backendValues.echoMode + model: ["Normal", "Password", "PasswordEchoOnEdit", "NoEcho"] + } + + Label { + text: qsTr("Pass. char") + toolTip: qsTr("Character displayed when users enter passwords.") + } + + LineEdit { + backendValue: backendValues.passwordCharacter + Layout.fillWidth: true + } + + Label { + text: qsTr("Flags") + Layout.alignment: Qt.AlignTop + } + + SecondColumnLayout { + ColumnLayout { + CheckBox { + text: qsTr("Read only") + backendValue: backendValues.readOnly; + } + + CheckBox { + text: qsTr("Cursor visible") + backendValue: backendValues.cursorVisible; + } + + CheckBox { + text: qsTr("Active focus on press") + backendValue: backendValues.activeFocusOnPress; + } + + CheckBox { + text: qsTr("Auto scroll") + backendValue: backendValues.autoScroll; + } + + } + } + } +} From 77095bfc9e60f95b7d2cf163047bbeba7e5fad49 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:34:48 +0200 Subject: [PATCH 075/104] QmlDesigner.PropertyEditor: fixing layout of GeometrySection Change-Id: Ic89df790be9c30cb84ce4d2ecaa7ebe5d322c9b8 Reviewed-by: Thomas Hartmann --- .../QtQuick/GeometrySection.qml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml index 31da1cec599..74ecee46398 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/GeometrySection.qml @@ -46,7 +46,6 @@ Section { caption: qsTr("Geometry") SectionLayout { - columnSpacing: 6 rowSpacing: 4 rows: 2 @@ -55,6 +54,7 @@ Section { } SecondColumnLayout { + Label { text: "X" width: 12 @@ -67,6 +67,11 @@ Section { decimals: 0 } + Item { + width: 4 + height: 4 + } + Label { text: "Y" width: 12 @@ -101,6 +106,11 @@ Section { decimals: 0 } + Item { + width: 4 + height: 4 + } + Label { text: "H" width: 12 From b80b806ac97d25bbdaa967f2e4299503be00be6c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:35:18 +0200 Subject: [PATCH 076/104] QmlDesigner.PropertyEditor: fixing layout in ItemPane Change-Id: I44e9f35bfa592c015f3a089ace82c64995d89748 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/QtQuick/ItemPane.qml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml index f201ebf8fb8..0178552fe3d 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml @@ -54,14 +54,16 @@ Rectangle { } - Label { - text: backendValues.className.value - width: lineEdit.width + SecondColumnLayout { + + Label { + text: backendValues.className.value + width: lineEdit.width + } } Label { text: qsTr("id") - } SecondColumnLayout { From c76e4e42340573da24401ba5f7afdabfcea86725 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:37:15 +0200 Subject: [PATCH 077/104] QmlDesigner.PropertyEditor: polish TextInputSpecifics * adding TextInputSection * moving StandardTextSection to the front Change-Id: Ic6eb7aecefa63c1e7c6f003b5b8ae900291aaee1 Reviewed-by: Thomas Hartmann --- .../QtQuick/TextInputSpecifics.qml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSpecifics.qml index e05a850c989..e6b320258ad 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextInputSpecifics.qml @@ -35,6 +35,11 @@ Column { anchors.left: parent.left anchors.right: parent.right + StandardTextSection { + useLineEdit: false + showIsWrapping: false + } + Section { anchors.left: parent.left anchors.right: parent.right @@ -60,12 +65,11 @@ Column { } } - StandardTextSection { - useLineEdit: false - showIsWrapping: false - } - FontSection { showStyle: false } + + TextInputSection { + + } } From 7d42f743380c122baec91a3bcdd5420fef04a23e Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Wed, 23 Oct 2013 13:24:36 +0200 Subject: [PATCH 078/104] Android: Reset debugger in existing kits For users upgrading from a broken 3.0 beta installation Change-Id: Ieecf38f74879d1efacbfd775ab29eba9e17a4c43 Reviewed-by: Daniel Teske --- src/plugins/android/androidconfigurations.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 4b6df3fd5e1..80d1c9451ab 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -830,6 +830,18 @@ void AndroidConfigurations::updateAutomaticKitList() if (k->isSdkProvided()) continue; + // Update code for 3.0 beta, which shipped with a bug for the debugger settings + ProjectExplorer::ToolChain *tc =ToolChainKitInformation::toolChain(k); + if (tc && Debugger::DebuggerKitInformation::debuggerCommand(k) != tc->suggestedDebugger()) { + Debugger::DebuggerItem debugger; + debugger.setCommand(tc->suggestedDebugger()); + debugger.setEngineType(Debugger::GdbEngineType); + debugger.setDisplayName(tr("Android Debugger for %1").arg(tc->displayName())); + debugger.setAutoDetected(true); + debugger.setAbi(tc->targetAbi()); + QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger); + Debugger::DebuggerKitInformation::setDebugger(k, id); + } existingKits << k; } From c22e28e0e432a39d159dd942e006f335734e6d43 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:37:44 +0200 Subject: [PATCH 079/104] QmlDesigner.PropertyEditor: polish TextSpecifics * moving StandardTextSection to the top Change-Id: I58f6e148389f5e073bb40c177bbf238931cf47e9 Reviewed-by: Thomas Hartmann --- .../QtQuick/TextSpecifics.qml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextSpecifics.qml index d2d6688b982..23acc4293c1 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextSpecifics.qml @@ -35,6 +35,12 @@ Column { anchors.left: parent.left anchors.right: parent.right + StandardTextSection { + useLineEdit: true + showIsWrapping: true + showVerticalAlignment: true + } + Section { anchors.left: parent.left anchors.right: parent.right @@ -60,12 +66,6 @@ Column { } } - StandardTextSection { - useLineEdit: true - showIsWrapping: true - showVerticalAlignment: true - } - FontSection { showStyle: true } From e21d11371c3c8c1bd5772b68ed8abb434bf85897 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:38:48 +0200 Subject: [PATCH 080/104] QmlDesigner.PropertyEditor: polishing TextEditSpecfics * adding TextInputSection * moving StandardTextSection to the top * adding ComboBox for Format Change-Id: I730bee9c55e54f62c93a8515af0f56cdafed78bf Reviewed-by: Thomas Hartmann --- .../QtQuick/TextEditSpecifics.qml | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextEditSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextEditSpecifics.qml index bc471cc8ce0..e3a5064f22b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextEditSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TextEditSpecifics.qml @@ -35,6 +35,11 @@ Column { anchors.left: parent.left anchors.right: parent.right + StandardTextSection { + showIsWrapping: true + useLineEdit: true + } + Section { anchors.left: parent.left anchors.right: parent.right @@ -60,12 +65,25 @@ Column { } } - StandardTextSection { - showIsWrapping: true - useLineEdit: true - } + FontSection { + showStyle: false + } - FontSection { - showStyle: false - } + Section { + caption: qsTr("Text Input") + SectionLayout { + Label { + text: qsTr("Format") + } + ComboBox { + model: ["PlainText", "RichText", "AutoText"] + backendValue: backendValues.textFormat + Layout.fillWidth: true + } + } + } + + TextInputSection { + + } } From ea6c6ccbe10df9bdd2f1132e3e94f7b7262420e7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 13:39:17 +0200 Subject: [PATCH 081/104] QmlDesigner.PropertyEditor: avoiding text eliding in LayoutSection Change-Id: I5635e2a304f7ad3c66d6eb17d2318af0dbd19037 Reviewed-by: Thomas Hartmann --- .../QtQuick/LayoutSection.qml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml index a1820677f0c..83e797b12fb 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml @@ -76,6 +76,7 @@ Section { text: qsTr("Target") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } TargetComboBox { @@ -89,6 +90,7 @@ Section { text: "Margin" color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } RowLayout { @@ -132,6 +134,7 @@ Section { text: qsTr("Target") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } TargetComboBox { @@ -145,6 +148,7 @@ Section { text: qsTr("Margin") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } RowLayout { @@ -188,6 +192,7 @@ Section { text: qsTr("Target") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } TargetComboBox { @@ -201,6 +206,7 @@ Section { text: qsTr("Margin") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } RowLayout { @@ -244,6 +250,7 @@ Section { text: qsTr("Target") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } TargetComboBox { @@ -257,7 +264,7 @@ Section { text: qsTr("Margin") color: "#eee" elide: Text.ElideRight - + Layout.minimumWidth: 40 } RowLayout { @@ -300,6 +307,7 @@ Section { text: qsTr("Target") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } TargetComboBox { @@ -313,6 +321,7 @@ Section { text: qsTr("Margin") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } RowLayout { @@ -355,6 +364,7 @@ Section { text: qsTr("Target") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } TargetComboBox { @@ -368,6 +378,7 @@ Section { text: qsTr("Margin") color: "#eee" elide: Text.ElideRight + Layout.minimumWidth: 40 } RowLayout { From d61cbf1bcb553921f36302f81ba7b535ea30cc37 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 13:44:26 +0200 Subject: [PATCH 082/104] Debugger: Make the QVariant-from-type-and-data universal Result works with GDB, too. Change-Id: Idac1d3026054dcb1d5d030cffbe99d1d518c241b Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index f233907b662..677fcf94af5 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -3406,8 +3406,6 @@ void tst_Dumpers::dumper_data() "value = QVariant(t, (void*)0);\n" "*(QString*)value.data() = QString(\"Some string\");\n") % CoreProfile() - % LldbOnly() - % Check("t", "String", "@QVariant::Type") % Check("value", "\"Some string\"", "@QVariant (QString)"); QTest::newRow("QVariant2") From 231dd3f622eb188dfc0b767393e3d8dcc99cc1bb Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 14:03:03 +0200 Subject: [PATCH 083/104] Debugger: Fix Int dumper on 64 bits Test data was wrong. Change-Id: I530bee9c55e54f62c93a8515af0f56cdafed78bf Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 677fcf94af5..60c45ecb7f6 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -3895,12 +3895,12 @@ void tst_Dumpers::dumper_data() "#include \n", "quint64 u64 = ULLONG_MAX;\n" "qint64 s64 = LLONG_MAX;\n" - "quint32 u32 = ULONG_MAX;\n" - "qint32 s32 = LONG_MAX;\n" + "quint32 u32 = UINT_MAX;\n" + "qint32 s32 = INT_MAX;\n" "quint64 u64s = 0;\n" "qint64 s64s = LLONG_MIN;\n" "quint32 u32s = 0;\n" - "qint32 s32s = LONG_MIN;\n" + "qint32 s32s = INT_MIN;\n" "QString dummy; // needed to get namespace\n" "unused(&u64, &s64, &u32, &s32, &u64s, &s64s, &u32s, &s32s, &dummy);\n") % CoreProfile() From f02197244ef4e25a713f063436fadd4cb7e3fcd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20N=C3=A4tterlund?= Date: Mon, 21 Oct 2013 14:54:49 +0200 Subject: [PATCH 084/104] QNX: Show warning when slog2info is not found on QNX >6.5 Change-Id: Ifa66184c51144d461c351fcdf40233c39c9cf507 Reviewed-by: Nicolas Arnaud-Cormos --- src/plugins/qnx/qnxdeviceconfiguration.cpp | 64 +++++++++++++++++++++- src/plugins/qnx/qnxdeviceconfiguration.h | 9 +++ src/plugins/qnx/qnxdevicetester.cpp | 23 ++++++-- src/plugins/qnx/qnxdevicetester.h | 2 + src/plugins/qnx/qnxruncontrol.cpp | 7 +++ src/plugins/qnx/qnxruncontrol.h | 3 + 6 files changed, 102 insertions(+), 6 deletions(-) diff --git a/src/plugins/qnx/qnxdeviceconfiguration.cpp b/src/plugins/qnx/qnxdeviceconfiguration.cpp index f5a26bd9bb7..d9b64ed9a3f 100644 --- a/src/plugins/qnx/qnxdeviceconfiguration.cpp +++ b/src/plugins/qnx/qnxdeviceconfiguration.cpp @@ -34,14 +34,22 @@ #include "qnxdeviceprocesslist.h" #include "qnxdeviceprocesssignaloperation.h" +#include #include +#include +#include #include #include +#include using namespace Qnx; using namespace Qnx::Internal; +namespace { +const char QnxVersionKey[] = "QnxVersion"; +} + class QnxPortsGatheringMethod : public ProjectExplorer::PortsGatheringMethod { // TODO: The command is probably needlessly complicated because the parsing method @@ -82,20 +90,22 @@ class QnxPortsGatheringMethod : public ProjectExplorer::PortsGatheringMethod QnxDeviceConfiguration::QnxDeviceConfiguration() : RemoteLinux::LinuxDevice() + , m_versionNumber(0) { } QnxDeviceConfiguration::QnxDeviceConfiguration(const QString &name, Core::Id type, MachineType machineType, Origin origin, Core::Id id) : RemoteLinux::LinuxDevice(name, type, machineType, origin, id) + , m_versionNumber(0) { } QnxDeviceConfiguration::QnxDeviceConfiguration(const QnxDeviceConfiguration &other) : RemoteLinux::LinuxDevice(other) + , m_versionNumber(other.m_versionNumber) { } - QnxDeviceConfiguration::Ptr QnxDeviceConfiguration::create() { return Ptr(new QnxDeviceConfiguration); @@ -111,6 +121,58 @@ QString QnxDeviceConfiguration::displayType() const return tr("QNX"); } +int QnxDeviceConfiguration::qnxVersion() const +{ + if (m_versionNumber == 0) + updateVersionNumber(); + + return m_versionNumber; +} + +void QnxDeviceConfiguration::updateVersionNumber() const +{ + QEventLoop eventLoop; + ProjectExplorer::SshDeviceProcess versionNumberProcess(sharedFromThis()); + QObject::connect(&versionNumberProcess, SIGNAL(finished()), &eventLoop, SLOT(quit())); + QObject::connect(&versionNumberProcess, SIGNAL(error(QProcess::ProcessError)), &eventLoop, SLOT(quit())); + + QStringList arguments; + arguments << QLatin1String("-r"); + versionNumberProcess.start(QLatin1String("uname"), arguments); + + bool isGuiThread = QThread::currentThread() == QCoreApplication::instance()->thread(); + if (isGuiThread) + QApplication::setOverrideCursor(Qt::WaitCursor); + + eventLoop.exec(QEventLoop::ExcludeUserInputEvents); + + QByteArray output = versionNumberProcess.readAllStandardOutput(); + QString versionMessage = QString::fromLatin1(output); + QRegExp versionNumberRegExp = QRegExp(QLatin1String("(\\d+)\\.(\\d+)\\.(\\d+)")); + if (versionNumberRegExp.indexIn(versionMessage) > -1 && versionNumberRegExp.captureCount() == 3) { + int major = versionNumberRegExp.cap(1).toInt(); + int minor = versionNumberRegExp.cap(2).toInt(); + int patch = versionNumberRegExp.cap(3).toInt(); + m_versionNumber = (major << 16)|(minor<<8)|(patch); + } + + if (isGuiThread) + QApplication::restoreOverrideCursor(); +} + +void QnxDeviceConfiguration::fromMap(const QVariantMap &map) +{ + m_versionNumber = map.value(QLatin1String(QnxVersionKey), 0).toInt(); + RemoteLinux::LinuxDevice::fromMap(map); +} + +QVariantMap QnxDeviceConfiguration::toMap() const +{ + QVariantMap map(RemoteLinux::LinuxDevice::toMap()); + map.insert(QLatin1String(QnxVersionKey), m_versionNumber); + return map; +} + ProjectExplorer::IDevice::Ptr QnxDeviceConfiguration::clone() const { return Ptr(new QnxDeviceConfiguration(*this)); diff --git a/src/plugins/qnx/qnxdeviceconfiguration.h b/src/plugins/qnx/qnxdeviceconfiguration.h index ec67de55d91..5e9fb690705 100644 --- a/src/plugins/qnx/qnxdeviceconfiguration.h +++ b/src/plugins/qnx/qnxdeviceconfiguration.h @@ -58,6 +58,11 @@ public: QString displayType() const; + int qnxVersion() const; + + void fromMap(const QVariantMap &map); + QVariantMap toMap() const; + protected: QnxDeviceConfiguration(); QnxDeviceConfiguration(const QString &name, Core::Id type, MachineType machineType, @@ -67,6 +72,10 @@ protected: QString interruptProcessByNameCommandLine(const QString &filePath) const; QString killProcessByNameCommandLine(const QString &filePath) const; +private: + void updateVersionNumber() const; + + mutable int m_versionNumber; }; } // namespace Internal diff --git a/src/plugins/qnx/qnxdevicetester.cpp b/src/plugins/qnx/qnxdevicetester.cpp index 723e8cc3505..a229ae20463 100644 --- a/src/plugins/qnx/qnxdevicetester.cpp +++ b/src/plugins/qnx/qnxdevicetester.cpp @@ -30,6 +30,7 @@ ****************************************************************************/ #include "qnxdevicetester.h" +#include "qnxdeviceconfiguration.h" #include #include @@ -44,6 +45,10 @@ QnxDeviceTester::QnxDeviceTester(QObject *parent) , m_currentCommandIndex(-1) { m_genericTester = new RemoteLinux::GenericLinuxDeviceTester(this); + connect(m_genericTester, SIGNAL(progressMessage(QString)), SIGNAL(progressMessage(QString))); + connect(m_genericTester, SIGNAL(errorMessage(QString)), SIGNAL(errorMessage(QString))); + connect(m_genericTester, SIGNAL(finished(ProjectExplorer::DeviceTester::TestResult)), + SLOT(handleGenericTestFinished(ProjectExplorer::DeviceTester::TestResult))); m_processRunner = new QSsh::SshRemoteProcessRunner(this); connect(m_processRunner, SIGNAL(connectionError()), SLOT(handleConnectionError())); @@ -68,11 +73,6 @@ void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::ConstPtr &devic m_deviceConfiguration = deviceConfiguration; - connect(m_genericTester, SIGNAL(progressMessage(QString)), SIGNAL(progressMessage(QString))); - connect(m_genericTester, SIGNAL(errorMessage(QString)), SIGNAL(errorMessage(QString))); - connect(m_genericTester, SIGNAL(finished(ProjectExplorer::DeviceTester::TestResult)), - SLOT(handleGenericTestFinished(ProjectExplorer::DeviceTester::TestResult))); - m_state = GenericTest; m_genericTester->testDevice(deviceConfiguration); } @@ -107,6 +107,10 @@ void QnxDeviceTester::handleGenericTestFinished(TestResult result) } m_state = CommandsTest; + + QnxDeviceConfiguration::ConstPtr qnxDevice = m_deviceConfiguration.dynamicCast(); + m_commandsToTest.append(versionSpecificCommandsToTest(qnxDevice->qnxVersion())); + testNextCommand(); } @@ -161,3 +165,12 @@ void QnxDeviceTester::setFinished() disconnect(m_processRunner, 0, this, 0); emit finished(m_result); } + +QStringList QnxDeviceTester::versionSpecificCommandsToTest(int versionNumber) const +{ + QStringList result; + if (versionNumber > 0x060500) + result << QLatin1String("slog2info"); + + return result; +} diff --git a/src/plugins/qnx/qnxdevicetester.h b/src/plugins/qnx/qnxdevicetester.h index 834f6a601ee..d0a4a8a286f 100644 --- a/src/plugins/qnx/qnxdevicetester.h +++ b/src/plugins/qnx/qnxdevicetester.h @@ -68,6 +68,8 @@ private: void testNextCommand(); void setFinished(); + QStringList versionSpecificCommandsToTest(int versionNumber) const; + RemoteLinux::GenericLinuxDeviceTester *m_genericTester; ProjectExplorer::IDevice::ConstPtr m_deviceConfiguration; ProjectExplorer::DeviceTester::TestResult m_result; diff --git a/src/plugins/qnx/qnxruncontrol.cpp b/src/plugins/qnx/qnxruncontrol.cpp index 0f717d83beb..53a32ac8e84 100644 --- a/src/plugins/qnx/qnxruncontrol.cpp +++ b/src/plugins/qnx/qnxruncontrol.cpp @@ -58,6 +58,8 @@ QnxRunControl::QnxRunControl(ProjectExplorer::RunConfiguration *runConfig) m_slog2Info = new Slog2InfoRunner(applicationId, qnxDevice, this); connect(m_slog2Info, SIGNAL(output(QString,Utils::OutputFormat)), this, SLOT(appendMessage(QString,Utils::OutputFormat))); connect(this, SIGNAL(started()), m_slog2Info, SLOT(start())); + if (qnxDevice->qnxVersion() > 0x060500) + connect(m_slog2Info, SIGNAL(commandMissing()), this, SLOT(printMissingWarning())); } ProjectExplorer::RunControl::StopResult QnxRunControl::stop() @@ -65,3 +67,8 @@ ProjectExplorer::RunControl::StopResult QnxRunControl::stop() m_slog2Info->stop(); return RemoteLinuxRunControl::stop(); } + +void QnxRunControl::printMissingWarning() +{ + appendMessage(tr("Warning: \"slog2info\" is not found on the device, debug output not available!"), Utils::ErrorMessageFormat); +} diff --git a/src/plugins/qnx/qnxruncontrol.h b/src/plugins/qnx/qnxruncontrol.h index 20368e60891..c3e44777e52 100644 --- a/src/plugins/qnx/qnxruncontrol.h +++ b/src/plugins/qnx/qnxruncontrol.h @@ -47,6 +47,9 @@ public: RemoteLinux::RemoteLinuxRunControl::StopResult stop(); +private slots: + void printMissingWarning(); + private: Slog2InfoRunner *m_slog2Info; }; From 8b2682b2570c3b15889c26522c9081949cd4f24c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 14:22:22 +0200 Subject: [PATCH 085/104] QmlDesigner.PropertyEditor: fixing step size for opacity Change-Id: I461baba451c0aed3c34ec581bccce82f954df511 Reviewed-by: Thomas Hartmann --- .../qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml index 0178552fe3d..7ca3eaa1434 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml @@ -137,6 +137,7 @@ Rectangle { minimumValue: 0 maximumValue: 1 hasSlider: true + stepSize: 0.1 } Item { Layout.fillWidth: true From 60710f6c05117340b95c7e7c5a12f78491893af3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 14:37:43 +0200 Subject: [PATCH 086/104] QmlDesigner.PropertyEditor: moving the color logic into component Change-Id: I3d90618f5826cf77cc9813fd3b31fbfdbd5b50e7 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/CheckBox.qml | 14 +++- .../HelperWidgets/ColorLogic.qml | 82 +++++++++++++++++++ .../HelperWidgets/ComboBox.qml | 34 +------- .../HelperWidgets/LineEdit.qml | 41 ++-------- .../HelperWidgets/SpinBox.qml | 36 +------- 5 files changed, 105 insertions(+), 102 deletions(-) create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml index 3462599b434..a1fa1fd3fa2 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml @@ -37,7 +37,7 @@ Controls.CheckBox { property color borderColor: "#222" property color highlightColor: "orange" - property color textColor: "#eee" + property color textColor: colorLogic.textColor onTextChanged: { if (text.charAt(0) !== " ") @@ -46,16 +46,22 @@ Controls.CheckBox { property variant backendValue + onBackendValueChanged: { + innerObject.evaluate(); + } + ExtendedFunctionButton { x: 22 backendValue: checkBox.backendValue visible: checkBox.enabled } - QtObject { - property int valueFromBackend: checkBox.backendValue.value; + ColorLogic { + id: colorLogic + backendValue: checkBox.backendValue onValueFromBackendChanged: { - checkBox.checked = valueFromBackend; + if (checkBox.checked !== valueFromBackend) + checkBox.checked = valueFromBackend; } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml new file mode 100644 index 00000000000..b4817ecef49 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Controls 1.1 as Controls +import QtQuick.Controls.Styles 1.0 +import "Constants.js" as Constants + +QtObject { + id: innerObject + + property variant backendValue + property color textColor: Constants.colorsDefaultText + property variant valueFromBackend: backendValue.value; + property bool baseStateFlag: isBaseState; + property bool isInModel: backendValue.isInModel; + property bool isInSubState: backendValue.isInSubState; + + onBackendValueChanged: { + evaluate(); + } + + onValueFromBackendChanged: { + evaluate(); + } + + onBaseStateFlagChanged: { + evaluate(); + } + + onIsInModelChanged: { + evaluate(); + } + + onIsInSubStateChanged: { + evaluate(); + } + + function evaluate() { + if (innerObject.backendValue === undefined) + return; + + if (baseStateFlag) { + if (innerObject.backendValue.isInModel) + innerObject.textColor = Constants.colorsChangedBaseText + else + innerObject.textColor = Constants.colorsDefaultText + } else { + if (innerObject.backendValue.isInSubState) + innerObject.textColor = Constants.colorsChangedStateText + else + innerObject.textColor = Constants.colorsDefaultText + } + + } +} diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml index a2d8f56a173..0fabf6ac02d 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml @@ -30,49 +30,23 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 as Controls import QtQuick.Controls.Styles 1.1 -import "Constants.js" as Constants Controls.ComboBox { id: comboBox property variant backendValue - property color textColor: Constants.colorsDefaultText + property color textColor: colorLogic.textColor onBackendValueChanged: { innerObject.evaluate(); } - QtObject { - id: innerObject - - property bool baseStateFlag: isBaseState; - property string valueFromBackend: comboBox.backendValue.value; + ColorLogic { + id: colorLogic + backendValue: comboBox.backendValue onValueFromBackendChanged: { comboBox.currentIndex = comboBox.find( comboBox.backendValue.valueToString); - evaluate(); - } - - onBaseStateFlagChanged: { - evaluate(); - } - - function evaluate() { - if (backendValue === undefined) - return; - - if (baseStateFlag) { - if (backendValue.isInModel) - comboBox.textColor = Constants.colorsChangedBaseText - else - comboBox.textColor = Constants.colorsDefaultText - } else { - if (backendValue.isInSubState) - comboBox.textColor = Constants.colorsChangedStateText - else - comboBox.textColor = Constants.colorsDefaultText - } - } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml index 5777afaede4..1a0816b1ee1 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml @@ -31,7 +31,6 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 as Controls import QtQuick.Controls.Styles 1.0 -import "Constants.js" as Constants Controls.TextField { @@ -39,7 +38,7 @@ Controls.TextField { property variant backendValue property color borderColor: "#222" property color highlightColor: "orange" - property color textColor: "#eee" + property color textColor: colorLogic.textColor ExtendedFunctionButton { x: 2 @@ -48,42 +47,11 @@ Controls.TextField { visible: lineEdit.enabled } - onBackendValueChanged: { - innerObject.evaluate(); - } - - QtObject { - id: innerObject - - property string valueFromBackend: lineEdit.backendValue.value; - property bool baseStateFlag: isBaseState; - + ColorLogic { + id: colorLogic + backendValue: lineEdit.backendValue onValueFromBackendChanged: { lineEdit.text = valueFromBackend; - evaluate(); - } - - onBaseStateFlagChanged: { - evaluate(); - } - - function evaluate() { - print("evaluate") - if (lineEdit.backendValue === undefined) - return; - - if (baseStateFlag) { - if (lineEdit.backendValue.isInModel) - lineEdit.textColor = Constants.colorsChangedBaseText - else - lineEdit.textColor = Constants.colorsDefaultText - } else { - if (lineEdit.backendValue.isInSubState) - lineEdit.textColor = Constants.colorsChangedStateText - else - lineEdit.textColor = Constants.colorsDefaultText - } - } } @@ -108,6 +76,7 @@ Controls.TextField { padding.top: 3 padding.bottom: 1 padding.left: 16 + placeholderTextColor: "gray" background: Rectangle { implicitWidth: 100 implicitHeight: 23 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml index 75eea4c42f7..13deba9b113 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml @@ -30,14 +30,12 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 as Controls import QtQuick.Controls.Styles 1.1 -import "Constants.js" as Constants Controls.SpinBox { id: spinBox property color borderColor: "#222" property color highlightColor: "orange" - property color textColor: Constants.colorsDefaultText - + property color textColor: colorLogic.textColor property variant backendValue; prefix: " " @@ -52,37 +50,11 @@ Controls.SpinBox { innerObject.evaluate(); } - QtObject { - id: innerObject - - property int valueFromBackend: spinBox.backendValue.value; - property bool baseStateFlag: isBaseState; - + ColorLogic { + id: colorLogic + backendValue: spinBox.backendValue onValueFromBackendChanged: { spinBox.value = valueFromBackend; - evaluate(); - } - - onBaseStateFlagChanged: { - evaluate(); - } - - function evaluate() { - if (backendValue === undefined) - return; - - if (baseStateFlag) { - if (backendValue.isInModel) - textColor = Constants.colorsChangedBaseText - else - textColor = Constants.colorsDefaultText - } else { - if (backendValue.isInSubState) - textColor = Constants.colorsChangedStateText - else - textColor = Constants.colorsDefaultText - } - } } From 6448d26ad7f46ca7cc4a204e5cfd529b8be5c665 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 23 Oct 2013 12:53:10 +0200 Subject: [PATCH 087/104] Core: Adapt documentation to recent refactoring. ProgressManager and ActionManager are no longer retrieved via ICore, and most accesses do not go via the instance anymore. Change-Id: Ib0c3033270051aaadfb25e0b2b0eaf7bdec63a1d Reviewed-by: hjk Reviewed-by: Eike Ziller --- doc/api/examples/exampleplugin/exampleplugin.cpp | 8 +++----- .../coreplugin/progressmanager/progressmanager.cpp | 11 ++++------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/doc/api/examples/exampleplugin/exampleplugin.cpp b/doc/api/examples/exampleplugin/exampleplugin.cpp index 147a4274b9c..7b2b3c0cead 100644 --- a/doc/api/examples/exampleplugin/exampleplugin.cpp +++ b/doc/api/examples/exampleplugin/exampleplugin.cpp @@ -41,19 +41,17 @@ bool ExamplePlugin::initialize(const QStringList &arguments, QString *errorStrin Q_UNUSED(errorString) //! [add action] - Core::ActionManager *am = Core::ICore::instance()->actionManager(); - QAction *action = new QAction(tr("Example action"), this); - Core::Command *cmd = am->registerAction(action, Constants::ACTION_ID, + Core::Command *cmd = Core::ActionManager::registerAction(action, Constants::ACTION_ID, Core::Context(Core::Constants::C_GLOBAL)); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Alt+Meta+A"))); connect(action, SIGNAL(triggered()), this, SLOT(triggerAction())); //! [add action] //! [add menu] - Core::ActionContainer *menu = am->createMenu(Constants::MENU_ID); + Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::MENU_ID); menu->menu()->setTitle(tr("Example")); menu->addAction(cmd); - am->actionContainer(Core::Constants::M_TOOLS)->addMenu(menu); + Core::ActionManager::actionContainer(Core::Constants::M_TOOLS)->addMenu(menu); //! [add menu] return true; diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp index 444f19296b5..419d8be0b70 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp +++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp @@ -72,7 +72,7 @@ using namespace Core::Internal; The progress indicator also allows the user to cancel the task. You get the single instance of this class via the - Core::ICore::progressManager() function. + ProgressManager::instance() function. \section1 Registering a task The ProgressManager API uses QtConcurrent as the basis for defining @@ -149,9 +149,8 @@ using namespace Core::Internal; in a different thread, looks like this: \code QFuture task = QtConcurrent::run(&ILocatorFilter::refresh, filters); - Core::FutureProgress *progress = Core::ICore::instance() - ->progressManager()->addTask(task, tr("Indexing"), - Locator::Constants::TASK_INDEX); + Core::FutureProgress *progress = Core::ProgressManager::addTask(task, tr("Indexing"), + Locator::Constants::TASK_INDEX); \endcode First, we tell QtConcurrent to start a thread which calls all the filters' refresh function. After that we register the returned QFuture object @@ -166,9 +165,7 @@ using namespace Core::Internal; // We are already running in a different thread here QFutureInterface *progressObject = new QFutureInterface; progressObject->setProgressRange(0, MAX); - Core::ICore::progressManager()->addTask( - progressObject->future(), - tr("DoIt"), MYTASKTYPE); + Core::ProgressManager::addTask(progressObject->future(), tr("DoIt"), MYTASKTYPE); progressObject->reportStarted(); // Do something ... From 04eaf6cdfc4be6b7b758424a2ea7f3aa68befefb Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 15:19:48 +0200 Subject: [PATCH 088/104] Debugger: Make function pointers visible with LLDB Change-Id: I230bee9c55e54f62c93a8515af0f56cdafed78bf Reviewed-by: hjk --- share/qtcreator/debugger/lldbbridge.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 6b187927c0d..79e9ecbd60b 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1072,12 +1072,16 @@ class Dumper(DumperBase): self.putArrayData(innerType, value, 1000) return - #if innerType.code == MethodCode or innerType.code == FunctionCode: - # # A function pointer with format None. - # self.putValue(str(value)) - # self.putType(typeName) - # self.putNumChild(0) - # return + if innerType.IsFunctionType(): + # A function pointer. + val = str(value) + pos = val.find(" = ") + if pos > 0: + val = val[pos + 3:] + self.putValue(val) + self.putType(innerType) + self.putNumChild(0) + return #warn("AUTODEREF: %s" % self.autoDerefPointers) #warn("INAME: %s" % self.currentIName) From 9795976a6b82760729b58b111c99f8cdd9f32a27 Mon Sep 17 00:00:00 2001 From: jkobus Date: Tue, 22 Oct 2013 11:10:08 +0200 Subject: [PATCH 089/104] Handle MinGW case in Add Library Wizard Task-number: QTCREATORBUG-10423 Task-number: QTCREATORBUG-7641 Task-number: QTCREATORBUG-6093 Task-number: QTCREATORBUG-9012 Change-Id: Ibd709735fd90d635f34e42367b188fce79013fb5 Reviewed-by: Daniel Teske --- .../qt4projectmanager/addlibrarywizard.h | 3 +- .../librarydetailscontroller.cpp | 126 +++++++++++++----- 2 files changed, 92 insertions(+), 37 deletions(-) diff --git a/src/plugins/qt4projectmanager/addlibrarywizard.h b/src/plugins/qt4projectmanager/addlibrarywizard.h index 9fa7b52e7eb..be9b99b2cea 100644 --- a/src/plugins/qt4projectmanager/addlibrarywizard.h +++ b/src/plugins/qt4projectmanager/addlibrarywizard.h @@ -78,7 +78,8 @@ public: enum Platform { LinuxPlatform = 0x01, MacPlatform = 0x02, - WindowsPlatform = 0x04 + WindowsMinGWPlatform = 0x04, + WindowsMSVCPlatform = 0x08 }; Q_DECLARE_FLAGS(Platforms, Platform) diff --git a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp index ab0a59d5d48..ce67ed4fed4 100644 --- a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp +++ b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp @@ -55,7 +55,8 @@ LibraryDetailsController::LibraryDetailsController( QObject(parent), m_platforms(AddLibraryWizard::LinuxPlatform | AddLibraryWizard::MacPlatform - | AddLibraryWizard::WindowsPlatform), + | AddLibraryWizard::WindowsMinGWPlatform + | AddLibraryWizard::WindowsMSVCPlatform), m_linkageType(AddLibraryWizard::NoLinkage), m_macLibraryType(AddLibraryWizard::NoLibraryType), m_proFile(proFile), @@ -156,7 +157,8 @@ void LibraryDetailsController::updateGui() if (libraryDetailsWidget()->macCheckBox->isChecked()) m_platforms |= AddLibraryWizard::MacPlatform; if (libraryDetailsWidget()->winCheckBox->isChecked()) - m_platforms |= AddLibraryWizard::WindowsPlatform; + m_platforms |= AddLibraryWizard::WindowsMinGWPlatform + | AddLibraryWizard::WindowsMSVCPlatform; bool macLibraryTypeUpdated = false; if (!m_linkageRadiosVisible) { @@ -409,6 +411,21 @@ static QString appendSeparator(const QString &aString) return aString + QLatin1Char('/'); } +static QString windowsScopes(AddLibraryWizard::Platforms scopes) +{ + QString scopesString; + QTextStream str(&scopesString); + AddLibraryWizard::Platforms windowsPlatforms = scopes + & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform); + if (windowsPlatforms == AddLibraryWizard::WindowsMinGWPlatform) + str << "win32-g++"; // mingw only + else if (windowsPlatforms == AddLibraryWizard::WindowsMSVCPlatform) + str << "win32:!win32-g++"; // msvc only + else if (windowsPlatforms) + str << "win32"; // both mingw and msvc + return scopesString; +} + static QString commonScopes(AddLibraryWizard::Platforms scopes, AddLibraryWizard::Platforms excludedScopes) { @@ -416,7 +433,8 @@ static QString commonScopes(AddLibraryWizard::Platforms scopes, QTextStream str(&scopesString); AddLibraryWizard::Platforms common = scopes | excludedScopes; bool unixLikeScopes = false; - if (scopes & ~QFlags(AddLibraryWizard::WindowsPlatform)) { + if (scopes & ~QFlags(AddLibraryWizard::WindowsMinGWPlatform + | AddLibraryWizard::WindowsMSVCPlatform)) { unixLikeScopes = true; if (common & AddLibraryWizard::LinuxPlatform) { str << "unix"; @@ -427,10 +445,12 @@ static QString commonScopes(AddLibraryWizard::Platforms scopes, str << "macx"; } } - if (scopes & AddLibraryWizard::WindowsPlatform) { + AddLibraryWizard::Platforms windowsPlatforms = scopes + & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform); + if (windowsPlatforms) { if (unixLikeScopes) str << "|"; - str << "win32"; + str << windowsScopes(windowsPlatforms); } return scopesString; } @@ -457,7 +477,8 @@ static QString generateLibsSnippet(AddLibraryWizard::Platforms platforms, if (macLibraryType == AddLibraryWizard::FrameworkType) // we will generate a separate -F -framework line commonPlatforms &= ~QFlags(AddLibraryWizard::MacPlatform); if (useSubfolders || addSuffix) // we will generate a separate debug/release conditions - commonPlatforms &= ~QFlags(AddLibraryWizard::WindowsPlatform); + commonPlatforms &= ~QFlags(AddLibraryWizard::WindowsMinGWPlatform + | AddLibraryWizard::WindowsMSVCPlatform); AddLibraryWizard::Platforms diffPlatforms = platforms ^ commonPlatforms; AddLibraryWizard::Platforms generatedPlatforms = 0; @@ -465,19 +486,22 @@ static QString generateLibsSnippet(AddLibraryWizard::Platforms platforms, QString snippetMessage; QTextStream str(&snippetMessage); - if (diffPlatforms & AddLibraryWizard::WindowsPlatform) { - str << "win32:CONFIG(release, debug|release): LIBS += "; + AddLibraryWizard::Platforms windowsPlatforms = diffPlatforms + & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform); + if (windowsPlatforms) { + QString windowsString = windowsScopes(windowsPlatforms); + str << windowsString << ":CONFIG(release, debug|release): LIBS += "; if (useSubfolders) str << simpleLibraryPathSnippet << "release/ " << "-l" << libName << "\n"; else if (addSuffix) str << appendSpaceIfNotEmpty(simpleLibraryPathSnippet) << "-l" << libName << "\n"; - str << "else:win32:CONFIG(debug, debug|release): LIBS += "; + str << "else:" << windowsString << ":CONFIG(debug, debug|release): LIBS += "; if (useSubfolders) str << simpleLibraryPathSnippet << "debug/ " << "-l" << libName << "\n"; else if (addSuffix) str << appendSpaceIfNotEmpty(simpleLibraryPathSnippet) << "-l" << libName << "d\n"; - generatedPlatforms |= AddLibraryWizard::WindowsPlatform; + generatedPlatforms |= windowsPlatforms; } if (diffPlatforms & AddLibraryWizard::MacPlatform) { if (generatedPlatforms) @@ -521,28 +545,55 @@ static QString generatePreTargetDepsSnippet(AddLibraryWizard::Platforms platform QTextStream str(&snippetMessage); str << "\n"; AddLibraryWizard::Platforms generatedPlatforms = 0; - if (platforms & AddLibraryWizard::WindowsPlatform) { - if (useSubfolders || addSuffix) { - str << "win32:CONFIG(release, debug|release): " - << preTargetDepsSnippet; - if (useSubfolders) - str << "release/" << libName << ".lib\n"; - else if (addSuffix) - str << libName << ".lib\n"; - - str << "else:win32:CONFIG(debug, debug|release): " - << preTargetDepsSnippet; - if (useSubfolders) - str << "debug/" << libName << ".lib\n"; - else if (addSuffix) - str << libName << "d.lib\n"; - } else { - str << "win32: " << preTargetDepsSnippet << libName << ".lib\n"; - } - generatedPlatforms |= AddLibraryWizard::WindowsPlatform; - } + AddLibraryWizard::Platforms windowsPlatforms = platforms + & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform); AddLibraryWizard::Platforms commonPlatforms = platforms; - commonPlatforms &= ~QFlags(AddLibraryWizard::WindowsPlatform); + if (useSubfolders || addSuffix) // we will generate a separate debug/release conditions, otherwise mingw is unix like + commonPlatforms &= ~QFlags(AddLibraryWizard::WindowsMinGWPlatform); + commonPlatforms &= ~QFlags(AddLibraryWizard::WindowsMSVCPlatform); // this case is different from all platforms + if (windowsPlatforms) { + if (useSubfolders || addSuffix) { + if (windowsPlatforms & AddLibraryWizard::WindowsMinGWPlatform) { + str << "win32-g++:CONFIG(release, debug|release): " + << preTargetDepsSnippet; + if (useSubfolders) + str << "release/" << "lib" << libName << ".a\n"; + else if (addSuffix) + str << "lib" << libName << ".a\n"; + + str << "else:win32-g++:CONFIG(debug, debug|release): " + << preTargetDepsSnippet; + if (useSubfolders) + str << "debug/" << "lib" << libName << ".a\n"; + else if (addSuffix) + str << "lib" << libName << "d.a\n"; + } + if (windowsPlatforms & AddLibraryWizard::WindowsMSVCPlatform) { + if (windowsPlatforms & AddLibraryWizard::WindowsMinGWPlatform) + str << "else:"; + str << "win32:!win32-g++:CONFIG(release, debug|release): " + << preTargetDepsSnippet; + if (useSubfolders) + str << "release/" << libName << ".lib\n"; + else if (addSuffix) + str << libName << ".lib\n"; + + str << "else:win32:!win32-g++:CONFIG(debug, debug|release): " + << preTargetDepsSnippet; + if (useSubfolders) + str << "debug/" << libName << ".lib\n"; + else if (addSuffix) + str << libName << "d.lib\n"; + } + generatedPlatforms |= windowsPlatforms; + } else { + if (windowsPlatforms & AddLibraryWizard::WindowsMSVCPlatform) { + str << "win32:!win32-g++ " << preTargetDepsSnippet << libName << ".lib\n"; + generatedPlatforms |= AddLibraryWizard::WindowsMSVCPlatform; // mingw will be handled with common scopes + } + // mingw not generated yet, will be joined with unix like + } + } if (commonPlatforms) { if (generatedPlatforms) str << "else:"; @@ -562,7 +613,7 @@ NonInternalLibraryDetailsController::NonInternalLibraryDetailsController( if (creatorPlatform() == CreatorWindows) { libraryDetailsWidget()->libraryPathChooser->setPromptDialogFilter( - QLatin1String("Library file (*.lib)")); + QLatin1String("Library file (*.lib lib*.a)")); setLinkageRadiosVisible(true); setRemoveSuffixVisible(true); } else { @@ -646,7 +697,7 @@ QString NonInternalLibraryDetailsController::suggestedIncludePath() const void NonInternalLibraryDetailsController::updateWindowsOptionsEnablement() { - bool ena = platforms() & AddLibraryWizard::WindowsPlatform; + bool ena = platforms() & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform); if (creatorPlatform() == CreatorWindows) { libraryDetailsWidget()->addSuffixCheckBox->setEnabled(ena); ena = true; @@ -725,6 +776,8 @@ QString NonInternalLibraryDetailsController::snippet() const libName = fi.baseName(); if (removeSuffix && !libName.isEmpty()) // remove last letter which needs to be "d" libName = libName.left(libName.size() - 1); + if (fi.completeSuffix() == QLatin1String("a")) // the mingw lib case + libName = libName.mid(3); // cut the "lib" prefix } else if (creatorPlatform() == CreatorMac) { if (macLibraryType() == AddLibraryWizard::FrameworkType) libName = fi.baseName(); @@ -742,10 +795,11 @@ QString NonInternalLibraryDetailsController::snippet() const // when we are on Win but we don't generate the code for Win // we still need to remove "debug" or "release" subfolder const bool useSubfoldersCondition = (creatorPlatform() == CreatorWindows) - ? true : platforms() & AddLibraryWizard::WindowsPlatform; + ? true : platforms() & (AddLibraryWizard::WindowsMinGWPlatform + | AddLibraryWizard::WindowsMSVCPlatform); if (useSubfoldersCondition) useSubfolders = libraryDetailsWidget()->useSubfoldersCheckBox->isChecked(); - if (platforms() & AddLibraryWizard::WindowsPlatform) + if (platforms() & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform)) addSuffix = libraryDetailsWidget()->addSuffixCheckBox->isChecked() || removeSuffix; } if (isIncludePathVisible()) { // generate also the path to lib @@ -960,7 +1014,7 @@ void InternalLibraryDetailsController::updateWindowsOptionsEnablement() if (creatorPlatform() == CreatorWindows) libraryDetailsWidget()->addSuffixCheckBox->setEnabled(true); libraryDetailsWidget()->winGroupBox->setEnabled(platforms() - & AddLibraryWizard::WindowsPlatform); + & (AddLibraryWizard::WindowsMinGWPlatform | AddLibraryWizard::WindowsMSVCPlatform)); } void InternalLibraryDetailsController::updateProFile() From c24eed11068be214ebf52deca7df41ca56af8ae5 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 23 Oct 2013 15:02:56 +0200 Subject: [PATCH 090/104] Check if project and its target are not null Task-number: QTCREATORBUG-10437 Fix also the code, so that we always behave like target platform, not like host platform. Change-Id: I4d8705ca858f9a520dcd6a780e7ba2f2dd6cb047 Reviewed-by: Daniel Teske --- .../librarydetailscontroller.cpp | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp index ce67ed4fed4..72536849664 100644 --- a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp +++ b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp @@ -84,14 +84,24 @@ LibraryDetailsController::LibraryDetailsController( if (!Utils::HostOsInfo::isLinuxHost()) { // project for which we are going to insert the snippet - const ProjectExplorer::Project *project = - ProjectExplorer::SessionManager::projectForFile(proFile); - // if its tool chain is maemo behave the same as we would be on linux - ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(project->activeTarget()->kit()); - if (tc - && (tc->targetAbi().osFlavor() == ProjectExplorer::Abi::HarmattanLinuxFlavor - || tc->targetAbi().osFlavor() == ProjectExplorer::Abi::MaemoLinuxFlavor)) - m_creatorPlatform = CreatorLinux; + const Project *project = SessionManager::projectForFile(proFile); + if (project && project->activeTarget()) { + // if its tool chain is maemo behave the same as we would be on linux + ProjectExplorer::ToolChain *tc = ToolChainKitInformation::toolChain(project->activeTarget()->kit()); + if (tc) { + switch (tc->targetAbi().os()) { + case Abi::WindowsOS: + m_creatorPlatform = CreatorWindows; + break; + case Abi::MacOS: + m_creatorPlatform = CreatorMac; + break; + default: + m_creatorPlatform = CreatorLinux; + break; + } + } + } } setPlatformsVisible(true); From dcaf7980962ebc2796e2f0c5cbba6fc604b9588f Mon Sep 17 00:00:00 2001 From: jkobus Date: Tue, 22 Oct 2013 12:46:12 +0200 Subject: [PATCH 091/104] AddLibraryWizard: wrap text on snippets label In this way dialog doesn't grow in width when the label contains long lines. Change-Id: Ibd5906912c18c8e4b27959ff5a7aeda258d6995a Reviewed-by: Friedemann Kleint Reviewed-by: Tobias Hunger --- src/plugins/qt4projectmanager/addlibrarywizard.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qt4projectmanager/addlibrarywizard.cpp b/src/plugins/qt4projectmanager/addlibrarywizard.cpp index ec3ec3a0e6d..554081081ef 100644 --- a/src/plugins/qt4projectmanager/addlibrarywizard.cpp +++ b/src/plugins/qt4projectmanager/addlibrarywizard.cpp @@ -275,6 +275,7 @@ SummaryPage::SummaryPage(AddLibraryWizard *parent) QVBoxLayout *layout = new QVBoxLayout(this); m_summaryLabel = new QLabel(this); m_snippetLabel = new QLabel(this); + m_snippetLabel->setWordWrap(true); layout->addWidget(m_summaryLabel); layout->addWidget(m_snippetLabel); m_summaryLabel->setTextFormat(Qt::RichText); From 520c9ab34268a559c8bbb99585958dc9c5f95045 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 23 Oct 2013 09:09:19 +0200 Subject: [PATCH 092/104] CdbExt: Checkout branch 3.0 of binary-artifacts repository. Change-Id: Ice27f5cc433f436cdb0445b14ba2902c601d5295 Reviewed-by: Eike Ziller --- qtcreator.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qtcreator.pri b/qtcreator.pri index a122a389f63..82adb12addd 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -3,7 +3,7 @@ QTCREATOR_PRI_INCLUDED = 1 QTCREATOR_VERSION = 2.8.82 QTCREATOR_COMPAT_VERSION = 2.8.82 -BINARY_ARTIFACTS_BRANCH = master +BINARY_ARTIFACTS_BRANCH = 3.0 isEqual(QT_MAJOR_VERSION, 5) { From 3f7b18129e946e12da04f2a5fa34623e5577720b Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 22 Oct 2013 16:37:33 +0200 Subject: [PATCH 093/104] Doc: update screenshot of the Welcome mode Change-Id: I5a2e17cd4c6a167d273f31f4e7ff63c149a5d34b Reviewed-by: Leena Miettinen --- .../qtcreator-gs-build-example-open.png | Bin 47212 -> 42317 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/images/qtcreator-gs-build-example-open.png b/doc/images/qtcreator-gs-build-example-open.png index 87512a8884440131013151ef9593ad325dd8d1f1..6f73b1a9beb8310daa802c32d239ee29dba7d3c3 100644 GIT binary patch literal 42317 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 D*A}lD literal 47212 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 Date: Wed, 23 Oct 2013 16:28:02 +0200 Subject: [PATCH 094/104] Debugger: Fix QList dumper for LLDB QStringList is movable in Qt 5 Change-Id: I5b0bee9c55e54f62c93a8515af0f56cdafed78bf Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 34 +++++++++++++------------- share/qtcreator/debugger/gdbbridge.py | 5 +--- share/qtcreator/debugger/lldbbridge.py | 5 ++-- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 55aaff207df..cf37f4f965f 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -255,23 +255,6 @@ class UnnamedSubItem(SubItem): self.iname = "%s.%s" % (self.d.currentIName, component) self.name = None -movableTypes = set([ - "QBrush", "QBitArray", "QByteArray", "QCustomTypeInfo", "QChar", "QDate", - "QDateTime", "QFileInfo", "QFixed", "QFixedPoint", "QFixedSize", - "QHashDummyValue", "QIcon", "QImage", "QLine", "QLineF", "QLatin1Char", - "QLocale", "QMatrix", "QModelIndex", "QPoint", "QPointF", "QPen", - "QPersistentModelIndex", "QResourceRoot", "QRect", "QRectF", "QRegExp", - "QSize", "QSizeF", "QString", "QTime", "QTextBlock", "QUrl", "QVariant", - "QXmlStreamAttribute", "QXmlStreamNamespaceDeclaration", - "QXmlStreamNotationDeclaration", "QXmlStreamEntityDeclaration" -]) - -movableTypes5 = set([ - "QStringList" -]) - - - class DumperBase: def __init__(self): self.isCdb = False @@ -473,6 +456,23 @@ class DumperBase: except: pass + + def isKnownMovableType(self, type): + if type in ( + "QBrush", "QBitArray", "QByteArray", "QCustomTypeInfo", "QChar", "QDate", + "QDateTime", "QFileInfo", "QFixed", "QFixedPoint", "QFixedSize", + "QHashDummyValue", "QIcon", "QImage", "QLine", "QLineF", "QLatin1Char", + "QLocale", "QMatrix", "QModelIndex", "QPoint", "QPointF", "QPen", + "QPersistentModelIndex", "QResourceRoot", "QRect", "QRectF", "QRegExp", + "QSize", "QSizeF", "QString", "QTime", "QTextBlock", "QUrl", "QVariant", + "QXmlStreamAttribute", "QXmlStreamNamespaceDeclaration", + "QXmlStreamNotationDeclaration", "QXmlStreamEntityDeclaration" + ): + return True + + return type == "QStringList" and self.qtVersion() >= 0x050000 + + def cleanAddress(addr): if addr is None: return "" diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 8a0bc863659..914cba7b160 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -1415,10 +1415,7 @@ class Dumper(DumperBase): return True if self.isSimpleType(type): return True - typeName = self.stripNamespaceFromType(str(type)) - if typeName in movableTypes: - return True - return self.qtVersion() >= 0x050000 and typeName in movableTypes5 + return self.isKnownMovableType(self.stripNamespaceFromType(str(type))) def putIntItem(self, name, value): with SubItem(self, name): diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 79e9ecbd60b..b6474089823 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -574,10 +574,9 @@ class Dumper(DumperBase): return format def isMovableType(self, type): - if type.GetTypeClass() in (lldb.eTypeClassBuiltin, - lldb.eTypeClassPointer): + if type.GetTypeClass() in (lldb.eTypeClassBuiltin, lldb.eTypeClassPointer): return True - return self.stripNamespaceFromType(type.GetName()) in movableTypes + return self.isKnownMovableType(self.stripNamespaceFromType(type.GetName())) def putIntItem(self, name, value): with SubItem(self, name): From bdc26d93792603a7ebb1e2ea9b96eb9aee14b2d3 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 23 Oct 2013 16:17:54 +0200 Subject: [PATCH 095/104] Do not set the QT_CREATOR macro for the QML puppet. It's not Qt Creator. And otherwise the build breaks with a namespaced Qt. Change-Id: Ib30ef86fbc59a02f6fd60d2f0b0b8f4ab452ef6d Reviewed-by: Thomas Hartmann --- share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri | 1 + 1 file changed, 1 insertion(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri index 7cc9dfdde45..68324e6a794 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri @@ -19,6 +19,7 @@ QT += core-private qml-private quick-private gui-private script-private } DEFINES += QWEAKPOINTER_ENABLE_ARROW +DEFINES -= QT_CREATOR include (../instances/instances.pri) include (instances/instances.pri) From e4f4042bd64a7cc435f2580e6acc3996c799b974 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 14:46:07 +0200 Subject: [PATCH 096/104] QmlDesigner.PropertyEditor: fix names of margin properties Change-Id: I284b1ec1269afa38f62a3f9b2747440ce4eedc36 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/QtQuick/LayoutSection.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml index 83e797b12fb..01ef293c5db 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml @@ -328,7 +328,7 @@ Section { SpinBox { maximumValue: 0xffff minimumValue: -0xffff - backendValue: backendValues.anchors_horizontalMargin + backendValue: backendValues.anchors_horizontalCenterOffset } ButtonRow { @@ -385,7 +385,7 @@ Section { SpinBox { maximumValue: 0xffff minimumValue: -0xffff - backendValue: backendValues.anchors_verticalMargin + backendValue: backendValues.anchors_verticalCenterOffset } ButtonRow { From f06d1ae0bf6d752699351ffad9ad17582b8fe621 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 17:35:26 +0200 Subject: [PATCH 097/104] QmlDesigner.PropertyEditor: cleanup of unused code Change-Id: Ia62b8cc0889ed6ccb83cada5718b75c5205fa2a6 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/CheckBox.qml | 4 ---- .../propertyEditorQmlSources/HelperWidgets/ComboBox.qml | 4 ---- .../propertyEditorQmlSources/HelperWidgets/SpinBox.qml | 4 ---- 3 files changed, 12 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml index a1fa1fd3fa2..fa85db2fb48 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml @@ -46,10 +46,6 @@ Controls.CheckBox { property variant backendValue - onBackendValueChanged: { - innerObject.evaluate(); - } - ExtendedFunctionButton { x: 22 backendValue: checkBox.backendValue diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml index 0fabf6ac02d..9349b250572 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml @@ -38,10 +38,6 @@ Controls.ComboBox { property color textColor: colorLogic.textColor - onBackendValueChanged: { - innerObject.evaluate(); - } - ColorLogic { id: colorLogic backendValue: comboBox.backendValue diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml index 13deba9b113..1d361b8273f 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml @@ -46,10 +46,6 @@ Controls.SpinBox { visible: spinBox.enabled } - onBackendValueChanged: { - innerObject.evaluate(); - } - ColorLogic { id: colorLogic backendValue: spinBox.backendValue From c0cae37d6aaa01df71223dba0ae66c4760cc83a8 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 17:36:04 +0200 Subject: [PATCH 098/104] QmlDesigner.PropertyEditor: fixing color editing Change-Id: I3102799952bace9c052f70f52489f5d768621f25 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/ColorEditor.qml | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorEditor.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorEditor.qml index f3044101c1e..ddf0f60c302 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorEditor.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorEditor.qml @@ -66,8 +66,10 @@ Column { onColorChanged: { textField.text = gradientLine.colorToString(color); gradientLine.currentColor = color - //Delay setting the color to keep ui responsive - colorEditorTimer.restart() + + if (buttonRow.checkedIndex !== 1) + //Delay setting the color to keep ui responsive + colorEditorTimer.restart() } GradientLine { @@ -105,10 +107,14 @@ Column { LineEdit { id: textField - inputMask: "\\#hhHHHHHH" + inputMask: "\\#HHHHHHhh" + + backendValue: colorEditor.backendendValue onAccepted: { - colorEditor.color = text + print("color") + print(textField.text) + colorEditor.color = textField.text } Layout.preferredWidth: 80 } @@ -124,26 +130,25 @@ Column { ButtonRowButton { iconSource: "images/icon_color_solid.png" + onClicked: { + colorEditor.backendendValue.resetValue(); + } } ButtonRowButton { visible: supportGradient iconSource: "images/icon_color_gradient.png" + onClicked: { + print("gradient") + } } ButtonRowButton { iconSource: "images/icon_color_none.png" - - } - - onToggled: { - if (index === 0) { - colorEditor.color = "#ffffff" - } - - if (index === 2) { + onClicked: { colorEditor.color = "#00000000" } + } } From 120d56c116ffb3b0de2946c17616c475ed7708c9 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 17:44:19 +0200 Subject: [PATCH 099/104] QmlDesigner.PropertyEditor: bringing back the templates Template for auto generates pages now work with in Qt Quick 2. Change-Id: Idd0a8fe8d82555bc69b192b21df7641dcdb634b4 Reviewed-by: Thomas Hartmann --- .../BooleanEditorTemplate.template | 9 ++ .../ColorEditorTemplate.template | 8 ++ .../IntEditorTemplate.template | 7 ++ .../RealEditorTemplate.template | 7 ++ .../StringEditorTemplate.template | 7 ++ .../PropertyTemplates/TemplateTypes.qml | 29 ++++++ .../UrlEditorTemplate.template | 7 ++ .../QtQuick/ItemPane.qml | 12 ++- .../propertyeditorcontextobject.cpp | 96 ++++++++++++++++++- .../propertyeditorcontextobject.h | 77 ++++----------- .../propertyeditorqmlbackend.cpp | 10 +- 11 files changed, 198 insertions(+), 71 deletions(-) create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/BooleanEditorTemplate.template create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/ColorEditorTemplate.template create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/IntEditorTemplate.template create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/RealEditorTemplate.template create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml create mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/UrlEditorTemplate.template diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/BooleanEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/BooleanEditorTemplate.template new file mode 100644 index 00000000000..c9a82d0f4a2 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/BooleanEditorTemplate.template @@ -0,0 +1,9 @@ +Label { + text: "%1" + toolTip: "%1" +} + +CheckBox { + text: backendValues.%2.value + backendValue: backendValues.%2 +} \ No newline at end of file diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/ColorEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/ColorEditorTemplate.template new file mode 100644 index 00000000000..0c2c697ecc2 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/ColorEditorTemplate.template @@ -0,0 +1,8 @@ +Item { +} + +ColorEditor { + caption: "%1" + backendColor: backendValues.%2 + supportGradient: false +} \ No newline at end of file diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/IntEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/IntEditorTemplate.template new file mode 100644 index 00000000000..cc8259da8b5 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/IntEditorTemplate.template @@ -0,0 +1,7 @@ +Label { + text: "%1" + toolTip: "%1" +} +SpinBox { + backendValue: backendValues.%2 +} \ No newline at end of file diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/RealEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/RealEditorTemplate.template new file mode 100644 index 00000000000..cc8259da8b5 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/RealEditorTemplate.template @@ -0,0 +1,7 @@ +Label { + text: "%1" + toolTip: "%1" +} +SpinBox { + backendValue: backendValues.%2 +} \ No newline at end of file diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template new file mode 100644 index 00000000000..3619dd5d4e4 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template @@ -0,0 +1,7 @@ +Label { + text: "%1" + toolTip: "%1" +} +LineEdit { + backendValue: backendValues.%2 +} \ No newline at end of file diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml new file mode 100644 index 00000000000..7c140411971 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml @@ -0,0 +1,29 @@ + +AutoTypes { + imports: [ "import HelperWidgets 2.0", "import QtQuick 2.1" ] + + Type { + typeNames: ["int"] + sourceFile: "IntEditorTemplate.template" + } + Type { + typeNames: ["real", "double", "qreal"] + sourceFile: "RealEditorTemplate.template" + } + Type { + typeNames: ["string", "QString"] + sourceFile: "StringEditorTemplate.template" + } + Type { + typeNames: ["QUrl", "url"] + sourceFile: "UrlEditorTemplate.template" + } + Type { + typeNames: ["bool", "boolean"] + sourceFile: "BooleanEditorTemplate.template" + } + Type { + typeNames: ["color", "QColor"] + sourceFile: "ColorEditorTemplate.template" + } +} diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/UrlEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/UrlEditorTemplate.template new file mode 100644 index 00000000000..3619dd5d4e4 --- /dev/null +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/UrlEditorTemplate.template @@ -0,0 +1,7 @@ +Label { + text: "%1" + toolTip: "%1" +} +LineEdit { + backendValue: backendValues.%2 +} \ No newline at end of file diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml index 7ca3eaa1434..4090bb48146 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml @@ -157,11 +157,13 @@ Rectangle { component: Column { anchors.left: parent.left anchors.right: parent.right - // Loader { - // id: specificsTwo; - // baseUrl: globalBaseUrl; - // qmlData: specificQmlData; - // } + Loader { + anchors.left: parent.left + anchors.right: parent.right + + id: specificsTwo; + sourceComponent: specificQmlComponent + } Loader { anchors.left: parent.left diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp index 51d45174765..195a24afb34 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp @@ -29,6 +29,8 @@ #include "propertyeditorcontextobject.h" +#include + namespace QmlDesigner { PropertyEditorContextObject::PropertyEditorContextObject(QObject *parent) : @@ -37,7 +39,9 @@ PropertyEditorContextObject::PropertyEditorContextObject(QObject *parent) : m_selectionChanged(false), m_backendValues(0), m_majorVersion(-1), - m_minorVersion(-1) + m_minorVersion(-1), + m_qmlComponent(0), + m_qmlContext(0) { } @@ -73,4 +77,94 @@ void PropertyEditorContextObject::setMinorVersion(int minorVersion) emit minorVersionChanged(); } +void PropertyEditorContextObject::insertInQmlContext(QQmlContext *context) +{ + m_qmlContext = context; + m_qmlContext->setContextObject(this); +} + +QQmlComponent *PropertyEditorContextObject::specificQmlComponent() +{ + if (m_qmlComponent) + return m_qmlComponent; + + m_qmlComponent = new QQmlComponent(m_qmlContext->engine(), this); + + m_qmlComponent->setData(m_specificQmlData.toAscii(), QUrl::fromLocalFile("specfics.qml")); + + return m_qmlComponent; +} + +void PropertyEditorContextObject::setGlobalBaseUrl(const QUrl &newBaseUrl) +{ + if (newBaseUrl == m_globalBaseUrl) + return; + + m_globalBaseUrl = newBaseUrl; + emit globalBaseUrlChanged(); +} + +void PropertyEditorContextObject::setSpecificsUrl(const QUrl &newSpecificsUrl) +{ + if (newSpecificsUrl == m_specificsUrl) + return; + + m_specificsUrl = newSpecificsUrl; + emit specificsUrlChanged(); +} + +void PropertyEditorContextObject::setSpecificQmlData(const QString &newSpecificQmlData) +{ + if (m_specificQmlData == newSpecificQmlData) + return; + + m_specificQmlData = newSpecificQmlData; + emit specificQmlDataChanged(); + + delete m_qmlComponent; + m_qmlComponent = 0; + emit specificQmlComponentChanged(); +} + +void PropertyEditorContextObject::setStateName(const QString &newStateName) +{ + if (newStateName == m_stateName) + return; + + m_stateName = newStateName; + emit stateNameChanged(); +} + +void PropertyEditorContextObject::setIsBaseState(bool newIsBaseState) +{ + if (newIsBaseState == m_isBaseState) + return; + + m_isBaseState = newIsBaseState; + emit isBaseStateChanged(); +} + +void PropertyEditorContextObject::setSelectionChanged(bool newSelectionChanged) +{ + if (newSelectionChanged == m_selectionChanged) + return; + + m_selectionChanged = newSelectionChanged; + emit selectionChangedChanged(); +} + +void PropertyEditorContextObject::setBackendValues(QQmlPropertyMap *newBackendValues) +{ + if (newBackendValues == m_backendValues) + return; + + m_backendValues = newBackendValues; + emit backendValuesChanged(); +} + +void PropertyEditorContextObject::triggerSelectionChanged() +{ + setSelectionChanged(!m_selectionChanged); +} + } //QmlDesigner diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h index 96f43da3cad..6eb7b9bd4b4 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h @@ -33,6 +33,7 @@ #include #include #include +#include #include namespace QmlDesigner { @@ -55,6 +56,8 @@ class PropertyEditorContextObject : public QObject Q_PROPERTY(QQmlPropertyMap* backendValues READ backendValues WRITE setBackendValues NOTIFY backendValuesChanged) + Q_PROPERTY(QQmlComponent* specificQmlComponent READ specificQmlComponent NOTIFY specificQmlComponentChanged) + public: PropertyEditorContextObject(QObject *parent = 0); @@ -75,6 +78,9 @@ public: int minorVersion() const; void setMinorVersion(int minorVersion); + void insertInQmlContext(QQmlContext *context); + QQmlComponent *specificQmlComponent(); + signals: void globalBaseUrlChanged(); void specificsUrlChanged(); @@ -85,75 +91,24 @@ signals: void backendValuesChanged(); void majorVersionChanged(); void minorVersionChanged(); + void specificQmlComponentChanged(); public slots: - void setGlobalBaseUrl(const QUrl &newBaseUrl) - { - if (newBaseUrl == m_globalBaseUrl) - return; + void setGlobalBaseUrl(const QUrl &newBaseUrl); - m_globalBaseUrl = newBaseUrl; - emit globalBaseUrlChanged(); - } + void setSpecificsUrl(const QUrl &newSpecificsUrl); - void setSpecificsUrl(const QUrl &newSpecificsUrl) - { - if (newSpecificsUrl == m_specificsUrl) - return; + void setSpecificQmlData(const QString &newSpecificQmlData); - m_specificsUrl = newSpecificsUrl; - emit specificsUrlChanged(); - } + void setStateName(const QString &newStateName); - void setSpecificQmlData(const QString &newSpecificQmlData) - { - if (m_specificQmlData == newSpecificQmlData) - return; + void setIsBaseState(bool newIsBaseState); - m_specificQmlData = newSpecificQmlData; - emit specificQmlDataChanged(); - } + void setSelectionChanged(bool newSelectionChanged); - void setStateName(const QString &newStateName) - { - if (newStateName == m_stateName) - return; + void setBackendValues(QQmlPropertyMap* newBackendValues); - m_stateName = newStateName; - emit stateNameChanged(); - } - - void setIsBaseState(bool newIsBaseState) - { - if (newIsBaseState == m_isBaseState) - return; - - m_isBaseState = newIsBaseState; - emit isBaseStateChanged(); - } - - void setSelectionChanged(bool newSelectionChanged) - { - if (newSelectionChanged == m_selectionChanged) - return; - - m_selectionChanged = newSelectionChanged; - emit selectionChangedChanged(); - } - - void setBackendValues(QQmlPropertyMap* newBackendValues) - { - if (newBackendValues == m_backendValues) - return; - - m_backendValues = newBackendValues; - emit backendValuesChanged(); - } - - void triggerSelectionChanged() - { - setSelectionChanged(!m_selectionChanged); - } + void triggerSelectionChanged(); private: QUrl m_globalBaseUrl; @@ -169,6 +124,8 @@ private: int m_majorVersion; int m_minorVersion; + QQmlComponent *m_qmlComponent; + QQmlContext *m_qmlContext; }; } //QmlDesigner { diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index 37fa5bc6df6..05b2511778b 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -129,7 +129,7 @@ PropertyEditorQmlBackend::PropertyEditorQmlBackend(PropertyEditorView *propertyE m_dummyPropertyEditorValue->setValue("#000000"); context()->setContextProperty("dummyBackendValue", m_dummyPropertyEditorValue.data()); m_contextObject->setBackendValues(&m_backendValuesPropertyMap); - context()->setContextObject(m_contextObject.data()); + m_contextObject->insertInQmlContext(context()); QObject::connect(&m_backendValuesPropertyMap, SIGNAL(valueChanged(QString,QVariant)), propertyEditor, SLOT(changeValue(QString))); } @@ -352,9 +352,9 @@ QString PropertyEditorQmlBackend::templateGeneration(NodeMetaInfo type, QStringList imports = variantToStringList(templateConfiguration()->property(QLatin1String("imports"))); QString qmlTemplate = imports.join(QLatin1String("\n")) + QLatin1Char('\n'); - qmlTemplate += QLatin1String("GroupBox {\n"); + qmlTemplate += QLatin1String("Section {\n"); qmlTemplate += QString(QLatin1String("caption: \"%1\"\n")).arg(QString::fromUtf8(objectNode.modelNode().simplifiedTypeName())); - qmlTemplate += QLatin1String("layout: VerticalLayout {\n"); + qmlTemplate += QLatin1String("SectionLayout {\n"); QList orderedList = type.propertyNames(); qSort(orderedList); @@ -390,8 +390,8 @@ QString PropertyEditorQmlBackend::templateGeneration(NodeMetaInfo type, } } } - qmlTemplate += QLatin1String("}\n"); //VerticalLayout - qmlTemplate += QLatin1String("}\n"); //GroupBox + qmlTemplate += QLatin1String("}\n"); //Section + qmlTemplate += QLatin1String("}\n"); //SectionLayout if (emptyTemplate) return QString(); From 0614587ebf4430c2ea6c49bdb06895dfeb679758 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 17:36:46 +0200 Subject: [PATCH 100/104] Debugger: Use more robust way to look up QMapNode types LLDB needs exactly the same spacing as in the debug info. Change-Id: I8a2e17cd4c6a167d273f31f4e7ff63c149a5d34b Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index f5087d407f4..70d6bac676b 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -878,9 +878,11 @@ def qdumpHelper__Qt5_QMap(d, value, forceLong): keyType = d.templateArgument(value.type, 0) valueType = d.templateArgument(value.type, 1) isCompact = d.isMapCompact(keyType, valueType) - # Note: The space in the QMapNode lookup below is - # important for LLDB. - nodeType = d.lookupType(d.ns + "QMapNode<%s, %s>" % (keyType, valueType)) + # Note: Keeping the spacing in the type lookup + # below is important for LLDB. + needle = str(d_ptr.type).replace("QMapData", "QMapNode", 1) + nodeType = d.lookupType(needle) + if isCompact: innerType = valueType else: From f2634b316a63ace6329427169fc16b19496cf2cb Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Oct 2013 18:01:07 +0200 Subject: [PATCH 101/104] QmlDesigner.PropertyEditor: fix property name in LayoutSection Change-Id: I3ca4d1930a90c9d84019061f32a8d34d646fce98 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/QtQuick/LayoutSection.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml index 01ef293c5db..49ac950e891 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml @@ -348,7 +348,7 @@ Section { RowLayout { anchors.left: parent.left anchors.right: parent.right - visible: anchorBackend.verticalAnchored; + visible: anchorBackend.verticalCentered; IconLabel { source: "../HelperWidgets/images/anchor-vertical.png" From a912c8255d60a53f76d0afc68e9f2f330fb70704 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 18:11:11 +0200 Subject: [PATCH 102/104] Debugger: Split Bitfields dumper test LLDB appends the ':1' to types, GDB not. Change-Id: I6a2e17cd4c6a167d273f31f4e7ff63c149a5d34b Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 60c45ecb7f6..1b5412d2bfe 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -3973,7 +3973,7 @@ void tst_Dumpers::dumper_data() % Check("foo.9", "[9]", "", "Foo"); - QTest::newRow("Bitfields") + QTest::newRow("BitfieldsGdb") << Data("struct S\n" "{\n" " S() : x(0), y(0), c(0), b(0), f(0), d(0), i(0) {}\n" @@ -3986,6 +3986,7 @@ void tst_Dumpers::dumper_data() " int i;\n" "} s;\n" "unused(&s);\n") + % GdbOnly() % Check("s", "", "S") % Check("s.b", "false", "bool") % Check("s.c", "false", "bool") @@ -3995,6 +3996,29 @@ void tst_Dumpers::dumper_data() % Check("s.x", "0", "unsigned int") % Check("s.y", "0", "unsigned int"); + QTest::newRow("BitfieldsLldb") + << Data("struct S\n" + "{\n" + " S() : x(0), y(0), c(0), b(0), f(0), d(0), i(0) {}\n" + " unsigned int x : 1;\n" + " unsigned int y : 1;\n" + " bool c : 1;\n" + " bool b;\n" + " float f;\n" + " double d;\n" + " int i;\n" + "} s;\n" + "unused(&s);\n") + % LldbOnly() + % Check("s", "", "S") + % Check("s.b", "false", "bool") + % Check("s.c", "false", "bool:1") + % Check("s.d", "0", "double") + % Check("s.f", "0", "float") + % Check("s.i", "0", "int") + % Check("s.x", "0", "unsigned int:1") + % Check("s.y", "0", "unsigned int:1"); + QTest::newRow("Function") << Data("#include \n" From c60cc101ddc9e6cbf87350c713db90314ad33180 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 18:24:25 +0200 Subject: [PATCH 103/104] Debugger: More robust type lookup in QHashIterator dumper LLDB needs exact matches of spaces Change-Id: I442e17cd4c6a167d273f31f4e7ff63c149a5d34b Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 70d6bac676b..723a0e35d6e 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -553,14 +553,18 @@ def qdump__QHashNode(d, value): def qHashIteratorHelper(d, value): typeName = str(value.type) - hashType = d.lookupType(typeName[0:typeName.rfind("::")]) + hashTypeName = typeName[0:typeName.rfind("::")] + hashType = d.lookupType(hashTypeName) keyType = d.templateArgument(hashType, 0) valueType = d.templateArgument(hashType, 1) d.putNumChild(1) d.putEmptyValue() if d.isExpanded(): with Children(d): - innerTypeName = "%sQHashNode<%s,%s>" % (d.ns, keyType, valueType) + # We need something like QHash::iterator + # -> QHashNode with 'proper' spacing, + # as space changes confuse LLDB. + innerTypeName = hashTypeName.replace("QHash", "QHashNode", 1) node = value["i"].cast(d.lookupType(innerTypeName).pointer()) d.putSubItem("key", node["key"]) d.putSubItem("value", node["value"]) From b889bb1608badceed0dc1175f3322ea8015f8924 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Oct 2013 19:12:00 +0200 Subject: [PATCH 104/104] Debugger: Make QRegion dumper more independent of debuginfo Change-Id: I332e17cd4c6a167d273f31f4e7ff63c149a5d34b Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 39 ++++++++++++++++++++--------- tests/auto/debugger/tst_dumpers.cpp | 6 ++--- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 723a0e35d6e..a80986ef744 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1465,19 +1465,34 @@ def qdump__QRegion(d, value): d.putValue("") d.putNumChild(0) else: - try: - # Fails without debug info. - n = int(p.dereference()["numRects"]) - d.putItemCount(n) - d.putNumChild(n) - d.putPlainChildren(p.dereference()) - except: - warn("NO DEBUG INFO") - d.putValue(p) - d.putPlainChildren(value) + # struct QRegionPrivate: + # int numRects; + # QVector rects; + # QRect extents; + # QRect innerRect; + # int innerArea; + pp = d.dereferenceValue(p) + n = d.extractInt(pp) + d.putItemCount(n) + d.putNumChild(n) + if d.isExpanded(): + with Children(d): + v = d.ptrSize() + rectType = d.lookupType(d.ns + "QRect") + d.putIntItem("numRects", n) + d.putSubItem("extents", d.createValue(pp + 2 * v, rectType)) + d.putSubItem("innerRect", d.createValue(pp + 2 * v + rectType.sizeof, rectType)) + # FIXME + try: + # Can fail if QVector debuginfo is missing. + vectType = d.lookupType("%sQVector<%sQRect>" % (d.ns, d.ns)) + d.putSubItem("rects", d.createValue(pp + v, vectType)) + except: + with SubItem(d, "rects"): + d.putItemCount(n) + d.putType("%sQVector<%sQRect>" % (d.ns, d.ns)) + d.putNumChild(0) -# qt_rgn might be 0 -# gdb.parse_and_eval("region")["d"].dereference()["qt_rgn"].dereference() def qdump__QScopedPointer(d, value): d.putBetterType(d.currentType) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 1b5412d2bfe..0bcb04d4975 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -2244,9 +2244,7 @@ void tst_Dumpers::dumper_data() % Check("s", "(100.5, 200.5)", "@QSizeF"); QTest::newRow("QRegion") - << Data("#include \n" - "#include // Dummy for namespace\n", - "QString dummy;\n" + << Data("#include \n", "QRegion region, region0, region1, region2;\n" "region0 = region;\n" "region += QRect(100, 100, 200, 200);\n" @@ -2262,7 +2260,7 @@ void tst_Dumpers::dumper_data() % Check("region1.innerArea", "40000", "int") % Check("region1.innerRect", "200x200+100+100", "@QRect") % Check("region1.numRects", "1", "int") - % Check("region1.rects", "<0 items>", "@QVector<@QRect>") + % Check("region1.rects", "<1 items>", "@QVector<@QRect>") % Check("region2", "<2 items>", "@QRegion") % Check("region2.extents", "600x700+100+100", "@QRect") % Check("region2.innerArea", "200000", "int")