X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetValidated.cpp;h=55abdb5035e40020379be97f8b0697d81c85d337;hb=aebde79eb2410f5e7699ee44254173b442727df7;hp=a90eadac2ae53f6fdc7a57ce79bdd7f620557f34;hpb=716f7ba09656559d4059bb68a30c8d4ec2fcadad;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetValidated.cpp b/src/ModuleBase/ModuleBase_WidgetValidated.cpp index a90eadac2..55abdb503 100644 --- a/src/ModuleBase/ModuleBase_WidgetValidated.cpp +++ b/src/ModuleBase/ModuleBase_WidgetValidated.cpp @@ -25,7 +25,7 @@ ModuleBase_WidgetValidated::ModuleBase_WidgetValidated(QWidget* theParent, const Config_WidgetAPI* theData, const std::string& theParentId) : ModuleBase_ModelWidget(theParent, theData, theParentId), - myWorkshop(theWorkshop) + myWorkshop(theWorkshop), myIsInValidate(false) { } @@ -60,6 +60,18 @@ ObjectPtr ModuleBase_WidgetValidated::findPresentedObject(const AISObjectPtr& th return myPresentedObject; } +//******************************************************************** +void ModuleBase_WidgetValidated::storeAttributeValue() +{ + myIsInValidate = true; +} + +//******************************************************************** +void ModuleBase_WidgetValidated::restoreAttributeValue(const bool theValid) +{ + myIsInValidate = false; +} + //******************************************************************** bool ModuleBase_WidgetValidated::isValidInFilters(const ModuleBase_ViewerPrs& thePrs) { @@ -70,7 +82,8 @@ bool ModuleBase_WidgetValidated::isValidInFilters(const ModuleBase_ViewerPrs& th // creates a selection owner on the base of object shape and the object AIS object if (anOwner.IsNull() && thePrs.owner().IsNull() && thePrs.object().get()) { ResultPtr aResult = myWorkshop->selection()->getResult(thePrs); - if (aResult.get()) { + if (aResult.get() && aResult->shape().get()) { + // some results have no shape, e.g. the parameter one. So, they should not be validated GeomShapePtr aShape = aResult->shape(); const TopoDS_Shape aTDShape = aShape->impl(); Handle(AIS_InteractiveObject) anIO = myWorkshop->selection()->getIO(thePrs); @@ -78,7 +91,7 @@ bool ModuleBase_WidgetValidated::isValidInFilters(const ModuleBase_ViewerPrs& th myPresentedObject = aResult; } else - aValid = false; // only results can be filtered + aValid = false; // only results with a shape can be filtered } // checks the owner by the AIS context activated filters if (!anOwner.IsNull()) { @@ -88,11 +101,14 @@ bool ModuleBase_WidgetValidated::isValidInFilters(const ModuleBase_ViewerPrs& th if (!isActivated) activateFilters(true); - const SelectMgr_ListOfFilter& aFilters = myWorkshop->viewer()->AISContext()->Filters(); - SelectMgr_ListIteratorOfListOfFilter anIt(aFilters); - for (; anIt.More() && aValid; anIt.Next()) { - Handle(SelectMgr_Filter) aFilter = anIt.Value(); - aValid = aFilter->IsOk(anOwner); + Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext(); + if (!aContext.IsNull()) { + const SelectMgr_ListOfFilter& aFilters = aContext->Filters(); + SelectMgr_ListIteratorOfListOfFilter anIt(aFilters); + for (; anIt.More() && aValid; anIt.Next()) { + Handle(SelectMgr_Filter) aFilter = anIt.Value(); + aValid = aFilter->IsOk(anOwner); + } } if (!isActivated) activateFilters(false); @@ -170,24 +186,9 @@ bool ModuleBase_WidgetValidated::isValidAttribute() const { SessionPtr aMgr = ModelAPI_Session::get(); ModelAPI_ValidatorsFactory* aFactory = aMgr->validators(); - std::list aValidators; - std::list > anArguments; - aFactory->validators(myFeature->getKind(), attributeID(), aValidators, anArguments); - - DataPtr aData = myFeature->data(); AttributePtr anAttribute = myFeature->attribute(attributeID()); - - std::list::iterator aValidator = aValidators.begin(); - std::list >::iterator aArgs = anArguments.begin(); - bool aValid = true; - for (; aValidator != aValidators.end() && aValid; aValidator++, aArgs++) { - const ModelAPI_AttributeValidator* aAttrValidator = - dynamic_cast(*aValidator); - if (aAttrValidator) { - aValid = aAttrValidator->isValid(anAttribute, *aArgs); - } - } - return aValid; + std::string aValidatorID, anError; + return aFactory->validate(anAttribute, aValidatorID, anError); } bool ModuleBase_WidgetValidated::isFilterActivated() const