From: Kai Koehne Date: Tue, 5 Oct 2010 08:54:05 +0000 (+0200) Subject: QmlProject: Disable debug action if qmlobserver cannot be built X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=62676718582bef37f34df44db1875ea9e0927a3e;p=qt-creator-jp%2Fqt-creator-jp.git QmlProject: Disable debug action if qmlobserver cannot be built QmlObserver right now requires 4.7.1 minimum. There's no gain in telling the user that he needs qmlobserver to debug, if it can't be build with 4.7.0 anyway. Reviewed-by: Christiaan Janssen --- diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index c86625b3a9..9cec81f761 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -114,26 +114,22 @@ Internal::QmlProjectTarget *QmlProjectRunConfiguration::qmlTarget() const QString QmlProjectRunConfiguration::viewerPath() const { - if (m_qtVersionId == -1) + Qt4ProjectManager::QtVersion *version = qtVersion(); + if (!version) { return QString(); - - Qt4ProjectManager::QtVersionManager *versionManager = Qt4ProjectManager::QtVersionManager::instance(); - Qt4ProjectManager::QtVersion *version = versionManager->version(m_qtVersionId); - QTC_ASSERT(version, return QString()); - - return version->qmlviewerCommand(); + } else { + return version->qmlviewerCommand(); + } } QString QmlProjectRunConfiguration::observerPath() const { - if (m_qtVersionId == -1) + Qt4ProjectManager::QtVersion *version = qtVersion(); + if (!version) { return QString(); - - Qt4ProjectManager::QtVersionManager *versionManager = Qt4ProjectManager::QtVersionManager::instance(); - Qt4ProjectManager::QtVersion *version = versionManager->version(m_qtVersionId); - QTC_ASSERT(version, return QString()); - - return version->qmlObserverTool(); + } else { + return version->qmlObserverTool(); + } } QStringList QmlProjectRunConfiguration::viewerArguments() const @@ -162,6 +158,18 @@ QString QmlProjectRunConfiguration::workingDirectory() const return projectFile.absolutePath(); } +Qt4ProjectManager::QtVersion *QmlProjectRunConfiguration::qtVersion() const +{ + if (m_qtVersionId == -1) + return 0; + + Qt4ProjectManager::QtVersionManager *versionManager = Qt4ProjectManager::QtVersionManager::instance(); + Qt4ProjectManager::QtVersion *version = versionManager->version(m_qtVersionId); + QTC_ASSERT(version, return 0); + + return version; +} + static bool caseInsensitiveLessThan(const QString &s1, const QString &s2) { return s1.toLower() < s2.toLower(); @@ -381,10 +389,10 @@ void QmlProjectRunConfiguration::updateEnabled() bool newValue = (QFileInfo(viewerPath()).exists() || QFileInfo(observerPath()).exists()) && qmlFileFound; - if (m_isEnabled != newValue) { - m_isEnabled = newValue; - emit isEnabledChanged(m_isEnabled); - } + + // Always emit change signal to force reevaluation of run/debug buttons + m_isEnabled = newValue; + emit isEnabledChanged(m_isEnabled); } void QmlProjectRunConfiguration::updateQtVersions() diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h index 649d983fa4..9cae939262 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h @@ -74,6 +74,7 @@ public: QString observerPath() const; QStringList viewerArguments() const; QString workingDirectory() const; + Qt4ProjectManager::QtVersion *qtVersion() const; // RunConfiguration virtual QWidget *createConfigurationWidget(); diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp index 84a07c2df9..757b23dc27 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp @@ -43,6 +43,8 @@ #include #include #include +#include +#include #include #include @@ -148,9 +150,18 @@ bool QmlRunControlFactory::canRun(RunConfiguration *runConfiguration, } else { bool qmlDebugSupportInstalled = Debugger::DebuggerUISwitcher::instance()->supportedLanguages() & Debugger::QmlLanguage; - // don't check for qmlobserver already here because we can't update the run buttons - // if it has been built in the meantime - return (config != 0) && qmlDebugSupportInstalled; + + if (config && qmlDebugSupportInstalled) { + if (!config->observerPath().isEmpty()) { + return true; + } + + if (config->qtVersion() && Qt4ProjectManager::QmlObserverTool::canBuild(config->qtVersion())) { + return true; + } else { + return false; + } + } } return false;