// PARAVIS : ParaView wrapper SALOME module
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2010-2013 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
#include <SalomeApp_Module.h>
#include <ostream>
+#include <vtkType.h>
+
+#include <pqVariableType.h>
class QMenu;
class QDockWidget;
-//class LightApp_Selection;
-//class LightApp_SelectionMgr;
-class PVGUI_ProcessModuleHelper;
+class QToolBar;
class vtkPVMain;
class pqOptions;
class pqServer;
-class pqViewManager;
+class pqTabbedMultiViewWidget;
class pqMainWindowCore;
+class vtkEventQtSlotConnect;
+class pqPythonScriptEditor;
+class pqPVApplicationCore;
+class pqDataRepresentation;
+class pqRepresentation;
+
+class PyConsole_Interp;
class PVGUI_Module : public SalomeApp_Module
{
//! Menu actions
enum { // Menu "File"
- OpenFileId,
-
- LoadStateId,
- SaveStateId,
-
- SaveDataId,
- SaveScreenshotId,
- ExportId,
-
- SaveAnimationId,
- SaveGeometryId,
-
- ConnectId,
- DisconnectId,
-
- // Menu "Edit"
- UndoId,
- RedoId,
-
- CameraUndoId,
- CameraRedoId,
-
- ChangeInputId,
- DeleteId,
- DeleteAllId,
-
- InteractId,
- SelectCellsOnId,
- SelectPointsOnId,
- SelectCellsThroughId,
- SelectPointsThroughId,
- SelectBlockId,
-
- SettingsId,
- ViewSettingsId,
-
- // Menu "View"
- ResetCameraId,
- PositiveXId,
- NegativeXId,
- PositiveYId,
- NegativeYId,
- PositiveZId,
- NegativeZId,
-
- ShowCenterId,
- ResetCenterId,
- PickCenterId,
- ShowColorLegendId,
- EditColorMapId,
- ResetRangeId,
-
- AnimationInspectorId,
- AnimationViewId,
- ComparativeViewInspectorId,
- SelectionInspectorId,
- LookmarkBrowserId,
- LookmarkInspectorId,
- ObjectInspectorId,
- PipelineBrowserId,
- StatisticsViewId,
-
- // Menu "Sources"
- // TODO...
-
- // Menu "Filters"
- // TODO...
-
- // Menu "Animation"
- FirstFrameId,
- PreviousFrameId,
- PlayId,
- NextFrameId,
- LastFrameId,
- LoopId,
-
- // Menu "Tools"
- CreateCustomFilterId,
- ManageCustomFiltersId,
- CreateLookmarkId,
- ManageLinksId,
- AddCameraLinkId,
- ManagePluginsExtensionsId,
- DumpWidgetNamesId,
- RecordTestId,
- RecordTestScreenshotId,
- PlayTestId,
- MaxWindowSizeId,
- TimerLogId,
- OutputWindowId,
- PythonShellId,
-
- // Menu "Help"
- AboutParaViewId,
- ParaViewHelpId,
- EnableTooltipsId
+ OpenFileId,
+
+ LoadStateId,
+ SaveStateId,
+
+ SaveDataId,
+ SaveScreenshotId,
+ ExportId,
+
+ SaveAnimationId,
+ SaveGeometryId,
+
+ ConnectId,
+ DisconnectId,
+
+ // Menu "Edit"
+ UndoId,
+ RedoId,
+
+ CameraUndoId,
+ CameraRedoId,
+
+ FindDataId,
+ ChangeInputId,
+ IgnoreTimeId,
+ DeleteId,
+ DeleteAllId,
+
+ SettingsId,
+ ViewSettingsId,
+
+ // Menu "View"
+ FullScreenId,
+
+ // Menu "Animation"
+ FirstFrameId,
+ PreviousFrameId,
+ PlayId,
+ NextFrameId,
+ LastFrameId,
+ LoopId,
+
+ // Menu "Tools"
+ CreateCustomFilterId,
+ ManageCustomFiltersId,
+ CreateLookmarkId,
+ ManageLinksId,
+ AddCameraLinkId,
+ ManagePluginsExtensionsId,
+ DumpWidgetNamesId,
+ RecordTestId,
+ RecordTestScreenshotId,
+ PlayTestId,
+ MaxWindowSizeId,
+ CustomWindowSizeId,
+ TimerLogId,
+ OutputWindowId,
+ PythonShellId,
+ ShowTraceId,
+ RestartTraceId,
+
+ // Menu "Help"
+ AboutParaViewId,
+ ParaViewHelpId,
+ EnableTooltipsId,
+
+ // Menu "Window" - "New Window"
+ ParaViewNewWindowId,
+
+ // "Save state" ParaVis module root object popup
+ SaveStatePopupId,
+
+ // "Add state" and "Reload state" popups
+ AddStatePopupId,
+ CleanAndAddStatePopupId,
+
+ // "Rename" and "Delete" popups (Object Browser)
+ ParaVisRenameId,
+ ParaVisDeleteId
};
public:
virtual void initialize( CAM_Application* );
virtual void windows( QMap<int, int>& ) const;
- pqViewManager* getMultiViewManager() const;
-
- virtual bool eventFilter( QObject*, QEvent* );
+ pqTabbedMultiViewWidget* getMultiViewManager() const;
virtual QString engineIOR() const;
- //! Compares the contents of the window with the given reference image, returns true if they "match" within some tolerance
- bool compareView( const QString& ReferenceImage, double Threshold,
- std::ostream& Output, const QString& TempDirectory );
-
void openFile(const char* theName);
+ void executeScript(const char *script);
void saveParaviewState(const char* theFileName);
void loadParaviewState(const char* theFileName);
+ void clearParaviewState();
- QString printTrace();
+ QString getTraceString();
void saveTrace(const char* theName);
pqServer* getActiveServer();
virtual void createPreferences();
+ virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
+
public slots:
void onImportFromVisu(QString theEntry);
-protected:
- //virtual CAM_DataModel* createDataModel();
-
private:
//! Initialize ParaView if not yet done (once per session)
static bool pvInit();
- //! Shutdown ParaView, should be called on application exit
- static void pvShutdown();
//! Create actions for ParaView GUI operations
void pvCreateActions();
//! Create dock widgets for ParaView widgets
void setupDockWidgets();
- //! Create dock widgets context menus
- void setupDockWidgetsContextMenu();
-
//! Save states of dockable ParaView widgets
void saveDockWidgetsState();
//! Returns QMenu object for a given menu id
QMenu* getMenu( const int );
+
+ //! Discover help project files from the resources.
+ QString getHelpFileName();
void deleteTemporaryFiles();
-
-private slots:
- void onUndoLabel( const QString& );
- void onRedoLabel( const QString& );
- void onCameraUndoLabel( const QString& );
- void onCameraRedoLabel( const QString& );
+ //QList<QToolBar*> getParaViewToolbars();
- void onDeleteAll();
+ //! Create actions for ParaViS
+ void createActions();
- void onSelectionModeChanged( int mode );
+ //! Create menus for ParaViS
+ void createMenus();
- void onShowCenterAxisChanged( bool );
+ //! Load selected state
+ void loadSelectedState(bool toClear);
- void setTimeRanges( double, double );
+ //! update macros state
+ void updateMacros();
- void onPlaying( bool );
-
- void onAddCameraLink();
-
- void onHelpAbout();
+ //! store visibility of the common dockable windows (OB, PyConsole, ... etc.)
+ void storeCommonWindowsState();
+
+ //! restore visibility of the common dockable windows (OB, PyConsole, ... etc.)
+ void restoreCommonWindowsState();
- void onParaViewHelp();
+ //! run Python command (either in SALOME's Python interpreter, or in ParaView's Python's interpreter)
+ void execPythonCommand(const QString& cmd, bool inSalomeConsole=false);
- void showHelpForProxy( const QString& proxy );
- void makeAssistant();
- void assistantError( const QString& err );
+private slots:
+
+ void showHelpForProxy( const QString&, const QString& );
void onPreAccept();
void onPostAccept();
void endWaitCursor();
- void connectToPlay();
+ // void buildToolbarsMenu();
+
+ //void showParaViewHelp();
+ //void showHelp(const QString& url);
+
+ void onFinishedAddingServer(pqServer*);
+ void onDataRepresentationCreated(pqDataRepresentation*);
+ void onDataRepresentationUpdated();
+ void onVariableChanged(pqVariableType, const QString);
+ void onRepresentationChanged(pqRepresentation*);
+
+ void onStartProgress();
+ void onEndProgress();
+ void onShowTrace();
+ void onRestartTrace();
- void onOpenFile();
+ void onNewParaViewWindow();
- void activateTrace();
+ void onSaveMultiState();
+ void onAddState();
+ void onCleanAddState();
+
+ void onRename();
+ void onDelete();
public slots:
virtual bool activateModule( SUIT_Study* );
virtual bool deactivateModule( SUIT_Study* );
virtual void onApplicationClosed( SUIT_Application* );
+ virtual void studyClosed( SUIT_Study* );
+
+protected slots:
+ virtual void onModelOpened();
+
+protected:
+ void timerEvent(QTimerEvent *event);
private:
class pqImplementation;
int mySelectionControlsTb;
int mySourcesMenuId;
int myFiltersMenuId;
+ int myToolbarsMenuId;
+ int myMacrosMenuId;
+ int myRecentMenuId;
+
+ typedef QMap<QWidget*, bool> WgMap;
+ WgMap myDockWidgets;
+ WgMap myToolbars;
+ WgMap myToolbarBreaks;
+ QList<QMenu*> myMenus;
- QList<QDockWidget*> myDockWidgets;
+ typedef QMap<int, bool> DockWindowMap;
+ DockWindowMap myCommonMap;
QStringList myTemporaryFiles;
+
+ QtMsgHandler myOldMsgHandler;
+
+ vtkEventQtSlotConnect *VTKConnect;
+
+ pqPythonScriptEditor* myTraceWindow;
+
+ int myStateCounter;
+
+ static pqPVApplicationCore* MyCoreApp;
};
#endif // PVGUI_Module_H