X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2FHYDROData%2FHYDROData_Entity.h;h=f55fa33acf5ecbc56ec86ecb009dceea6cc8e6c2;hb=6120f6f24e5568ffa69e959689789e1fbe59d58a;hp=21f14e4ac9daafe9f29832d610c704a6d78d79c7;hpb=e744ba34fd38d6744d11b54cd15b6f86350695b2;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Entity.h b/src/HYDROData/HYDROData_Entity.h index 21f14e4a..f55fa33a 100644 --- a/src/HYDROData/HYDROData_Entity.h +++ b/src/HYDROData/HYDROData_Entity.h @@ -23,65 +23,76 @@ #include #include #include +#include +#include +#include + +#ifdef NONLS +#undef NONLS +#endif + +#ifdef NOMINMAX +#undef NOMINMAX +#endif class QColor; -class QString; class QVariant; class QStringList; -class Handle(TDataStd_ReferenceList); -class Handle_HYDROData_Entity; +class TDataStd_ReferenceList; +class HYDROData_Entity; class TopoDS_Shape; ///! Kind of an object in a document typedef int ObjectKind; -const ObjectKind KIND_UNKNOWN = 0; ///! Unrecognized object -const ObjectKind KIND_IMAGE = 1; -const ObjectKind KIND_POLYLINE = 2; -const ObjectKind KIND_BATHYMETRY = 3; -const ObjectKind KIND_ALTITUDE = 4; -const ObjectKind KIND_IMMERSIBLE_ZONE = 5; -const ObjectKind KIND_RIVER = 6; -const ObjectKind KIND_STREAM = 7; -const ObjectKind KIND_CONFLUENCE = 8; -const ObjectKind KIND_CHANNEL = 9; -const ObjectKind KIND_OBSTACLE = 10; -const ObjectKind KIND_DIGUE = 11; -const ObjectKind KIND_PROFILE = 12; -const ObjectKind KIND_PROFILEUZ = 13; -const ObjectKind KIND_POLYLINEXY = 14; -const ObjectKind KIND_CALCULATION = 15; -const ObjectKind KIND_ZONE = 16; -const ObjectKind KIND_REGION = 17; -const ObjectKind KIND_VISUAL_STATE = 18; -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_STREAM_ALTITUDE = 24; -const ObjectKind KIND_OBSTACLE_ALTITUDE = 25; -const ObjectKind KIND_STRICKLER_TABLE = 26; -const ObjectKind KIND_LAND_COVER = 27; -const ObjectKind KIND_LAND_COVER_MAP = 28; -const ObjectKind KIND_LAST = KIND_LAND_COVER; - -DEFINE_STANDARD_HANDLE(HYDROData_Entity, MMgt_TShared) +const ObjectKind KIND_UNKNOWN = 0; ///! Unrecognized object +const ObjectKind KIND_IMAGE = 1; +const ObjectKind KIND_POLYLINE = 2; +const ObjectKind KIND_BATHYMETRY = 3; +const ObjectKind KIND_ALTITUDE = 4; +const ObjectKind KIND_IMMERSIBLE_ZONE = 5; +const ObjectKind KIND_RIVER = 6; +const ObjectKind KIND_STREAM = 7; +const ObjectKind KIND_CONFLUENCE = 8; +const ObjectKind KIND_CHANNEL = 9; +const ObjectKind KIND_OBSTACLE = 10; +const ObjectKind KIND_DIGUE = 11; +const ObjectKind KIND_PROFILE = 12; +const ObjectKind KIND_PROFILEUZ = 13; +const ObjectKind KIND_POLYLINEXY = 14; +const ObjectKind KIND_CALCULATION = 15; +const ObjectKind KIND_ZONE = 16; +const ObjectKind KIND_REGION = 17; +const ObjectKind KIND_VISUAL_STATE = 18; +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_SPLIT_GROUP = 23; +const ObjectKind KIND_STREAM_ALTITUDE = 24; +const ObjectKind KIND_OBSTACLE_ALTITUDE = 25; +const ObjectKind KIND_STRICKLER_TABLE = 26; +const ObjectKind KIND_LAND_COVER_OBSOLETE = 27; +const ObjectKind KIND_CHANNEL_ALTITUDE = 28; +const ObjectKind KIND_LAND_COVER_MAP = 29; +const ObjectKind KIND_DTM = 30; +const ObjectKind KIND_BC_POLYGON = 31; +const ObjectKind KIND_LAST = KIND_BC_POLYGON+1; class MapOfTreatedObjects : public QMap { }; -class HYDRODATA_EXPORT HYDROData_SequenceOfObjects : public NCollection_Sequence +class HYDRODATA_EXPORT HYDROData_SequenceOfObjects : public NCollection_Sequence { public: HYDROData_SequenceOfObjects(); HYDROData_SequenceOfObjects( const HYDROData_SequenceOfObjects& ); - HYDROData_SequenceOfObjects( const NCollection_Sequence& ); + HYDROData_SequenceOfObjects( const NCollection_Sequence& ); }; ///! Is Equal for HYDROData_Entity mapping -HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Handle_HYDROData_Entity& theObj2); +HYDRODATA_EXPORT bool IsEqual(const Handle(HYDROData_Entity)& theObj1, const Handle(HYDROData_Entity)& theObj2); /**\class HYDROData_Entity * \brief Generic class of any object in the data model. @@ -101,6 +112,7 @@ protected: DataTag_First = 0, ///< first tag, to reserve DataTag_ZLevel, ///< z-level of object presentation DataTag_GeomChange, + DataTag_DefaultName, ///< to keep the automatic name, useful in Python dump }; public: @@ -117,7 +129,10 @@ public: }; public: - DEFINE_STANDARD_RTTI(HYDROData_Entity); + DEFINE_STANDARD_RTTIEXT(HYDROData_Entity, MMgt_TShared); + + HYDRODATA_EXPORT static QString Type( ObjectKind ); + HYDRODATA_EXPORT virtual QString GetType() const; /** * Returns the kind of this object. Must be redefined in all objects of known type. @@ -129,10 +144,15 @@ public: */ HYDRODATA_EXPORT virtual QString GetName() const; + /** + * Returns the default name of this object. + */ + HYDRODATA_EXPORT virtual QString GetDefaultName() const; + /** * Updates the name of this object. */ - HYDRODATA_EXPORT void SetName( const QString& theName ); + HYDRODATA_EXPORT void SetName( const QString& theName, bool isDefault = false ); /** * Returns the name of this object valid for Python script. @@ -145,7 +165,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. @@ -234,7 +255,7 @@ public: /** * Returns the z-level for object presentation, -1 if no z-level. */ - HYDRODATA_EXPORT virtual Standard_Boolean GetZLevel( Standard_Integer& theLevel ) const; + HYDRODATA_EXPORT virtual bool GetZLevel( Standard_Integer& theLevel ) const; /** * Set the z-level for object presentation. @@ -247,14 +268,22 @@ public: HYDRODATA_EXPORT virtual void RemoveZLevel(); /** - Find the Python object in the document by the object name. - @param theTreatedObjects the map of treated objects + Add in Python script the find instruction, to retrieve the Python object in the document by the object name. @param theScript the script + @param defName the name to use, if not default name. */ - void findPythonReferenceObject( MapOfTreatedObjects& theTreatedObjects, - QStringList& theScript ) const; + void findPythonReferenceObject( QStringList& theScript, + QString defName = QString()) const; /** + Add in Python script the set name instruction. + @param theScript the script + @param defName the name to use, if not default name. + */ + void SetNameInDumpPython(QStringList& theScript, + QString theName = QString()) const; + + /** * Internal method that used to store the color attribute * \param theTag tag of a label that keeps the attribute (for 0 this is myLab) * \param theColor color to save @@ -267,6 +296,14 @@ public: * \param theDefColor default color to return if attribute has not been set before */ HYDRODATA_EXPORT QColor GetColor( const QColor& theDefColor, const int theTag = 0 ) const; + + /* Internal method that used to retreive the color attribute + * \param theTag tag of a label that keeps the attribute (for 0 this is myLab) + * \param theOutColor color to return if attribute has been set before + * \return true if attribute is present + */ + HYDRODATA_EXPORT bool GetColor( QColor& theOutColor, + const int theTag ) const; protected: @@ -318,7 +355,7 @@ protected: * \param theObj pointer to reference object * \param theTag tag of a label to store attribute (for 0 this is myLab) */ - bool HasReference( const Handle_HYDROData_Entity& theObj, + bool HasReference( const Handle(HYDROData_Entity)& theObj, const int theTag = 0 ) const; /** @@ -326,7 +363,7 @@ protected: * \param theObj pointer to reference object * \param theTag tag of a label to store attribute (for 0 this is myLab) */ - void AddReferenceObject( const Handle_HYDROData_Entity& theObj, + void AddReferenceObject( const Handle(HYDROData_Entity)& theObj, const int theTag = 0 ); /** @@ -338,7 +375,7 @@ protected: - if less than zero then prepend to the list - indexing starts from 0 */ - void SetReferenceObject( const Handle_HYDROData_Entity& theObj, + void SetReferenceObject( const Handle(HYDROData_Entity)& theObj, const int theTag = 0, const int theIndex = 0 ); @@ -351,7 +388,7 @@ protected: - if less than zero then prepend to the list - indexing starts from 0 */ - void InsertReferenceObject( const Handle_HYDROData_Entity& theObj, + void InsertReferenceObject( const Handle(HYDROData_Entity)& theObj, const int theTag = 0, const int theBeforeIndex = 0 ); @@ -370,7 +407,7 @@ protected: * - indexing starts from 0 * \returns pointer to reference object or NULL if label is not set */ - Handle_HYDROData_Entity GetReferenceObject( const int theTag = 0, + Handle(HYDROData_Entity) GetReferenceObject( const int theTag = 0, const int theIndex = 0 ) const; HYDROData_SequenceOfObjects GetReferenceObjects( const int theTag = 0 ) const; @@ -395,6 +432,10 @@ protected: * \param theTag tag of a label that keeps the attribute (for 0 this is myLab) */ void ClearReferenceObjects( const int theTag = 0 ); + +public: + + HYDRODATA_EXPORT virtual bool CompareLabels(const Handle(HYDROData_Entity)& theOtherObj); protected: @@ -410,12 +451,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; @@ -431,6 +474,13 @@ protected: void SetShape( int theTag, const TopoDS_Shape& theShape ); TopoDS_Shape GetShape( int theTag ) const; + void SetDouble( int theTag, double theValue ); + double GetDouble( int theTag, double theDefValue = 0.0 ) const; + + void SetInteger( int theTag, int theValue ); + int GetInteger( int theTag, int theDefValue = 0 ) const; + + int GetGeomChangeFlag() const; protected: