Salome HOME
Fix for the bug #255: VTK viewer is not updated after modification of objects.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.h
index 3561ed1c9b82048d45cbaa6b356db06ac36592d8..f7957e9c8c2b01c1695ef000afdecdf94c0bc135 100644 (file)
 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 OCCViewer_Viewer;
+class HYDROGUI_VTKPrs;
 
 /**\class HYDROGUI_Module
  *\brief The class representing the HYDROGUI module
@@ -81,6 +85,9 @@ public:
   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();
@@ -98,12 +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 );
@@ -115,16 +125,49 @@ public:
   void                            setObjectVisible( const int theViewId,
                                                     const Handle(HYDROData_Entity)& theObject,
                                                     const bool theState );
-
+  /** 
+   * Set IsToUpdate flag for all presentations of the given object to recompute them during 
+   * the next viewer(s) updating.
+   * @param theObject the data model object
+   * @param theState  the flag to set for object's presentations, it's true by default.
+   */
+  void                            setIsToUpdate( const Handle(HYDROData_Entity)& theObject,
+                                                 const bool theState = true );
   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                            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 the given VTK viewer id
+   */
+  void                            updateVTKZRange( const int theViewId, double theRange[] );
+
+  /**
+   * Returns true if the object with the given entry can be renamed.
+   * @param theEntry the object entry
+   */
+  virtual bool                    renameAllowed( const QString& theEntry ) const;
+  /**
+   * Returns true if the object with the given entry is renamed.
+   * @param theEntry the object entry
+   * @param theName the new name
+   */
+  virtual bool                    renameObject( const QString& theEntry, const QString& theName );
+
 protected:
   CAM_DataModel*                  createDataModel();
 
@@ -134,12 +177,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 );
@@ -150,12 +196,13 @@ protected slots:
 
   void                            onViewPortMouseEvent( QGraphicsSceneMouseEvent* );
 
-private:
-  void                            updateGV( const bool theIsInit = false, 
-                                            const bool theIsForced = false );
+  void                            onMouseMove( SUIT_ViewWindow*, QMouseEvent* );
 
-  void                            updateOCCViewer( const bool theIsInit = false, 
-                                                   const bool theIsForced = false );
+private:
+  void                            updateViewer( HYDROGUI_AbstractDisplayer* theDisplayer, 
+                                                const bool theIsInit = false, 
+                                                const bool theIsForced = false, 
+                                                const bool theDoFitAll = false );
 
   void                            createSelector( SUIT_ViewManager* viewMgr );
 
@@ -183,13 +230,17 @@ 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