Salome HOME
Issue "0021793: [CEA 625] Clipping : from coordinates or from bounding
[modules/gui.git] / src / OCCViewer / OCCViewer_ViewFrame.cxx
index 6e7667829bfacc6d56b6298e62d693cf1e13c6f1..9115688f1b8f0af3cf8ea006ca863eddfc83600e 100644 (file)
@@ -85,6 +85,24 @@ void OCCViewer_ViewFrame::setViewManager( SUIT_ViewManager* theMgr )
   }
 }
 
+//**************************************************************************************
+void OCCViewer_ViewFrame::returnTo3dView()
+{
+  OCCViewer_ViewWindow* view = 0;
+  for (int i = BOTTOM_RIGHT; i <= TOP_RIGHT; i++ ) {
+    view = myViews.at(i);
+    view->setVisible( view->get2dMode() == No2dMode );
+    view->setMaximized( true, false );
+    if (view->get2dMode() == No2dMode) myMaximizedView = view;
+  }
+  myLayout->setColumnStretch(0, 0);
+  myLayout->setColumnStretch(1, 0);
+  myLayout->addWidget( myMaximizedView, 0, 0 );
+  mySplitMode = -1;
+  myViewsMode.clear();
+  myLayout->invalidate();
+}
+
 //**************************************************************************************
 void OCCViewer_ViewFrame::onMaximizedView( OCCViewer_ViewWindow* theView, bool isMaximized)
 {
@@ -227,6 +245,7 @@ void OCCViewer_ViewFrame::splitSubViews()
   }
 
   OCCViewer_ViewWindow* view = 0;
+  bool isVisible3dView = false;
   for ( int i = 0; i< myViews.count(); i++ ) {
     view = myViews.at(i);
     bool isShowed = false;
@@ -239,6 +258,7 @@ void OCCViewer_ViewFrame::splitSubViews()
     if( isShowed ) {
       view->show();
       view->setMaximized( false, false );
+      if ( view->get2dMode() == No2dMode ) isVisible3dView = true;
       ///////////////QApplication::processEvents(); // VSR: hangs up ?
       if ( view != myMaximizedView )
         view->onViewFitAll();
@@ -246,6 +266,13 @@ void OCCViewer_ViewFrame::splitSubViews()
     else
       view->setVisible( false );
   }
+  if ( !isVisible3dView ) {
+    for ( int i = 0; i< myViews.count(); i++ ){
+      view = myViews.at(i);
+      if( view->isVisible() )
+        view->setReturnedTo3dView( false );
+    }
+  }
 }
 
 //**************************************************************************************
@@ -300,6 +327,8 @@ void OCCViewer_ViewFrame::setZoomingStyle( const int i )
 //**************************************************************************************
 void OCCViewer_ViewFrame::connectViewSignals(OCCViewer_ViewWindow* theView)
 {
+  connect( theView, SIGNAL( returnedTo3d( ) ), this, SLOT( returnTo3dView( ) ) );
+
   connect( theView, SIGNAL( maximized( OCCViewer_ViewWindow*, bool ) ), 
            this, SLOT( onMaximizedView( OCCViewer_ViewWindow*, bool ) ) );
 
@@ -513,3 +542,17 @@ void OCCViewer_ViewFrame::updateWindowTitle(OCCViewer_ViewWindow* theView)
   if ( !title.isEmpty() )
     theView->setWindowTitle( windowTitle() + " - " + title );
 }
+
+void OCCViewer_ViewFrame::enableSelection( bool isEnabled )
+{
+  foreach (OCCViewer_ViewWindow* aView, myViews) {
+    aView->enableSelection(isEnabled); 
+  }
+}
+
+void OCCViewer_ViewFrame::enablePreselection( bool isEnabled )
+{
+  foreach (OCCViewer_ViewWindow* aView, myViews) {
+    aView->enablePreselection(isEnabled); 
+  }
+}