1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 #include <ModuleBase_WidgetValidated.h>
4 #include <ModuleBase_FilterFactory.h>
5 #include <ModuleBase_IViewer.h>
6 #include <SelectMgr_ListIteratorOfListOfFilter.hxx>
8 #include <ModelAPI_Session.h>
9 #include <ModelAPI_Validator.h>
10 #include <ModelAPI_ResultValidator.h>
14 ModuleBase_WidgetValidated::ModuleBase_WidgetValidated(QWidget* theParent,
15 const Config_WidgetAPI* theData,
16 const std::string& theParentId)
17 : ModuleBase_ModelWidget(theParent, theData, theParentId)
21 ModuleBase_WidgetValidated::~ModuleBase_WidgetValidated()
25 //********************************************************************
26 bool ModuleBase_WidgetValidated::isValid(ObjectPtr theObj, GeomShapePtr theShape) const
28 SessionPtr aMgr = ModelAPI_Session::get();
29 ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
30 std::list<ModelAPI_Validator*> aValidators;
31 std::list<std::list<std::string> > anArguments;
32 aFactory->validators(parentID(), attributeID(), aValidators, anArguments);
34 // Check the type of selected object
35 std::list<ModelAPI_Validator*>::iterator aValidator = aValidators.begin();
37 for (; aValidator != aValidators.end(); aValidator++) {
38 const ModelAPI_ResultValidator* aResValidator =
39 dynamic_cast<const ModelAPI_ResultValidator*>(*aValidator);
42 if (aResValidator->isValid(theObj)) {
51 void ModuleBase_WidgetValidated::activateFilters(ModuleBase_IWorkshop* theWorkshop,
52 const bool toActivate) const
54 ModuleBase_IViewer* aViewer = theWorkshop->viewer();
56 // apply filters loaded from the XML definition of the widget
57 ModuleBase_FilterFactory* aFactory = theWorkshop->selectionFilters();
58 SelectMgr_ListOfFilter aFactoryFilters;
59 aFactory->filters(parentID(), attributeID(), aFactoryFilters);
60 SelectMgr_ListIteratorOfListOfFilter aFactoryIt(aFactoryFilters);
61 for (; aFactoryIt.More(); aFactoryIt.Next()) {
62 Handle(SelectMgr_Filter) aSelFilter = aFactoryIt.Value();
63 if (aSelFilter.IsNull())
66 aViewer->addSelectionFilter(aSelFilter);
68 aViewer->removeSelectionFilter(aSelFilter);
72 void ModuleBase_WidgetValidated::selectionFilters(ModuleBase_IWorkshop* theWorkshop,
73 SelectMgr_ListOfFilter& theFilters) const
75 ModuleBase_FilterFactory* aFactory = theWorkshop->selectionFilters();
76 SelectMgr_ListOfFilter aFilters;
77 aFactory->filters(parentID(), attributeID(), aFilters);
78 SelectMgr_ListIteratorOfListOfFilter aIt(aFilters);
79 for (; aIt.More(); aIt.Next()) {
80 Handle(SelectMgr_Filter) aSelFilter = aIt.Value();
81 if (aSelFilter.IsNull())
84 theFilters.Append(aSelFilter);