Salome HOME
6fcab0a7b1cc1245910eaf44b2a6f8fcf12fc2a4
[modules/shaper.git] / src / ModuleBase / ModuleBase_FilterMulti.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        ModuleBase_FilterMulti.cpp
4 // Created:     12 Jan 2015
5 // Author:      Natalia ERMOLAEVA
6
7
8 #include "ModuleBase_FilterMulti.h"
9
10 #include "ModuleBase_FilterLinearEdge.h"
11 #include "ModuleBase_FilterShapeType.h"
12
13 #include <SelectMgr_OrFilter.hxx>
14
15 #include <Events_Error.h>
16
17 #include <QString>
18 #include <QMap>
19
20 ModuleBase_Filter* ModuleBase_FilterMulti::findFilter(const std::string& theType)
21 {
22   ModuleBase_Filter* aFilter = 0;
23
24   if (theType == "line") {
25     aFilter = new ModuleBase_FilterLinearEdge();
26     std::list<std::string> anArguments;
27     anArguments.push_back(theType);
28     aFilter->setArguments(anArguments);
29   }
30   if (theType == "vertex") {
31     aFilter = new ModuleBase_FilterShapeType();
32     std::list<std::string> anArguments;
33     anArguments.push_back(theType);
34     aFilter->setArguments(anArguments);
35   }
36
37   return aFilter;
38 }
39
40 void ModuleBase_FilterMulti::createFilter()
41 {
42   myFilter = new SelectMgr_OrFilter();
43
44   // set filter arguments
45   Handle(SelectMgr_OrFilter) anOrFilter = Handle(SelectMgr_OrFilter)::DownCast(myFilter);
46   if (anOrFilter.IsNull())
47     return;
48
49   std::list<std::string>::const_iterator anIt = myArguments.begin(),
50                                          aLast = myArguments.end();
51   for (; anIt != aLast; ++anIt) {
52     std::string aType = *anIt;
53     ModuleBase_Filter* aFilter = findFilter(aType);
54     if (aFilter) {
55       anOrFilter->Add(aFilter->getFilter());
56     }
57   }
58 }
59
60 void ModuleBase_FilterMulti::setArguments(const std::list<std::string>& theArguments)
61 {
62   myArguments.clear();
63   myArguments = theArguments;
64 }