Salome HOME
- Bathymethries are colored now by all colors (including red etc.)
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.h
index 0e637e5fe9e27bc0dd485a9a96733b039f43902f..808958f64ee96844d5074ec9f93c2bc05be68000 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef HYDROGUI_MODULE_H
 #define HYDROGUI_MODULE_H
 
-#include <HYDROData_Object.h>
+#include <HYDROData_Entity.h>
 
 #include <LightApp_Module.h>
 
 class QGraphicsSceneMouseEvent;
 
 class GraphicsView_Viewer;
+class OCCViewer_Viewer;
+class SVTK_Viewer;
 
 class SUIT_ViewWindow;
+class SUIT_ViewManager;
 
 class HYDROGUI_DataModel;
 class HYDROGUI_Displayer;
+class HYDROGUI_OCCDisplayer;
+class HYDROGUI_VTKPrsDisplayer;
+class HYDROGUI_AbstractDisplayer;
+class HYDROGUI_Shape;
+class HYDROGUI_VTKPrs;
 
 /**\class HYDROGUI_Module
  *\brief The class representing the HYDROGUI module
@@ -48,7 +56,17 @@ class HYDROGUI_Module : public LightApp_Module
   enum CustomEvent { NewViewEvent = QEvent::User + 100 };
 
 public:
-  enum ViewManagerRole { VMR_Unknown = 0, VMR_General, VMR_TransformImage, VMR_ObserveImage };
+  
+  enum ViewManagerRole
+  {
+    VMR_Unknown = 0,
+    VMR_General,
+    VMR_TransformImage,
+    VMR_ReferenceImage,
+    VMR_ObserveImage,
+    //VMR_PreviewZone, // totally unused, to delete
+    VMR_PreviewCaseZones // actually unused, to review
+  };
   typedef QPair< SUIT_ViewManager*, ViewManagerRole > ViewManagerInfo;
 
   typedef QMap        < int, ViewManagerInfo > ViewManagerMap;
@@ -64,6 +82,12 @@ public:
   typedef QMap< QString, ObjectState > Name2ObjectStateMap;
   typedef QMap< int, Name2ObjectStateMap > ViewId2Name2ObjectStateMap;
 
+  typedef QList<HYDROGUI_Shape*> ListOfShapes;
+  typedef QMap<int,ListOfShapes> ViewId2ListOfShapes;
+
+  typedef QList<HYDROGUI_VTKPrs*> ListOfVTKPrs;
+  typedef QMap<int,ListOfVTKPrs> ViewId2ListOfVTKPrs;
+
 public:
   HYDROGUI_Module();
   virtual ~HYDROGUI_Module();
@@ -81,10 +105,15 @@ public:
 
   virtual void                    selectionChanged();
 
+  SUIT_ViewManager*               getViewManager( const int theId ) const;
   HYDROGUI_DataModel*             getDataModel() const;
   HYDROGUI_Displayer*             getDisplayer() const;
+  HYDROGUI_OCCDisplayer*          getOCCDisplayer() const;
+  HYDROGUI_VTKPrsDisplayer*       getVTKDisplayer() const;
 
   GraphicsView_Viewer*            getViewer( const int theId ) const;
+  OCCViewer_Viewer*               getOCCViewer( const int theId ) const;
+  SVTK_Viewer*                    getVTKViewer( const int theId ) const;
 
   int                             getViewManagerId( SUIT_ViewManager* theViewManager );
   ViewManagerRole                 getViewManagerRole( SUIT_ViewManager* theViewManager );
@@ -92,11 +121,35 @@ public:
                                                       const ViewManagerRole theRole );
 
   bool                            isObjectVisible( const int theViewId,
-                                                   const Handle(HYDROData_Object)& theObject );
+                                                   const Handle(HYDROData_Entity)& theObject ) const;
   void                            setObjectVisible( const int theViewId,
-                                                    const Handle(HYDROData_Object)& theObject,
+                                                    const Handle(HYDROData_Entity)& theObject,
                                                     const bool theState );
 
+  HYDROGUI_Shape*                 getObjectShape( const int                       theViewId,
+                                                  const Handle(HYDROData_Entity)& theObject ) const;
+  void                            setObjectShape( const int                       theViewId,
+                                                  const Handle(HYDROData_Entity)& theObject,
+                                                  HYDROGUI_Shape*                 theShape );
+  void                            removeViewShapes( const int                     theViewId );
+  void                            removeObjectShape( const int                       theViewId,
+                                                     const Handle(HYDROData_Entity)& theObject );
+
+  HYDROGUI_VTKPrs*                getObjectVTKPrs( const int                       theViewId,
+                                                   const Handle(HYDROData_Entity)& theObject ) const;
+  void                            setObjectVTKPrs( const int                       theViewId,
+                                                   const Handle(HYDROData_Entity)& theObject,
+                                                   HYDROGUI_VTKPrs*                theShape );
+  void                            removeViewVTKPrs( const int                      theViewId );
+  void                            removeObjectVTKPrs( const int                      theViewId,
+                                                     const Handle(HYDROData_Entity)& theObject );
+  /**
+   * Update global imposed range of Z values for VTK viewer
+   */
+  void                            updateVTKZRange( double theRange[] );
+
+  QStringList                     GetGeomObjectsToImport();
+
 protected:
   CAM_DataModel*                  createDataModel();
 
@@ -106,12 +159,15 @@ public slots:
 
 protected:
   virtual LightApp_Operation*     createOperation( const int ) const;
+  virtual bool                    reusableOperation( const int id );
 
   virtual void                    customEvent( QEvent* );
   virtual bool                    eventFilter( QObject*, QEvent* );
 
 protected slots:
   void                            onOperation();
+  void                            onDelete();
+
 
   bool                            onUndo( int theNumActions );
   bool                            onRedo( int theNumActions );
@@ -121,16 +177,24 @@ protected slots:
   virtual void                    onViewCreated( SUIT_ViewWindow* );
 
   void                            onViewPortMouseEvent( QGraphicsSceneMouseEvent* );
+  
+  void                            onExternalOperationFinished( const QString&, const QString&, 
+                                                               const QStringList& );
 
 private:
-  void                            updateGV( const bool theIsInit = false, 
-                                            const bool theIsForced = false );
+  void                            updateViewer( HYDROGUI_AbstractDisplayer* theDisplayer, 
+                                                const bool theIsInit = false, 
+                                                const bool theIsForced = false, 
+                                                const bool theDoFitAll = false );
 
   void                            createSelector( SUIT_ViewManager* viewMgr );
 
   bool                            setUpdateEnabled( const bool theState );
   bool                            isUpdateEnabled() const;
 
+  QStringList                     storeSelection() const;
+  void                            restoreSelection( const QStringList& theEntryList );
+
 private:
   void                            createActions();
   void                            createMenus();
@@ -148,11 +212,18 @@ private:
 
 private:
   HYDROGUI_Displayer*             myDisplayer;
+  HYDROGUI_OCCDisplayer*          myOCCDisplayer;
+  HYDROGUI_VTKPrsDisplayer*       myVTKDisplayer;
 
   ViewManagerMap                  myViewManagerMap;
   ViewId2Name2ObjectStateMap      myObjectStateMap;
 
+  ViewId2ListOfShapes             myShapesMap;
+  ViewId2ListOfVTKPrs             myVTKPrsMap;
+
   bool                            myIsUpdateEnabled;
+
+  QStringList                     myGeomObjectsToImport; ///< entries of GEOM objects to be imported
 };
 
 #endif