]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
#1330 Multiply selection when Create fillet using Shift button
authornds <nds@opencascade.com>
Fri, 26 Feb 2016 14:38:43 +0000 (17:38 +0300)
committernds <nds@opencascade.com>
Fri, 26 Feb 2016 14:39:06 +0000 (17:39 +0300)
src/Model/Model_AttributeSelectionList.cpp
src/Model/Model_AttributeSelectionList.h
src/ModelAPI/ModelAPI_AttributeSelectionList.h
src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp

index b44767750922a7ace3dc5ff37bdf1c35ece593ed..a049b9123c9d5ce209c854b69b843b09035cfced 100644 (file)
@@ -141,6 +141,13 @@ int Model_AttributeSelectionList::size()
   return mySize->Get();
 }
 
+bool Model_AttributeSelectionList::isInList(const ResultPtr& theContext,
+                                            const std::shared_ptr<GeomAPI_Shape>& theSubShape,
+                                            const bool theTemporarily)
+{
+  return false;
+}
+
 const std::string Model_AttributeSelectionList::selectionType() const
 {
   return TCollection_AsciiString(mySelectionType->Get()).ToCString();
index a69635c4bdb7b41bede5677b15ca2656f7956b63..d28798dda638f5dac20896b926f8428cd937dc91 100644 (file)
@@ -49,6 +49,14 @@ public:
   /// Returns the number ofselection attributes in the list
   MODEL_EXPORT virtual int size();
 
+  /// Returns true if the object with the shape are in list
+  /// \param theContext object where the sub-shape was selected
+  /// \param theSubShape selected sub-shape (if null, the whole context is selected)
+  /// \returns true if the pair is found in the attirbute
+  MODEL_EXPORT virtual bool isInList(
+    const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape,
+    const bool theTemporarily = false);
+
   /// The type of all elements selection
   /// \returns the index of the OCCT enumeration of the type of shape
   MODEL_EXPORT virtual const std::string selectionType() const;
index 0c875c3365ec8e35df1a87b04133c7bde0c67a25..b5d1ff4669b98b612d4d0a259e4b96fcc17d35a7 100644 (file)
@@ -42,6 +42,14 @@ class ModelAPI_AttributeSelectionList : public ModelAPI_Attribute
   /// Returns the number of selection attributes in the list
   virtual int size() = 0;
 
+  /// Returns true if the object with the shape are in list
+  /// \param theContext object where the sub-shape was selected
+  /// \param theSubShape selected sub-shape (if null, the whole context is selected)
+  /// \returns true if the pair is found in the attirbute
+  virtual bool isInList(
+    const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape,
+    const bool theTemporarily = false) = 0;
+
   /// The type of all elements selection
   /// \returns the index of the enumeration of the type of shape
   virtual const std::string selectionType() const = 0;
index 2a999aeb25eeddb195561c608db44f49b5017769..92caad3a66383690b502694d32628541ecd4a4f2 100755 (executable)
@@ -281,12 +281,12 @@ void ModuleBase_WidgetMultiSelector::setObject(ObjectPtr theSelectedObject,
   if (aType == ModelAPI_AttributeSelectionList::typeId()) {
     AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(attributeID());
     ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theSelectedObject);
-    //if (!aSelectionListAttr->isInList(aResult, theShape, myIsInValidate))
+    if (!aSelectionListAttr->isInList(aResult, theShape, myIsInValidate))
       aSelectionListAttr->append(aResult, theShape, myIsInValidate);
   }
   else if (aType == ModelAPI_AttributeRefList::typeId()) {
     AttributeRefListPtr aRefListAttr = aData->reflist(attributeID());
-    //if (!aRefListAttr->isInList(theSelectedObject))
+    if (!aRefListAttr->isInList(theSelectedObject))
       aRefListAttr->append(theSelectedObject);
   }
   else if (aType == ModelAPI_AttributeRefAttrList::typeId()) {
@@ -294,11 +294,11 @@ void ModuleBase_WidgetMultiSelector::setObject(ObjectPtr theSelectedObject,
     AttributePtr anAttribute = myWorkshop->module()->findAttribute(theSelectedObject, theShape);
 
     if (anAttribute.get()) {
-      //if (!aRefAttrListAttr->isInList(anAttribute))
+      if (!aRefAttrListAttr->isInList(anAttribute))
         aRefAttrListAttr->append(anAttribute);
     }
     else {
-      //if (!aRefAttrListAttr->isInList(theSelectedObject))
+      if (!aRefAttrListAttr->isInList(theSelectedObject))
         aRefAttrListAttr->append(theSelectedObject);
     }
   }