Salome HOME
Issue #2998: Add help description for automatic creation of constraints
[modules/shaper.git] / src / FiltersPlugin / FiltersPlugin_BelongsTo.cpp
index 0f4f9b58ab7a3b44a5d6f0d2a7621d234bbca1a3..9c7010b2d1204cb245e93ddefb45299d9114ebe4 100644 (file)
 
 #include "FiltersPlugin_BelongsTo.h"
 
+#include <ModelAPI_AttributeSelectionList.h>
+
 bool FiltersPlugin_BelongsTo::isSupported(GeomAPI_Shape::ShapeType theType) const
 {
   return true;
 }
 
-bool FiltersPlugin_BelongsTo::isOk(const GeomShapePtr& theShape,
-  const ModelAPI_FiltersArgs& theArgs) const
+bool FiltersPlugin_BelongsTo::isOk(const GeomShapePtr& theShape, const ResultPtr&,
+                                   const ModelAPI_FiltersArgs& theArgs) const
 {
-  return true;
+  AttributePtr aAttr = theArgs.argument("BelongsTo");
+  AttributeSelectionListPtr aList =
+    std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(aAttr);
+  if (!aList.get())
+    return false;
+  for (int i = 0; i < aList->size(); i++) {
+    AttributeSelectionPtr aAttr = aList->value(i);
+    GeomShapePtr aGeom = aAttr->value();
+    if (aGeom->isSubShape(theShape))
+      return true;
+  }
+  return false;
 }
 
-static std::string XMLRepresentation =
-"<filter id = \"Belongs to\""
-" <multi_selector id=\"Belongs to\""
-"   label = \"Objects:\""
-"   tooltip = \"Select objects to limit selection.\""
-"   type_choice = \"objects\""
-" </multi_selector>"
-"</filter>";
-
-
 std::string FiltersPlugin_BelongsTo::xmlRepresentation() const
 {
-  return XMLRepresentation;
-}
\ No newline at end of file
+  return xmlFromFile("filter-BelongsTo.xml");
+}
+
+void FiltersPlugin_BelongsTo::initAttributes(ModelAPI_FiltersArgs& theArguments)
+{
+  theArguments.initAttribute("BelongsTo", ModelAPI_AttributeSelectionList::typeId());
+}