X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModel%2FModel_Objects.h;h=856d3c90b12f87cb96a40e91ada6c4dec8ac0327;hb=36c012079cecd007cd09c9192f06fcba9d8982f6;hp=8df42019c96e4e556d1e18133f4c8cbe9108e11d;hpb=72b9423caaa48805589d6ab87d366f79ecde5bfe;p=modules%2Fshaper.git diff --git a/src/Model/Model_Objects.h b/src/Model/Model_Objects.h index 8df42019c..856d3c90b 100644 --- a/src/Model/Model_Objects.h +++ b/src/Model/Model_Objects.h @@ -91,8 +91,10 @@ class Model_Objects //! Returns the object index in the group. Object must be visible. Otherwise returns -1. //! \param theObject object of this document + //! \param theAllowFolder take into account grouping feature by folders //! \returns index started from zero, or -1 if object is invisible or belongs to another document - const int index(std::shared_ptr theObject); + const int index(std::shared_ptr theObject, + const bool theAllowFolder = false); //! Returns the feature in the group by the index (started from zero) //! \param theGroupID group that contains a feature @@ -160,14 +162,27 @@ class Model_Objects std::shared_ptr findFolder( const std::list >& theFeatures, const bool theBelow); + //! Search a folder containing the given feature. + //! Addtionally calculates a zero-based index of the feature in this folder. + //! \param theFeature feature to search + //! \param theIndexInFolder zero-based index in the folder or -1 if the feature is top-level. + //! \return the folder containing the feature or empty pointer if the feature is top-level. + std::shared_ptr findContainingFolder( + const std::shared_ptr& theFeature, + int& theIndexInFolder); //! Add a list of features to the folder. The correctness of the adding is not performed //! (such checks have been done in corresponding find.. method). //! \return \c true if the movement is successfull bool moveToFolder(const std::list >& theFeatures, const std::shared_ptr& theFolder); //! Remove features from the folder + //! \param theFeatures list of features to be removed + //! \param theBefore extract features before the folder (this parameter is applicable only + //! when all features in the folder are taking out, + //! in other cases the direction is taken automatically) //! \return \c true if the features have been moved out - bool removeFromFolder(const std::list >& theFeatures); + bool removeFromFolder(const std::list >& theFeatures, + const bool theBefore = true); //! Sets the owner of this manager void setOwner(DocumentPtr theDoc);