Salome HOME
Issues #198 #118 "Remove" and "Duplicate" features corrected to be correctrly process...
[modules/shaper.git] / src / PartSetPlugin / PartSetPlugin_Duplicate.h
1 // File:        PartSetPlugin_Duplicate.h
2 // Created:     20 May 2014
3 // Author:      Mikhail PONIKAROV
4
5 #ifndef PartSetPlugin_Duplicate_H_
6 #define PartSetPlugin_Duplicate_H_
7
8 #include "PartSetPlugin_Part.h"
9
10 /**\class PartSetPlugin_Duplicate
11  * \ingroup DataModel
12  * \brief Duplicates the active part (not root). Creates a new "part" feature.
13  */
14 class PartSetPlugin_Duplicate : public PartSetPlugin_Part
15 {
16  public:
17     /// Duplicate kind
18   inline static const std::string& ID()
19   {
20     static const std::string MY_DUPLICATE_KIND("Duplicate");
21     return MY_DUPLICATE_KIND;
22   }
23   /// Returns the kind of a feature
24   PARTSETPLUGIN_EXPORT virtual const std::string& getKind()
25   {
26     static std::string MY_KIND = PartSetPlugin_Duplicate::ID();
27     return MY_KIND;
28   }
29
30   /// the reference to copy: reference to the attribute
31   inline static const std::string& ORIGIN_REF()
32   {
33     static const std::string MY_DUPLICATE_ID("Origin");
34     return MY_DUPLICATE_ID;
35   }
36   /// Makes a new part, copy of active
37   PartSetPlugin_Duplicate();
38
39   /// Request for initialization of data model of the feature: adding all attributes
40   PARTSETPLUGIN_EXPORT virtual void initAttributes();
41
42   /// doesn't call creation of new document, just does nothing if document was not copied
43   PARTSETPLUGIN_EXPORT virtual void execute();
44 };
45
46 #endif