X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_WidgetMultiSelector.cpp;h=43f066ea2337b8e935f502013489d968d4328e9f;hb=47bc42239a014ab54525f88916f2633b9d520f58;hp=1c046be78d49a083c419f68ec88af9b030b9e1e6;hpb=2173385eb78bbf8d8c7041e59ec6eb40ef5e5c33;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_WidgetMultiSelector.cpp b/src/PartSet/PartSet_WidgetMultiSelector.cpp index 1c046be78..43f066ea2 100644 --- a/src/PartSet/PartSet_WidgetMultiSelector.cpp +++ b/src/PartSet/PartSet_WidgetMultiSelector.cpp @@ -41,11 +41,41 @@ PartSet_WidgetMultiSelector::~PartSet_WidgetMultiSelector() delete myExternalObjectMgr; } +//******************************************************************** +void PartSet_WidgetMultiSelector::onSelectionChanged() +{ + ModuleBase_WidgetMultiSelector::onSelectionChanged(); + // TODO(nds): unite with externalObject(), remove parameters + //myFeature->execute(); + + DataPtr aData = myFeature->data(); + AttributeSelectionListPtr aSelectionListAttr = + std::dynamic_pointer_cast(aData->attribute(attributeID())); + + QObjectPtrList aListOfAttributeObjects; + for (int i = 0; i < aSelectionListAttr->size(); i++) { + AttributeSelectionPtr anAttr = aSelectionListAttr->value(i); + aListOfAttributeObjects.append(anAttr->context()); + } + + myExternalObjectMgr->removeUnusedExternalObjects(aListOfAttributeObjects, sketch(), myFeature); +} + +//******************************************************************** +void PartSet_WidgetMultiSelector::storeAttributeValue() +{ + myIsInVaildate = true; + ModuleBase_WidgetMultiSelector::storeAttributeValue(); + +} + //******************************************************************** void PartSet_WidgetMultiSelector::restoreAttributeValue(const bool theValid) { + myIsInVaildate = false; ModuleBase_WidgetMultiSelector::restoreAttributeValue(theValid); - myExternalObjectMgr->removeExternal(sketch(), myFeature); + + myExternalObjectMgr->removeExternalValidated(sketch(), myFeature); } //******************************************************************** @@ -126,7 +156,10 @@ bool PartSet_WidgetMultiSelector::setObject(const ObjectPtr& theSelectedObject, return false; if (aSPFeature.get() == NULL && aShape.get() != NULL && !aShape->isNull() && myExternalObjectMgr->useExternal()) { - aSelectedObject = myExternalObjectMgr->externalObject(theSelectedObject, theShape, sketch()); + if (myIsInVaildate) + aSelectedObject = myExternalObjectMgr->externalObjectValidated(theSelectedObject, theShape, sketch()); + else + aSelectedObject = myExternalObjectMgr->externalObject(theSelectedObject, theShape, sketch()); }