Salome HOME
global misprinting in the word "splitted" is replaced by "split"
[modules/hydro.git] / src / HYDROData / HYDROData_Entity.h
index 7a1391a432b24b723c3a1ecac3a2d62756a2cc74..44c34dfd81efe9ab1f9f58a324906c749d6da571 100644 (file)
 #define HYDROData_Entity_HeaderFile
 
 #include "HYDROData.h"
-
 #include <NCollection_Sequence.hxx>
-
 #include <TDF_Label.hxx>
-
 #include <QMap>
 
 class QColor;
@@ -33,6 +30,7 @@ class QVariant;
 class QStringList;
 class Handle(TDataStd_ReferenceList);
 class Handle_HYDROData_Entity;
+class TopoDS_Shape;
 
 ///! Kind of an object in a document
 typedef int ObjectKind;
@@ -60,7 +58,7 @@ const ObjectKind KIND_ARTIFICIAL_OBJECT   = 19;
 const ObjectKind KIND_NATURAL_OBJECT      = 20;
 const ObjectKind KIND_DUMMY_3D            = 21;
 const ObjectKind KIND_SHAPES_GROUP        = 22;
-const ObjectKind KIND_SPLITTED_GROUP      = 23;
+const ObjectKind KIND_SPLIT_GROUP         = 23;
 const ObjectKind KIND_STREAM_ALTITUDE     = 24;
 const ObjectKind KIND_OBSTACLE_ALTITUDE   = 25;
 const ObjectKind KIND_STRICKLER_TABLE     = 26;
@@ -94,9 +92,7 @@ HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Hand
  */
 class HYDROData_Entity : public MMgt_TShared
 {
-
 protected:
-
   /**
    * Enumeration of tags corresponding to the persistent object parameters.
    */
@@ -104,6 +100,20 @@ protected:
   {
     DataTag_First  = 0,     ///< first tag, to reserve
     DataTag_ZLevel,         ///< z-level of object presentation
+    DataTag_GeomChange,
+  };
+
+public:
+  enum Geometry
+  {
+    Geom_No = 1,
+    Geom_2d = 2,
+    Geom_Z  = 4,
+    Geom_Groups = 8,
+
+    Geom_3d = Geom_2d | Geom_Z,
+    Geom_2d_and_groups = Geom_2d | Geom_Groups,
+    Geom_All = Geom_3d | Geom_Groups | Geom_No,
   };
 
 public:
@@ -122,7 +132,7 @@ public:
   /**
    * Updates the name of this object.
    */
-  HYDRODATA_EXPORT virtual void SetName( const QString& theName );
+  HYDRODATA_EXPORT void SetName( const QString& theName );
 
   /**
    * Returns the name of this object valid for Python script.
@@ -135,7 +145,8 @@ public:
    * You should reimplement this function in your derived class if it
    * has Python API and can be imported/exported from/to Python script.
    */
-  HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const;
+  HYDRODATA_EXPORT virtual QStringList DumpToPython( const QString& thePyScriptPath,
+                                                     MapOfTreatedObjects& theTreatedObjects ) const;
 
   /**
    * Updates object state. Base implementation dose nothing.
@@ -162,17 +173,11 @@ public:
   HYDRODATA_EXPORT virtual QVariant GetDataVariant();
 
 
-  /**
-   * Sets the "MustBeUpdated" flag: if object is depended on updated features.
-   * \param theFlag is true for objects that must be updated, false for up-to-date
-   */
-  HYDRODATA_EXPORT virtual void SetToUpdate( bool theFlag );
 
-  /**
-   * Returns the "MustBeUpdated" flag: is object data must be updated or not
-   * \returns false if object is up to date
-   */
-  HYDRODATA_EXPORT virtual bool IsMustBeUpdated() const;
+  HYDRODATA_EXPORT virtual void ClearChanged();
+  HYDRODATA_EXPORT virtual void Changed( Geometry );
+
+  HYDRODATA_EXPORT bool IsMustBeUpdated( Geometry ) const;
 
   /**
    * Returns flag indicating that object is updateble or not.
@@ -272,7 +277,7 @@ protected:
    * Creates new object in the internal data structure. Use higher level objects 
    * to create objects with real content.
    */
-  HYDRODATA_EXPORT HYDROData_Entity();
+  HYDRODATA_EXPORT HYDROData_Entity( Geometry );
 
   /**
    * Destructs properties of the object and object itself, removes it from the document.
@@ -406,12 +411,14 @@ protected:
    */
   QString getPyTypeID() const;
 
-  void setPythonReferenceObject( MapOfTreatedObjects&            theTreatedObjects,
+  void setPythonReferenceObject( const QString&                  thePyScriptPath,
+                                 MapOfTreatedObjects&            theTreatedObjects,
                                  QStringList&                    theScript,
                                  const Handle(HYDROData_Entity)& theRefObject,
                                  const QString&                  theMethod ) const;
 
-  bool checkObjectPythonDefinition( MapOfTreatedObjects&            theTreatedObjects,
+  bool checkObjectPythonDefinition( const QString&                  thePyScriptPath,
+                                    MapOfTreatedObjects&            theTreatedObjects,
                                     QStringList&                    theScript,
                                     const Handle(HYDROData_Entity)& theRefObject ) const;
 
@@ -419,16 +426,20 @@ protected:
                              const QColor&        theColor,
                              const QColor&        theDefaultColor,
                              const QString&       theMethod ) const;
-
 protected:
 
   Handle(TDataStd_ReferenceList) getReferenceList( const int  theTag,
                                                    const bool theIsCreate ) const;
+  
+  void SetShape( int theTag, const TopoDS_Shape& theShape );
+  TopoDS_Shape GetShape( int theTag ) const;
 
+  int GetGeomChangeFlag() const;
 
 protected:
   /// Array of pointers to the properties of this object; index in this array is returned by \a AddProperty.
   TDF_Label myLab; ///< label of this object
+  Geometry  myGeom;
 };
 
 #endif