1 // PARAVIS : ParaView wrapper SALOME module
3 // Copyright (C) 2010-2014 CEA/DEN, EDF R&D
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 // File : PVGUI_Module.h
22 // Author : Sergey ANIKIN
26 #ifndef PVGUI_Module_H
27 #define PVGUI_Module_H
29 #include <SalomeApp_Module.h>
30 #include "SALOMEconfig.h"
31 #include CORBA_SERVER_HEADER(SALOMEDS)
32 #include CORBA_SERVER_HEADER(PARAVIS_Gen)
38 #include <pqVariableType.h>
46 class pqMainWindowCore;
47 class vtkEventQtSlotConnect;
48 class pqPythonScriptEditor;
49 class pqPVApplicationCore;
50 class pqDataRepresentation;
51 class pqRepresentation;
52 class PVViewer_GUIElements;
54 class PVGUI_Module : public SalomeApp_Module
103 CreateCustomFilterId,
104 ManageCustomFiltersId,
108 ManagePluginsExtensionsId,
111 RecordTestScreenshotId,
126 // Menu "Window" - "New Window"
129 // "Save state" ParaVis module root object popup
132 // "Add state" and "Reload state" popups
134 CleanAndAddStatePopupId,
136 // "Rename" and "Delete" popups (Object Browser)
145 virtual void initialize( CAM_Application* );
146 virtual void windows( QMap<int, int>& ) const;
148 virtual QString engineIOR() const;
150 void openFile(const char* theName);
151 void executeScript(const char *script);
152 void saveParaviewState(const char* theFileName);
153 void loadParaviewState(const char* theFileName);
154 void clearParaviewState();
156 QString getTraceString();
159 void saveTrace(const char* theName);
161 pqServer* getActiveServer();
163 virtual void createPreferences();
165 virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
167 // Get the unwrapped version of the engine - compare with PVViewer_EngineWrapper.
168 inline static PARAVIS_ORB::PARAVIS_Gen_var GetCPPEngine();
169 inline static pqPVApplicationCore * GetPVApplication();
172 //void onImportFromVisu(QString theEntry);
175 void deleteTemporaryFiles();
177 //! Create actions for ParaView GUI operations
178 void pvCreateActions();
180 //! Create menus for ParaView GUI operations duplicating menus in pqMainWindow ParaView class
181 void pvCreateMenus();
183 //! Create toolbars for ParaView GUI operations duplicating toolbars in pqMainWindow ParaView class
184 void pvCreateToolBars();
186 //! Create dock widgets for ParaView widgets
187 void setupDockWidgets();
189 //! Save states of dockable ParaView widgets
190 void saveDockWidgetsState();
192 //! Restore states of dockable ParaView widgets
193 void restoreDockWidgetsState();
195 //! Shows or hides ParaView view window
196 void showView( bool );
198 //! Returns QMenu object for a given menu id
199 QMenu* getMenu( const int );
201 //! Discover help project files from the resources.
202 QString getHelpFileName();
204 //! Create actions for ParaViS
205 void createActions();
207 //! Create menus for ParaViS
210 //! Load selected state
211 void loadSelectedState(bool toClear);
213 //! Get list of embedded macros files
214 QStringList getEmbeddedMacrosList();
216 //! update macros state
219 //! store visibility of the common dockable windows (OB, PyConsole, ... etc.)
220 void storeCommonWindowsState();
222 //! restore visibility of the common dockable windows (OB, PyConsole, ... etc.)
223 void restoreCommonWindowsState();
227 void showHelpForProxy( const QString&, const QString& );
231 void endWaitCursor();
233 // void buildToolbarsMenu();
235 //void showParaViewHelp();
236 //void showHelp(const QString& url);
238 void onDataRepresentationUpdated();
240 void onStartProgress();
241 void onEndProgress();
243 void onRestartTrace();
245 void onNewParaViewWindow();
247 void onSaveMultiState();
249 void onCleanAddState();
255 virtual bool activateModule( SUIT_Study* );
256 virtual bool deactivateModule( SUIT_Study* );
257 virtual void onApplicationClosed( SUIT_Application* );
258 virtual void studyClosed( SUIT_Study* );
261 virtual void onModelOpened();
262 virtual void onPushTraceTimer();
263 virtual void onInitTimer();
266 int mySelectionControlsTb;
269 int myToolbarsMenuId;
273 typedef QMap<QWidget*, bool> WgMap;
276 WgMap myToolbarBreaks;
277 QList<QMenu*> myMenus;
279 typedef QMap<int, bool> DockWindowMap;
280 DockWindowMap myCommonMap;
282 QStringList myTemporaryFiles;
284 QtMsgHandler myOldMsgHandler;
286 vtkEventQtSlotConnect *VTKConnect;
288 pqPythonScriptEditor* myTraceWindow;
292 //! Single shot timer used to connect to the PVServer, and start the trace.
293 QTimer * myInitTimer;
295 //! Timer used to regularly push the Python trace to the engine.
296 QTimer * myPushTraceTimer;
298 PVViewer_GUIElements * myGuiElements;
300 static PARAVIS_ORB::PARAVIS_Gen_var MyEngine;
303 #endif // PVGUI_Module_H