bool updateContainers) {
SUIT_Session* aSession = SUIT_Session::session();
- if(!aSession)
- return;
+ if (!aSession) return;
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSession->activeApplication());
- if( !anApp )
- return;
+ if ( !anApp ) return;
- SUIT_ViewManager* aManager = anApp->activeViewManager();
+ SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( anApp->activeStudy() );
+ if ( !aStudy ) return;
- if( !aManager)
- return;
-
- bool is2dViewActive = aManager->getType() == SPlot2d_Viewer::Type();
+ SalomeApp_Module* aModule = dynamic_cast<SalomeApp_Module*>( anApp->module( anApp->moduleTitle( "VISU" ) ) );
+ if ( !aModule ) return;
+
+ LightApp_Displayer* aDisplayer = aModule->displayer();
+
+ SUIT_ViewManager* aManager = anApp->activeViewManager();
- Qtx::VisibilityState state = is2dViewActive ? GetStateByDisplaying(theDisplaying) : Qtx::UnpresentableState;
+ Qtx::VisibilityState state = ( aManager && aManager->getType() == SPlot2d_Viewer::Type() ) ?
+ GetStateByDisplaying(theDisplaying) : Qtx::UnpresentableState;
- if(updateCurve)
- SetVisibilityState(theCurve->GetEntry(), state);
+ if ( updateCurve )
+ SetVisibilityState( theCurve->GetEntry(), state );
- if(updateTable) {
+ if ( updateTable ) {
Table_i* aTable = theCurve->getTable();
- if(aTable) {
- if( SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy()) ) {
- _PTR(SObject) TableSO = aStudy->studyDS()->FindObjectID( aTable->GetEntry() );
- if ( TableSO ) {
+ if ( aTable ) {
+ _PTR(SObject) TableSO = aStudy->studyDS()->FindObjectID( aTable->GetEntry() );
+ if ( TableSO ) {
+ bool isTableVisible = false;
+ if ( aDisplayer && state != Qtx::UnpresentableState ) {
_PTR(ChildIterator) Iter = aStudy->studyDS()->NewChildIterator( TableSO );
- bool isTableVisible = false;
- LightApp_Displayer* aDisplayer = (dynamic_cast<SalomeApp_Module*>(anApp->activeModule()))->displayer();
- if(aDisplayer && state != Qtx::UnpresentableState ) {
- for ( ; Iter->More(); Iter->Next() ) {
- CORBA::Object_var childObject = VISU::ClientSObjectToObject( Iter->Value() );
- if( !CORBA::is_nil( childObject ) ) {
- CORBA::Object_ptr aCurve_ptr = VISU::Curve::_narrow( childObject );
- if( !CORBA::is_nil( aCurve_ptr ) ) {
- VISU::Curve_i* aCurve = dynamic_cast<VISU::Curve_i*>(VISU::GetServant(aCurve_ptr).in());
- if(aDisplayer->IsDisplayed(aCurve->GetEntry().c_str())) {
- isTableVisible = true;
- break;
- }
- } //!CORBA::is_nil( aCurve )
- } // !CORBA::is_nil( childObject )
- } //for
- if(state != Qtx::UnpresentableState)
- SetVisibilityState(aTable->GetEntry(), (isTableVisible ? Qtx::ShownState : Qtx::HiddenState));
- else
- SetVisibilityState(aTable->GetEntry(), state);
- } //aDisplayer
- } //TableSO
- } //aStudy
- } //aTable
- } //updateTable
-
- if(updateContainers) {
- if( SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy()) ) {
- if(LightApp_Displayer* aDisplayer = (dynamic_cast<SalomeApp_Module*>(anApp->activeModule()))->displayer()) {
- ContainerSet aContainers = theCurve->getContainers();
- ContainerSet::ConstIterator it = aContainers.begin();
- for(;it != aContainers.end();it++ ) {
- if(state != Qtx::UnpresentableState) {
- bool isContainerDisplayed = false;
- _PTR(SObject) aSObject = aStudy->studyDS()->FindObjectID( (*it).toLatin1().data());
- CORBA::Object_var anObj = VISU::ClientSObjectToObject( aSObject );
- if( !CORBA::is_nil( anObj ) ) {
- if(VISU::Container_i* aContainer = dynamic_cast<VISU::Container_i*>( VISU::GetServant( anObj ).in())) {
- int nbCurves = aContainer->GetNbCurves();
- for( int k=1; k<=nbCurves; k++ ) {
- VISU::Curve_i* aCurve = aContainer->GetCurve( k );
- if(aCurve && aDisplayer->IsDisplayed(aCurve->GetEntry().c_str())) {
- isContainerDisplayed = true;
- break;
- } // aCurve && aDisplater->IsDisplayed
- } //for k=1 ...
- SetVisibilityState(aContainer->GetEntry(), (isContainerDisplayed ? Qtx::ShownState : Qtx::HiddenState));
- } //aContainer
- } //!CORBA::is_nil( anObj )
- } //state != Qtx::UnpresentableState
- else {
- SetVisibilityState((*it).toLatin1().data(), state);
+ for ( ; Iter->More() && !isTableVisible ; Iter->Next() ) {
+ CORBA::Object_var childObject = VISU::ClientSObjectToObject( Iter->Value() );
+ if ( CORBA::is_nil( childObject ) ) continue;
+ VISU::Curve_i* aCurve = dynamic_cast<VISU::Curve_i*>( VISU::GetServant( childObject.in() ).in() );
+ isTableVisible = aCurve && aDisplayer->IsDisplayed( aCurve->GetEntry().c_str() );
}
- } // for Containers
- } //aDisplayer
- } //aStudy
+ } // if ( aDisplayer ... )
+ if ( state != Qtx::UnpresentableState )
+ SetVisibilityState( aTable->GetEntry(), ( isTableVisible ? Qtx::ShownState : Qtx::HiddenState ) );
+ else
+ SetVisibilityState( aTable->GetEntry(), state );
+ } // if ( TableSO )
+ } // if ( aTable )
+ } // if ( updateTable )
+
+ if ( updateContainers ) {
+ ContainerSet aContainers = theCurve->getContainers();
+ ContainerSet::ConstIterator it = aContainers.begin();
+ for ( ; it != aContainers.end(); it++ ) {
+ _PTR(SObject) aSObject = aStudy->studyDS()->FindObjectID( (*it).toLatin1().data() );
+ if ( !aSObject ) continue;
+ bool isContainerDisplayed = false;
+ if ( aDisplayer && state != Qtx::UnpresentableState ) {
+ CORBA::Object_var anObj = VISU::ClientSObjectToObject( aSObject );
+ if ( CORBA::is_nil( anObj ) ) continue;
+ VISU::Container_i* aContainer = dynamic_cast<VISU::Container_i*>( VISU::GetServant( anObj.in() ).in() );
+ if ( !aContainer ) continue;
+ int nbCurves = aContainer->GetNbCurves();
+ for ( int k = 1; k <= nbCurves && !isContainerDisplayed; k++ ) {
+ VISU::Curve_i* aCurve = aContainer->GetCurve( k );
+ isContainerDisplayed = aCurve && aDisplayer->IsDisplayed( aCurve->GetEntry().c_str() );
+ }
+ } // if ( aDisplayer ... )
+ if ( state != Qtx::UnpresentableState )
+ SetVisibilityState( (*it).toLatin1().constData(), ( isContainerDisplayed ? Qtx::ShownState : Qtx::HiddenState ) );
+ else {
+ SetVisibilityState( (*it).toLatin1().constData(), state );
+ }
+ } // for ( ; it != aContainers.end(); it++ )
} //updateContainers
- }
-
- Qtx::VisibilityState GetStateByDisplaying(int theDisplaying) {
-
+ }
+
+ Qtx::VisibilityState GetStateByDisplaying(int theDisplaying)
+ {
Qtx::VisibilityState state = Qtx::UnpresentableState;
if(theDisplaying == eDisplayAll ||
theDisplaying == eDisplay ||
return state;
}
- void updateContainerVisibility(VISU::Container_i* theContainer) {
- if(!theContainer)
- return;
+ void updateContainerVisibility(VISU::Container_i* theContainer)
+ {
+ if ( !theContainer ) return;
- if( SUIT_Session* aSession = SUIT_Session::session() ) {
- if( SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSession->activeApplication()) ) {
- if( SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy()) ) {
- Qtx::VisibilityState state = Qtx::UnpresentableState;
- int nbCurves = theContainer->GetNbCurves();
- if( nbCurves > 0 ) {
- if(LightApp_Displayer* aDisplayer = (dynamic_cast<SalomeApp_Module*>(anApp->activeModule()))->displayer()) {
- for( int k=1; k<=nbCurves; k++ ) {
- VISU::Curve_i* aCurve = theContainer->GetCurve( k );
- if(aCurve && aDisplayer->IsDisplayed(aCurve->GetEntry().c_str())) {
- state = Qtx::ShownState;
- break;
- }
- }
- if ( state == Qtx::UnpresentableState) {
- if( SUIT_ViewManager * vm = anApp->activeViewManager()){
- if(vm->getType() == SPlot2d_Viewer::Type()) {
- state = Qtx::HiddenState;
- }
- }
- }
- }
- } else if(SUIT_ViewManager * vm = anApp->activeViewManager()){
- if(vm->getType() == SPlot2d_Viewer::Type()) {
- state = Qtx::HiddenState;
- }
- }
- aStudy->setVisibilityState(theContainer->GetEntry().c_str(),state);
- }
+ SUIT_Session* aSession = SUIT_Session::session();
+ if (!aSession) return;
+
+ SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSession->activeApplication());
+ if ( !anApp ) return;
+
+ SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( anApp->activeStudy() );
+ if ( !aStudy ) return;
+
+ SalomeApp_Module* aModule = dynamic_cast<SalomeApp_Module*>( anApp->module( "VISU" ) );
+ if ( !aModule ) return;
+
+ SUIT_ViewManager* aManager = anApp->activeViewManager();
+ Qtx::VisibilityState state = ( aManager && aManager->getType() == SPlot2d_Viewer::Type() ) ?
+ Qtx::HiddenState : Qtx::UnpresentableState;
+
+ LightApp_Displayer* aDisplayer = aModule->displayer();
+
+ int nbCurves = theContainer->GetNbCurves();
+ if ( nbCurves > 0 && aDisplayer ) {
+ for ( int k = 1; k <= nbCurves; k++ ) {
+ VISU::Curve_i* aCurve = theContainer->GetCurve( k );
+ if ( aCurve && aDisplayer->IsDisplayed( aCurve->GetEntry().c_str() ) ) {
+ state = Qtx::ShownState;
+ break;
+ }
}
}
+ aStudy->setVisibilityState( theContainer->GetEntry().c_str(), state );
}
}