+//******************************************************
+QIntList PartSet_Module::selectionFilters()
+{
+ QIntList aTypes;
+
+ std::map<XGUI_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
+ mySelectionFilters.begin();
+ for (; aFiltersIt != mySelectionFilters.end(); aFiltersIt++)
+ aTypes.append(aFiltersIt->first);
+
+ return aTypes;
+}
+
+//******************************************************
+void PartSet_Module::registerSelectionFilter(const XGUI_SelectionFilterType theFilterType,
+ const Handle(SelectMgr_Filter)& theFilter)
+{
+ mySelectionFilters[theFilterType] = theFilter;
+}
+
+//******************************************************
+Handle(SelectMgr_Filter) PartSet_Module::selectionFilter(const int theType)
+{
+ XGUI_SelectionFilterType aType = (XGUI_SelectionFilterType)theType;
+
+ if (mySelectionFilters.find(aType) != mySelectionFilters.end())
+ return mySelectionFilters[aType];
+ else
+ return Handle(SelectMgr_Filter)();
+}
+
+//******************************************************
+void PartSet_Module::customSubShapesSelectionModes(QIntList& theModes)
+{
+ if (theModes.contains(TopAbs_FACE))
+ theModes.append(SketcherPrs_Tools::Sel_Sketch_Face);
+ if (theModes.contains(TopAbs_WIRE))
+ theModes.append(SketcherPrs_Tools::Sel_Sketch_Wire);
+
+ if (mySketchMgr->activeSketch().get())
+ PartSet_SketcherMgr::sketchSelectionModes(mySketchMgr->activeSketch(), theModes);
+}
+
+//******************************************************
+void PartSet_Module::getGeomSelection(const std::shared_ptr<ModuleBase_ViewerPrs>& theSelected,
+ ObjectPtr& theObject, AttributePtr& theAttribute)
+{
+ ObjectPtr anObject = theSelected->object();
+ GeomShapePtr aShape = theSelected->shape();
+
+ theAttribute = findAttribute(anObject, aShape);
+ // TODO: try to create result if object is an external object
+ theObject = anObject;
+}
+
+//******************************************************