Nim: Adapt to recent buildconfiguration changes

Change-Id: Ib1d893f9e6d7c6c78bd4dded7a7d6434e6727a0c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2019-11-22 12:41:15 +01:00
parent 5767a097e7
commit 7827eb92ce
12 changed files with 325 additions and 205 deletions

View File

@@ -28,12 +28,11 @@
#include "../nimconstants.h"
#include <projectexplorer/buildsystem.h>
#include <projectexplorer/localenvironmentaspect.h>
#include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/runcontrol.h>
#include <utils/environment.h>
#include <QDir>
#include <QFileInfo>
@@ -55,8 +54,7 @@ NimRunConfiguration::NimRunConfiguration(Target *target, Core::Id id)
setDefaultDisplayName(tr("Current Build Target"));
// Connect target signals
connect(target, &Target::activeBuildConfigurationChanged,
this, &NimRunConfiguration::updateConfiguration);
connect(target, &Target::buildSystemUpdated, this, &NimRunConfiguration::updateConfiguration);
updateConfiguration();
}
@@ -65,35 +63,12 @@ void NimRunConfiguration::updateConfiguration()
auto buildConfiguration = qobject_cast<NimBuildConfiguration *>(activeBuildConfiguration());
if (!buildConfiguration)
return;
setActiveBuildConfiguration(buildConfiguration);
const QFileInfo outFileInfo = buildConfiguration->outFilePath().toFileInfo();
aspect<ExecutableAspect>()->setExecutable(FilePath::fromString(outFileInfo.absoluteFilePath()));
const QString workingDirectory = outFileInfo.absoluteDir().absolutePath();
aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(FilePath::fromString(workingDirectory));
}
void NimRunConfiguration::setActiveBuildConfiguration(NimBuildConfiguration *activeBuildConfiguration)
{
if (m_buildConfiguration == activeBuildConfiguration)
return;
if (m_buildConfiguration) {
disconnect(m_buildConfiguration, &NimBuildConfiguration::buildDirectoryChanged,
this, &NimRunConfiguration::updateConfiguration);
disconnect(m_buildConfiguration, &NimBuildConfiguration::outFilePathChanged,
this, &NimRunConfiguration::updateConfiguration);
}
m_buildConfiguration = activeBuildConfiguration;
if (m_buildConfiguration) {
connect(m_buildConfiguration, &NimBuildConfiguration::buildDirectoryChanged,
this, &NimRunConfiguration::updateConfiguration);
connect(m_buildConfiguration, &NimBuildConfiguration::outFilePathChanged,
this, &NimRunConfiguration::updateConfiguration);
}
}
// NimRunConfigurationFactory
NimRunConfigurationFactory::NimRunConfigurationFactory() : FixedRunConfigurationFactory(QString())