X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModelAPI%2FModelAPI_Data.h;h=a02b427f4a24729621746c16e43497e959325c81;hb=9a06f255338dc4cd38cfcdf724fe72306cea29a3;hp=b5ee9cadd67e079f96b0f303785bd727e75ab0a1;hpb=423c10234142d14d0d5de89383f2f96a4ec5930f;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Data.h b/src/ModelAPI/ModelAPI_Data.h index b5ee9cadd..a02b427f4 100644 --- a/src/ModelAPI/ModelAPI_Data.h +++ b/src/ModelAPI/ModelAPI_Data.h @@ -1,8 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ModelAPI_Data.hxx -// Created: 21 Mar 2014 -// Author: Mikhail PONIKAROV +// Copyright (C) 2014-2022 CEA/DEN, EDF R&D +// +// 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 ModelAPI_Data_H_ #define ModelAPI_Data_H_ @@ -28,12 +41,15 @@ class ModelAPI_AttributeRefList; class ModelAPI_AttributeRefAttrList; class ModelAPI_AttributeBoolean; class ModelAPI_AttributeString; +class ModelAPI_AttributeStringArray; class ModelAPI_Document; class ModelAPI_Attribute; class ModelAPI_Feature; class ModelAPI_AttributeSelection; class ModelAPI_AttributeSelectionList; class ModelAPI_AttributeIntArray; +class ModelAPI_AttributeImage; +class ModelAPI_AttributeTables; class ModelAPI_Object; class GeomAPI_Shape; @@ -57,10 +73,16 @@ class MODELAPI_EXPORT ModelAPI_Data public: /// Returns the name of the feature visible by the user in the object browser - virtual std::string name() = 0; - + virtual std::wstring name() = 0; /// Defines the name of the feature visible by the user in the object browser - virtual void setName(const std::string& theName) = 0; + virtual void setName(const std::wstring& theName) = 0; + /// Return \c true if the object has been renamed by the user + virtual bool hasUserDefinedName() const = 0; + + /// Returns version of the feature (empty string if not applicable) + virtual std::string version() = 0; + /// Initialize the version of the feature + virtual void setVersion(const std::string& theVersion) = 0; /// Returns the attribute that references to another document virtual std::shared_ptr document(const std::string& theID) = 0; @@ -90,6 +112,12 @@ class MODELAPI_EXPORT ModelAPI_Data virtual std::shared_ptr string(const std::string& theID) = 0; /// Returns the attribute that contains integer values array virtual std::shared_ptr intArray(const std::string& theID) = 0; + /// Returns the attribute that contains string values array + virtual std::shared_ptr stringArray(const std::string& theID) = 0; + /// Returns the attribute that contains image + virtual std::shared_ptr image(const std::string& theID) = 0; + /// Returns the attribute that contains tables + virtual std::shared_ptr tables(const std::string& theID) = 0; /// Returns the generic attribute by identifier /// \param theID identifier of the attribute @@ -113,9 +141,29 @@ class MODELAPI_EXPORT ModelAPI_Data /// for each attribute of the object /// \param theID identifier of the attribute that can be referenced by this ID later /// \param theAttrType type of the created attribute (received from the type method) + /// \param theIndex index of the attribute in the internal data structure, for not-floating + /// attributes it is -1 to let it automatically be added /// \returns the just created attribute + virtual std::shared_ptr addAttribute( + const std::string& theID, const std::string theAttrType, const int theIndex = -1) = 0; + + /// Adds a floating attribute (that may be added/removed during the data life) + /// \param theID identifier of the attribute that can be referenced by this ID later + /// \param theAttrType type of the created attribute (received from the type method) + /// \param theGroup identifier of the group this attribute belongs to, may be an empty string virtual std::shared_ptr - addAttribute(const std::string& theID, const std::string theAttrType) = 0; + addFloatingAttribute(const std::string& theID, const std::string theAttrType, + const std::string& theGroup) = 0; + + /// Returns all groups of this data (ordered). + virtual void allGroups(std::list& theGroups) = 0; + + /// Returns an ordered list of attributes that belong to the given group + virtual void attributesOfGroup(const std::string& theGroup, + std::list >& theAttrs) = 0; + + /// Remove all attributes of the given group + virtual void removeAttributes(const std::string& theGroup) = 0; /// Useful method for "set" methods of the attributes: sends an UPDATE event and /// makes attribute initialized @@ -123,8 +171,8 @@ class MODELAPI_EXPORT ModelAPI_Data /// Blocks sending "attribute updated" if theBlock is true /// \param theID identifier of the attribute that can be referenced by this ID later /// \param theAttrType type of the created attribute (received from the type method) - /// \returns the just created attribute - virtual void blockSendAttributeUpdated( + /// \returns the previous state of block + virtual bool blockSendAttributeUpdated( const bool theBlock, const bool theSendMessage = true) = 0; /// Erases all the data from the data model @@ -160,7 +208,7 @@ class MODELAPI_EXPORT ModelAPI_Data /// Copies all attributes content into theTarget data virtual void copyTo(std::shared_ptr theTarget) = 0; - /// Returns the invalid data pointer (to avoid working with NULL shared ptrs in swig) + /// Returns the invalid data pointer (to avoid working with NULL shared pointers in swig) virtual std::shared_ptr invalidPtr() = 0; /// Identifier of the transaction when object (feature or result) was updated last time. @@ -170,15 +218,19 @@ class MODELAPI_EXPORT ModelAPI_Data /// This method is called by the updater. virtual void setUpdateID(const int theID) = 0; - /// Returns the owner of htis data + /// Returns the owner of this data virtual std::shared_ptr owner() = 0; - /// Returns true if the object is deleted, but some data is still keept in memory + /// Returns true if the object is deleted, but some data is still kept in memory virtual bool isDeleted() = 0; - /// Sets true if the object is deleted, but some data is still keept in memory + /// Sets true if the object is deleted, but some data is still kept in memory virtual void setIsDeleted(const bool theFlag) = 0; + /// Returns \c true if theAttribute1 is going earlier than theAttribute2 in the data + virtual bool isPrecedingAttribute(const std::string& theAttribute1, + const std::string& theAttribute2) const = 0; + protected: /// Objects are created for features automatically ModelAPI_Data(); @@ -191,7 +243,7 @@ class MODELAPI_EXPORT ModelAPI_Data /// Returns true if object must be displayed in the viewer: flag is stored in the /// data model, so on undo/redo, open/save or recreation of object by history-playing it keeps - /// the original state i nthe current transaction. + /// the original state in the current transaction. virtual bool isDisplayed() = 0; /// Sets the displayed/hidden state of the object. If it is changed, sends the "redisplay"