]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Multi-selection widget to be used in the extrusion feature.
authornds <natalia.donis@opencascade.com>
Tue, 17 Mar 2015 13:47:17 +0000 (16:47 +0300)
committernds <natalia.donis@opencascade.com>
Tue, 17 Mar 2015 13:47:17 +0000 (16:47 +0300)
Code improvement.

src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp
src/ModuleBase/ModuleBase_WidgetShapeSelector.h
src/PartSet/PartSet_Validators.cpp

index b125a7be8c7731e0017dd20f6d31632b8512e603..bd7db67b2b8cc4e9b6bcec7219e446cb12f54873 100644 (file)
@@ -224,7 +224,7 @@ void ModuleBase_WidgetShapeSelector::onSelectionChanged()
 bool ModuleBase_WidgetShapeSelector::setSelection(ModuleBase_ViewerPrs theValue)
 {
   ObjectPtr aObject = theValue.object();
-  ObjectPtr aCurrentObject = getObject();
+  ObjectPtr aCurrentObject = getObject(myFeature->attribute(attributeID()));
   if ((!aCurrentObject) && (!aObject))
     return false;
 
@@ -338,32 +338,29 @@ bool ModuleBase_WidgetShapeSelector::acceptSubShape(std::shared_ptr<GeomAPI_Shap
   return false;
 }
 
-//********************************************************************
-ObjectPtr ModuleBase_WidgetShapeSelector::getObject() const
+ObjectPtr ModuleBase_WidgetShapeSelector::getObject(const AttributePtr& theAttribute)
 {
   ObjectPtr anObject;
-
-  DataPtr aData = myFeature->data();
-  if (aData.get() == NULL)
-    return anObject;
-
-  AttributeSelectionPtr aSelect = aData->selection(attributeID());
-  if (aSelect) {
-    anObject = aSelect->context();
-  } else {
-    AttributeRefAttrPtr aRefAttr = aData->refattr(attributeID());
-    if (aRefAttr) {
-      anObject = aRefAttr->object();
-    } else {
-      AttributeReferencePtr aRef = aData->reference(attributeID());
-      if (aRef) {
-        anObject = aRef->value();
-      }
-    }
+  std::string anAttrType = theAttribute->attributeType();
+  if (anAttrType == ModelAPI_AttributeRefAttr::type()) {
+    AttributeRefAttrPtr anAttr = std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(theAttribute);
+    if (anAttr != NULL && anAttr->isObject())
+      anObject = anAttr->object();
+  }
+  if (anAttrType == ModelAPI_AttributeSelection::type()) {
+    AttributeSelectionPtr anAttr = std::dynamic_pointer_cast<ModelAPI_AttributeSelection>(theAttribute);
+    if (anAttr != NULL && anAttr->isInitialized())
+      anObject = anAttr->context();
+  }
+  if (anAttrType == ModelAPI_AttributeReference::type()) {
+    AttributeReferencePtr anAttr = std::dynamic_pointer_cast<ModelAPI_AttributeReference>(theAttribute);
+    if (anAttr.get() != NULL && anAttr->isInitialized())
+      anObject = anAttr->value();
   }
   return anObject;
 }
 
+
 //********************************************************************
 GeomShapePtr ModuleBase_WidgetShapeSelector::getShape() const
 {
@@ -392,7 +389,7 @@ void ModuleBase_WidgetShapeSelector::updateSelectionName()
     }
   }
   if (!isNameUpdated) {
-    ObjectPtr anObject = getObject();
+    ObjectPtr anObject = getObject(myFeature->attribute(attributeID()));
     if (anObject.get() != NULL) {
       std::string aName = anObject->data()->name();
       myTextLine->setText(QString::fromStdString(aName));
@@ -471,7 +468,6 @@ bool ModuleBase_WidgetShapeSelector::isValid(ObjectPtr theObj, std::shared_ptr<G
   aFactory->validators(parentID(), attributeID(), aValidators, anArguments);
 
   DataPtr aData = myFeature->data();
-  //AttributePtr aAttr = aData->attribute(attributeID());
   AttributeRefAttrPtr aRefAttr = aData->refattr(attributeID());
   if (aRefAttr) {
     // 1. saves the previous attribute values
index c334bdcaf0542b4f706bd88c48d22b07a9a28b2d..fe4d0cb49a333cee9956c147d5c63652bc6007af 100644 (file)
@@ -12,6 +12,7 @@
 #include "ModuleBase_ViewerFilters.h"
 
 #include <ModelAPI_Object.h>
+#include <ModelAPI_Attribute.h>
 #include <GeomAPI_Shape.h>
 
 #include <TopAbs_ShapeEnum.hxx>
@@ -90,7 +91,7 @@ Q_OBJECT
 
   // Get the object from the attribute
   /// \param theObj an object 
-  static ObjectPtr getObject(const AttributePtr& theAttribute) const;
+  static ObjectPtr getObject(const AttributePtr& theAttribute);
 
  public slots:
 
index 9bda4c9dc7d73c819ccda6ebf63127aea5f3296b..373229f88691c5bb179e3d3720725339b157270f 100644 (file)
@@ -12,6 +12,7 @@
 #include <GeomAdaptor_Curve.hxx>
 #include <GeomAbs_CurveType.hxx>
 #include <ModuleBase_ISelection.h>
+#include <ModuleBase_WidgetShapeSelector.h>
 
 #include <ModelAPI_AttributeRefAttr.h>
 #include <ModelAPI_AttributeSelection.h>
@@ -117,7 +118,7 @@ bool PartSet_DifferentObjectsValidator::isValid(const AttributePtr& theAttribute
 
   // 1. check whether the object of the attribute is not among the feature attributes
   // find the attribute's object
-  ObjectPtr anObject = getObject(theAttribute);
+  ObjectPtr anObject =  ModuleBase_WidgetShapeSelector::getObject(theAttribute);
 
   // check whether the object is not among other feature attributes
   if (anObject.get() != NULL) {
@@ -130,7 +131,7 @@ bool PartSet_DifferentObjectsValidator::isValid(const AttributePtr& theAttribute
       // the function parameter attribute should be skipped
       if (anAttr.get() == NULL || anAttr->id() == theAttribute->id())
         continue;
-      ObjectPtr aCurObject = getObject(anAttr);
+      ObjectPtr aCurObject =  ModuleBase_WidgetShapeSelector::getObject(anAttr);
       if (aCurObject  && aCurObject == anObject)
         return false;
     }
@@ -186,28 +187,6 @@ bool PartSet_DifferentObjectsValidator::featureHasReferences(const AttributePtr&
   return true;
 }
 
-ObjectPtr PartSet_DifferentObjectsValidator::getObject(const AttributePtr& theAttribute) const
-{
-  ObjectPtr anObject;
-  std::string anAttrType = theAttribute->attributeType();
-  if (anAttrType == ModelAPI_AttributeRefAttr::type()) {
-    AttributeRefAttrPtr anAttr = std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(theAttribute);
-    if (anAttr != NULL && anAttr->isObject())
-      anObject = anAttr->object();
-  }
-  if (anAttrType == ModelAPI_AttributeSelection::type()) {
-    AttributeSelectionPtr anAttr = std::dynamic_pointer_cast<ModelAPI_AttributeSelection>(theAttribute);
-    if (anAttr != NULL && anAttr->isInitialized())
-      anObject = anAttr->context();
-  }
-  if (anAttrType == ModelAPI_AttributeReference::type()) {
-    AttributeReferencePtr anAttr = std::dynamic_pointer_cast<ModelAPI_AttributeReference>(theAttribute);
-    if (anAttr.get() != NULL && anAttr->isInitialized())
-      anObject = anAttr->value();
-  }
-  return anObject;
-}
-
 bool PartSet_SketchValidator::isValid(const ObjectPtr theObject) const
 {
   FeaturePtr aFeature = ModelAPI_Feature::feature(theObject);