diff options
author | hjk <hjk@qt.io> | 2019-11-15 15:44:45 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-11-21 13:08:06 +0000 |
commit | c2127c9ec42a2a8ced7aff3547d844e6b421d718 (patch) | |
tree | ccd97ebb9ce09bb8215c006de332d350031bf426 /src | |
parent | 738bbf1a873fbb5c5debbb871a58631e99ba20e8 (diff) | |
download | qt-creator-c2127c9ec42a2a8ced7aff3547d844e6b421d718.tar.gz |
ProjectExplorer: Introduce and use a Target::buildSystemUpdated signal
Change-Id: I497d46866146600a1ed9162bd720c574ee4d4769
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src')
21 files changed, 52 insertions, 38 deletions
diff --git a/src/plugins/android/androidrunconfiguration.cpp b/src/plugins/android/androidrunconfiguration.cpp index 1d562ad16b..3028b27f71 100644 --- a/src/plugins/android/androidrunconfiguration.cpp +++ b/src/plugins/android/androidrunconfiguration.cpp @@ -31,6 +31,7 @@ #include "androidmanager.h" #include "adbcommandswidget.h" +#include <projectexplorer/buildsystem.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/project.h> #include <projectexplorer/target.h> @@ -132,7 +133,7 @@ AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Core::Id id) postStartShellCmdAspect->setSettingsKey("Android.PostStartShellCmdListKey"); postStartShellCmdAspect->setLabel(tr("Shell commands to run on Android device after application quits.")); - connect(target, &Target::parsingFinished, this, [this] { + connect(target, &Target::buildSystemUpdated, this, [this] { updateTargetInformation(); AndroidManager::updateGradleProperties(this->target(), buildKey()); }); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp index 4e0e10352a..dddf3c13fe 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp @@ -153,6 +153,8 @@ void AutotoolsBuildSystem::makefileParsingFinished() m_makefileParserThread->deleteLater(); m_makefileParserThread = nullptr; + + emitBuildSystemUpdated(); } static QStringList filterIncludes(const QString &absSrc, const QString &absBuild, diff --git a/src/plugins/baremetal/baremetalrunconfiguration.cpp b/src/plugins/baremetal/baremetalrunconfiguration.cpp index c182025a61..87ec9d1dea 100644 --- a/src/plugins/baremetal/baremetalrunconfiguration.cpp +++ b/src/plugins/baremetal/baremetalrunconfiguration.cpp @@ -26,6 +26,7 @@ #include "baremetalconstants.h" #include "baremetalrunconfiguration.h" +#include <projectexplorer/buildsystem.h> #include <projectexplorer/buildtargetinfo.h> #include <projectexplorer/project.h> #include <projectexplorer/runconfigurationaspects.h> @@ -49,13 +50,9 @@ BareMetalRunConfiguration::BareMetalRunConfiguration(Target *target, Core::Id id addAspect<ArgumentsAspect>(); addAspect<WorkingDirectoryAspect>(); - connect(target, &Target::deploymentDataChanged, - this, &BareMetalRunConfiguration::updateTargetInformation); - connect(target, &Target::applicationTargetsChanged, - this, &BareMetalRunConfiguration::updateTargetInformation); connect(target, &Target::kitChanged, this, &BareMetalRunConfiguration::updateTargetInformation); // Handles device changes, etc. - connect(target, &Target::parsingFinished, + connect(target, &Target::buildSystemUpdated, this, &BareMetalRunConfiguration::updateTargetInformation); } diff --git a/src/plugins/boot2qt/qdbrunconfiguration.cpp b/src/plugins/boot2qt/qdbrunconfiguration.cpp index 65df670342..05c63fd424 100644 --- a/src/plugins/boot2qt/qdbrunconfiguration.cpp +++ b/src/plugins/boot2qt/qdbrunconfiguration.cpp @@ -27,6 +27,7 @@ #include "qdbconstants.h" +#include <projectexplorer/buildsystem.h> #include <projectexplorer/buildtargetinfo.h> #include <projectexplorer/deploymentdata.h> #include <projectexplorer/project.h> @@ -85,13 +86,9 @@ QdbRunConfiguration::QdbRunConfiguration(Target *target, Core::Id id) addAspect<WorkingDirectoryAspect>(); addAspect<FullCommandLineAspect>(this); - connect(target, &Target::deploymentDataChanged, - this, &QdbRunConfiguration::updateTargetInformation); - connect(target, &Target::applicationTargetsChanged, - this, &QdbRunConfiguration::updateTargetInformation); connect(target, &Target::kitChanged, this, &QdbRunConfiguration::updateTargetInformation); - connect(target, &Target::parsingFinished, + connect(target, &Target::buildSystemUpdated, this, &QdbRunConfiguration::updateTargetInformation); setDefaultDisplayName(tr("Run on Boot2Qt Device")); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 186e9aac66..097c3aa1b7 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -362,6 +362,8 @@ void CMakeBuildSystem::combineScanAndParse() } m_currentGuard = {}; + + emitBuildSystemUpdated(); } void CMakeBuildSystem::checkAndReportError(QString &errorMessage) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index b636ce6737..9995c8703f 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -502,6 +502,8 @@ void CompilationDatabaseBuildSystem::updateDeploymentData() m_deployFileWatcher->addFile(deploymentFilePath.toString(), FileSystemWatcher::WatchModifiedDate); } + + emitBuildSystemUpdated(); } static TextEditor::TextDocument *createCompilationDatabaseDocument() diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index c71da8dccb..6d5680a89a 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -498,6 +498,8 @@ void GenericBuildSystem::refresh(RefreshOptions options) refreshCppCodeModel(); updateDeploymentData(); guard.markAsSuccess(); + + emitBuildSystemUpdated(); } /** diff --git a/src/plugins/nim/project/nimblebuildsystem.cpp b/src/plugins/nim/project/nimblebuildsystem.cpp index a4865b8d84..1e8874a0a9 100644 --- a/src/plugins/nim/project/nimblebuildsystem.cpp +++ b/src/plugins/nim/project/nimblebuildsystem.cpp @@ -179,7 +179,8 @@ void NimbleBuildSystem::setTasks(std::vector<NimbleTask> tasks) return; m_tasks = std::move(tasks); emit tasksChanged(); - emit target()->targetPropertiesChanged(); + + emitBuildSystemUpdated(); } void NimbleBuildSystem::setMetadata(NimbleMetadata metadata) diff --git a/src/plugins/nim/project/nimblerunconfiguration.cpp b/src/plugins/nim/project/nimblerunconfiguration.cpp index b9f8015238..d3bed6ce2e 100644 --- a/src/plugins/nim/project/nimblerunconfiguration.cpp +++ b/src/plugins/nim/project/nimblerunconfiguration.cpp @@ -49,9 +49,7 @@ NimbleRunConfiguration::NimbleRunConfiguration(ProjectExplorer::Target *target, addAspect<WorkingDirectoryAspect>(); addAspect<TerminalAspect>(); - connect(target, &Target::parsingFinished, - this, &NimbleRunConfiguration::updateTargetInformation); - connect(target, &Target::targetPropertiesChanged, + connect(target, &Target::buildSystemUpdated, this, &NimbleRunConfiguration::updateTargetInformation); updateTargetInformation(); diff --git a/src/plugins/nim/project/nimbuildsystem.cpp b/src/plugins/nim/project/nimbuildsystem.cpp index 3203cd9287..58d27e6124 100644 --- a/src/plugins/nim/project/nimbuildsystem.cpp +++ b/src/plugins/nim/project/nimbuildsystem.cpp @@ -160,6 +160,8 @@ void NimBuildSystem::updateProject() // Complete scan m_guard.markAsSuccess(); m_guard = {}; // Trigger destructor of previous object, emitting parsingFinished() + + emitBuildSystemUpdated(); } bool NimBuildSystem::supportsAction(Node *context, ProjectAction action, const Node *node) const diff --git a/src/plugins/projectexplorer/buildsystem.cpp b/src/plugins/projectexplorer/buildsystem.cpp index 18f6bb9f98..9e5205b94d 100644 --- a/src/plugins/projectexplorer/buildsystem.cpp +++ b/src/plugins/projectexplorer/buildsystem.cpp @@ -274,7 +274,6 @@ void BuildSystem::setDeploymentData(const DeploymentData &deploymentData) emit deploymentDataChanged(); emit applicationTargetsChanged(); emit target()->deploymentDataChanged(); - emit target()->applicationTargetsChanged(); } } @@ -288,7 +287,6 @@ void BuildSystem::setApplicationTargets(const QList<BuildTargetInfo> &appTargets if (Utils::toSet(appTargets) != Utils::toSet(d->m_appTargets)) { d->m_appTargets = appTargets; emit applicationTargetsChanged(); - emit target()->applicationTargetsChanged(); } } @@ -309,6 +307,11 @@ void BuildSystem::setRootProjectNode(std::unique_ptr<ProjectNode> &&root) d->m_target->project()->setRootProjectNode(std::move(root)); } +void BuildSystem::emitBuildSystemUpdated() +{ + target()->buildSystemUpdated(this); +} + QString BuildSystem::disabledReason(const QString &buildKey) const { if (hasParsingData()) { diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h index ca9d7acca3..b3a142c15a 100644 --- a/src/plugins/projectexplorer/buildsystem.h +++ b/src/plugins/projectexplorer/buildsystem.h @@ -114,6 +114,8 @@ public: mutable bool m_success = false; }; + void emitBuildSystemUpdated(); + public: // FIXME: Make this private and the BuildSystem a friend ParseGuard guardParsingRun() { return ParseGuard(this); } diff --git a/src/plugins/projectexplorer/desktoprunconfiguration.cpp b/src/plugins/projectexplorer/desktoprunconfiguration.cpp index 616bf19f70..070bb23ce0 100644 --- a/src/plugins/projectexplorer/desktoprunconfiguration.cpp +++ b/src/plugins/projectexplorer/desktoprunconfiguration.cpp @@ -25,6 +25,7 @@ #include "desktoprunconfiguration.h" +#include "buildsystem.h" #include "localenvironmentaspect.h" #include "project.h" #include "runconfigurationaspects.h" @@ -78,13 +79,6 @@ DesktopRunConfiguration::DesktopRunConfiguration(Target *target, Core::Id id, Ki if (kind == Qbs) { - connect(target, &Target::parsingFinished, - envAspect, &EnvironmentAspect::environmentChanged); - - connect(target, &Target::deploymentDataChanged, - this, &DesktopRunConfiguration::updateTargetInformation); - connect(target, &Target::applicationTargetsChanged, - this, &DesktopRunConfiguration::updateTargetInformation); // Handles device changes, etc. connect(target, &Target::kitChanged, this, &DesktopRunConfiguration::updateTargetInformation); @@ -95,7 +89,7 @@ DesktopRunConfiguration::DesktopRunConfiguration(Target *target, Core::Id id, Ki } - connect(target, &Target::parsingFinished, + connect(target, &Target::buildSystemUpdated, this, &DesktopRunConfiguration::updateTargetInformation); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index aaf21160ba..4d04a7da68 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -27,6 +27,7 @@ #include "appoutputpane.h" #include "buildsteplist.h" +#include "buildsystem.h" #include "compileoutputwindow.h" #include "configtaskhandler.h" #include "customexecutablerunconfiguration.h" @@ -653,6 +654,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er dd = new ProjectExplorerPluginPrivate; + qRegisterMetaType<ProjectExplorer::BuildSystem *>(); qRegisterMetaType<ProjectExplorer::RunControl *>(); qRegisterMetaType<ProjectExplorer::DeployableFile>("ProjectExplorer::DeployableFile"); diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h index 247b0e0425..6a9d7aa512 100644 --- a/src/plugins/projectexplorer/target.h +++ b/src/plugins/projectexplorer/target.h @@ -124,8 +124,10 @@ signals: void overlayIconChanged(); void kitChanged(); + void parsingStarted(); void parsingFinished(bool); + void buildSystemUpdated(ProjectExplorer::BuildSystem *bs); // TODO clean up signal names // might be better to also have aboutToRemove signals @@ -143,8 +145,6 @@ signals: void activeDeployConfigurationChanged(ProjectExplorer::DeployConfiguration *dc); void deploymentDataChanged(); - void applicationTargetsChanged(); - void targetPropertiesChanged(); private: bool fromMap(const QVariantMap &map); diff --git a/src/plugins/python/pythonproject.cpp b/src/plugins/python/pythonproject.cpp index afdd146928..e51332fd99 100644 --- a/src/plugins/python/pythonproject.cpp +++ b/src/plugins/python/pythonproject.cpp @@ -227,6 +227,8 @@ void PythonBuildSystem::triggerParsing() setApplicationTargets(appTargets); guard.markAsSuccess(); + + emitBuildSystemUpdated(); } bool PythonBuildSystem::saveRawFileList(const QStringList &rawFileList) diff --git a/src/plugins/python/pythonrunconfiguration.cpp b/src/plugins/python/pythonrunconfiguration.cpp index eca2d7e7ef..fa6931fb99 100644 --- a/src/plugins/python/pythonrunconfiguration.cpp +++ b/src/plugins/python/pythonrunconfiguration.cpp @@ -35,6 +35,7 @@ #include <languageclient/languageclientmanager.h> +#include <projectexplorer/buildsystem.h> #include <projectexplorer/localenvironmentaspect.h> #include <projectexplorer/projectconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h> @@ -277,9 +278,7 @@ PythonRunConfiguration::PythonRunConfiguration(Target *target, Core::Id id) return cmd; }); - connect(target, &Target::applicationTargetsChanged, - this, &PythonRunConfiguration::updateTargetInformation); - connect(target, &Target::parsingFinished, + connect(target, &Target::buildSystemUpdated, this, &PythonRunConfiguration::updateTargetInformation); } diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index a0d888bbcc..81bf08f83a 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -620,6 +620,7 @@ void QbsBuildSystem::updateAfterParse() updateQmlJsCodeModel(); emit project()->fileListChanged(); m_envCache.clear(); + emitBuildSystemUpdated(); } void QbsBuildSystem::delayedUpdateAfterParse() @@ -688,6 +689,11 @@ void QbsBuildSystem::handleQbsParsingDone(bool success) updateCppCodeModel(); m_guard.markAsSuccess(); m_guard = {}; + + // This one used to change the executable path of a Qbs desktop run configuration + // in case the "install" check box in the build step is unchecked and then build + // is triggered (which is otherwise a no-op). + emitBuildSystemUpdated(); } void QbsBuildSystem::rebuildProjectTree() @@ -800,6 +806,7 @@ void QbsBuildSystem::updateAfterBuild() DeploymentData deploymentDataTmp = deploymentData(); deploymentDataTmp.setLocalInstallRoot(installRoot()); setDeploymentData(deploymentDataTmp); + emitBuildSystemUpdated(); return; } qCDebug(qbsPmLog) << "Updating data after build"; @@ -1274,6 +1281,9 @@ void QbsBuildSystem::updateBuildTargetData() OpTimer optimer("updateBuildTargetData"); updateApplicationTargets(); updateDeploymentInfo(); + + // This one used after a normal build. + emitBuildSystemUpdated(); } } // namespace Internal diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 1f9d80f950..3d44a5385a 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -512,6 +512,8 @@ void QmakeBuildSystem::decrementPendingEvaluateFutures() target()->updateDefaultDeployConfigurations(); m_guard.markAsSuccess(); // Qmake always returns (some) data, even when it failed:-) m_guard = {}; // This triggers emitParsingFinished by destroying the previous guard. + + emitBuildSystemUpdated(); } } } diff --git a/src/plugins/qnx/qnxrunconfiguration.cpp b/src/plugins/qnx/qnxrunconfiguration.cpp index 74481cfabd..32791cf34f 100644 --- a/src/plugins/qnx/qnxrunconfiguration.cpp +++ b/src/plugins/qnx/qnxrunconfiguration.cpp @@ -27,6 +27,7 @@ #include "qnxconstants.h" +#include <projectexplorer/buildsystem.h> #include <projectexplorer/deployablefile.h> #include <projectexplorer/project.h> #include <projectexplorer/runcontrol.h> @@ -80,9 +81,7 @@ QnxRunConfiguration::QnxRunConfiguration(Target *target, Core::Id id) emit enabledChanged(); }; - connect(target, &Target::deploymentDataChanged, this, updateTargetInformation); - connect(target, &Target::applicationTargetsChanged, this, updateTargetInformation); - connect(target, &Target::parsingFinished, this, updateTargetInformation); + connect(target, &Target::buildSystemUpdated, this, updateTargetInformation); connect(target, &Target::kitChanged, this, updateTargetInformation); } diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp index 7c1d740367..d4734145c9 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp @@ -29,6 +29,7 @@ #include "remotelinuxx11forwardingaspect.h" #include "remotelinuxenvironmentaspect.h" +#include <projectexplorer/buildsystem.h> #include <projectexplorer/buildtargetinfo.h> #include <projectexplorer/deploymentdata.h> #include <projectexplorer/kitinformation.h> @@ -68,11 +69,7 @@ RemoteLinuxRunConfiguration::RemoteLinuxRunConfiguration(Target *target, Core::I if (HostOsInfo::isAnyUnixHost()) addAspect<X11ForwardingAspect>(); - connect(target, &Target::deploymentDataChanged, - this, &RemoteLinuxRunConfiguration::updateTargetInformation); - connect(target, &Target::applicationTargetsChanged, - this, &RemoteLinuxRunConfiguration::updateTargetInformation); - connect(target, &Target::parsingFinished, + connect(target, &Target::buildSystemUpdated, this, &RemoteLinuxRunConfiguration::updateTargetInformation); connect(target, &Target::kitChanged, this, &RemoteLinuxRunConfiguration::updateTargetInformation); |