# List of targets in this project we want to make visible to the rest of the world.
# They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
IF(NOT SALOME_LIGHT_ONLY)
- SET(_${PROJECT_NAME}_exposed_targets SalomeIDLPARAVIS PARAVIS PVViewer)
+ SET(_${PROJECT_NAME}_exposed_targets SalomeIDLPARAVIS PARAVIS)
# Add all targets to the build-tree export set
EXPORT(TARGETS ${_${PROJECT_NAME}_exposed_targets}
#
SET(_adm_data
- FindSalomeParaView.cmake
FindSalomePARAVIS.cmake
)
+++ /dev/null
-# Copyright (C) 2010-2014 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
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-# Author: Adrien Bruneton
-#
-
-# Graphviz detection for salome
-#
-# !! Please read the generic detection procedure in SalomeMacros.cmake !!
-#
-
-SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(ParaView PARAVIEW_USE_FILE 4)
-#MARK_AS_ADVANCED()
-
-INCLUDE(${PARAVIEW_USE_FILE})
)
# Process viewer:
-ADD_SUBDIRECTORY(view)
+#ADD_SUBDIRECTORY(view)
# additional preprocessor / compiler flags
ADD_DEFINITIONS(${CAS_DEFINITIONS})
${GUI_SalomeObject} ${GUI_vtkTools}
${MED_SalomeIDLMED}
${_PARAVIEW_APP_COMPO_LIB}
- PVViewer
+ ${GUI_PVViewer}
+ SalomeIDLPARAVIS
)
# --- headers ---
#include "PVGUI_Tools.h"
#include "PVGUI_ParaViewSettingsPane.h"
#include "PVViewer_GUIElements.h"
+#include "PVViewer_EngineWrapper.h"
// SALOME Includes
#include <SUIT_DataBrowser.h>
//----------------------------------------------------------------------------
PVGUI_Module* ParavisModule = 0;
+PARAVIS_ORB::PARAVIS_Gen_var PVGUI_Module::MyEngine;
/*!
\mainpage
// Create Attribute parameters for future using
anAttr = aStudyBuilder->FindOrCreateAttribute(aSComponent, "AttributeParameter");
- aStudyBuilder->DefineComponentInstance(aSComponent, PVGUI_Module::GetEngine()->GetIOR());
+ aStudyBuilder->DefineComponentInstance(aSComponent, PVGUI_Module::GetCPPEngine()->GetIOR());
if (aLocked) theStudyDocument->GetProperties()->SetLocked(true);
aStudyBuilder->CommitCommand();
}
delete myInitTimer;
}
-PARAVIS_ORB::PARAVIS_Gen_var PVGUI_Module::GetEngine()
+PARAVIS_ORB::PARAVIS_Gen_var PVGUI_Module::GetCPPEngine()
{
- return PVViewer_ViewManager::GetEngine();
+ // initialize PARAVIS module engine (load, if necessary)
+ if ( CORBA::is_nil( MyEngine ) ) {
+ Engines::EngineComponent_var comp =
+ SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "PARAVIS" );
+ MyEngine = PARAVIS_ORB::PARAVIS_Gen::_narrow( comp );
+ }
+ return MyEngine;
}
+
pqPVApplicationCore * PVGUI_Module::GetPVApplication()
{
return PVViewer_ViewManager::GetPVApplication();
}
_PTR(SComponent) paravisComp =
- studyDS->FindComponent(GetEngine()->ComponentDataType());
+ studyDS->FindComponent(GetCPPEngine()->ComponentDataType());
if(!paravisComp) {
return;
}
*/
QString PVGUI_Module::engineIOR() const
{
- CORBA::String_var anIOR = GetEngine()->GetIOR();
+ CORBA::String_var anIOR = GetCPPEngine()->GetIOR();
return QString(anIOR.in());
}
return;
}
- QString paravisDataType(GetEngine()->ComponentDataType());
+ QString paravisDataType(GetCPPEngine()->ComponentDataType());
if(activeStudy && activeStudy->isComponent(entry) &&
activeStudy->componentDataType(entry) == paravisDataType) {
// ParaViS module object
}
_PTR(SComponent) paravisComp =
- studyDS->FindComponent(GetEngine()->ComponentDataType());
+ studyDS->FindComponent(GetCPPEngine()->ComponentDataType());
if(!paravisComp) {
return;
}
void PVGUI_Module::onPushTraceTimer()
{
// MESSAGE("onPushTraceTimer(): Pushing trace to engine...");
- GetEngine()->PutPythonTraceStringToEngine(getTraceString().toStdString().c_str());
+ GetCPPEngine()->PutPythonTraceStringToEngine(getTraceString().toStdString().c_str());
}
/*!
#include <SalomeApp_Module.h>
#include "SALOMEconfig.h"
#include CORBA_SERVER_HEADER(SALOMEDS)
-#ifndef PARAVIS_WITH_FULL_CORBA
-# include CORBA_SERVER_HEADER(PARAVIS_Gen)
-#endif
+#include CORBA_SERVER_HEADER(PARAVIS_Gen)
#include <ostream>
#include <vtkType.h>
virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
- inline static PARAVIS_ORB::PARAVIS_Gen_var GetEngine();
+ // Get the unwrapped version of the engine - compare with PVViewer_EngineWrapper.
+ inline static PARAVIS_ORB::PARAVIS_Gen_var GetCPPEngine();
inline static pqPVApplicationCore * GetPVApplication();
public slots:
QTimer * myPushTraceTimer;
PVViewer_GUIElements * myGuiElements;
+
+ static PARAVIS_ORB::PARAVIS_Gen_var MyEngine;
};
#endif // PVGUI_Module_H
+++ /dev/null
-# Copyright (C) 2010-2014 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
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-INCLUDE(UseQt4Ext)
-
-# --- options ---
-
-INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS}
- ${QT_INCLUDES}
- ${CMAKE_CURRENT_SOURCE_DIR}
- )
-
-SET(_PARAVIEW_APP_COMPO_LIB
- pqApplicationComponents
- )
-
-ADD_DEFINITIONS(${KERNEL_DEFINITIONS})
-ADD_DEFINITIONS(${OMNIORB_DEFINITIONS})
-
-SET(_link_LIBRARIES
- ${KERNEL_LDFLAGS} ${KERNEL_SALOMELocalTrace} ${KERNEL_SalomeLifeCycleCORBA}
- ${GUI_LDFLAGS} ${GUI_SalomeApp} ${GUI_LightApp} ${GUI_suit} ${GUI_Event}
- ${_PARAVIEW_APP_COMPO_LIB}
- SalomeIDLPARAVIS
-)
-
-# --- headers ---
-
-# header files / to be processed by moc
-SET(_moc_HEADERS
- PVViewer_ViewManager.h
- PVViewer_ViewModel.h
- PVViewer_ViewWindow.h
- PVViewer_Behaviors.h
- PVViewer_GUIElements.h
-)
-
-# header files / no moc processing
-SET(_other_HEADERS
- PVViewer_LogWindowAdapter.h
-)
-# header files / to install
-SET(PVViewer_HEADERS ${_moc_HEADERS} ${_other_HEADERS})
-
-# --- sources ---
-
-# sources / moc wrappings
-QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS})
-
-# sources / static
-SET(_other_SOURCES
- PVViewer_ViewManager.cxx
- PVViewer_ViewModel.cxx
- PVViewer_ViewWindow.cxx
- PVViewer_LogWindowAdapter.cxx
- PVViewer_Behaviors.cxx
- PVViewer_GUIElements.cxx
- )
-
-# sources / to compile
-SET(PVViewer_SOURCES
- ${_other_SOURCES}
- ${_moc_SOURCES}
- )
-
-# --- rules ---
-ADD_LIBRARY(PVViewer ${PVViewer_SOURCES})
-
-TARGET_LINK_LIBRARIES(PVViewer ${_link_LIBRARIES})
-INSTALL(TARGETS PVViewer EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
-
-# --- header and resources installation ---
-INSTALL(FILES ${PVViewer_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// Author: Adrien Bruneton (CEA)
-
-#include "PVViewer_Behaviors.h"
-
-#include <SUIT_Desktop.h>
-#include <SalomeApp_Module.h>
-
-#include <pqInterfaceTracker.h>
-#include <pqApplicationCore.h>
-#include <pqPluginManager.h>
-#include <pqStandardPropertyWidgetInterface.h>
-#include <pqStandardViewFrameActionsImplementation.h>
-#include <pqPropertiesPanel.h>
-
-#include <pqAlwaysConnectedBehavior.h>
-#include <pqAutoLoadPluginXMLBehavior.h>
-#include <pqCommandLineOptionsBehavior.h>
-#include <pqCrashRecoveryBehavior.h>
-#include <pqDataTimeStepBehavior.h>
-#include <pqDefaultViewBehavior.h>
-#include <pqObjectPickingBehavior.h>
-#include <pqPersistentMainWindowStateBehavior.h>
-#include <pqPipelineContextMenuBehavior.h>
-#include <pqPluginActionGroupBehavior.h>
-#include <pqPluginDockWidgetsBehavior.h>
-#include <pqSpreadSheetVisibilityBehavior.h>
-#include <pqUndoRedoBehavior.h>
-#include <pqViewStreamingBehavior.h>
-#include <pqCollaborationBehavior.h>
-#include <pqVerifyRequiredPluginBehavior.h>
-#include <pqPluginSettingsBehavior.h>
-#include <pqFixPathsInStateFilesBehavior.h>
-#include <pqApplyBehavior.h>
-
-#include <pqPropertiesPanel.h>
-
-int PVViewer_Behaviors::BehaviorLoadingLevel = 0;
-
-PVViewer_Behaviors::PVViewer_Behaviors(SUIT_Desktop * parent)
- : QObject(static_cast<QObject *>(parent))
-{
-}
-
-/**! Instanciate minimal ParaView behaviors needed when using an instance of PVViewer.
- * This method should be updated at each new version of ParaView with what is found in
- * Qt/ApplicationComponents/pqParaViewBehaviors.cxx
- */
-void PVViewer_Behaviors::instanciateMinimalBehaviors(SUIT_Desktop * desk)
-{
- if (BehaviorLoadingLevel < 1)
- {
- // Register ParaView interfaces.
- pqInterfaceTracker* pgm = pqApplicationCore::instance()->interfaceTracker();
-
- // Register standard types of property widgets.
- pgm->addInterface(new pqStandardPropertyWidgetInterface(pgm));
- // Register standard types of view-frame actions.
- pgm->addInterface(new pqStandardViewFrameActionsImplementation(pgm));
-
- // Load plugins distributed with application.
- pqApplicationCore::instance()->loadDistributedPlugins();
-
- new pqDefaultViewBehavior(this); // shows a 3D view as soon as a server connection is made
- new pqAlwaysConnectedBehavior(this); // client always connected to a server
- new pqAutoLoadPluginXMLBehavior(this); // auto load plugins
- new pqVerifyRequiredPluginBehavior(this);
- new pqPluginSettingsBehavior(this);
- new pqFixPathsInStateFilesBehavior(this);
- new pqCrashRecoveryBehavior(this);
- new pqCommandLineOptionsBehavior(this);
-
- BehaviorLoadingLevel = 1;
- }
-}
-
-/**! Instanciate usual ParaView behaviors.
- * This method should be updated at each new version of ParaView with what is found in
- * Qt/ApplicationComponents/pqParaViewBehaviors.cxx
- */
-void PVViewer_Behaviors::instanciateAllBehaviors(SUIT_Desktop * desk)
-{
- // "new pqParaViewBehaviors(anApp->desktop(), this);"
- // -> (which loads all standard ParaView behaviors at once) has to be replaced in order to
- // exclude using of pqQtMessageHandlerBehaviour
-
- // Define application behaviors.
- if (BehaviorLoadingLevel < 1)
- instanciateMinimalBehaviors(desk);
-
- if (BehaviorLoadingLevel < 2)
- {
- //new pqQtMessageHandlerBehavior(this); // THIS ONE TO EXCLUDE !! see comment above
- new pqDataTimeStepBehavior(this);
- new pqSpreadSheetVisibilityBehavior(this);
- new pqPipelineContextMenuBehavior(this);
- new pqUndoRedoBehavior(this);
- new pqPluginDockWidgetsBehavior(desk);
- new pqPluginActionGroupBehavior(desk);
- new pqPersistentMainWindowStateBehavior(desk);
- new pqObjectPickingBehavior(desk);
- new pqCollaborationBehavior(this);
- new pqViewStreamingBehavior(this);
-
- pqApplyBehavior* applyBehavior = new pqApplyBehavior(this);
- foreach (pqPropertiesPanel* ppanel, desk->findChildren<pqPropertiesPanel*>())
- {
- applyBehavior->registerPanel(ppanel);
- }
- BehaviorLoadingLevel = 2;
- }
-}
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// Author: Adrien Bruneton (CEA)
-
-
-#ifndef PVGUIBEHAVIORS_H_
-#define PVGUIBEHAVIORS_H_
-
-#include <QObject>
-
-class SalomeApp_Module;
-class SUIT_Desktop;
-class pqPropertiesPanel;
-
-/**!
- * PARAVIS behaviors - mimic what is done in
- * Qt/ApplicationComponents/pqParaViewBehaviors.cxx
- * Except a few ones, behaviors are destroyed when the module is destroyed.
- */
-class PVViewer_Behaviors: public QObject
-{
- Q_OBJECT
-
-public:
- PVViewer_Behaviors(SUIT_Desktop * parent);
-
- void instanciateMinimalBehaviors(SUIT_Desktop * desk);
- void instanciateAllBehaviors(SUIT_Desktop * desk);
-
- virtual ~PVViewer_Behaviors() {}
-
-//public slots:
-// void onEmulateApply();
-
-private:
- static int BehaviorLoadingLevel;
-};
-
-#endif /* PVGUIBEHAVIORS_H_ */
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// Author: Adrien Bruneton (CEA)
-
-#include "PVViewer_GUIElements.h"
-#include "SUIT_Desktop.h"
-
-#include <pqPropertiesPanel.h>
-#include <pqPipelineBrowserWidget.h>
-#include <pqParaViewMenuBuilders.h>
-
-#include <QMenu>
-#include <QList>
-#include <QAction>
-
-PVViewer_GUIElements * PVViewer_GUIElements::theInstance = 0;
-
-PVViewer_GUIElements::PVViewer_GUIElements(SUIT_Desktop* desk) :
- propertiesPanel(0), pipelineBrowserWidget(0),
- sourcesMenu(0)
-{
- propertiesPanel = new pqPropertiesPanel(desk);
- pipelineBrowserWidget = new pqPipelineBrowserWidget(desk);
-
- sourcesMenu = new QMenu(desk);
- pqParaViewMenuBuilders::buildSourcesMenu(*sourcesMenu, desk);
-
- filtersMenu = new QMenu(desk);
- pqParaViewMenuBuilders::buildFiltersMenu(*filtersMenu, desk);
-
- macrosMenu = new QMenu(desk);
- pqParaViewMenuBuilders::buildMacrosMenu(*macrosMenu);
-}
-
-PVViewer_GUIElements * PVViewer_GUIElements::GetInstance(SUIT_Desktop* desk)
-{
- if (! theInstance)
- theInstance = new PVViewer_GUIElements(desk);
- return theInstance;
-}
-
-void PVViewer_GUIElements::updateSourcesMenu(QMenu *menu)
-{
- if (menu)
- {
- menu->clear();
- QList<QAction *> act_list = sourcesMenu->actions();
- foreach(QAction * a, act_list)
- {
- menu->addAction(a);
- }
- }
-}
-
-void PVViewer_GUIElements::updateFiltersMenu(QMenu *menu)
-{
- if (menu)
- {
- menu->clear();
- QList<QAction *> act_list = filtersMenu->actions();
- foreach(QAction * a, act_list)
- {
- menu->addAction(a);
- }
- }
-}
-
-void PVViewer_GUIElements::updateMacrosMenu(QMenu *menu)
-{
- if (menu)
- {
- menu->clear();
- QList<QAction *> act_list = macrosMenu->actions();
- foreach(QAction * a, act_list)
- {
- menu->addAction(a);
- }
- }
-}
-
-
-void PVViewer_GUIElements::onEmulateApply()
-{
- if (propertiesPanel)
- propertiesPanel->apply();
-}
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// Author: Adrien Bruneton (CEA)
-
-#ifndef PVVIEWERGUIELEMENTS_H_
-#define PVVIEWERGUIELEMENTS_H_
-
-#include <QObject>
-
-class pqPropertiesPanel;
-class pqPipelineBrowserWidget;
-class SUIT_Desktop;
-class QMenu;
-
-/*!
- * Some GUI elements of ParaView need to be instanciated in a proper order. This class
- * holds all of them for the sake of clarity.
- * For example sources menu should be built *before* loading ParaView's configuration, so that the
- * list of sources gets properly populated.
- */
-class PVViewer_GUIElements: public QObject
-{
- Q_OBJECT
-
-public:
- static PVViewer_GUIElements * GetInstance(SUIT_Desktop* desk);
-
- pqPropertiesPanel * getPropertiesPanel() { return propertiesPanel; }
- pqPipelineBrowserWidget * getPipelineBrowserWidget() { return pipelineBrowserWidget; }
-
- // Update the sources menu from what was built in private member 'sourcesMenu'
- void updateSourcesMenu(QMenu *);
- void updateFiltersMenu(QMenu *);
- void updateMacrosMenu(QMenu *);
-
-public slots:
- void onEmulateApply(); // better use the slot from PVViewer_ViewManager if you want to trigger "Apply"
-
-private:
- PVViewer_GUIElements(SUIT_Desktop* desk);
- virtual ~PVViewer_GUIElements() {}
-
- static PVViewer_GUIElements * theInstance;
-
- // Widgets
- pqPropertiesPanel * propertiesPanel;
- pqPipelineBrowserWidget * pipelineBrowserWidget;
-
- // Dummy QMenus receiving ParaView's reaction for automatic add when new sources are added
- QMenu * sourcesMenu;
- QMenu * filtersMenu;
- QMenu * macrosMenu;
-};
-
-#endif /* PVVIEWERGUIELEMENTS_H_ */
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "PVViewer_LogWindowAdapter.h"
-
-#include <vtkObjectFactory.h>
-
-#include <LightApp_Application.h>
-#include <LogWindow.h>
-#include <SUIT_Session.h>
-#include <SALOME_Event.h>
-
-vtkStandardNewMacro(PVViewer_LogWindowAdapter);
-
-
-
-/*!
- * Put the message in the log window.
- */
-class TEvent: public SALOME_Event {
- LogWindow* myWindow;
- QString myMsg;
- QColor myColor;
- int myFlags;
- public:
- TEvent( LogWindow* theWindow, const QString theMsg, const QColor theColor, const int flags) :
- myWindow ( theWindow ),
- myMsg ( theMsg ),
- myColor ( theColor ),
- myFlags (flags)
- {}
-
- virtual void Execute() {
- if(myWindow)
- myWindow->putMessage(myMsg, myColor, myFlags);
- }
-};
-
-
-PVViewer_LogWindowAdapter::PVViewer_LogWindowAdapter() :
- TextCount(0),
- ErrorCount(0),
- WarningCount(0),
- GenericWarningCount(0)
-{
-}
-
-PVViewer_LogWindowAdapter::~PVViewer_LogWindowAdapter()
-{
-}
-
-const unsigned int PVViewer_LogWindowAdapter::getTextCount()
-{
- return this->TextCount;
-}
-
-const unsigned int PVViewer_LogWindowAdapter::getErrorCount()
-{
- return this->ErrorCount;
-}
-
-const unsigned int PVViewer_LogWindowAdapter::getWarningCount()
-{
- return this->WarningCount;
-}
-
-const unsigned int PVViewer_LogWindowAdapter::getGenericWarningCount()
-{
- return this->GenericWarningCount;
-}
-
-static LogWindow* getLogWindow()
-{
- LogWindow* wnd = 0;
- LightApp_Application* anApp = dynamic_cast<LightApp_Application*>( SUIT_Session::session()->activeApplication() );
- if ( anApp )
- wnd = anApp->logWindow();
- return wnd;
-}
-
-void PVViewer_LogWindowAdapter::DisplayText(const char* text)
-{
- ++this->TextCount;
- ProcessVoidEvent( new TEvent( getLogWindow(), text, Qt::darkGreen, LogWindow::DisplayNormal ));
-}
-
-void PVViewer_LogWindowAdapter::DisplayErrorText(const char* text)
-{
- ++this->ErrorCount;
- ProcessVoidEvent( new TEvent( getLogWindow(), text, Qt::darkRed, LogWindow::DisplayNormal ));
-}
-
-void PVViewer_LogWindowAdapter::DisplayWarningText(const char* text)
-{
- ++this->WarningCount;
- ProcessVoidEvent( new TEvent( getLogWindow(), text, Qt::black, LogWindow::DisplayNormal ));
-}
-
-void PVViewer_LogWindowAdapter::DisplayGenericWarningText(const char* text)
-{
- ++this->GenericWarningCount;
- ProcessVoidEvent( new TEvent( getLogWindow() , text, Qt::black, LogWindow::DisplayNormal ));
-}
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef _PVViewer_LogWindowAdapter_h
-#define _PVViewer_LogWindowAdapter_h
-
-#include <vtkOutputWindow.h>
-
-/*!
-vtkOutputWindow implementation that puts VTK output messages to SALOME log window.
-
-To use, create an instance of PVViewer_LogWindowAdapter and pass it to the
-vtkOutputWindow::setInstance() static method.
-
-This class is based on pqOutputWindow ParaView class.
-*/
-class PVViewer_LogWindowAdapter : public vtkOutputWindow
-{
-public:
- static PVViewer_LogWindowAdapter *New();
- vtkTypeMacro(PVViewer_LogWindowAdapter, vtkOutputWindow);
-
- //! Returns the number of text messages received
- const unsigned int getTextCount();
- //! Returns the number of error messages received
- const unsigned int getErrorCount();
- //! Returns the number of warning messages received
- const unsigned int getWarningCount();
- //! Returns the number of generic warning messages received
- const unsigned int getGenericWarningCount();
-
-private:
- PVViewer_LogWindowAdapter();
- PVViewer_LogWindowAdapter(const PVViewer_LogWindowAdapter&);
- PVViewer_LogWindowAdapter& operator=(const PVViewer_LogWindowAdapter&);
- ~PVViewer_LogWindowAdapter();
-
- unsigned int TextCount;
- unsigned int ErrorCount;
- unsigned int WarningCount;
- unsigned int GenericWarningCount;
-
- virtual void DisplayText(const char*);
- virtual void DisplayErrorText(const char*);
- virtual void DisplayWarningText(const char*);
- virtual void DisplayGenericWarningText(const char*);
-};
-
-#endif // !_PVViewer_LogWindowAdapter_h
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-#include "PVViewer_ViewManager.h"
-#include "PVViewer_ViewModel.h"
-#include "PVViewer_ViewWindow.h"
-#include "PVViewer_LogWindowAdapter.h"
-#include "PVViewer_GUIElements.h"
-#include "PVViewer_Behaviors.h"
-
-#include <utilities.h>
-#include <SalomeApp_Application.h>
-#include <SALOMEconfig.h>
-#include <SALOME_LifeCycleCORBA.hxx>
-#include <SUIT_MessageBox.h>
-#include <SUIT_Desktop.h>
-#include <SUIT_Session.h>
-#include <SUIT_ResourceMgr.h>
-#include <PyInterp_Interp.h>
-#include <PyConsole_Interp.h>
-#include <PyConsole_Console.h>
-
-#include <QApplication>
-#include <QStringList>
-#include <QDir>
-
-#include <string>
-
-#include <pqOptions.h>
-#include <pqServer.h>
-#include <pqSettings.h>
-#include <pqServerDisconnectReaction.h>
-#include <pqPVApplicationCore.h>
-#include <pqTabbedMultiViewWidget.h>
-#include <pqActiveObjects.h>
-#include <pqServerConnectReaction.h>
-
-#include <pqParaViewMenuBuilders.h>
-#include <pqPipelineBrowserWidget.h>
-
-//---------- Static init -----------------
-pqPVApplicationCore* PVViewer_ViewManager::MyCoreApp = 0;
-PARAVIS_ORB::PARAVIS_Gen_var PVViewer_ViewManager::MyEngine;
-bool PVViewer_ViewManager::ConfigLoaded = false;
-PVViewer_Behaviors * PVViewer_ViewManager::ParaviewBehaviors = NULL;
-
-/*!
- Constructor
-*/
-PVViewer_ViewManager::PVViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* desk )
-: SUIT_ViewManager( study, desk, new PVViewer_Viewer() ),
- desktop(desk)
-{
- MESSAGE("PARAVIS - 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
-
- // At this stage, the pqPythonManager has been initialized, i.e. the current process has
- // activated the embedded Python interpreter. "paraview" package has also been imported once already.
- // Make sure the current process executes paraview's Python command with the "fromGUI" flag.
- // This is used in pvsimple.py to avoid reconnecting the GUI thread to the pvserver (when
- // user types "import pvsimple" in SALOME's console).
- SalomeApp_Application* app =
- dynamic_cast< SalomeApp_Application* >(SUIT_Session::session()->activeApplication());
- PyConsole_Interp* pyInterp = app->pythonConsole()->getInterp();
- {
- PyLockWrapper aGil;
- std::string cmd = "import paraview;paraview.fromGUI = True";
- pyInterp->run(cmd.c_str());
- }
-
- 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);
-
- if(fullSetup)
- ParaviewBehaviors->instanciateAllBehaviors(aDesktop);
- else
- ParaviewBehaviors->instanciateMinimalBehaviors(aDesktop);
-}
-
-void PVViewer_ViewManager::ParaviewLoadConfigurations()
-{
- if (!ConfigLoaded)
- {
- SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
- QString aPath = resMgr->stringValue("resources", "PARAVIS", QString());
- std::cout << "loading conf from: " << aPath.toStdString() << std::endl;
- 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()
-{
- // 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();
-}
-
-PARAVIS_ORB::PARAVIS_Gen_var PVViewer_ViewManager::GetEngine()
-{
- // initialize PARAVIS module engine (load, if necessary)
- if ( CORBA::is_nil( MyEngine ) ) {
- Engines::EngineComponent_var comp =
- SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "PARAVIS" );
- MyEngine = PARAVIS_ORB::PARAVIS_Gen::_narrow( comp );
- }
- return MyEngine;
-}
-
-bool PVViewer_ViewManager::ConnectToExternalPVServer(SUIT_Desktop* aDesktop)
-{
- SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
- bool noConnect = aResourceMgr->booleanValue( "PARAVIS", "no_ext_pv_server", false );
- if (noConnect)
- return true;
-
- pqServer* server = pqActiveObjects::instance().activeServer();
- if (server && server->isRemote())
- {
- // Already connected to an external server, do nothing
- MESSAGE("connectToExternalPVServer(): Already connected to an external PVServer, won't reconnect.");
- return false;
- }
-
- if (GetEngine()->GetGUIConnected())
- {
- // Should never be there as the above should already tell us that we are connected.
- std::stringstream msg2;
- msg2 << "Internal error while connecting to the pvserver.";
- msg2 << "ParaView doesn't see a connection, but PARAVIS engine tells us there is already one!" << std::endl;
- qWarning(msg2.str().c_str()); // will go to the ParaView console (see ParavisMessageOutput below)
- SUIT_MessageBox::warning( aDesktop,
- QString("Error connecting to PVServer"), QString(msg2.str().c_str()));
- return false;
- }
-
- std::stringstream msg;
-
- // Try to connect to the external PVServer - gives priority to an externally specified URL:
- QString serverUrlEnv = getenv("PARAVIS_PVSERVER_URL");
- std::string serverUrl;
- if (!serverUrlEnv.isEmpty())
- serverUrl = serverUrlEnv.toStdString();
- else
- {
- // Get the URL from the engine (possibly starting the pvserver)
- CORBA::String_var url = GetEngine()->FindOrStartPVServer(0); // take the first free port
- serverUrl = (char *)url;
- }
-
- msg << "connectToExternalPVServer(): Trying to connect to the external PVServer '" << serverUrl << "' ...";
- MESSAGE(msg.str());
-
- if (!pqServerConnectReaction::connectToServer(pqServerResource(serverUrl.c_str())))
- {
- std::stringstream msg2;
- msg2 << "Error while connecting to the requested pvserver '" << serverUrl;
- msg2 << "'. Might use default built-in connection instead!" << std::endl;
- qWarning(msg2.str().c_str()); // will go to the ParaView console (see ParavisMessageOutput below)
- SUIT_MessageBox::warning( aDesktop,
- QString("Error connecting to PVServer"), QString(msg2.str().c_str()));
- return false;
- }
- else
- {
- MESSAGE("connectToExternalPVServer(): Connected!");
- GetEngine()->SetGUIConnected(true);
- }
- return true;
-}
-
-//void PVViewer_ViewManager::onPVViewCreated(SUIT_ViewWindow* w)
-//{
-// PVViewer_ViewWindow * w2 = dynamic_cast<PVViewer_ViewWindow *>(w);
-// Q_ASSERT(w2 != NULL);
-// connect(w2, SIGNAL(applyRequest()), ParaviewBehaviors, SLOT(onEmulateApply()));
-//}
-
-void PVViewer_ViewManager::onEmulateApply()
-{
- PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desktop);
- guiElements->onEmulateApply();
-}
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-#ifndef PVViewer_VIEWMANAGER_H
-#define PVViewer_VIEWMANAGER_H
-
-#include <SUIT_ViewManager.h>
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(PARAVIS_Gen)
-
-class SUIT_Desktop;
-class SUIT_Study;
-class SUIT_ViewWindow;
-class pqTabbedMultiViewWidget;
-class pqPVApplicationCore;
-class PVViewer_Behaviors;
-class pqPropertiesPanel;
-class pqPipelineBrowserWidget;
-
-class PVViewer_ViewManager : public SUIT_ViewManager
-{
- Q_OBJECT
-
-public:
- PVViewer_ViewManager( SUIT_Study*, SUIT_Desktop* );
- ~PVViewer_ViewManager() {}
-
- static pqPVApplicationCore * GetPVApplication();
- static PARAVIS_ORB::PARAVIS_Gen_var GetEngine();
-
- //! Initialize ParaView if not yet done (once per session)
- static bool ParaviewInitApp(SUIT_Desktop* aDesktop);
- static void ParaviewInitBehaviors(bool fullSetup=false, SUIT_Desktop* aDesktop=0);
- static void ParaviewLoadConfigurations();
- static void ParaviewCleanup();
-
- //! Connect to the external PVServer, using the PARAVIS engine to launch it if it is not
- //! already up.
- static bool ConnectToExternalPVServer(SUIT_Desktop* aDesktop);
-
-public slots:
-// void onPVViewCreated(SUIT_ViewWindow*);
- void onEmulateApply();
-
-private:
- static pqPVApplicationCore* MyCoreApp;
- static PARAVIS_ORB::PARAVIS_Gen_var MyEngine;
- static bool ConfigLoaded;
- static PVViewer_Behaviors * ParaviewBehaviors;
-
- SUIT_Desktop * desktop;
-};
-
-#endif
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "PVViewer_ViewModel.h"
-#include "PVViewer_ViewWindow.h"
-
-#include <utilities.h>
-#include <SUIT_Desktop.h>
-
-#include <SalomeApp_Application.h>
-
-//----------------------------------------
-PVViewer_Viewer::PVViewer_Viewer()
-:SUIT_ViewModel()
-{
- MESSAGE("PVViewer_Viewer: creating view model ...");
-}
-
-
-/*!
- Create new instance of view window on desktop \a theDesktop.
- \retval SUIT_ViewWindow* - created view window pointer.
-*/
-SUIT_ViewWindow* PVViewer_Viewer::createView(SUIT_Desktop* theDesktop)
-{
- PVViewer_ViewWindow* aPVView = new PVViewer_ViewWindow(theDesktop, this);
- return aPVView;
-}
-
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-#if !defined(_PVViewer_VIEWMODEL_H)
-#define _PVViewer_VIEWMODEL_H
-
-#include <SUIT_ViewModel.h>
-
-class SUIT_ViewWindow;
-class SUIT_Desktop;
-class SUIT_Desktop;
-
-class PVViewer_Viewer: public SUIT_ViewModel
-{
- Q_OBJECT
-
-public:
- PVViewer_Viewer();
- virtual ~PVViewer_Viewer() {}
-
- virtual SUIT_ViewWindow* createView(SUIT_Desktop* theDesktop);
- virtual QString getType() const { return Type(); }
- static QString Type() { return "ParaView"; }
-};
-
-#endif // !defined(_PVViewer_VIEWMODEL_H)
-
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// 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)
-//
-
-#include "PVViewer_ViewWindow.h"
-#include "PVViewer_ViewManager.h"
-#include "PVViewer_GUIElements.h"
-
-#include <SUIT_ViewManager.h>
-#include <SUIT_ResourceMgr.h>
-#include <SUIT_Session.h>
-#include <SUIT_Desktop.h>
-
-#include <pqTabbedMultiViewWidget.h>
-#include <pqApplicationCore.h>
-
-/*!
- \class PVViewer_ViewWindow
- \brief PVGUI view window.
-*/
-
-/*!
- \brief Constructor.
- \param theDesktop parent desktop window
- \param theModel view model
-*/
-PVViewer_ViewWindow::PVViewer_ViewWindow( SUIT_Desktop* theDesktop, PVViewer_Viewer* theModel )
- : SUIT_ViewWindow( theDesktop ), myPVMgr( 0 )
-{
- myModel = theModel;
- myPVMgr = qobject_cast<pqTabbedMultiViewWidget*>(pqApplicationCore::instance()->manager("MULTIVIEW_WIDGET"));
- if (myPVMgr) {
- 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();
- } else
- qDebug("No multiViewManager defined");
-}
-
-/*!
- \brief Destructor.
- As pqViewManager persists through the whole session,
- the destructor first removes it from the children of this PVViewer_ViewWindow
- to prevent its unexpected deletion.
-*/
-PVViewer_ViewWindow::~PVViewer_ViewWindow()
-{
- if ( myPVMgr ) {
- myPVMgr->setParent( 0 );
- myPVMgr->hide();
- myPVMgr = 0;
- setCentralWidget( 0 );
- }
-}
-
-/*!
- \brief Get the visual parameters of the view window.
- \return visual parameters of this view window formatted to the string
-*/
-QString PVViewer_ViewWindow::getVisualParameters()
-{
- return SUIT_ViewWindow::getVisualParameters();
-}
-
-/*!
- \brief Restore visual parameters of the view window from the formated string
- \param parameters view window visual parameters
-*/
-void PVViewer_ViewWindow::setVisualParameters( const QString& parameters )
-{
- SUIT_ViewWindow::setVisualParameters( parameters );
-}
-
-
-/*!
- \brief Returns the ParaView multi-view manager previously set with setMultiViewManager()
-*/
-pqTabbedMultiViewWidget* PVViewer_ViewWindow::getMultiViewManager() const
-{
- return myPVMgr;
-}
-
-void PVViewer_ViewWindow::onEmulateApply()
-{
- emit this->applyRequest();
-}
+++ /dev/null
-// Copyright (C) 2010-2014 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
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// File : Plot2d_ViewWindow.h
-// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
-//
-
-#ifndef PVViewer_VIEWWINDOW_H
-#define PVViewer_VIEWWINDOW_H
-
-#include <SUIT_ViewWindow.h>
-#include <QMap>
-
-class SUIT_Desktop;
-class PVViewer_Viewer;
-class pqTabbedMultiViewWidget;
-
-class PVViewer_ViewWindow : public SUIT_ViewWindow
-{
- Q_OBJECT
-
-public:
- PVViewer_ViewWindow( SUIT_Desktop*, PVViewer_Viewer* );
- virtual ~PVViewer_ViewWindow();
-
- virtual QString getVisualParameters();
- virtual void setVisualParameters( const QString& );
-
- pqTabbedMultiViewWidget* getMultiViewManager() const;
-
-signals:
- void applyRequest();
-
-public slots:
- void onEmulateApply();
-
-private:
- PVViewer_Viewer* myModel;
- pqTabbedMultiViewWidget* myPVMgr;
-};
-
-#endif // PLOT2D_VIEWWINDOW_H
is provided by the PARAVIS engine.
"""
+def __my_log(msg):
+ print "[PARAVIS] %s" % msg
+
+def __getFromGUI():
+ """ Identify if we are running inside SALOME's embedded console.
+ """
+ fromGUI = False
+ try:
+ import salome
+ fromGUI = salome.fromEmbeddedConsole
+ except AttributeError:
+ pass
+ return fromGUI
+
+def InitParaViewForGUI():
+ """
+ If the import is made from SALOME embedded console, the ParaView application needs to
+ be instanciated to avoid a future crash.
+ """
+ if __getFromGUI():
+ __my_log("Initializing ParaView main elements, please be patient ...")
+ import SalomePyQt
+ sgPyQt = SalomePyQt.SalomePyQt()
+ sgPyQt.createView("ParaView")
+ # Now let the GUI main loop process the initialization event posted above
+ sgPyQt.processEvents()
+ __my_log("ParaView initialized.")
+
+## The below has to called BEFORE importing paraview!!! This is crazy, but it has to be.
+InitParaViewForGUI()
+del InitParaViewForGUI
+
import paraview
import paravis
globals()[name] = getattr(simple, name)
del simple
-def __my_log(msg):
- print "[PARAVIS] %s" % msg
-
def SalomeConnectToPVServer():
"""
Automatically connect to the right PVServer when not ("inside SALOME GUI" and "already connected").
server_url = ""
try:
isGUIConnected = paravis.myParavisEngine.GetGUIConnected()
- if isGUIConnected and paraview.fromGUI:
+ if isGUIConnected and __getFromGUI():
__my_log("Importing pvsimple from GUI and already connected. Won't reconnect.")
return
server_url = paravis.myParavisEngine.FindOrStartPVServer(0)
host, port = b[-1], int(a[-1])
Connect(host, port)
__my_log("Connected to %s!" % server_url)
+ if __getFromGUI():
+ paravis.myParavisEngine.SetGUIConnected(True)
except Exception as e:
__my_log("*******************************************")
__my_log("** Could not connect to a running PVServer!")
__my_log("*******************************************")
raise e
pass
-
+
SalomeConnectToPVServer()