BareMetal: Fix run configuration display name setup

Change-Id: I0ba784a4d775730277ec0b21aef649011f37b739
Reviewed-by: Alexander Drozdov <adrozdoff@gmail.com>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2018-03-21 09:44:33 +01:00
parent 5e6305f346
commit 6d8eaad281
6 changed files with 28 additions and 37 deletions

View File

@@ -40,6 +40,7 @@
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/runnables.h> #include <projectexplorer/runnables.h>
#include <projectexplorer/runconfiguration.h> #include <projectexplorer/runconfiguration.h>
#include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
@@ -124,7 +125,8 @@ void BareMetalDebugSupport::start()
StandardRunnable inferior; StandardRunnable inferior;
inferior.executable = bin; inferior.executable = bin;
inferior.commandLineArguments = rc->arguments(); if (auto aspect = rc->extraAspect<ArgumentsAspect>())
inferior.commandLineArguments = aspect->arguments();
setInferior(inferior); setInferior(inferior);
setSymbolFile(bin); setSymbolFile(bin);
setStartMode(AttachToRemoteServer); setStartMode(AttachToRemoteServer);

View File

@@ -58,7 +58,13 @@ BareMetalRunConfiguration::BareMetalRunConfiguration(Target *target)
QString BareMetalRunConfiguration::extraId() const QString BareMetalRunConfiguration::extraId() const
{ {
return m_projectFilePath; return m_buildKey;
}
void BareMetalRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &info)
{
m_buildKey = info.buildKey;
setDefaultDisplayName(info.displayName);
} }
QWidget *BareMetalRunConfiguration::createConfigurationWidget() QWidget *BareMetalRunConfiguration::createConfigurationWidget()
@@ -85,30 +91,15 @@ bool BareMetalRunConfiguration::fromMap(const QVariantMap &map)
return false; return false;
m_workingDirectory = map.value(QLatin1String(WorkingDirectoryKey)).toString(); m_workingDirectory = map.value(QLatin1String(WorkingDirectoryKey)).toString();
m_projectFilePath = ProjectExplorer::idFromMap(map).suffixAfter(id()); m_buildKey = ProjectExplorer::idFromMap(map).suffixAfter(id());
setDefaultDisplayName(defaultDisplayName());
return true; return true;
} }
QString BareMetalRunConfiguration::defaultDisplayName()
{
if (!m_projectFilePath.isEmpty())
//: %1 is the name of the project run via hardware debugger
return tr("%1 (via GDB server or hardware debugger)").arg(QFileInfo(m_projectFilePath).fileName());
//: Bare Metal run configuration default run name
return tr("Run on GDB server or hardware debugger");
}
QString BareMetalRunConfiguration::localExecutableFilePath() const QString BareMetalRunConfiguration::localExecutableFilePath() const
{ {
const QString targetName = QFileInfo(m_projectFilePath).fileName(); const BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(m_buildKey);
return target()->applicationTargets().targetFilePath(targetName).toString(); return bti.targetFilePath.toString();
}
QString BareMetalRunConfiguration::arguments() const
{
return extraAspect<ArgumentsAspect>()->arguments();
} }
QString BareMetalRunConfiguration::workingDirectory() const QString BareMetalRunConfiguration::workingDirectory() const
@@ -121,19 +112,10 @@ void BareMetalRunConfiguration::setWorkingDirectory(const QString &wd)
m_workingDirectory = wd; m_workingDirectory = wd;
} }
QString BareMetalRunConfiguration::projectFilePath() const
{
return m_projectFilePath;
}
QString BareMetalRunConfiguration::buildSystemTarget() const QString BareMetalRunConfiguration::buildSystemTarget() const
{ {
const BuildTargetInfoList targets = target()->applicationTargets(); const BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(m_buildKey);
const Utils::FileName projectFilePath = Utils::FileName::fromString(QFileInfo(m_projectFilePath).path()); return bti.targetName;
const QString targetName = QFileInfo(m_projectFilePath).fileName();
auto bst = std::find_if(targets.list.constBegin(), targets.list.constEnd(),
[&projectFilePath,&targetName](const BuildTargetInfo &bti) { return bti.projectFilePath == projectFilePath && bti.targetName == targetName; });
return (bst == targets.list.constEnd()) ? QString() : bst->targetName;
} }
void BareMetalRunConfiguration::handleBuildSystemDataUpdated() void BareMetalRunConfiguration::handleBuildSystemDataUpdated()

View File

@@ -47,14 +47,11 @@ public:
Utils::OutputFormatter *createOutputFormatter() const override; Utils::OutputFormatter *createOutputFormatter() const override;
virtual QString localExecutableFilePath() const; virtual QString localExecutableFilePath() const;
QString arguments() const;
QString workingDirectory() const; QString workingDirectory() const;
void setWorkingDirectory(const QString &wd); void setWorkingDirectory(const QString &wd);
QVariantMap toMap() const override; QVariantMap toMap() const override;
QString projectFilePath() const;
QString buildSystemTarget() const final; QString buildSystemTarget() const final;
static const char *IdPrefix; static const char *IdPrefix;
@@ -66,13 +63,12 @@ signals:
protected: protected:
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
QString extraId() const final; QString extraId() const final;
void doAdditionalSetup(const ProjectExplorer::RunConfigurationCreationInfo &) final;
QString defaultDisplayName();
private: private:
void handleBuildSystemDataUpdated(); void handleBuildSystemDataUpdated();
QString m_projectFilePath; QString m_buildKey;
QString m_workingDirectory; QString m_workingDirectory;
}; };

View File

@@ -43,6 +43,7 @@ namespace Internal {
BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory() BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory()
{ {
registerRunConfiguration<BareMetalRunConfiguration>(BareMetalRunConfiguration::IdPrefix); registerRunConfiguration<BareMetalRunConfiguration>(BareMetalRunConfiguration::IdPrefix);
setDecorateDisplayNames(true);
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType); addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
} }
@@ -52,6 +53,7 @@ BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory()
FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable"), true) FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable"), true)
{ {
registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal.CustomRunConfig"); registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal.CustomRunConfig");
setDecorateDisplayNames(true);
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType); addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
} }

View File

@@ -477,6 +477,8 @@ RunConfigurationFactory::availableCreators(Target *parent) const
QString displayName = ti.displayName; QString displayName = ti.displayName;
if (displayName.isEmpty()) if (displayName.isEmpty())
displayName = decoratedTargetName(ti.targetName, parent); displayName = decoratedTargetName(ti.targetName, parent);
else if (m_decorateDisplayNames)
displayName = decoratedTargetName(displayName, parent);
RunConfigurationCreationInfo rci(this, m_runConfigBaseId, ti.targetName, displayName); RunConfigurationCreationInfo rci(this, m_runConfigBaseId, ti.targetName, displayName);
rci.creationMode = ti.isQtcRunnable || !hasAnyQtcRunnable rci.creationMode = ti.isQtcRunnable || !hasAnyQtcRunnable
? RunConfigurationCreationInfo::AlwaysCreate ? RunConfigurationCreationInfo::AlwaysCreate
@@ -503,6 +505,11 @@ void RunConfigurationFactory::addSupportedTargetDeviceType(Core::Id id)
m_supportedTargetDeviceTypes.append(id); m_supportedTargetDeviceTypes.append(id);
} }
void RunConfigurationFactory::setDecorateDisplayNames(bool on)
{
m_decorateDisplayNames = on;
}
void RunConfigurationFactory::addSupportedProjectType(Core::Id id) void RunConfigurationFactory::addSupportedProjectType(Core::Id id)
{ {
m_supportedProjectTypes.append(id); m_supportedProjectTypes.append(id);

View File

@@ -346,6 +346,7 @@ protected:
void addSupportedProjectType(Core::Id id); void addSupportedProjectType(Core::Id id);
void setSupportedTargetDeviceTypes(const QList<Core::Id> &ids); void setSupportedTargetDeviceTypes(const QList<Core::Id> &ids);
void addSupportedTargetDeviceType(Core::Id id); void addSupportedTargetDeviceType(Core::Id id);
void setDecorateDisplayNames(bool on);
private: private:
friend class RunConfigurationCreationInfo; friend class RunConfigurationCreationInfo;
@@ -353,6 +354,7 @@ private:
Core::Id m_runConfigBaseId; Core::Id m_runConfigBaseId;
QList<Core::Id> m_supportedProjectTypes; QList<Core::Id> m_supportedProjectTypes;
QList<Core::Id> m_supportedTargetDeviceTypes; QList<Core::Id> m_supportedTargetDeviceTypes;
bool m_decorateDisplayNames = false;
}; };
class PROJECTEXPLORER_EXPORT FixedRunConfigurationFactory : public RunConfigurationFactory class PROJECTEXPLORER_EXPORT FixedRunConfigurationFactory : public RunConfigurationFactory