From: abn Date: Mon, 29 Sep 2014 14:56:33 +0000 (+0200) Subject: Moved PVViewer code from PARAVIS into GUI X-Git-Tag: V7_5_0b1~27^2~4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=0d1d240596b469e77deabd5fc0106879af2e748d;p=modules%2Fparavis.git Moved PVViewer code from PARAVIS into GUI --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ebed900..c41977b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -251,7 +251,7 @@ INCLUDE(CMakePackageConfigHelpers) # 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} diff --git a/adm_local/cmake_files/CMakeLists.txt b/adm_local/cmake_files/CMakeLists.txt index f74fc683..1bc93159 100644 --- a/adm_local/cmake_files/CMakeLists.txt +++ b/adm_local/cmake_files/CMakeLists.txt @@ -18,7 +18,6 @@ # SET(_adm_data - FindSalomeParaView.cmake FindSalomePARAVIS.cmake ) diff --git a/adm_local/cmake_files/FindSalomeParaView.cmake b/adm_local/cmake_files/FindSalomeParaView.cmake deleted file mode 100644 index e7497ef7..00000000 --- a/adm_local/cmake_files/FindSalomeParaView.cmake +++ /dev/null @@ -1,30 +0,0 @@ -# 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}) diff --git a/src/PVGUI/CMakeLists.txt b/src/PVGUI/CMakeLists.txt index 091812c5..e8a95ccb 100644 --- a/src/PVGUI/CMakeLists.txt +++ b/src/PVGUI/CMakeLists.txt @@ -35,7 +35,7 @@ INCLUDE_DIRECTORIES(${OMNIORB_INCLUDE_DIR} ) # Process viewer: -ADD_SUBDIRECTORY(view) +#ADD_SUBDIRECTORY(view) # additional preprocessor / compiler flags ADD_DEFINITIONS(${CAS_DEFINITIONS}) @@ -56,7 +56,8 @@ SET(_link_LIBRARIES ${GUI_SalomeObject} ${GUI_vtkTools} ${MED_SalomeIDLMED} ${_PARAVIEW_APP_COMPO_LIB} - PVViewer + ${GUI_PVViewer} + SalomeIDLPARAVIS ) # --- headers --- diff --git a/src/PVGUI/PVGUI_Module.cxx b/src/PVGUI/PVGUI_Module.cxx index afac53a0..36fdf5e5 100644 --- a/src/PVGUI/PVGUI_Module.cxx +++ b/src/PVGUI/PVGUI_Module.cxx @@ -40,6 +40,7 @@ #include "PVGUI_Tools.h" #include "PVGUI_ParaViewSettingsPane.h" #include "PVViewer_GUIElements.h" +#include "PVViewer_EngineWrapper.h" // SALOME Includes #include @@ -133,6 +134,7 @@ //---------------------------------------------------------------------------- PVGUI_Module* ParavisModule = 0; +PARAVIS_ORB::PARAVIS_Gen_var PVGUI_Module::MyEngine; /*! \mainpage @@ -234,7 +236,7 @@ ClientFindOrCreateParavisComponent(_PTR(Study) theStudyDocument) // 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(); } @@ -302,11 +304,18 @@ PVGUI_Module::~PVGUI_Module() 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(); @@ -767,7 +776,7 @@ void PVGUI_Module::onModelOpened() } _PTR(SComponent) paravisComp = - studyDS->FindComponent(GetEngine()->ComponentDataType()); + studyDS->FindComponent(GetCPPEngine()->ComponentDataType()); if(!paravisComp) { return; } @@ -791,7 +800,7 @@ void PVGUI_Module::onModelOpened() */ QString PVGUI_Module::engineIOR() const { - CORBA::String_var anIOR = GetEngine()->GetIOR(); + CORBA::String_var anIOR = GetCPPEngine()->GetIOR(); return QString(anIOR.in()); } @@ -1014,7 +1023,7 @@ void PVGUI_Module::contextMenuPopup(const QString& theClient, QMenu* theMenu, QS return; } - QString paravisDataType(GetEngine()->ComponentDataType()); + QString paravisDataType(GetCPPEngine()->ComponentDataType()); if(activeStudy && activeStudy->isComponent(entry) && activeStudy->componentDataType(entry) == paravisDataType) { // ParaViS module object @@ -1096,7 +1105,7 @@ void PVGUI_Module::onSaveMultiState() } _PTR(SComponent) paravisComp = - studyDS->FindComponent(GetEngine()->ComponentDataType()); + studyDS->FindComponent(GetCPPEngine()->ComponentDataType()); if(!paravisComp) { return; } @@ -1263,7 +1272,7 @@ void PVGUI_Module::onDelete() void PVGUI_Module::onPushTraceTimer() { // MESSAGE("onPushTraceTimer(): Pushing trace to engine..."); - GetEngine()->PutPythonTraceStringToEngine(getTraceString().toStdString().c_str()); + GetCPPEngine()->PutPythonTraceStringToEngine(getTraceString().toStdString().c_str()); } /*! diff --git a/src/PVGUI/PVGUI_Module.h b/src/PVGUI/PVGUI_Module.h index edda5524..c6b608a7 100644 --- a/src/PVGUI/PVGUI_Module.h +++ b/src/PVGUI/PVGUI_Module.h @@ -29,9 +29,7 @@ #include #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 #include @@ -166,7 +164,8 @@ public: 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: @@ -297,6 +296,8 @@ private: QTimer * myPushTraceTimer; PVViewer_GUIElements * myGuiElements; + + static PARAVIS_ORB::PARAVIS_Gen_var MyEngine; }; #endif // PVGUI_Module_H diff --git a/src/PVGUI/view/CMakeLists.txt b/src/PVGUI/view/CMakeLists.txt deleted file mode 100644 index ca037169..00000000 --- a/src/PVGUI/view/CMakeLists.txt +++ /dev/null @@ -1,89 +0,0 @@ -# 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}) diff --git a/src/PVGUI/view/PVViewer_Behaviors.cxx b/src/PVGUI/view/PVViewer_Behaviors.cxx deleted file mode 100644 index 75fc467c..00000000 --- a/src/PVGUI/view/PVViewer_Behaviors.cxx +++ /dev/null @@ -1,129 +0,0 @@ -// 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 -#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 - -int PVViewer_Behaviors::BehaviorLoadingLevel = 0; - -PVViewer_Behaviors::PVViewer_Behaviors(SUIT_Desktop * parent) - : QObject(static_cast(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()) - { - applyBehavior->registerPanel(ppanel); - } - BehaviorLoadingLevel = 2; - } -} diff --git a/src/PVGUI/view/PVViewer_Behaviors.h b/src/PVGUI/view/PVViewer_Behaviors.h deleted file mode 100644 index fa2d32af..00000000 --- a/src/PVGUI/view/PVViewer_Behaviors.h +++ /dev/null @@ -1,55 +0,0 @@ -// 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 - -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_ */ diff --git a/src/PVGUI/view/PVViewer_GUIElements.cxx b/src/PVGUI/view/PVViewer_GUIElements.cxx deleted file mode 100644 index 57e1c158..00000000 --- a/src/PVGUI/view/PVViewer_GUIElements.cxx +++ /dev/null @@ -1,102 +0,0 @@ -// 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 -#include -#include - -#include -#include -#include - -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 act_list = sourcesMenu->actions(); - foreach(QAction * a, act_list) - { - menu->addAction(a); - } - } -} - -void PVViewer_GUIElements::updateFiltersMenu(QMenu *menu) -{ - if (menu) - { - menu->clear(); - QList act_list = filtersMenu->actions(); - foreach(QAction * a, act_list) - { - menu->addAction(a); - } - } -} - -void PVViewer_GUIElements::updateMacrosMenu(QMenu *menu) -{ - if (menu) - { - menu->clear(); - QList act_list = macrosMenu->actions(); - foreach(QAction * a, act_list) - { - menu->addAction(a); - } - } -} - - -void PVViewer_GUIElements::onEmulateApply() -{ - if (propertiesPanel) - propertiesPanel->apply(); -} diff --git a/src/PVGUI/view/PVViewer_GUIElements.h b/src/PVGUI/view/PVViewer_GUIElements.h deleted file mode 100644 index ca0634e0..00000000 --- a/src/PVGUI/view/PVViewer_GUIElements.h +++ /dev/null @@ -1,71 +0,0 @@ -// 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 - -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_ */ diff --git a/src/PVGUI/view/PVViewer_LogWindowAdapter.cxx b/src/PVGUI/view/PVViewer_LogWindowAdapter.cxx deleted file mode 100644 index 736b77b6..00000000 --- a/src/PVGUI/view/PVViewer_LogWindowAdapter.cxx +++ /dev/null @@ -1,119 +0,0 @@ -// 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 - -#include -#include -#include -#include - -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( 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 )); -} diff --git a/src/PVGUI/view/PVViewer_LogWindowAdapter.h b/src/PVGUI/view/PVViewer_LogWindowAdapter.h deleted file mode 100644 index cd8332a8..00000000 --- a/src/PVGUI/view/PVViewer_LogWindowAdapter.h +++ /dev/null @@ -1,65 +0,0 @@ -// 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 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 diff --git a/src/PVGUI/view/PVViewer_ViewManager.cxx b/src/PVGUI/view/PVViewer_ViewManager.cxx deleted file mode 100644 index 6e9b640b..00000000 --- a/src/PVGUI/view/PVViewer_ViewManager.cxx +++ /dev/null @@ -1,270 +0,0 @@ -// 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 -#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; -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(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(); -} diff --git a/src/PVGUI/view/PVViewer_ViewManager.h b/src/PVGUI/view/PVViewer_ViewManager.h deleted file mode 100644 index 5e359b5a..00000000 --- a/src/PVGUI/view/PVViewer_ViewManager.h +++ /dev/null @@ -1,69 +0,0 @@ -// 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 -#include -#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 diff --git a/src/PVGUI/view/PVViewer_ViewModel.cxx b/src/PVGUI/view/PVViewer_ViewModel.cxx deleted file mode 100644 index ef1771eb..00000000 --- a/src/PVGUI/view/PVViewer_ViewModel.cxx +++ /dev/null @@ -1,45 +0,0 @@ -// 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 -#include - -#include - -//---------------------------------------- -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; -} - diff --git a/src/PVGUI/view/PVViewer_ViewModel.h b/src/PVGUI/view/PVViewer_ViewModel.h deleted file mode 100644 index e70f663c..00000000 --- a/src/PVGUI/view/PVViewer_ViewModel.h +++ /dev/null @@ -1,42 +0,0 @@ -// 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 - -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) - diff --git a/src/PVGUI/view/PVViewer_ViewWindow.cxx b/src/PVGUI/view/PVViewer_ViewWindow.cxx deleted file mode 100644 index c7fff08a..00000000 --- a/src/PVGUI/view/PVViewer_ViewWindow.cxx +++ /dev/null @@ -1,110 +0,0 @@ -// 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 -#include -#include -#include - -#include -#include - -/*! - \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(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(); -} diff --git a/src/PVGUI/view/PVViewer_ViewWindow.h b/src/PVGUI/view/PVViewer_ViewWindow.h deleted file mode 100644 index e3ff387c..00000000 --- a/src/PVGUI/view/PVViewer_ViewWindow.h +++ /dev/null @@ -1,57 +0,0 @@ -// 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 -#include - -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 diff --git a/src/PV_SWIG/no_wrap/pvsimple.py b/src/PV_SWIG/no_wrap/pvsimple.py index e528bdec..b6c62bc6 100644 --- a/src/PV_SWIG/no_wrap/pvsimple.py +++ b/src/PV_SWIG/no_wrap/pvsimple.py @@ -23,6 +23,38 @@ On top of that it also establishes a connection to a valid PVServer whose addres 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 @@ -33,9 +65,6 @@ for name in dir(simple): 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"). @@ -44,7 +73,7 @@ def SalomeConnectToPVServer(): 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) @@ -54,11 +83,13 @@ def SalomeConnectToPVServer(): 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()