1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
\r
3 // File: ModuleBase_FilterValidated.cpp
\r
4 // Created: 17 Mar 2015
\r
5 // Author: Natalia ERMOLAEVA
\r
7 #include "ModuleBase_FilterValidated.h"
\r
8 #include "ModuleBase_IWorkshop.h"
\r
9 #include "ModuleBase_IViewer.h"
\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
20 IMPLEMENT_STANDARD_HANDLE(ModuleBase_FilterValidated, SelectMgr_Filter);
\r
21 IMPLEMENT_STANDARD_RTTIEXT(ModuleBase_FilterValidated, SelectMgr_Filter);
\r
23 Standard_Boolean ModuleBase_FilterValidated::IsOk(const Handle(SelectMgr_EntityOwner)& theOwner) const
\r
26 ModuleBase_Operation* anOperation = myWorkshop->module()->currentOperation();
\r
28 ModuleBase_IViewer* aViewer = myWorkshop->viewer();
\r
29 Handle(AIS_InteractiveContext) aContext = aViewer->AISContext();
\r
31 ModuleBase_Tools::selectionInfo(aContext, "ModuleBase_FilterValidated::IsOk");
\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
42 if (aWidgetValidated)
\r
43 aValid = !aWidgetValidated || aWidgetValidated->isValidSelection(aPrs);
\r
45 ModuleBase_WidgetValidator* aWidgetValidator = aCurrentWidget->widgetValidator();
\r
46 if (aWidgetValidator)
\r
47 aValid = aWidgetValidator->isValidSelection(aPrs);
\r
52 #ifdef DEBUG_FILTERS
\r
53 qDebug(QString("ModuleBase_FilterValidated::IsOk = %1").arg(aValid).toStdString().c_str());
\r