ProjectExplorer: Add a mechanism to add build steps by Id

This allows plugins to add build steps they know to be provided
by another plugin without needing to link against it.

Change-Id: Id53ea41c024be9a2fb122e496a235a7cf8f6bb22
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-01-09 14:46:15 +01:00
parent f75a7fa036
commit 24bfa0e1a6
2 changed files with 13 additions and 0 deletions

View File

@@ -151,6 +151,17 @@ void BuildStepList::insertStep(int position, BuildStep *step)
emit stepInserted(position); emit stepInserted(position);
} }
void BuildStepList::insertStep(int position, Core::Id stepId)
{
for (BuildStepFactory *factory : BuildStepFactory::allBuildStepFactories()) {
if (BuildStep *step = factory->create(this, stepId)) {
insertStep(position, step);
return;
}
}
QTC_ASSERT(false, qDebug() << "No factory for build step" << stepId.toString() << "found.");
}
bool BuildStepList::removeStep(int position) bool BuildStepList::removeStep(int position)
{ {
BuildStep *bs = at(position); BuildStep *bs = at(position);

View File

@@ -73,7 +73,9 @@ public:
bool contains(Core::Id id) const; bool contains(Core::Id id) const;
void insertStep(int position, BuildStep *step); void insertStep(int position, BuildStep *step);
void insertStep(int position, Core::Id id);
void appendStep(BuildStep *step) { insertStep(count(), step); } void appendStep(BuildStep *step) { insertStep(count(), step); }
void appendStep(Core::Id stepId) { insertStep(count(), stepId); }
bool removeStep(int position); bool removeStep(int position);
void moveStepUp(int position); void moveStepUp(int position);
BuildStep *at(int position); BuildStep *at(int position);