Can't add different cygnet type to a group

This commit is contained in:
Sebastian Piwell
2016-05-04 09:37:20 -04:00
parent 355e70ca0a
commit 8fc89d8762
3 changed files with 23 additions and 7 deletions
+16 -4
View File
@@ -67,7 +67,7 @@ void ISWAGroup::registerCygnet(ISWACygnet* cygnet, ISWAManager::CygnetType type)
}
if(type != _type){
LERROR("Can't register cygnet with a different class from the group");
LWARNING("Can't register cygnet with a different type from the group");
return;
}
@@ -94,6 +94,9 @@ void ISWAGroup::unregisterCygnet(ISWACygnet* cygnet){
if(it != _cygnets.end())
_cygnets.erase(it);
if(_cygnets.empty())
unregisterProperties();
}
@@ -110,6 +113,11 @@ void ISWAGroup::registerOptions(const std::vector<properties::SelectionProperty:
}
}
bool ISWAGroup::checkType(ISWAManager::CygnetType type){
if(_type == ISWAManager::CygnetType::NoType) return true;
return (_type == type);
}
void ISWAGroup::registerProperties(){
OsEng.gui()._iSWAproperty.registerProperty(&_enabled);
@@ -166,11 +174,15 @@ void ISWAGroup::registerProperties(){
ISWAManager::ref().deleteISWACygnet((*it)->name());
it = _cygnets.erase(it);
}
_dataOptions.removeOptions();
OsEng.gui()._iSWAproperty.unregisterProperties(name());
_type = ISWAManager::CygnetType::NoType;
// ISWAManager::ref().unregisterGroup(_id);
unregisterProperties();
});
}
void ISWAGroup::unregisterProperties(){
_dataOptions.removeOptions();
OsEng.gui()._iSWAproperty.unregisterProperties(name());
_type = ISWAManager::CygnetType::NoType;
}
} //namespace openspace
+1 -1
View File
@@ -45,7 +45,7 @@ public:
void registerCygnet(ISWACygnet* cygnet, ISWAManager::CygnetType type);
void unregisterCygnet(ISWACygnet* cygnet);
void registerOptions(const std::vector<properties::SelectionProperty::Option>& options);
bool checkType(ISWAManager::CygnetType type);
private:
void registerProperties();
void unregisterProperties();
+6 -2
View File
@@ -229,8 +229,12 @@ void ISWAManager::createScreenSpace(int id){
void ISWAManager::createPlane(std::shared_ptr<MetadataFuture> data){
// check if this plane already exist
std::string name = _type[data->type] + _geom[data->geom] + std::to_string(data->id);
if(data->group > 0)
name += "_Group" + std::to_string(data->group);
if(data->group > 0){
auto it = _groups.find(data->group);
if(it == _groups.end() || (*it).second->checkType((CygnetType) data->type))
name += "_Group" + std::to_string(data->group);
}
data->name = name;