X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPVViewer%2FPVViewer_ViewManager.cxx;h=b630ce50173a81f9fc4db20dd88a927aecd6c8a0;hb=20f5a8e257f22f84614a13b9bfeb21dab64d70c1;hp=31e5ab6342bf2fb51ce6e81fa697a785fe8e265d;hpb=949661e3432745e77dfc32ac83ee7d06c7e57ced;p=modules%2Fgui.git diff --git a/src/PVViewer/PVViewer_ViewManager.cxx b/src/PVViewer/PVViewer_ViewManager.cxx index 31e5ab634..b630ce501 100644 --- a/src/PVViewer/PVViewer_ViewManager.cxx +++ b/src/PVViewer/PVViewer_ViewManager.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2014 CEA/DEN, EDF R&D +// Copyright (C) 2010-2015 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -16,163 +16,58 @@ // // 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 */ -PVViewer_ViewManager::PVViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* desk ) +PVViewer_ViewManager::PVViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* desk, LogWindow * logWindow ) : SUIT_ViewManager( study, desk, new PVViewer_Viewer() ), desktop(desk) { - MESSAGE("PARAVIS - view manager created ...") + MESSAGE("PVViewer - view manager created ...") setTitle( tr( "PARAVIEW_VIEW_TITLE" ) ); - // Initialize minimal paraview stuff (if not already done) - ParaviewInitApp(desk); - -// 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) -{ - if ( ! MyCoreApp) { - // Obtain command-line arguments - int argc = 0; - char** argv = 0; - QString aOptions = getenv("PARAVIS_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 - vtkOutputWindow::SetInstance(PVViewer_LogWindowAdapter::New()); - - 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() -{ - if (!ConfigLoaded) - { - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - QString aPath = resMgr->stringValue("resources", "PARAVIS", QString()); - if (!aPath.isNull()) { - MyCoreApp->loadConfiguration(aPath + QDir::separator() + "ParaViewFilters.xml"); - MyCoreApp->loadConfiguration(aPath + QDir::separator() + "ParaViewReaders.xml"); - MyCoreApp->loadConfiguration(aPath + QDir::separator() + "ParaViewSources.xml"); - MyCoreApp->loadConfiguration(aPath + QDir::separator() + "ParaViewWriters.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 ); @@ -202,7 +97,7 @@ bool PVViewer_ViewManager::ConnectToExternalPVServer(SUIT_Desktop* aDesktop) std::stringstream msg; // Try to connect to the external PVServer - gives priority to an externally specified URL: - QString serverUrlEnv = getenv("PARAVIS_PVSERVER_URL"); + QString serverUrlEnv = getenv("PARAVIEW_PVSERVER_URL"); std::string serverUrl; if (!serverUrlEnv.isEmpty()) serverUrl = serverUrlEnv.toStdString(); @@ -233,15 +128,15 @@ bool PVViewer_ViewManager::ConnectToExternalPVServer(SUIT_Desktop* aDesktop) return true; } -//void PVViewer_ViewManager::onPVViewCreated(SUIT_ViewWindow* w) -//{ -// PVViewer_ViewWindow * w2 = dynamic_cast(w); -// Q_ASSERT(w2 != NULL); -// connect(w2, SIGNAL(applyRequest()), ParaviewBehaviors, SLOT(onEmulateApply())); -//} -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); + } }