X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Entity.h;h=b4fd34b978b3e5bf045b6b95c4a2efd25ddc1546;hb=c7cf59e092fe050003d1e556715e3ac97acf6bd4;hp=02c191160873fe31ca2403e308454bd86f5987f6;hpb=4789994b0b8b76c084725a59c9ba88181b399779;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Entity.h b/src/HYDROData/HYDROData_Entity.h index 02c19116..b4fd34b9 100644 --- a/src/HYDROData/HYDROData_Entity.h +++ b/src/HYDROData/HYDROData_Entity.h @@ -1,3 +1,24 @@ +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #ifndef HYDROData_Entity_HeaderFile #define HYDROData_Entity_HeaderFile @@ -41,7 +62,12 @@ 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_LAST = KIND_NATURAL_OBJECT; +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_LAST = KIND_OBSTACLE_ALTITUDE; DEFINE_STANDARD_HANDLE(HYDROData_Entity, MMgt_TShared) @@ -49,6 +75,8 @@ typedef QMap MapOfTreatedObjects; typedef NCollection_Sequence HYDROData_SequenceOfObjects; +///! Is Equal for HYDROData_Entity mapping +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. @@ -67,8 +95,8 @@ protected: */ enum DataTag { - DataTag_First = 0 ///< first tag, to reserve - // ... + DataTag_First = 0, ///< first tag, to reserve + DataTag_ZLevel, ///< z-level of object presentation }; public: @@ -89,6 +117,11 @@ public: */ HYDRODATA_EXPORT virtual void SetName( const QString& theName ); + /** + * Returns the name of this object valid for Python script. + */ + HYDRODATA_EXPORT virtual QString GetObjPyName() const; + /** * Dump object to Python script representation. * Base implementation returns empty list, @@ -102,23 +135,43 @@ public: */ HYDRODATA_EXPORT virtual void Update(); + HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy ); + + /** + * Checks that object has 2D presentation. Base implementation returns false. + */ + HYDRODATA_EXPORT virtual bool IsHas2dPrs() const; + + /** + * Show object at the top of other model objects. + */ + HYDRODATA_EXPORT virtual void Show(); + + /** * Returns data of object wrapped to QVariant. * Base implementation returns null value. */ 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 void SetToUpdate( bool theFlag ); + 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 bool IsMustBeUpdated() const; + HYDRODATA_EXPORT virtual bool IsMustBeUpdated() const; + + /** + * Returns flag indicating that object is updateble or not. + */ + HYDRODATA_EXPORT virtual bool CanBeUpdated() const; + /** * Checks is object exists in the data structure. @@ -132,28 +185,77 @@ public: HYDRODATA_EXPORT virtual void Remove(); /** - * Returns unique integer identifier of the object (may be used for ordering of objects) + * Returns flag indicating that object can be removed or not. + * Reimplement this method in class which can't be removed + * separately with it parent object. + * Base implementaiton returns always TRUE. */ - HYDRODATA_EXPORT inline int ID() const { return myLab.Tag(); } + HYDRODATA_EXPORT virtual bool CanRemove(); /** * Copies all properties of this to the destinated object. * Objects must be the same type. * \param theDestination initialized object (from any document) - target of copying */ - HYDRODATA_EXPORT void CopyTo( Handle_HYDROData_Entity theDestination ) const; + HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const; /** * Returns the label of this object. */ HYDRODATA_EXPORT TDF_Label& Label() { return myLab; } + /** * Returns father object. For object created under root document label * this method always return NULL object. */ HYDRODATA_EXPORT virtual Handle(HYDROData_Entity) GetFatherObject() const; + + /** + * Returns the list of all reference objects of this object. + * Base implementation always return empty list. + */ + HYDRODATA_EXPORT virtual HYDROData_SequenceOfObjects GetAllReferenceObjects() const; + + + /** + * Returns the z-level for object presentation, -1 if no z-level. + */ + HYDRODATA_EXPORT virtual Standard_Boolean GetZLevel( Standard_Integer& theLevel ) const; + + /** + * Set the z-level for object presentation. + */ + HYDRODATA_EXPORT virtual void SetZLevel( const Standard_Integer& theLevel ); + + /** + * Remove the z-level of object presentation. + */ + HYDRODATA_EXPORT virtual void RemoveZLevel(); + + /** + Find the Python object in the document by the object name. + @param theTreatedObjects the map of treated objects + @param theScript the script + */ + void findPythonReferenceObject( MapOfTreatedObjects& theTreatedObjects, + QStringList& theScript ) 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 + */ + HYDRODATA_EXPORT void SetColor( const QColor& theColor, const int theTag = 0 ); + + /** + * 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 theDefColor default color to return if attribute has not been set before + */ + HYDRODATA_EXPORT QColor GetColor( const QColor& theDefColor, const int theTag = 0 ) const; + protected: friend class HYDROData_Iterator; @@ -173,7 +275,7 @@ protected: * Put the object to the label of the document. * \param theLabel new label of the object */ - HYDRODATA_EXPORT virtual void SetLabel(TDF_Label theLabel); + HYDRODATA_EXPORT virtual void SetLabel( const TDF_Label& theLabel ); /** * Internal method that used to store the byte array attribute @@ -281,28 +383,35 @@ protected: * \param theTag tag of a label that keeps the attribute (for 0 this is myLab) */ void ClearReferenceObjects( const int theTag = 0 ); + +protected: /** - * 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 + * Dump the initial object creation to a Python script. + * You should call it from DumpToPython implementation before + * dumping fields of the object. */ - void SetColor( const QColor& theColor, const int theTag = 0 ); + HYDRODATA_EXPORT virtual QStringList dumpObjectCreation( MapOfTreatedObjects& theTreatedObjects ) 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 theDefColor default color to return if attribute has not been set before + * Returns an object type name as a string for dumping to Python. */ - QColor GetColor( const QColor& theDefColor, const int theTag = 0 ) const; - - -protected: + QString getPyTypeID() const; void setPythonReferenceObject( MapOfTreatedObjects& theTreatedObjects, QStringList& theScript, const Handle(HYDROData_Entity)& theRefObject, const QString& theMethod ) const; + + bool checkObjectPythonDefinition( MapOfTreatedObjects& theTreatedObjects, + QStringList& theScript, + const Handle(HYDROData_Entity)& theRefObject ) const; + + void setPythonObjectColor( QStringList& theScript, + const QColor& theColor, + const QColor& theDefaultColor, + const QString& theMethod ) const; + protected: Handle(TDataStd_ReferenceList) getReferenceList( const int theTag, @@ -314,7 +423,4 @@ protected: TDF_Label myLab; ///< label of this object }; -///! Is Equal for HYDROData_Entity mapping -HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Handle_HYDROData_Entity& theObj2); - #endif