X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Module.cpp;h=67f1bcf7a857a65ddb98e52e1014dca3bf21bc97;hb=f39b615e10f48ab13b8346c1e0b4c64500d44f51;hp=5713d7decf53ff9694f05cc23d940fd9532c2745;hpb=6ccac2f149c55637e4ed34b0ac203593ae3b0453;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Module.cpp b/src/PartSet/PartSet_Module.cpp index 5713d7dec..67f1bcf7a 100755 --- a/src/PartSet/PartSet_Module.cpp +++ b/src/PartSet/PartSet_Module.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include @@ -226,6 +227,9 @@ void PartSet_Module::registerValidators() aFactory->registerValidator("GeomValidators_Different", new GeomValidators_Different); + + aFactory->registerValidator("GeomValidators_PartitionArguments", + new GeomValidators_PartitionArguments); } void PartSet_Module::registerFilters() @@ -456,6 +460,11 @@ void PartSet_Module::closeDocument() void PartSet_Module::clearViewer() { myCustomPrs->clearPrs(); + + XGUI_ModuleConnector* aConnector = dynamic_cast(myWorkshop); + XGUI_Workshop* aWorkshop = aConnector->workshop(); + XGUI_Displayer* aDisplayer = aWorkshop->displayer(); + aDisplayer->deactivateSelectionFilters(); } void PartSet_Module::propertyPanelDefined(ModuleBase_Operation* theOperation) @@ -1002,8 +1011,6 @@ void PartSet_Module::processEvent(const std::shared_ptr& theMess } } #else - // Problem with MPV: At first time on creation it doesn't work because Part feature - // creation event will be sent after if (aActivePartIndex.isValid()) aTreeView->setExpanded(aActivePartIndex, false); XGUI_DataModel* aDataModel = aWorkshop->objectBrowser()->dataModel(); @@ -1017,8 +1024,14 @@ void PartSet_Module::processEvent(const std::shared_ptr& theMess // Update displayed objects in order to update active color XGUI_Displayer* aDisplayer = aWorkshop->displayer(); QObjectPtrList aObjects = aDisplayer->displayedObjects(); - foreach(ObjectPtr aObj, aObjects) - aDisplayer->redisplay(aObj, false); + bool aHidden; + foreach(ObjectPtr aObj, aObjects) { + //TODO: replace by redisplay event. + aHidden = !aObj->data() || !aObj->data()->isValid() || + aObj->isDisabled() || (!aObj->isDisplayed()); + if (!aHidden) + aDisplayer->redisplay(aObj, false); + } aDisplayer->updateViewer(); } } @@ -1088,4 +1101,17 @@ void PartSet_Module::onViewCreated(ModuleBase_IViewWindow*) if (!aFound) aViewer->AddZLayer(myVisualLayerId); } + // if there is an active operation with validated widget, + // the filters of this widget should be activated in the created view + ModuleBase_Operation* aOperation = myWorkshop->currentOperation(); + if (aOperation) { + ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel(); + ModuleBase_ModelWidget* anActiveWidget = aPanel->activeWidget(); + if (anActiveWidget) { + ModuleBase_WidgetValidated* aWidgetValidated = dynamic_cast + (anActiveWidget); + if (aWidgetValidated) + aWidgetValidated->activateFilters(true); + } + } }