summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-11-15 15:44:45 +0100
committerhjk <hjk@qt.io>2019-11-21 13:08:06 +0000
commitc2127c9ec42a2a8ced7aff3547d844e6b421d718 (patch)
treeccd97ebb9ce09bb8215c006de332d350031bf426 /src
parent738bbf1a873fbb5c5debbb871a58631e99ba20e8 (diff)
downloadqt-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')
-rw-r--r--src/plugins/android/androidrunconfiguration.cpp3
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp2
-rw-r--r--src/plugins/baremetal/baremetalrunconfiguration.cpp7
-rw-r--r--src/plugins/boot2qt/qdbrunconfiguration.cpp7
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp2
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp2
-rw-r--r--src/plugins/genericprojectmanager/genericproject.cpp2
-rw-r--r--src/plugins/nim/project/nimblebuildsystem.cpp3
-rw-r--r--src/plugins/nim/project/nimblerunconfiguration.cpp4
-rw-r--r--src/plugins/nim/project/nimbuildsystem.cpp2
-rw-r--r--src/plugins/projectexplorer/buildsystem.cpp7
-rw-r--r--src/plugins/projectexplorer/buildsystem.h2
-rw-r--r--src/plugins/projectexplorer/desktoprunconfiguration.cpp10
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp2
-rw-r--r--src/plugins/projectexplorer/target.h4
-rw-r--r--src/plugins/python/pythonproject.cpp2
-rw-r--r--src/plugins/python/pythonrunconfiguration.cpp5
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp10
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp2
-rw-r--r--src/plugins/qnx/qnxrunconfiguration.cpp5
-rw-r--r--src/plugins/remotelinux/remotelinuxrunconfiguration.cpp7
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);