- //! If theHidden is true, it counts also the features that are not in tree
- virtual int size(const std::string& theGroupID, const bool theHidden = false) = 0;
-
- /// To virtually destroy the fields of successors
- virtual ~ModelAPI_Document()
- {
- }
-
- /// Creates a construction cresults
- virtual boost::shared_ptr<ModelAPI_ResultConstruction> createConstruction(
- const boost::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
- /// Creates a body results
- virtual boost::shared_ptr<ModelAPI_ResultBody> createBody(
- const boost::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
- /// Creates a part results
- virtual boost::shared_ptr<ModelAPI_ResultPart> createPart(
- const boost::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ virtual int size(const std::string& theGroupID) = 0;
+
+ //! Returns the feature that is currently edited in this document, normally
+ //! this is the latest created feature
+ //! \param theVisible use visible features only: flag is true for Object Browser functionality
+ //! \returns null if next created feature must be the first
+ virtual std::shared_ptr<ModelAPI_Feature> currentFeature(const bool theVisible) = 0;
+
+ //! Sets the current feature: all features below will be disabled, new features
+ //! will be appended after this one.
+ //! \param theCurrent the selected feature as current: blow it everythin become disabled
+ //! \param theVisible use visible features only: flag is true for Object Browser functionality
+ virtual void setCurrentFeature(std::shared_ptr<ModelAPI_Feature> theCurrent,
+ const bool theVisible) = 0;
+ //! Makes the current feature one feature upper
+ virtual void setCurrentFeatureUp() = 0;
+
+ //! Returns the number of all features: in the history or not
+ virtual int numInternalFeatures() = 0;
+ //! Returns the feature by zero-based index: features in the history or not
+ virtual std::shared_ptr<ModelAPI_Feature> internalFeature(const int theIndex) = 0;
+ //! Performs synchronization of transactions with the module document:
+ //! If some document is not active (by undo of activation) but in memory,
+ //! on activation the transactions must be synchronised because all redos performed
+ //! wihtout this participation
+ virtual void synchronizeTransactions() = 0;
+
+ //! Returns feature by the id of the feature (produced by the Data "featureId" method)
+ virtual std::shared_ptr<ModelAPI_Feature> featureById(const int theId) = 0;
+
+ //! To virtually destroy the fields of successors
+ MODELAPI_EXPORT virtual ~ModelAPI_Document();
+
+ //! Creates a construction result
+ virtual std::shared_ptr<ModelAPI_ResultConstruction> createConstruction(
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ //! Creates a body result
+ virtual std::shared_ptr<ModelAPI_ResultBody> createBody(
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ //! Creates a part result
+ virtual std::shared_ptr<ModelAPI_ResultPart> createPart(
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ //! Copies a part result, keeping the reference to the origin
+ virtual std::shared_ptr<ModelAPI_ResultPart> copyPart(
+ const std::shared_ptr<ModelAPI_ResultPart>& theOrigin,
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ //! Creates a group result
+ virtual std::shared_ptr<ModelAPI_ResultGroup> createGroup(
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ //! Creates a parameter result
+ virtual std::shared_ptr<ModelAPI_ResultParameter> createParameter(
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;