Salome HOME
Issue #1664: In the Sketcher, add the function Split a segment. AttrRefAttribute...
[modules/shaper.git] / src / PartSet / PartSet_ExternalObjectsMgr.h
old mode 100644 (file)
new mode 100755 (executable)
index 6451751..05d7f5b
@@ -18,6 +18,9 @@
 
 #include <string>
 
+class ModuleBase_IWorkshop;
+class XGUI_Workshop;
+
 /**
 * \ingroup Modules
 * Customosation of ModuleBase_WidgetShapeSelector in order to provide 
@@ -36,23 +39,48 @@ class PARTSET_EXPORT PartSet_ExternalObjectsMgr
   /// Returns the state whether the external object is used
   bool useExternal() const { return myUseExternal; }
 
+  /// Checks validity of the given object
+  /// \param theObject an object to check
+  /// \return valid or not valid
+  bool isValidObject(const ObjectPtr& theObject);
+
   /// Finds or create and external object
   /// \param theSelectedObject an object
   /// \param theShape a selected shape, which is used in the selection attribute
   /// \param theSketch a current sketch
+  /// \param theTemporary the created external object is temporary, execute is not performed for it
   /// \return the object
   ObjectPtr externalObject(const ObjectPtr& theSelectedObject, const GeomShapePtr& theShape,
-                           const CompositeFeaturePtr& theSketch);
+                           const CompositeFeaturePtr& theSketch, const bool theTemporary = false);
 
   // Removes the external presentation from the model
   /// \param theSketch a current sketch
   /// \param theFeature a current feature
+  /// \param theWorkshop a current workshop
+  /// \param theTemporary if true, a temporary external object is removed overwise all ext objects
   void removeExternal(const CompositeFeaturePtr& theSketch,
-                      const FeaturePtr& theFeature);
+                      const FeaturePtr& theFeature,
+                      ModuleBase_IWorkshop* theWorkshop,
+                      const bool theTemporary);
+
+protected:
+  /// Delete from the document the feature of the object. It deletes all objects, which refers to
+  /// the deleted one. The parameter feature is ignored even it refer to the deleted object.
+  /// \param theObject a removed object
+  /// \param theSketch a current sketch
+  /// \param theFeature a current feature
+  /// \param theWorkshop a current workshop
+  void removeExternalObject(const ObjectPtr& theObject,
+                            const CompositeFeaturePtr& theSketch,
+                            const FeaturePtr& theFeature,
+                            ModuleBase_IWorkshop* theWorkshop);
+
+  /// Returns the workshop
+  static XGUI_Workshop* workshop(ModuleBase_IWorkshop* theWorkshop);
 
 protected:
   /// An external object
-  QObjectPtrList myExternalObjects;
+  ObjectPtr myExternalObjectValidated;
 
   /// Boolean value about the neccessity of the external object use
   bool myUseExternal;