X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ShowHideOp.cxx;h=4dba86de8bea240269a8c7c8135c6f9e89253be6;hb=e84c3bdbce884a7e150fff690f0c1a3e0b12ed90;hp=6ff798943be9ba6eb0bf539e0169ac2ac717d6f2;hpb=3ee052316eb0a4857a0241a22275528191ce3687;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx b/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx index 6ff79894..4dba86de 100644 --- a/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx @@ -34,8 +34,11 @@ #include #include +#include #include +#include + #include #include @@ -65,24 +68,16 @@ void HYDROGUI_ShowHideOp::startOperation() { HYDROGUI_Operation::startOperation(); - size_t aViewId = HYDROGUI_Tool::GetActiveViewId( module() ); + HYDROGUI_Module* aModule = module(); - // for all objects - if( myId == ShowOnlyId || myId == ShowAllId || myId == HideAllId ) - { - bool aVisibility = myId == ShowAllId; - HYDROData_Iterator anIterator( doc() ); - for( ; anIterator.More(); anIterator.Next() ) - { - Handle(HYDROData_Entity) anObject = anIterator.Current(); - if( !anObject.IsNull() ) - module()->setObjectVisible( aViewId, anObject, aVisibility ); - } - } + size_t aViewId = HYDROGUI_Tool::GetActiveViewId( aModule ); int anUpdateFlags = 0; - SUIT_ViewManager* aVTKMgr = 0; - SUIT_ViewManager* aViewMgr = module()->getApp()->activeViewManager(); + + SUIT_ViewManager* aVTKMgr = NULL; + OCCViewer_ViewManager* anOCCManager = NULL; + + SUIT_ViewManager* aViewMgr = aModule->getApp()->activeViewManager(); if ( aViewMgr ) { if ( aViewMgr->getType() == GraphicsView_Viewer::Type() ) @@ -92,6 +87,7 @@ void HYDROGUI_ShowHideOp::startOperation() else if ( aViewMgr->getType() == OCCViewer_Viewer::Type() ) { anUpdateFlags |= UF_OCCViewer; + anOCCManager = ::qobject_cast( aViewMgr ); } else if ( aViewMgr->getType() == SVTK_Viewer::Type() ) { @@ -99,11 +95,28 @@ void HYDROGUI_ShowHideOp::startOperation() } } + // for all objects + if( myId == ShowOnlyId || myId == ShowAllId || myId == HideAllId ) + { + bool aVisibility = myId == ShowAllId; + HYDROData_Iterator anIterator( doc() ); + for( ; anIterator.More(); anIterator.Next() ) + { + Handle(HYDROData_Entity) anObject = anIterator.Current(); + if( !anObject.IsNull() ) + aModule->setObjectVisible( aViewId, anObject, aVisibility ); + } + + // For occ viewer we do the additional step to hide objects from other modules + if ( anOCCManager != NULL && !aVisibility ) + LightApp_Displayer().EraseAll( true ); + } + bool isFoundImage = false; // for selected objects if( myId == ShowId || myId == ShowOnlyId || myId == HideId ) { - HYDROData_SequenceOfObjects aSeq = HYDROGUI_Tool::GetSelectedObjects( module() ); + HYDROData_SequenceOfObjects aSeq = HYDROGUI_Tool::GetSelectedObjects( aModule ); bool aVisibility = myId == ShowId || myId == ShowOnlyId || myId == ShowAllId; Handle( HYDROData_Entity ) anObject; @@ -115,7 +128,7 @@ void HYDROGUI_ShowHideOp::startOperation() if ( anObject->GetKind() == KIND_IMAGE ) isFoundImage = true; - module()->setObjectVisible( aViewId, anObject, aVisibility ); + aModule->setObjectVisible( aViewId, anObject, aVisibility ); if ( anObject->GetKind() == KIND_REGION ) { Handle( HYDROData_Region ) aRegion = Handle( HYDROData_Region )::DownCast( anObject ); @@ -127,24 +140,28 @@ void HYDROGUI_ShowHideOp::startOperation() anObject = aZonesSeq.Value( aZoneIdx ); if( !anObject.IsNull() ) { - module()->setObjectVisible( aViewId, anObject, aVisibility ); + aModule->setObjectVisible( aViewId, anObject, aVisibility ); } } } } else if ( anObject->GetKind() == KIND_BATHYMETRY && aVisibility ) { - if ( !(anUpdateFlags & UF_VTKViewer) ) + if ( anUpdateFlags & UF_OCCViewer ) + { + aModule->setObjectVisible( aViewId, anObject, aVisibility ); + } + else if ( !(anUpdateFlags & UF_VTKViewer) ) { // Activate VTK viewer if show a bathymetry - aVTKMgr = module()->getApp()->viewManager( SVTK_Viewer::Type() ); + aVTKMgr = aModule->getApp()->viewManager( SVTK_Viewer::Type() ); if ( !aVTKMgr ) { - aVTKMgr = module()->getApp()->createViewManager( SVTK_Viewer::Type() ); + aVTKMgr = aModule->getApp()->createViewManager( SVTK_Viewer::Type() ); } if ( aVTKMgr ) { - module()->setObjectVisible( (size_t)aVTKMgr->getViewModel(), anObject, aVisibility ); + aModule->setObjectVisible( (size_t)aVTKMgr->getViewModel(), anObject, aVisibility ); } } } @@ -165,6 +182,6 @@ void HYDROGUI_ShowHideOp::startOperation() aVTKMgr->setShown( true ); } - module()->update( anUpdateFlags ); + aModule->update( anUpdateFlags ); commit(); }