Salome HOME
Minor changes
[modules/shaper.git] / src / ModelAPI / ModelAPI_Object.h
index 9d1d04c395f3cfb593370a51ee38a11cd12f2311..a2d840901ca3131a81bf75fc32e8d47d9e24f2d9 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "ModelAPI.h"
 #include "ModelAPI_Data.h"
+#include "ModelAPI_Entity.h"
 
 #include <memory>
 
@@ -24,7 +25,7 @@ class ModelAPI_Document;
  * objects related to the features and their results. Contains attributes of this 
  * object in the "Data".
  */
-class ModelAPI_Object
+class ModelAPI_Object: public ModelAPI_Entity
 {
   std::shared_ptr<ModelAPI_Data> myData;  ///< manager of the data model of a feature
   std::shared_ptr<ModelAPI_Document> myDoc;  ///< document this object belongs to
@@ -54,7 +55,7 @@ class ModelAPI_Object
   virtual void initAttributes() = 0;
 
   /// Returns the feature is disabled or not.
-  virtual bool isDisabled() const = 0;
+  virtual bool isDisabled() = 0;
 
   /// Called on change of any argument-attribute of this object
   /// \param theID identifier of changed attribute
@@ -68,7 +69,7 @@ class ModelAPI_Object
 
   /// 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 ithe current transaction.
   MODELAPI_EXPORT virtual bool isDisplayed();
 
   /// Sets the displayed/hidden state of the object. If it is changed, sends the "redisplay"
@@ -76,6 +77,10 @@ class ModelAPI_Object
   MODELAPI_EXPORT virtual void setDisplayed(const bool theDisplay);
 
  protected:
+  /// This method is called just after creation of the object: it must initialize
+  /// all fields, normally initialized in the constructor
+  MODELAPI_EXPORT virtual void init() = 0;
+
   /// Sets the data manager of an object (document does)
   MODELAPI_EXPORT virtual void setData(std::shared_ptr<ModelAPI_Data> theData);
 
@@ -86,6 +91,7 @@ class ModelAPI_Object
   MODELAPI_EXPORT virtual void erase();
 
   friend class Model_Objects;
+  friend class Model_Document;
 
 };