diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp index 7c1d217c32e..044b5680c25 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp @@ -146,9 +146,11 @@ bool Qt4RunConfiguration::isEnabled() const QString Qt4RunConfiguration::disabledReason() const { if (m_parseInProgress) - return tr("The .pro file '%1' is currently being parsed.").arg(QFileInfo(m_proFilePath).fileName()); + return tr("The .pro file '%1' is currently being parsed.") + .arg(QFileInfo(m_proFilePath).fileName()); + if (!m_parseSuccess) - return tr("The .pro file '%1' could not be parsed.").arg(QFileInfo(m_proFilePath).fileName()); + return qt4Target()->qt4Project()->disabledReasonForRunConfiguration(m_proFilePath); return QString(); } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index 79469a3045f..70d9a978d31 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -142,8 +142,7 @@ QString S60DeviceRunConfiguration::disabledReason() const return tr("The .pro file '%1' is currently being parsed.") .arg(QFileInfo(m_proFilePath).fileName()); if (!m_validParse) - return tr("The .pro file '%1' could not be parsed.") - .arg(QFileInfo(m_proFilePath).fileName()); + return qt4Target()->qt4Project()->disabledReasonForRunConfiguration(m_proFilePath); return QString(); } diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 4c6d7d0448b..e8be9ce3a7d 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -1362,6 +1362,23 @@ void Qt4Project::configureAsExampleProject(const QStringList &platforms) ProjectExplorer::ProjectExplorerPlugin::instance()->requestProjectModeUpdate(this); } +// All the Qt4 run configurations should share code. +// This is a rather suboptimal way to do that for disabledReason() +// but more pratical then duplicated the code everywhere +QString Qt4Project::disabledReasonForRunConfiguration(const QString &proFilePath) +{ + if (!QFileInfo(proFilePath).exists()) + return tr("The .pro file '%1' does not exist.") + .arg(QFileInfo(proFilePath).fileName()); + + if (!m_rootProjectNode->findProFileFor(proFilePath)) + return tr("The .pro file '%1' is not part of the project.") + .arg(QFileInfo(proFilePath).fileName()); + + return tr("The .pro file '%1' could not be parsed.") + .arg(QFileInfo(proFilePath).fileName()); +} + } // namespace Qt4ProjectManager #include "qt4project.moc" diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index b54518a5d18..a568aeb5b36 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -139,6 +139,9 @@ public: void configureAsExampleProject(const QStringList &platforms); + /// \internal + QString disabledReasonForRunConfiguration(const QString &proFilePath); + signals: void proParsingDone(); void proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *node, bool, bool); diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp index ca58efef246..03e935c8c43 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp @@ -162,8 +162,8 @@ bool RemoteLinuxRunConfiguration::isEnabled() const return false; } if (!d->validParse) { - d->disabledReason = tr("The .pro file '%1' could not be parsed.") - .arg(QFileInfo(d->proFilePath).fileName()); + Qt4Project *project = qt4Target()->qt4Project(); + d->disabledReason = project->disabledReasonForRunConfiguration(d->proFilePath); return false; } if (!activeQt4BuildConfiguration()) {