Salome HOME
Add tools
[modules/shaper.git] / src / PartSet / PartSet_ExternalObjectsMgr.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        PartSet_ExternalObjectsMgr.h
4 // Created:     15 Apr 2015
5 // Author:      Natalia Ermolaeva
6
7
8 #ifndef PartSet_ExternalObjectsMgr_H
9 #define PartSet_ExternalObjectsMgr_H
10
11 #include "PartSet.h"
12
13 #include <ModelAPI_CompositeFeature.h>
14 #include <ModelAPI_Object.h>
15 #include <GeomAPI_Shape.h>
16
17 #include <ModuleBase_Definitions.h>
18
19 #include <string>
20
21 class ModuleBase_IWorkshop;
22 class XGUI_Workshop;
23
24 /**
25 * \ingroup Modules
26 * Customosation of ModuleBase_WidgetShapeSelector in order to provide 
27 * working with sketch specific objects.
28 */
29 class PARTSET_EXPORT PartSet_ExternalObjectsMgr
30 {
31  public:
32   /// Constructor
33   /// \param theExternal the external state
34   /// \param theDefaultValue the default value for the external object using
35   PartSet_ExternalObjectsMgr(const std::string& theExternal, const bool theDefaultValue);
36
37   virtual ~PartSet_ExternalObjectsMgr() {}
38
39   /// Returns the state whether the external object is used
40   bool useExternal() const { return myUseExternal; }
41
42   bool isValidObject(const ObjectPtr& theObject);
43
44   /// Finds or create and external object
45   /// \param theSelectedObject an object
46   /// \param theShape a selected shape, which is used in the selection attribute
47   /// \param theSketch a current sketch
48   /// \param theTemporary the created external object is temporary, execute is not performed for it
49   /// \return the object
50   ObjectPtr externalObject(const ObjectPtr& theSelectedObject, const GeomShapePtr& theShape,
51                            const CompositeFeaturePtr& theSketch, const bool theTemporary = false);
52
53   // Removes the external presentation from the model
54   /// \param theSketch a current sketch
55   /// \param theFeature a current feature
56   /// \param theWorkshop a current workshop
57   /// \param theTemporary if true, a temporary external object is removed overwise all ext objects
58   void removeExternal(const CompositeFeaturePtr& theSketch,
59                       const FeaturePtr& theFeature,
60                       ModuleBase_IWorkshop* theWorkshop,
61                       const bool theTemporary);
62
63 protected:
64   /// Delete from the document the feature of the object. It deletes all objects, which refers to
65   /// the deleted one. The parameter feature is ignored even it refer to the deleted object.
66   /// \param theObject a removed object
67   /// \param theSketch a current sketch
68   /// \param theFeature a current feature
69   /// \param theWorkshop a current workshop
70   void removeExternalObject(const ObjectPtr& theObject,
71                             const CompositeFeaturePtr& theSketch,
72                             const FeaturePtr& theFeature,
73                             ModuleBase_IWorkshop* theWorkshop);
74
75   /// Returns the workshop
76   static XGUI_Workshop* workshop(ModuleBase_IWorkshop* theWorkshop);
77
78 protected:
79   /// An external object
80   ObjectPtr myExternalObjectValidated;
81
82   /// Boolean value about the neccessity of the external object use
83   bool myUseExternal;
84 };
85
86 #endif