From 646ec206330fa835233b4492491a994b64ee9bb3 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Mon, 4 Oct 2010 09:27:25 +0200 Subject: [PATCH] Debugging helpers: Only fail if there was a chance of success. Task-number: QTCREATORBUG-2563 Reviewed-by: Kai Koehne --- src/plugins/qt4projectmanager/qmldumptool.cpp | 2 +- src/plugins/qt4projectmanager/qmldumptool.h | 2 +- .../qt4projectmanager/qmlobservertool.cpp | 2 +- .../qt4projectmanager/qmlobservertool.h | 2 +- .../qt4projectmanager/qtoptionspage.cpp | 28 +++++++++++++------ 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp index 0fc5411414f..e39956b8a14 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.cpp +++ b/src/plugins/qt4projectmanager/qmldumptool.cpp @@ -126,7 +126,7 @@ static inline QStringList validBinaryFilenames() << QLatin1String("qmldump.app/Contents/MacOS/qmldump"); } -bool QmlDumpTool::canBuild(QtVersion *qtVersion) +bool QmlDumpTool::canBuild(const QtVersion *qtVersion) { const QString installHeaders = qtVersion->versionInfo().value("QT_INSTALL_HEADERS"); const QString header = installHeaders + QLatin1String("/QtDeclarative/private/qdeclarativemetatype_p.h"); diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h index 3201f7ba3e6..6924690865b 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.h +++ b/src/plugins/qt4projectmanager/qmldumptool.h @@ -47,7 +47,7 @@ class QtVersion; class QT4PROJECTMANAGER_EXPORT QmlDumpTool : public Utils::BuildableHelperLibrary { public: - static bool canBuild(QtVersion *qtVersion); + static bool canBuild(const QtVersion *qtVersion); static QString toolForProject(ProjectExplorer::Project *project); static QString toolByInstallData(const QString &qtInstallData); static QStringList locationsByInstallData(const QString &qtInstallData); diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp index 1a456062af0..e444d89bbb6 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.cpp +++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp @@ -51,7 +51,7 @@ static inline QStringList validBinaryFilenames() << QLatin1String("QMLObserver.app/Contents/MacOS/QMLObserver"); } -bool QmlObserverTool::canBuild(QtVersion *qtVersion) +bool QmlObserverTool::canBuild(const QtVersion *qtVersion) { return checkMinimumQtVersion(qtVersion->qtVersionString(), 4, 7, 1); } diff --git a/src/plugins/qt4projectmanager/qmlobservertool.h b/src/plugins/qt4projectmanager/qmlobservertool.h index 89cbca67460..78c8ffc5ae9 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.h +++ b/src/plugins/qt4projectmanager/qmlobservertool.h @@ -48,7 +48,7 @@ class QtVersion; class QT4PROJECTMANAGER_EXPORT QmlObserverTool : public Utils::BuildableHelperLibrary { public: - static bool canBuild(QtVersion *qtVersion); + static bool canBuild(const QtVersion *qtVersion); static QString toolForProject(ProjectExplorer::Project *project); static QString toolByInstallData(const QString &qtInstallData); static QStringList locationsByInstallData(const QString &qtInstallData); diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 01798677512..9c3d23dcd77 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -33,6 +33,8 @@ #include "qt4projectmanagerconstants.h" #include "qt4target.h" #include "qtversionmanager.h" +#include "qmldumptool.h" +#include "qmlobservertool.h" #include <projectexplorer/debugginghelper.h> #include <coreplugin/coreconstants.h> @@ -238,7 +240,9 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver QIcon QtOptionsPageWidget::debuggerHelperIconForQtVersion(const QtVersion *version) { - if (version->hasDebuggingHelper() && version->hasQmlDump() && version->hasQmlObserver()) { + if (version->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(version) || version->hasQmlDump()) + && (!QmlObserverTool::canBuild(version) || version->hasQmlObserver())) { return m_debuggingHelperOkIcon; } else if (!version->hasDebuggingHelper() && !version->hasQmlDump() && !version->hasQmlObserver()) { return m_debuggingHelperErrorIcon; @@ -248,7 +252,9 @@ QIcon QtOptionsPageWidget::debuggerHelperIconForQtVersion(const QtVersion *versi QPixmap QtOptionsPageWidget::debuggerHelperPixmapForQtVersion(const QtVersion *version) { - if (version->hasDebuggingHelper() && version->hasQmlDump() && version->hasQmlObserver()) { + if (version->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(version) || version->hasQmlDump()) + && (!QmlObserverTool::canBuild(version) || version->hasQmlObserver())) { return m_debuggingHelperOkPixmap; } else if (!version->hasDebuggingHelper() && !version->hasQmlDump() && !version->hasQmlObserver()) { return m_debuggingHelperErrorPixmap; @@ -311,7 +317,9 @@ void QtOptionsPageWidget::debuggingHelperBuildFinished(const QString &name, cons QTC_ASSERT(item, return) item->setData(2, Qt::UserRole, output); QSharedPointerQtVersion qtVersion = m_versions.at(index); - const bool success = qtVersion->hasDebuggingHelper() && qtVersion->hasQmlDump() && qtVersion->hasQmlObserver(); + const bool success = qtVersion->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(qtVersion.data()) || qtVersion->hasQmlDump()) + && (!QmlObserverTool::canBuild(qtVersion.data()) || qtVersion->hasQmlObserver()); item->setData(2, Qt::DecorationRole, debuggerHelperIconForQtVersion(qtVersion.data())); // Update bottom control if the selection is still the same @@ -404,12 +412,16 @@ static inline QString msgHtmlHelperToolTip(const QString &gdbHelperPath, const Q QString notFound = QtOptionsPageWidget::tr("Binary not found"); //: Tooltip showing the debugging helper library file. - return QtOptionsPageWidget::tr("<html><body><table><tr><td>File:</td><td><pre>%1</pre></td></tr>" + return QtOptionsPageWidget::tr("<html><body><table>" + "<tr><td colspan=\"2\"><b>GDB debugging helpers</b></td></tr>" + "<tr><td>File:</td><td><pre>%1</pre></td></tr>" "<tr><td>Last modified:</td><td>%2</td></tr>" "<tr><td>Size:</td><td>%3 Bytes</td></tr>" + "<tr><td colspan=\"2\"><b>QML type dumper</b></td></tr>" "<tr><td>File:</td><td><pre>%4</pre></td></tr>" "<tr><td>Last modified:</td><td>%5</td></tr>" "<tr><td>Size:</td><td>%6 Bytes</td></tr>" + "<tr><td colspan=\"2\"><b>QML observer</b></td></tr>" "<tr><td>File:</td><td><pre>%7</pre></td></tr>" "<tr><td>Last modified:</td><td>%8</td></tr>" "<tr><td>Size:</td><td>%9 Bytes</td></tr>" @@ -432,12 +444,10 @@ void QtOptionsPageWidget::updateDebuggingHelperStateLabel(const QtVersion *versi { QString tooltip; if (version && version->isValid()) { - const bool hasHelpers = version->hasDebuggingHelper() && version->hasQmlDump() && version->hasQmlObserver(); m_ui->debuggingHelperStateLabel->setPixmap(debuggerHelperPixmapForQtVersion(version)); - if (hasHelpers) - tooltip = msgHtmlHelperToolTip(version->debuggingHelperLibrary(), - version->qmlDumpTool(), - version->qmlObserverTool()); + tooltip = msgHtmlHelperToolTip(version->debuggingHelperLibrary(), + version->qmlDumpTool(), + version->qmlObserverTool()); } else { m_ui->debuggingHelperStateLabel->setPixmap(QPixmap()); } -- GitLab