X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPVViewer%2FPVViewer_ViewManager.cxx;h=b630ce50173a81f9fc4db20dd88a927aecd6c8a0;hb=20f5a8e257f22f84614a13b9bfeb21dab64d70c1;hp=8fa82f047a1c6f9907cfae31652a4ec2ab4d784d;hpb=c4b058d18583af7f94042eb55d4b933dd222d2e6;p=modules%2Fgui.git diff --git a/src/PVViewer/PVViewer_ViewManager.cxx b/src/PVViewer/PVViewer_ViewManager.cxx index 8fa82f047..b630ce501 100644 --- a/src/PVViewer/PVViewer_ViewManager.cxx +++ b/src/PVViewer/PVViewer_ViewManager.cxx @@ -16,47 +16,27 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// Author: Adrien Bruneton (CEA) + #include "PVViewer_ViewManager.h" -#include "PVViewer_ViewModel.h" #include "PVViewer_ViewWindow.h" -#include "PVViewer_LogWindowAdapter.h" +#include "PVViewer_ViewModel.h" #include "PVViewer_GUIElements.h" -#include "PVViewer_Behaviors.h" +#include "PVViewer_Core.h" #include "PVViewer_EngineWrapper.h" #include -#include + +#include #include -#include #include +#include +#include #include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include #include -#include -#include -#include -#include -#include #include - -#include -#include - -//---------- Static init ----------------- -pqPVApplicationCore* PVViewer_ViewManager::MyCoreApp = 0; -bool PVViewer_ViewManager::ConfigLoaded = false; -PVViewer_Behaviors * PVViewer_ViewManager::ParaviewBehaviors = NULL; +#include /*! Constructor @@ -67,112 +47,27 @@ PVViewer_ViewManager::PVViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* des { MESSAGE("PVViewer - view manager created ...") setTitle( tr( "PARAVIEW_VIEW_TITLE" ) ); - // Initialize minimal paraview stuff (if not already done) - ParaviewInitApp(desk, logWindow); - -// connect(this, SIGNAL(viewCreated(SUIT_ViewWindow*)), this, SLOT(onPVViewCreated(SUIT_ViewWindow*))); -} -pqPVApplicationCore * PVViewer_ViewManager::GetPVApplication() -{ - return MyCoreApp; -} - -/*! - \brief Static method, performs initialization of ParaView session. - \param fullSetup whether to instanciate all behaviors or just the minimal ones. - \return \c true if ParaView has been initialized successfully, otherwise false -*/ -bool PVViewer_ViewManager::ParaviewInitApp(SUIT_Desktop * aDesktop, LogWindow * logWindow) -{ - if ( ! MyCoreApp) { - // Obtain command-line arguments - int argc = 0; - char** argv = 0; - QString aOptions = getenv("PARAVIEW_OPTIONS"); - QStringList aOptList = aOptions.split(":", QString::SkipEmptyParts); - argv = new char*[aOptList.size() + 1]; - QStringList args = QApplication::arguments(); - argv[0] = (args.size() > 0)? strdup(args[0].toLatin1().constData()) : strdup("paravis"); - argc++; - - foreach (QString aStr, aOptList) { - argv[argc] = strdup( aStr.toLatin1().constData() ); - argc++; - } - MyCoreApp = new pqPVApplicationCore (argc, argv); - if (MyCoreApp->getOptions()->GetHelpSelected() || - MyCoreApp->getOptions()->GetUnknownArgument() || - MyCoreApp->getOptions()->GetErrorMessage() || - MyCoreApp->getOptions()->GetTellVersion()) { - return false; - } - - // Direct VTK log messages to our SALOME window - TODO: review this - PVViewer_LogWindowAdapter * w = PVViewer_LogWindowAdapter::New(); - w->setLogWindow(logWindow); - vtkOutputWindow::SetInstance(w); - - new pqTabbedMultiViewWidget(); // registers a "MULTIVIEW_WIDGET" on creation - - for (int i = 0; i < argc; i++) - free(argv[i]); - delete[] argv; - } - // Initialize GUI elements if needed: - PVViewer_GUIElements::GetInstance(aDesktop); - return true; -} - -void PVViewer_ViewManager::ParaviewInitBehaviors(bool fullSetup, SUIT_Desktop* aDesktop) -{ - if (!ParaviewBehaviors) - ParaviewBehaviors = new PVViewer_Behaviors(aDesktop); + // Initialize minimal paraview stuff (if not already done) + PVViewer_Core::ParaviewInitApp(desk, logWindow); - if(fullSetup) - ParaviewBehaviors->instanciateAllBehaviors(aDesktop); - else - ParaviewBehaviors->instanciateMinimalBehaviors(aDesktop); + connect( desk, SIGNAL( windowActivated( SUIT_ViewWindow* ) ), + this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) ); } -void PVViewer_ViewManager::ParaviewLoadConfigurations(bool force) -{ - if (!ConfigLoaded || force) - { - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - QString aPath = resMgr->stringValue("resources", "PVViewer", QString()); - if (!aPath.isNull()) { - MyCoreApp->loadConfiguration(aPath + QDir::separator() + "ParaViewFilters.xml"); - MyCoreApp->loadConfiguration(aPath + QDir::separator() + "ParaViewSources.xml"); - } - ConfigLoaded = true; - } -} -void PVViewer_ViewManager::ParaviewCleanup() +PVViewer_EngineWrapper * PVViewer_ViewManager::GetEngine() { - // Disconnect from server - pqServer* server = pqActiveObjects::instance().activeServer(); - if (server && server->isRemote()) - { - MESSAGE("~PVViewer_Module(): Disconnecting from remote server ..."); - pqServerDisconnectReaction::disconnectFromServer(); - } - - pqApplicationCore::instance()->settings()->sync(); - - pqPVApplicationCore * app = GetPVApplication(); - // Schedule destruction of PVApplication singleton: - if (app) - app->deleteLater(); + return PVViewer_EngineWrapper::GetInstance(); } -PVViewer_EngineWrapper * PVViewer_ViewManager::GetEngine() +QString PVViewer_ViewManager::GetPVConfigPath() { - return PVViewer_EngineWrapper::GetInstance(); + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + return resMgr->stringValue("resources", "PVViewer", QString()); } -bool PVViewer_ViewManager::ConnectToExternalPVServer(SUIT_Desktop* aDesktop) +bool PVViewer_ViewManager::ConnectToExternalPVServer(QMainWindow* aDesktop) { SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); bool noConnect = aResourceMgr->booleanValue( "PARAVIS", "no_ext_pv_server", false ); @@ -233,8 +128,15 @@ bool PVViewer_ViewManager::ConnectToExternalPVServer(SUIT_Desktop* aDesktop) return true; } -void PVViewer_ViewManager::onEmulateApply() + +/*!Enable toolbars if view \a view is ParaView viewer and disable otherwise. +*/ +void PVViewer_ViewManager::onWindowActivated(SUIT_ViewWindow* view) { - PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desktop); - guiElements->onEmulateApply(); + if (view) + { + PVViewer_ViewWindow* pvWindow = dynamic_cast(view); + PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desktop); + guiElements->setToolBarEnabled(pvWindow!=0); + } }