forked from qt-creator/qt-creator
CMake: Simplify signaling
Change-Id: I50fdaed0d813b5004c1756e9c5a6efd3ce7a3318 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -146,7 +146,6 @@ void CMakeBuildConfiguration::ctor()
|
|||||||
this, [this, project]() {
|
this, [this, project]() {
|
||||||
clearError();
|
clearError();
|
||||||
project->updateProjectData(this);
|
project->updateProjectData(this);
|
||||||
emit dataAvailable();
|
|
||||||
});
|
});
|
||||||
connect(m_buildDirManager.get(), &BuildDirManager::errorOccured,
|
connect(m_buildDirManager.get(), &BuildDirManager::errorOccured,
|
||||||
this, [this, project](const QString &msg) {
|
this, [this, project](const QString &msg) {
|
||||||
@@ -155,9 +154,8 @@ void CMakeBuildConfiguration::ctor()
|
|||||||
});
|
});
|
||||||
connect(m_buildDirManager.get(), &BuildDirManager::configurationStarted,
|
connect(m_buildDirManager.get(), &BuildDirManager::configurationStarted,
|
||||||
this, [this, project]() {
|
this, [this, project]() {
|
||||||
project->handleParsingStarted();
|
project->handleParsingStarted(this);
|
||||||
clearError(ForceEnabledChanged::True);
|
clearError(ForceEnabledChanged::True);
|
||||||
emit parsingStarted();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(this, &CMakeBuildConfiguration::environmentChanged,
|
connect(this, &CMakeBuildConfiguration::environmentChanged,
|
||||||
@@ -411,7 +409,7 @@ CMakeConfig CMakeBuildConfiguration::cmakeConfiguration() const
|
|||||||
|
|
||||||
void CMakeBuildConfiguration::setError(const QString &message)
|
void CMakeBuildConfiguration::setError(const QString &message)
|
||||||
{
|
{
|
||||||
QString oldMessage = m_error;
|
const QString oldMessage = m_error;
|
||||||
if (m_error != message)
|
if (m_error != message)
|
||||||
m_error = message;
|
m_error = message;
|
||||||
if (oldMessage.isEmpty() && !message.isEmpty())
|
if (oldMessage.isEmpty() && !message.isEmpty())
|
||||||
|
@@ -100,9 +100,6 @@ signals:
|
|||||||
void errorOccured(const QString &message);
|
void errorOccured(const QString &message);
|
||||||
void warningOccured(const QString &message);
|
void warningOccured(const QString &message);
|
||||||
|
|
||||||
void parsingStarted();
|
|
||||||
void dataAvailable();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CMakeBuildConfiguration(ProjectExplorer::Target *parent, CMakeBuildConfiguration *source);
|
CMakeBuildConfiguration(ProjectExplorer::Target *parent, CMakeBuildConfiguration *source);
|
||||||
bool fromMap(const QVariantMap &map) override;
|
bool fromMap(const QVariantMap &map) override;
|
||||||
|
@@ -214,7 +214,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
else
|
else
|
||||||
m_configModel->setConfiguration(m_buildConfiguration->completeCMakeConfiguration());
|
m_configModel->setConfiguration(m_buildConfiguration->completeCMakeConfiguration());
|
||||||
|
|
||||||
connect(m_buildConfiguration, &CMakeBuildConfiguration::dataAvailable,
|
connect(m_buildConfiguration->target()->project(), &ProjectExplorer::Project::parsingFinished,
|
||||||
this, [this, buildDirChooser, stretcher]() {
|
this, [this, buildDirChooser, stretcher]() {
|
||||||
updateButtonState();
|
updateButtonState();
|
||||||
m_configModel->setConfiguration(m_buildConfiguration->completeCMakeConfiguration());
|
m_configModel->setConfiguration(m_buildConfiguration->completeCMakeConfiguration());
|
||||||
|
@@ -119,7 +119,8 @@ void CMakeBuildStep::ctor(BuildStepList *bsl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
connect(target(), &Target::kitChanged, this, &CMakeBuildStep::cmakeCommandChanged);
|
connect(target(), &Target::kitChanged, this, &CMakeBuildStep::cmakeCommandChanged);
|
||||||
connect(bc, &CMakeBuildConfiguration::dataAvailable, this, &CMakeBuildStep::handleBuildTargetChanges);
|
connect(project(), &Project::parsingFinished,
|
||||||
|
this, &CMakeBuildStep::handleBuildTargetChanges);
|
||||||
}
|
}
|
||||||
|
|
||||||
CMakeBuildConfiguration *CMakeBuildStep::cmakeBuildConfiguration() const
|
CMakeBuildConfiguration *CMakeBuildStep::cmakeBuildConfiguration() const
|
||||||
@@ -279,10 +280,8 @@ void CMakeBuildStep::run(QFutureInterface<bool> &fi)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mustDelay) {
|
if (mustDelay) {
|
||||||
m_runTrigger = connect(bc, &CMakeBuildConfiguration::dataAvailable,
|
m_runTrigger = connect(project(), &Project::parsingFinished,
|
||||||
this, [this, &fi]() { runImpl(fi); });
|
this, [this, &fi](bool success) { handleProjectWasParsed(fi, success); });
|
||||||
m_errorTrigger = connect(bc, &CMakeBuildConfiguration::errorOccured,
|
|
||||||
this, [this, &fi](const QString& em) { handleCMakeError(fi, em); });
|
|
||||||
} else {
|
} else {
|
||||||
runImpl(fi);
|
runImpl(fi);
|
||||||
}
|
}
|
||||||
@@ -291,21 +290,18 @@ void CMakeBuildStep::run(QFutureInterface<bool> &fi)
|
|||||||
void CMakeBuildStep::runImpl(QFutureInterface<bool> &fi)
|
void CMakeBuildStep::runImpl(QFutureInterface<bool> &fi)
|
||||||
{
|
{
|
||||||
// Do the actual build:
|
// Do the actual build:
|
||||||
disconnectTriggers();
|
|
||||||
AbstractProcessStep::run(fi);
|
AbstractProcessStep::run(fi);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildStep::handleCMakeError(QFutureInterface<bool> &fi, const QString& errorMessage)
|
void CMakeBuildStep::handleProjectWasParsed(QFutureInterface<bool> &fi, bool success)
|
||||||
{
|
|
||||||
disconnectTriggers();
|
|
||||||
AbstractProcessStep::stdError(tr("Error parsing CMake: %1\n").arg(errorMessage));
|
|
||||||
reportRunResult(fi, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMakeBuildStep::disconnectTriggers()
|
|
||||||
{
|
{
|
||||||
disconnect(m_runTrigger);
|
disconnect(m_runTrigger);
|
||||||
disconnect(m_errorTrigger);
|
if (success) {
|
||||||
|
runImpl(fi);
|
||||||
|
} else {
|
||||||
|
AbstractProcessStep::stdError(tr("Project did not parse successfully, can not build."));
|
||||||
|
reportRunResult(fi, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildStepConfigWidget *CMakeBuildStep::createConfigWidget()
|
BuildStepConfigWidget *CMakeBuildStep::createConfigWidget()
|
||||||
|
@@ -104,14 +104,12 @@ private:
|
|||||||
void ctor(ProjectExplorer::BuildStepList *bsl);
|
void ctor(ProjectExplorer::BuildStepList *bsl);
|
||||||
|
|
||||||
void runImpl(QFutureInterface<bool> &fi);
|
void runImpl(QFutureInterface<bool> &fi);
|
||||||
void handleCMakeError(QFutureInterface<bool> &fi, const QString& errorMessage);
|
void handleProjectWasParsed(QFutureInterface<bool> &fi, bool success);
|
||||||
void disconnectTriggers();
|
|
||||||
|
|
||||||
void handleBuildTargetChanges();
|
void handleBuildTargetChanges();
|
||||||
CMakeRunConfiguration *targetsActiveRunConfiguration() const;
|
CMakeRunConfiguration *targetsActiveRunConfiguration() const;
|
||||||
|
|
||||||
QMetaObject::Connection m_runTrigger;
|
QMetaObject::Connection m_runTrigger;
|
||||||
QMetaObject::Connection m_errorTrigger;
|
|
||||||
|
|
||||||
QRegExp m_percentProgress;
|
QRegExp m_percentProgress;
|
||||||
QRegExp m_ninjaProgress;
|
QRegExp m_ninjaProgress;
|
||||||
|
@@ -377,9 +377,9 @@ void CMakeProject::handleActiveBuildConfigurationChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeProject::handleParsingStarted()
|
void CMakeProject::handleParsingStarted(const CMakeBuildConfiguration *bc)
|
||||||
{
|
{
|
||||||
if (activeTarget() && activeTarget()->activeBuildConfiguration() == sender())
|
if (activeTarget() && activeTarget()->activeBuildConfiguration() == bc)
|
||||||
emitParsingStarted();
|
emitParsingStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -114,7 +114,7 @@ private:
|
|||||||
|
|
||||||
void handleActiveTargetChanged();
|
void handleActiveTargetChanged();
|
||||||
void handleActiveBuildConfigurationChanged();
|
void handleActiveBuildConfigurationChanged();
|
||||||
void handleParsingStarted();
|
void handleParsingStarted(const Internal::CMakeBuildConfiguration *bc);
|
||||||
void handleTreeScanningFinished();
|
void handleTreeScanningFinished();
|
||||||
void updateProjectData(Internal::CMakeBuildConfiguration *cmakeBc);
|
void updateProjectData(Internal::CMakeBuildConfiguration *cmakeBc);
|
||||||
void handleParsingError(Internal::CMakeBuildConfiguration *bc);
|
void handleParsingError(Internal::CMakeBuildConfiguration *bc);
|
||||||
|
Reference in New Issue
Block a user