Add addObjects to add multiple objects in one step

This commit is contained in:
wmayer
2017-05-05 21:21:09 +02:00
parent 77386684fb
commit 3e862bd557
6 changed files with 140 additions and 19 deletions

View File

@@ -75,6 +75,29 @@ void GroupExtension::addObject(DocumentObject* obj)
}
}
void GroupExtension::addObjects(const std::vector<App::DocumentObject*>& objs)
{
bool objectAdded = false;
std::vector<DocumentObject*> grp = Group.getValues();
for (auto obj : objs) {
if (allowObject(obj)) {
//only one group per object
auto *group = App::GroupExtension::getGroupOfObject(obj);
if (group && group != getExtendedObject())
group->getExtensionByType<App::GroupExtension>()->removeObject(obj);
if (std::find(grp.begin(), grp.end(), obj) == grp.end()) {
grp.push_back(obj);
objectAdded = true;
}
}
}
if (objectAdded)
Group.setValues(grp);
}
void GroupExtension::removeObject(DocumentObject* obj)
{
const std::vector<DocumentObject*> & grp = Group.getValues();