#include <HYDROGUI_BathymetrySelectionOp.h>
#include <HYDROGUI_Module.h>
#include <HYDROGUI_BathymetryPrs.h>
+#include <HYDROGUI_BathymetryOp.h>
#include <OCCViewer_ViewManager.h>
#include <LightApp_Application.h>
activateSelection( false );
}
-void HYDROGUI_BathymetrySelectionOp::activateSelection( bool isActive )
+bool HYDROGUI_BathymetrySelectionOp::isValid( SUIT_Operation* theOtherOp ) const
{
- if( myIsActive==isActive )
- return;
+ HYDROGUI_BathymetryOp* aBathOp = dynamic_cast<HYDROGUI_BathymetryOp*>( theOtherOp );
+ return ( aBathOp != 0 );
+}
- LightApp_Application* app = module()->getApp();
+Handle(AIS_InteractiveContext) getContext( HYDROGUI_Module* theModule )
+{
+ LightApp_Application* app = theModule->getApp();
OCCViewer_ViewManager* mgr = dynamic_cast<OCCViewer_ViewManager*>
( app->getViewManager( OCCViewer_Viewer::Type(), true ) );
Handle(AIS_InteractiveContext) ctx = mgr->getOCCViewer()->getAISContext();
+ return ctx;
+}
-
+QList<Handle(HYDROGUI_BathymetryPrs)> getShownBathymetries( HYDROGUI_Module* theModule )
+{
QList<Handle(HYDROGUI_BathymetryPrs)> baths;
+ Handle(AIS_InteractiveContext) ctx = getContext( theModule );
AIS_ListOfInteractive objs;
ctx->DisplayedObjects( objs );
if( !bath.IsNull() )
baths.append( bath );
}
+ return baths;
+}
+
+void HYDROGUI_BathymetrySelectionOp::activateSelection( bool isActive )
+{
+ if( myIsActive==isActive )
+ return;
+ Handle(AIS_InteractiveContext) ctx = getContext( module() );
+ QList<Handle(HYDROGUI_BathymetryPrs)> baths = getShownBathymetries( module() );
if( isActive )
{
const int aSelectionMode = 1;
ctx->OpenLocalContext( Standard_True );
foreach( Handle(HYDROGUI_BathymetryPrs) bath, baths )
+ {
ctx->Activate( bath, aSelectionMode, Standard_True );
+ bath->SetAutoHilight( Standard_False );
+ }
ctx->UpdateCurrentViewer();
}
else
foreach( Handle(HYDROGUI_BathymetryPrs) bath, baths )
{
bath->ClearSelected();
+ bath->SetAutoHilight( Standard_True );
ctx->Deactivate( bath );
}
ctx->CloseLocalContext( -1, Standard_True );