Salome HOME
Make the PVViewer active again at ParaVIS activation to avoid a new RenderView being...
[modules/gui.git] / src / PVViewer / PVViewer_ViewWindow.cxx
index c7fff08a2c288aeb1f4a78f73de25de840b4c2ad..a724de9b834b30ed894b4cbaf04cba054a404f3d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2014  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-// File   : PVViewer_ViewWindow.cxx
-// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
-//
+// Author : Adrien Bruneton (CEA)
 
 #include "PVViewer_ViewWindow.h"
-#include "PVViewer_ViewManager.h"
+#include "PVViewer_Core.h"
+#include "PVViewer_ViewModel.h"
 #include "PVViewer_GUIElements.h"
+#include "PVViewer_ViewManager.h"
 
-#include <SUIT_ViewManager.h>
-#include <SUIT_ResourceMgr.h>
-#include <SUIT_Session.h>
-#include <SUIT_Desktop.h>
+#include "SUIT_ViewManager.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+#include "SUIT_Desktop.h"
+#include "SUIT_Application.h"
 
 #include <pqTabbedMultiViewWidget.h>
 #include <pqApplicationCore.h>
+#include "pqActiveObjects.h"
 
 /*!
   \class PVViewer_ViewWindow
 PVViewer_ViewWindow::PVViewer_ViewWindow( SUIT_Desktop* theDesktop, PVViewer_Viewer* theModel )
   : SUIT_ViewWindow( theDesktop ), myPVMgr( 0 )
 {
+  myDesktop = theDesktop;
   myModel = theModel;
+  setViewManager(myModel->getViewManager());
+  // This may improve synchronization between PV3DViewer and PVViewer
+  // but this make the PVViewer not active when ParaVIS is launched,
+  // which results in a new RenderView being created when a dataset is displayed.
+  // So we comment it for now.
+  //pqActiveObjects::instance().setActiveView(nullptr);
   myPVMgr = qobject_cast<pqTabbedMultiViewWidget*>(pqApplicationCore::instance()->manager("MULTIVIEW_WIDGET"));
   if (myPVMgr) {
+    SUIT_Application* app = SUIT_Session::session()->activeApplication();
+    if ( app )
+      app->addPostRoutine(&PVViewer_ViewWindow::removePVMgr);
     myPVMgr->setParent( this );
     // This is mandatory, see setParent() method in Qt 4 documentation
     myPVMgr->show();
     setCentralWidget( myPVMgr );
-
-    // Finish ParaView set up: behaviors, connection and configurations.
-    PVViewer_ViewManager::ParaviewInitBehaviors(true, theDesktop);
-    PVViewer_ViewManager::ConnectToExternalPVServer(theDesktop);
-    PVViewer_ViewManager::ParaviewLoadConfigurations();
+    // Hide toolbars
+    PVViewer_GUIElements * pvge = PVViewer_GUIElements::GetInstance(myDesktop);
+    pvge->setToolBarVisible(false);
   } else
     qDebug("No multiViewManager defined");
 }
@@ -70,6 +80,9 @@ PVViewer_ViewWindow::PVViewer_ViewWindow( SUIT_Desktop* theDesktop, PVViewer_Vie
 PVViewer_ViewWindow::~PVViewer_ViewWindow()
 {
   if ( myPVMgr ) {
+    // Hide toolbars
+    PVViewer_GUIElements * pvge = PVViewer_GUIElements::GetInstance(myDesktop);
+    pvge->setToolBarEnabled(false);
     myPVMgr->setParent( 0 );
     myPVMgr->hide();
     myPVMgr = 0;
@@ -77,6 +90,12 @@ PVViewer_ViewWindow::~PVViewer_ViewWindow()
   }
 }
 
+void PVViewer_ViewWindow::removePVMgr()
+{
+  pqTabbedMultiViewWidget* aPVMgr = qobject_cast<pqTabbedMultiViewWidget*>(pqApplicationCore::instance()->manager("MULTIVIEW_WIDGET"));
+  delete aPVMgr;
+}
+
 /*!
   \brief Get the visual parameters of the view window.
   \return visual parameters of this view window formatted to the string
@@ -95,7 +114,6 @@ void PVViewer_ViewWindow::setVisualParameters( const QString& parameters )
   SUIT_ViewWindow::setVisualParameters( parameters );
 }
 
-
 /*!
   \brief Returns the ParaView multi-view manager previously set with setMultiViewManager()
 */
@@ -103,8 +121,3 @@ pqTabbedMultiViewWidget* PVViewer_ViewWindow::getMultiViewManager() const
 {
   return myPVMgr;
 }
-
-void PVViewer_ViewWindow::onEmulateApply()
-{
-  emit this->applyRequest();
-}