Add some pass-through fields for {RunConfiguration,BuildTarget}Info

This is unused here by will be used in subsequent changes.

Project parsing yields information on whether there's a console
requested and whether the "magic" qtc_runnable flag for primary
executables has been seen.

Also, the current "targetname" is taking different roles in
different context, try to split-off the pure visual aspect
by allowing to specify an explicit displayName, with fallback
to the current decorated targetName if empty.

Task-number: QTCREATORBUG-19985
Change-Id: I11edfcaafd17972f6a78aeff3fbbf3d7eb91a213
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-03-07 09:32:04 +01:00
parent efbcf6308b
commit 2626e1629f
3 changed files with 17 additions and 4 deletions

View File

@@ -47,10 +47,14 @@ public:
{ }
QString targetName;
QString displayName;
Utils::FileName targetFilePath;
Utils::FileName projectFilePath;
bool isAutoRunnable = true;
bool usesTerminal = false;
bool isValid() const { return !targetName.isEmpty(); }
};

View File

@@ -471,8 +471,13 @@ QList<RunConfigurationCreationInfo>
RunConfigurationFactory::availableCreators(Target *parent) const
{
return Utils::transform(parent->applicationTargets().list, [parent, this](const BuildTargetInfo &ti) {
const QString displayName = decoratedTargetName(ti.targetName, parent);
return RunConfigurationCreationInfo(this, m_runConfigBaseId, ti.targetName, displayName);
QString displayName = ti.displayName;
if (displayName.isEmpty())
displayName = decoratedTargetName(ti.targetName, parent);
return RunConfigurationCreationInfo(this, m_runConfigBaseId, ti.targetName, displayName,
ti.isAutoRunnable ? RunConfigurationCreationInfo::AlwaysCreate
: RunConfigurationCreationInfo::ManualCreationOnly,
ti.usesTerminal);
});
}

View File

@@ -283,14 +283,17 @@ class RunConfigurationCreationInfo
{
public:
enum CreationMode {AlwaysCreate, ManualCreationOnly};
RunConfigurationCreationInfo() = default;
RunConfigurationCreationInfo(const RunConfigurationFactory *factory,
Core::Id id,
QString extra, QString displayName,
CreationMode creationMode = AlwaysCreate)
CreationMode creationMode = AlwaysCreate,
bool useTerminal = false)
: factory(factory), id(id),
extra(extra),
displayName(displayName),
creationMode(creationMode)
creationMode(creationMode),
useTerminal(useTerminal)
{}
const RunConfigurationFactory *factory = nullptr;
@@ -298,6 +301,7 @@ public:
QString extra;
QString displayName;
CreationMode creationMode = AlwaysCreate;
bool useTerminal = false;
};
class PROJECTEXPLORER_EXPORT RunConfigurationFactory : public QObject