Salome HOME
Disable sketch input fields unconditionally.
[modules/shaper.git] / src / ModuleBase / ModuleBase_FilterValidated.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D\r
2 \r
3 // File:        ModuleBase_FilterValidated.cpp\r
4 // Created:     17 Mar 2015\r
5 // Author:      Natalia ERMOLAEVA\r
6 \r
7 #include "ModuleBase_FilterValidated.h"\r
8 #include "ModuleBase_IWorkshop.h"\r
9 #include "ModuleBase_IViewer.h"\r
10 \r
11 #include <ModuleBase_IModule.h>\r
12 #include <ModuleBase_IPropertyPanel.h>\r
13 #include <ModuleBase_ISelection.h>\r
14 #include <ModuleBase_Operation.h>\r
15 #include <ModuleBase_WidgetValidated.h>\r
16 #include <ModuleBase_WidgetValidator.h>\r
17 #include <ModuleBase_ViewerPrs.h>\r
18 #include <ModuleBase_Tools.h>\r
19 \r
20 IMPLEMENT_STANDARD_HANDLE(ModuleBase_FilterValidated, SelectMgr_Filter);\r
21 IMPLEMENT_STANDARD_RTTIEXT(ModuleBase_FilterValidated, SelectMgr_Filter);\r
22 \r
23 Standard_Boolean ModuleBase_FilterValidated::IsOk(const Handle(SelectMgr_EntityOwner)& theOwner) const\r
24 {\r
25   bool aValid = true;\r
26   ModuleBase_Operation* anOperation = myWorkshop->module()->currentOperation();\r
27   if (anOperation) {\r
28     ModuleBase_IViewer* aViewer = myWorkshop->viewer();\r
29     Handle(AIS_InteractiveContext) aContext = aViewer->AISContext();\r
30 \r
31     ModuleBase_Tools::selectionInfo(aContext, "ModuleBase_FilterValidated::IsOk");\r
32 \r
33     ModuleBase_IPropertyPanel* aPanel = anOperation->propertyPanel();\r
34     ModuleBase_ModelWidget* aCurrentWidget = aPanel->preselectionWidget();\r
35     if (!aCurrentWidget)\r
36       aCurrentWidget = myWorkshop->module()->activeWidget();\r
37     if (aCurrentWidget) {\r
38       ModuleBase_ViewerPrsPtr aPrs(new ModuleBase_ViewerPrs());\r
39       myWorkshop->selection()->fillPresentation(aPrs, theOwner);\r
40       ModuleBase_WidgetValidated* aWidgetValidated = dynamic_cast<ModuleBase_WidgetValidated*>\r
41                                                                              (aCurrentWidget);\r
42       if (aWidgetValidated)\r
43         aValid = !aWidgetValidated || aWidgetValidated->isValidSelection(aPrs);\r
44       else{\r
45         ModuleBase_WidgetValidator* aWidgetValidator = aCurrentWidget->widgetValidator();\r
46         if (aWidgetValidator)\r
47           aValid = aWidgetValidator->isValidSelection(aPrs);\r
48       }\r
49     }\r
50   }\r
51 \r
52 #ifdef DEBUG_FILTERS\r
53   qDebug(QString("ModuleBase_FilterValidated::IsOk = %1").arg(aValid).toStdString().c_str());\r
54 #endif\r
55   return aValid;\r
56 }\r
57 \r