X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ShowHideOp.cxx;h=6ff798943be9ba6eb0bf539e0169ac2ac717d6f2;hb=3ee052316eb0a4857a0241a22275528191ce3687;hp=b1ddd661d2bc8c6f2a36dff2c22675f9439fdd56;hpb=db1999ae9883edbf6f18672b5f179a6da4871978;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx b/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx index b1ddd661..6ff79894 100644 --- a/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ShowHideOp.cxx @@ -36,6 +36,7 @@ #include #include +#include #include @@ -79,18 +80,41 @@ void HYDROGUI_ShowHideOp::startOperation() } } + int anUpdateFlags = 0; + SUIT_ViewManager* aVTKMgr = 0; + SUIT_ViewManager* aViewMgr = module()->getApp()->activeViewManager(); + if ( aViewMgr ) + { + if ( aViewMgr->getType() == GraphicsView_Viewer::Type() ) + { + anUpdateFlags |= UF_Viewer; + } + else if ( aViewMgr->getType() == OCCViewer_Viewer::Type() ) + { + anUpdateFlags |= UF_OCCViewer; + } + else if ( aViewMgr->getType() == SVTK_Viewer::Type() ) + { + anUpdateFlags |= UF_VTKViewer; + } + } + + bool isFoundImage = false; // for selected objects if( myId == ShowId || myId == ShowOnlyId || myId == HideId ) { HYDROData_SequenceOfObjects aSeq = HYDROGUI_Tool::GetSelectedObjects( module() ); - - bool aVisibility = myId == ShowId || myId == ShowOnlyId; + + bool aVisibility = myId == ShowId || myId == ShowOnlyId || myId == ShowAllId; Handle( HYDROData_Entity ) anObject; for( Standard_Integer anIndex = 1, aLength = aSeq.Length(); anIndex <= aLength; anIndex++ ) { anObject = aSeq.Value( anIndex ); if( !anObject.IsNull() ) { + if ( anObject->GetKind() == KIND_IMAGE ) + isFoundImage = true; + module()->setObjectVisible( aViewId, anObject, aVisibility ); if ( anObject->GetKind() == KIND_REGION ) { @@ -108,28 +132,37 @@ void HYDROGUI_ShowHideOp::startOperation() } } } + else if ( anObject->GetKind() == KIND_BATHYMETRY && aVisibility ) + { + if ( !(anUpdateFlags & UF_VTKViewer) ) + { + // Activate VTK viewer if show a bathymetry + aVTKMgr = module()->getApp()->viewManager( SVTK_Viewer::Type() ); + if ( !aVTKMgr ) + { + aVTKMgr = module()->getApp()->createViewManager( SVTK_Viewer::Type() ); + } + if ( aVTKMgr ) + { + module()->setObjectVisible( (size_t)aVTKMgr->getViewModel(), anObject, aVisibility ); + } + } + } } } } - int anUpdateFlags = 0; - if ( myId == ShowOnlyId || myId == ShowId || myId == ShowAllId ) { - anUpdateFlags = UF_FitAll; + if( isFoundImage || myId == ShowAllId ) + anUpdateFlags |= UF_FitAll; } - SUIT_ViewManager* aViewMgr = module()->getApp()->activeViewManager(); - if ( aViewMgr ) + // Set VTK viewer active if show a bathymetry + if ( aVTKMgr ) { - if ( aViewMgr->getType() == GraphicsView_Viewer::Type() ) - { - anUpdateFlags |= UF_Viewer; - } - else if ( aViewMgr->getType() == OCCViewer_Viewer::Type() ) - { - anUpdateFlags |= UF_OCCViewer; - } + anUpdateFlags |= UF_VTKViewer; + aVTKMgr->setShown( true ); } module()->update( anUpdateFlags );