AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = myFeature->data()->selectionList(attributeID());
aSelectionListAttr->setSelectionType(myTypeCombo->currentText().toStdString());
}
return true;
AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = myFeature->data()->selectionList(attributeID());
// Restore shape type
- setCurrentShapeType(ModuleBase_Tools::shapeType(aSelectionListAttr->selectionType().c_str()));
+ std::string aSelectionType = aSelectionListAttr->selectionType().c_str();
+ if (!aSelectionType.empty())
+ setCurrentShapeType(ModuleBase_Tools::shapeType(aSelectionType.c_str()));
}
updateSelectionList();
return true;
{
ModuleBase_WidgetValidated::storeAttributeValue();
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
-
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
mySelectionType = aSelectionListAttr->selectionType();
mySelectionCount = aSelectionListAttr->size();
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
mySelectionCount = aRefListAttr->size();
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
mySelectionCount = aRefAttrListAttr->size();
}
}
-//********************************************************************
-bool ModuleBase_WidgetMultiSelector::setSelectionCustom(const ModuleBase_ViewerPrs& thePrs)
-{
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
- std::string aType = anAttribute->attributeType();
- if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
-
- bool isDone = false;
- if (!thePrs.shape().IsNull()) {
- GeomShapePtr aGeomShape = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape);
- aGeomShape->setImpl(new TopoDS_Shape(thePrs.shape()));
-
- AttributePtr anAttribute = myWorkshop->module()->findAttribute(thePrs.object(), aGeomShape);
- if (anAttribute.get()) {
- aRefAttrListAttr->append(anAttribute);
- isDone = true;
- }
- }
- if (!isDone)
- ModuleBase_WidgetSelector::setSelectionCustom(thePrs);
- }
- else {
- ModuleBase_WidgetSelector::setSelectionCustom(thePrs);
- /*ObjectPtr anObject;
- GeomShapePtr aShape;
- getGeomSelection(thePrs, anObject, aShape);
- setObject(anObject, aShape);*/
- }
- return true;
-}
-
//********************************************************************
void ModuleBase_WidgetMultiSelector::restoreAttributeValue(bool theValid)
{
ModuleBase_WidgetValidated::restoreAttributeValue(theValid);
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
aSelectionListAttr->setSelectionType(mySelectionType);
// restore selection in the attribute. Indeed there is only one stored object
aSelectionListAttr->removeLast();
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
// restore objects in the attribute. Indeed there is only one stored object
int aCountAppened = aRefListAttr->size() - mySelectionCount;
for (int i = 0; i < aCountAppened; i++)
aRefListAttr->removeLast();
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
// restore objects in the attribute. Indeed there is only one stored object
int aCountAppened = aRefAttrListAttr->size() - mySelectionCount;
for (int i = 0; i < aCountAppened; i++)
//********************************************************************
void ModuleBase_WidgetMultiSelector::clearAttribute()
{
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
aSelectionListAttr->clear();
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
aRefListAttr->clear();
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
aRefAttrListAttr->clear();
}
}
void ModuleBase_WidgetMultiSelector::setObject(ObjectPtr theSelectedObject,
GeomShapePtr theShape)
{
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theSelectedObject);
aSelectionListAttr->append(aResult, theShape, myIsInValidate);
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
aRefListAttr->append(theSelectedObject);
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- //AttributeRefAttrListPtr aRefAttrListAttr =
- // std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
- //aRefAttrListAttr->clear();
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
+
+ AttributePtr anAttribute = myWorkshop->module()->findAttribute(theSelectedObject, theShape);
+ if (anAttribute.get())
+ aRefAttrListAttr->append(anAttribute);
+ else
+ aRefAttrListAttr->append(theSelectedObject);
}
}
// refill attribute by the items which indices are not in the list of ids
bool aDone = false;
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
aDone = !anAttributeIds.empty();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
aSelectionListAttr->remove(anAttributeIds);
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
- aRefListAttr->remove(anAttributeIds);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
+ aRefListAttr->remove(anAttributeIds);
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
aRefAttrListAttr->remove(anAttributeIds);
}
{
myListControl->clear();
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
for (int i = 0; i < aSelectionListAttr->size(); i++) {
AttributeSelectionPtr aAttr = aSelectionListAttr->value(i);
QListWidgetItem* anItem = new QListWidgetItem(aAttr->namingName().c_str(), myListControl);
}
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
for (int i = 0; i < aRefListAttr->size(); i++) {
ObjectPtr anObject = aRefListAttr->object(i);
if (anObject.get()) {
}
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
for (int i = 0; i < aRefAttrListAttr->size(); i++) {
AttributePtr anAttribute = aRefAttrListAttr->attribute(i);
QString aName;
if (anAttribute.get()) {
- std::string anAttrName = generateName(anAttribute);
+ std::string anAttrName = generateName(anAttribute, myWorkshop);
aName = QString::fromStdString(anAttrName);
}
else {
if(myFeature.get() == NULL)
return;
- AttributePtr anAttribute = myFeature->data()->attribute(attributeID());
+ DataPtr aData = myFeature->data();
+ AttributePtr anAttribute = aData->attribute(attributeID());
std::string aType = anAttribute->attributeType();
if (aType == ModelAPI_AttributeSelectionList::typeId()) {
- AttributeSelectionListPtr aSelectionListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(anAttribute);
+ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
for (int i = 0; i < aSelectionListAttr->size(); i++) {
// filter by attribute indices only if the container is not empty otherwise return all items
if (!theAttributeIds.empty() && theAttributeIds.find(i) == theAttributeIds.end())
}
}
else if (aType == ModelAPI_AttributeRefList::typeId()) {
- AttributeRefListPtr aRefListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefList>(anAttribute);
+ AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
for (int i = 0; i < aRefListAttr->size(); i++) {
// filter by attribute indices only if the container is not empty otherwise return all items
if (!theAttributeIds.empty() && theAttributeIds.find(i) == theAttributeIds.end())
}
}
else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
- AttributeRefAttrListPtr aRefAttrListAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttrList>(anAttribute);
+ AttributeRefAttrListPtr aRefAttrListAttr = aData->refattrlist(attributeID());
for (int i = 0; i < aRefAttrListAttr->size(); i++) {
// filter by attribute indices only if the container is not empty otherwise return all items
if (!theAttributeIds.empty() && theAttributeIds.find(i) == theAttributeIds.end())