]> SALOME platform Git repositories - modules/shaper.git/blob - src/Model/Model_AttributeSelection.h
Salome HOME
Composite Feature implementation. Sketch now is Composite.
[modules/shaper.git] / src / Model / Model_AttributeSelection.h
1 // File:        Model_AttributeSelection.h
2 // Created:     8 May 2014
3 // Author:      Mikhail PONIKAROV
4
5 #ifndef Model_AttributeSelection_H_
6 #define Model_AttributeSelection_H_
7
8 #include "Model.h"
9 #include "Model_AttributeReference.h"
10 #include <ModelAPI_AttributeSelection.h>
11
12 /**\class Model_AttributeSelection
13  * \ingroup DataModel
14  * \brief Attribute that contains reference to the sub-shape of some result, the selected shape.
15  */
16
17 class Model_AttributeSelection : public ModelAPI_AttributeSelection
18 {
19   Model_AttributeReference myRef;  ///< The reference functionality reusage
20 public:
21   /// Defines the result and its selected sub-shape
22   MODEL_EXPORT virtual void setValue(
23     const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape);
24
25   /// Returns the selected subshape
26   MODEL_EXPORT virtual boost::shared_ptr<GeomAPI_Shape> value();
27
28   /// Returns the context of the selection (the whole shape owner)
29   MODEL_EXPORT virtual ResultPtr context();
30
31   MODEL_EXPORT virtual void setObject(const boost::shared_ptr<ModelAPI_Object>& theObject);
32
33 protected:
34   /// Objects are created for features automatically
35   MODEL_EXPORT Model_AttributeSelection(TDF_Label& theLabel);
36     /// Performs the selection for the body result (TNaming Selection)
37
38   /// Performs the selection for the body result (TNaming selection)
39   virtual void selectBody(
40     const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape);
41   /// Performs the selection for the construction result (selection by index)
42   virtual void selectConstruction(
43     const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape);
44
45   friend class Model_Data;
46 };
47
48 #endif