-// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2021 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include "FiltersPlugin_BelongsTo.h"
-bool FiltersPlugin_BelongsTo::isSupported(GeomAPI_Shape::ShapeType theType) const
+#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 aCurAttr = aList->value(i);
+ GeomShapePtr aGeom = aCurAttr->value();
+ if (aGeom && 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());
+}