#include "Model.h"
#include <ModelAPI_Data.h>
+#include <ModelAPI_Feature.h>
#include <TDF_Label.hxx>
#include <map>
/// All attributes of the object identified by the attribute ID
std::map<std::string, boost::shared_ptr<ModelAPI_Attribute> > myAttrs;
- boost::shared_ptr<ModelAPI_Document> myDoc; ///< document this feature belongs to
+ /// needed here to emit signal that feature changed on change of the attribute
+ FeaturePtr myFeature;
Model_Data();
+ /// Returns label of this feature
TDF_Label label() {return myLab;}
friend class Model_Document;
- friend class Model_Iterator;
+ friend class Model_AttributeReference;
+ friend class Model_AttributeRefAttr;
+ friend class Model_AttributeRefList;
public:
/// Returns the name of the feature visible by the user in the object browser
MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_AttributeDocRef> docRef(const std::string theID);
/// Returns the attribute that contains real value with double precision
MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_AttributeDouble> real(const std::string theID);
+ /// Returns the attribute that contains reference to a feature
+ MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_AttributeReference>
+ reference(const std::string theID);
+ /// Returns the attribute that contains reference to an attribute of a feature
+ MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_AttributeRefAttr>
+ refattr(const std::string theID);
+ /// Returns the attribute that contains list of references to features
+ MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_AttributeRefList>
+ reflist(const std::string theID);
+ /// Returns the attribute that contains boolean value
+ MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_AttributeBoolean>
+ boolean(const std::string theID);
+ /// Returns the generic attribute by identifier
+ /// \param theID identifier of the attribute
+ MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_Attribute> attribute(const std::string theID);
+ /// Returns all attributes ofthe feature of the given type
+ /// or all attributes if "theType" is empty
+ MODEL_EXPORT virtual std::list<boost::shared_ptr<ModelAPI_Attribute> >
+ attributes(const std::string theType);
+
+ /// Identifier by the id (not fast, iteration by map)
+ /// \param theAttr attribute already created in this data
+ MODEL_EXPORT virtual const std::string& id(const boost::shared_ptr<ModelAPI_Attribute> theAttr);
+ /// Returns true if data belongs to same features
+ MODEL_EXPORT virtual bool isEqual(const boost::shared_ptr<ModelAPI_Data> theData);
+ /// Returns true if it is correctly connected t othe data model
+ MODEL_EXPORT virtual bool isValid();
+
+ /// Stores the shape (called by the execution method).
+ MODEL_EXPORT virtual void store(const boost::shared_ptr<GeomAPI_Shape>& theShape);
+ /// Returns the shape-result produced by this feature
+ MODEL_EXPORT virtual boost::shared_ptr<GeomAPI_Shape> shape();
/// Initializes object by the attributes: must be called just after the object is created
/// for each attribute of the object
/// \param theAttrType type of the created attribute (received from the type method)
MODEL_EXPORT virtual void addAttribute(std::string theID, std::string theAttrType);
- /// Returns the document of this data
- MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_Document> document() {return myDoc;}
+ /// Useful method for "set" methods of the attributes: sends an UPDATE event and
+ /// makes attribute initialized
+ MODEL_EXPORT virtual void sendAttributeUpdated(ModelAPI_Attribute* theAttr);
/// Puts feature to the document data sub-structure
MODEL_EXPORT void setLabel(TDF_Label& theLab);
- /// Sets the document of this data
- MODEL_EXPORT virtual void setDocument(const boost::shared_ptr<ModelAPI_Document>& theDoc) {myDoc = theDoc;}
+ /// Sets the feature of this data
+ MODEL_EXPORT virtual void setFeature(FeaturePtr theFeature)
+ {myFeature = theFeature;}
};
#endif