forked from qt-creator/qt-creator
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:
@@ -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);
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user