Salome HOME
Fix for the problem of update of the selection attribute value after it becomes inval...
[modules/shaper.git] / src / Model / Model_AttributeSelection.h
index 5011bdce420ccde489bded88f141932b5fdaa673..ac31cb3357c0628bcfa0d7a2ddb3f0485d200fb7 100644 (file)
@@ -53,17 +53,22 @@ public:
   /// \param theSubShape selected sub-shape (if null, the whole context is selected)
   /// \param theTemporarily if it is true, do not store and name the added in the data framework
   ///           (used to remove immideately, without the following updates)
-  MODEL_EXPORT virtual void setValue(
-    const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape,
+  /// \returns true if attribute was updated
+  MODEL_EXPORT virtual bool setValue(
+    const ObjectPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape,
     const bool theTemporarily = false);
 
   /// Same as SetValue, but it takes an edge (on circular or elliptical curve)
   /// and stores the vertex of the central point (for ellipse the first or the second focus point)
   MODEL_EXPORT virtual void setValueCenter(
-    const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Edge>& theEdge,
+    const ObjectPtr& theContext, const std::shared_ptr<GeomAPI_Edge>& theEdge,
     const CenterType theCenterType,
     const bool theTemporarily = false);
 
+  /// Makes this selection attribute selects the same as in theSource selection
+  MODEL_EXPORT virtual void selectValue(
+    const std::shared_ptr<ModelAPI_AttributeSelection>& theSource);
+
   /// Reset temporary stored values
   virtual void removeTemporaryValues();
 
@@ -73,6 +78,11 @@ public:
   /// Returns the context of the selection (the whole shape owner)
   MODEL_EXPORT virtual ResultPtr context();
 
+  /// Returns the context of the selection if the whole feature was selected
+  MODEL_EXPORT virtual FeaturePtr contextFeature();
+  /// Returns the context of the selection : result or feature
+  MODEL_EXPORT virtual std::shared_ptr<ModelAPI_Object> contextObject();
+
   /// Sets the feature object
   MODEL_EXPORT virtual void setObject(const std::shared_ptr<ModelAPI_Object>& theObject);
 
@@ -98,6 +108,10 @@ public:
   MODEL_EXPORT virtual void selectSubShape(const std::string& theType,
                                            const std::string& theSubShapeName);
 
+  /// Selects sub-shape by its inner point
+  MODEL_EXPORT virtual void selectSubShape(const std::string& theType,
+                                           const std::shared_ptr<GeomAPI_Pnt>& thePoint);
+
   /// Returns true if attribute was  initialized by some value
   MODEL_EXPORT virtual bool isInitialized();