forked from qt-creator/qt-creator
QbsProjectManager: Re-introduce install step
... in a modified variant. The install root is now taken from the build step to ensure consistency. A dedicated deploy step can be useful on Windows if one wants to rebuild while the application is running. Task-number: QTCREATORBUG-17958 Change-Id: I93bc59b0e6d954d61d84bcfc81576cdb4fac1216 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
#include "qbsrunconfiguration.h"
|
||||
|
||||
#include "qbsdeployconfigurationfactory.h"
|
||||
#include "qbsinstallstep.h"
|
||||
#include "qbsproject.h"
|
||||
|
||||
#include <coreplugin/messagemanager.h>
|
||||
@@ -110,6 +111,7 @@ const qbs::ProductData findProduct(const qbs::ProjectData &pro, const QString &u
|
||||
QbsRunConfiguration::QbsRunConfiguration(Target *parent, Core::Id id) :
|
||||
RunConfiguration(parent, id),
|
||||
m_uniqueProductName(uniqueProductNameFromId(id)),
|
||||
m_currentInstallStep(0),
|
||||
m_currentBuildStepList(0)
|
||||
{
|
||||
auto * const envAspect = new LocalEnvironmentAspect(this,
|
||||
@@ -133,6 +135,7 @@ QbsRunConfiguration::QbsRunConfiguration(Target *parent, Core::Id id) :
|
||||
QbsRunConfiguration::QbsRunConfiguration(Target *parent, QbsRunConfiguration *source) :
|
||||
RunConfiguration(parent, source),
|
||||
m_uniqueProductName(source->m_uniqueProductName),
|
||||
m_currentInstallStep(0), // no need to copy this, we will get if from the DC anyway.
|
||||
m_currentBuildStepList(0) // ditto
|
||||
{
|
||||
ctor();
|
||||
@@ -186,6 +189,10 @@ QWidget *QbsRunConfiguration::createConfigurationWidget()
|
||||
|
||||
void QbsRunConfiguration::installStepChanged()
|
||||
{
|
||||
if (m_currentInstallStep) {
|
||||
disconnect(m_currentInstallStep, &QbsInstallStep::changed,
|
||||
this, &QbsRunConfiguration::targetInformationChanged);
|
||||
}
|
||||
if (m_currentBuildStepList) {
|
||||
disconnect(m_currentBuildStepList, &BuildStepList::stepInserted,
|
||||
this, &QbsRunConfiguration::installStepChanged);
|
||||
@@ -197,10 +204,15 @@ void QbsRunConfiguration::installStepChanged()
|
||||
|
||||
QbsDeployConfiguration *activeDc = qobject_cast<QbsDeployConfiguration *>(target()->activeDeployConfiguration());
|
||||
m_currentBuildStepList = activeDc ? activeDc->stepList() : 0;
|
||||
|
||||
if (m_currentInstallStep) {
|
||||
connect(m_currentInstallStep, &QbsInstallStep::changed,
|
||||
this, &QbsRunConfiguration::targetInformationChanged);
|
||||
}
|
||||
if (m_currentBuildStepList) {
|
||||
connect(m_currentBuildStepList, &BuildStepList::stepInserted,
|
||||
this, &QbsRunConfiguration::installStepChanged);
|
||||
connect(m_currentBuildStepList, &BuildStepList::aboutToRemoveStep, this,
|
||||
&QbsRunConfiguration::installStepToBeRemoved);
|
||||
connect(m_currentBuildStepList, &BuildStepList::stepRemoved,
|
||||
this, &QbsRunConfiguration::installStepChanged);
|
||||
connect(m_currentBuildStepList, &BuildStepList::stepMoved,
|
||||
@@ -210,6 +222,18 @@ void QbsRunConfiguration::installStepChanged()
|
||||
emit targetInformationChanged();
|
||||
}
|
||||
|
||||
void QbsRunConfiguration::installStepToBeRemoved(int pos)
|
||||
{
|
||||
QTC_ASSERT(m_currentBuildStepList, return);
|
||||
// TODO: Our logic is rather broken. Users can create as many qbs install steps as they want,
|
||||
// but we ignore all but the first one.
|
||||
if (m_currentBuildStepList->steps().at(pos) != m_currentInstallStep)
|
||||
return;
|
||||
disconnect(m_currentInstallStep, &QbsInstallStep::changed,
|
||||
this, &QbsRunConfiguration::targetInformationChanged);
|
||||
m_currentInstallStep = 0;
|
||||
}
|
||||
|
||||
Runnable QbsRunConfiguration::runnable() const
|
||||
{
|
||||
StandardRunnable r;
|
||||
|
||||
Reference in New Issue
Block a user