Salome HOME
export preselected_id to client
[modules/paravis.git] / PVGUI / PVGUI_Module.h
1 // PARAVIS : ParaView wrapper SALOME module
2 //
3 // Copyright (C) 2010-2014  CEA/DEN, EDF R&D
4 //
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.
9 //
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.
14 //
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
18 //
19 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 //
21 // File   : PVGUI_Module.h
22 // Author : Sergey ANIKIN
23 //
24
25
26 #ifndef PVGUI_Module_H
27 #define PVGUI_Module_H
28
29 #include <SalomeApp_Module.h>
30
31 #include <ostream>
32 #include <vtkType.h>
33
34 #include <pqVariableType.h>
35
36 class QMenu;
37 class QDockWidget;
38 class QToolBar;
39 class vtkPVMain;
40 class pqOptions;
41 class pqServer;
42 class pqTabbedMultiViewWidget;
43 class pqMainWindowCore;
44 class vtkEventQtSlotConnect;
45 class pqPythonScriptEditor;
46 class pqPVApplicationCore;
47 class pqDataRepresentation;
48 class pqRepresentation;
49
50
51 class PVGUI_Module : public SalomeApp_Module
52 {
53   Q_OBJECT
54    
55   //! Menu actions
56   enum { // Menu "File"
57          OpenFileId,
58
59          LoadStateId,
60          SaveStateId,
61
62          SaveDataId,
63          SaveScreenshotId,
64          ExportId,
65
66          SaveAnimationId,
67          SaveGeometryId,
68
69          ConnectId,
70          DisconnectId,
71
72          // Menu "Edit"
73          UndoId,
74          RedoId,
75
76          CameraUndoId,
77          CameraRedoId,
78
79    FindDataId,   
80          ChangeInputId,
81    IgnoreTimeId, 
82          DeleteId,
83          DeleteAllId,
84
85          SettingsId,
86          ViewSettingsId,
87
88          // Menu "View"
89    FullScreenId, 
90
91          // Menu "Animation"
92          FirstFrameId,
93          PreviousFrameId,
94          PlayId,
95          NextFrameId,
96          LastFrameId,
97          LoopId,
98
99          // Menu "Tools" 
100          CreateCustomFilterId,
101          ManageCustomFiltersId,
102          CreateLookmarkId,
103          ManageLinksId,
104          AddCameraLinkId,
105          ManagePluginsExtensionsId,
106          DumpWidgetNamesId,
107          RecordTestId,
108          RecordTestScreenshotId,
109          PlayTestId,
110          MaxWindowSizeId,
111          CustomWindowSizeId,
112          TimerLogId,
113          OutputWindowId,
114          PythonShellId,
115          ShowTraceId,
116          RestartTraceId,
117
118          // Menu "Help" 
119          AboutParaViewId,
120          ParaViewHelpId,
121          EnableTooltipsId,
122
123          // Menu "Window" - "New Window"
124          ParaViewNewWindowId,
125
126          // "Save state" ParaVis module root object popup
127          SaveStatePopupId,
128
129          // "Add state" and "Reload state" popups
130          AddStatePopupId,
131          CleanAndAddStatePopupId,
132
133          // "Rename" and "Delete" popups (Object Browser)
134          ParaVisRenameId,
135          ParaVisDeleteId
136   };
137
138 public:
139   PVGUI_Module();
140   ~PVGUI_Module();
141
142   virtual void           initialize( CAM_Application* );
143   virtual void           windows( QMap<int, int>& ) const;
144
145   pqTabbedMultiViewWidget*         getMultiViewManager() const;
146
147   virtual QString engineIOR() const;
148
149   void openFile(const char* theName);
150   void executeScript(const char *script);
151   void saveParaviewState(const char* theFileName);
152   void loadParaviewState(const char* theFileName);
153   void clearParaviewState();
154
155   QString getTraceString();
156   void saveTrace(const char* theName);
157
158   pqServer* getActiveServer();
159
160   virtual void createPreferences();
161
162   virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
163
164 public slots:
165   void onImportFromVisu(QString theEntry);
166
167 private:
168   //! Initialize ParaView if not yet done (once per session)
169   static bool            pvInit();  
170  
171   //! Create actions for ParaView GUI operations
172   void                   pvCreateActions();
173
174   //! Create menus for ParaView GUI operations duplicating menus in pqMainWindow ParaView class
175   void                   pvCreateMenus();
176
177   //! Create toolbars for ParaView GUI operations duplicating toolbars in pqMainWindow ParaView class
178   void                   pvCreateToolBars();
179
180   //! Create dock widgets for ParaView widgets
181   void                   setupDockWidgets();
182
183   //! Save states of dockable ParaView widgets
184   void                   saveDockWidgetsState();
185
186   //! Restore states of dockable ParaView widgets
187   void                   restoreDockWidgetsState();
188
189   //! Shows or hides ParaView view window
190   void                   showView( bool );    
191
192   //! Returns QMenu object for a given menu id
193   QMenu*                 getMenu( const int );
194   
195   //! Discover help project files from the resources.
196   QString getHelpFileName();
197
198   void                   deleteTemporaryFiles();
199   
200   //QList<QToolBar*>       getParaViewToolbars();
201
202   //! Create actions for ParaViS
203   void createActions();
204
205   //! Create menus for ParaViS
206   void createMenus();
207
208   //! Load selected state
209   void loadSelectedState(bool toClear);
210
211   //! update macros state
212   void updateMacros();
213
214   //! store visibility of the common dockable windows (OB, PyConsole, ... etc.)
215   void storeCommonWindowsState();
216
217   //! restore visibility of the common dockable windows (OB, PyConsole, ... etc.)
218   void restoreCommonWindowsState();
219
220   //! run Python command
221   void execPythonCommand(const QString& cmd, bool inSalomeConsole = false);
222
223 private slots:
224
225   void showHelpForProxy( const QString&, const QString& );
226   
227   void onPreAccept();
228   void onPostAccept();
229   void endWaitCursor();
230
231   //  void buildToolbarsMenu();
232
233   //void showParaViewHelp();
234   //void showHelp(const QString& url);
235
236   void onFinishedAddingServer(pqServer*);
237   void onDataRepresentationCreated(pqDataRepresentation*);
238   void onDataRepresentationUpdated();
239   void onVariableChanged(pqVariableType, const QString);
240   void onRepresentationChanged(pqRepresentation*);
241
242   void onStartProgress();
243   void onEndProgress();
244   void onShowTrace();
245   void onRestartTrace();
246
247   void onNewParaViewWindow();
248
249   void onSaveMultiState();
250   void onAddState();
251   void onCleanAddState();
252
253   void onRename();
254   void onDelete();
255
256 public slots:
257   virtual bool           activateModule( SUIT_Study* );
258   virtual bool           deactivateModule( SUIT_Study* );
259   virtual void           onApplicationClosed( SUIT_Application* );
260   virtual void           studyClosed( SUIT_Study* );
261
262 protected slots:
263   virtual void           onModelOpened();
264
265 protected:
266   void timerEvent(QTimerEvent *event);
267
268 private:
269   class pqImplementation;
270   pqImplementation*      Implementation;
271
272   int                    mySelectionControlsTb;
273   int                    mySourcesMenuId;
274   int                    myFiltersMenuId;
275   int                    myToolbarsMenuId;
276   int                    myMacrosMenuId;
277   int                    myRecentMenuId;
278   
279   typedef QMap<QWidget*, bool> WgMap;
280   WgMap                  myDockWidgets;
281   WgMap                  myToolbars;
282   WgMap                  myToolbarBreaks;
283   QList<QMenu*>          myMenus;
284
285   typedef QMap<int, bool> DockWindowMap;         
286   DockWindowMap           myCommonMap; 
287
288   QStringList            myTemporaryFiles;
289
290   QtMsgHandler           myOldMsgHandler;
291
292   vtkEventQtSlotConnect *VTKConnect;
293
294   pqPythonScriptEditor* myTraceWindow;
295
296   int myStateCounter;
297
298   static pqPVApplicationCore* MyCoreApp;
299 };
300
301 #endif // PVGUI_Module_H