Salome HOME
Flushing created and updated events instead of calling execute on feature in ModelHig...
[modules/shaper.git] / src / ModelHighAPI / ModelHighAPI_Interface.h
1 // Name   : ModelHighAPI_Interface.h
2 // Purpose: 
3 //
4 // History:
5 // 17/05/16 - Sergey POKHODENKO - Creation of the file
6
7 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_INTERFACE_H_
8 #define SRC_MODELHIGHAPI_MODELHIGHAPI_INTERFACE_H_
9
10 //--------------------------------------------------------------------------------------
11 #include "ModelHighAPI.h"
12
13 #include <list>
14 #include <map>
15 #include <memory>
16 #include <string>
17 #include <iostream>
18 //--------------------------------------------------------------------------------------
19 class ModelAPI_Feature;
20 class ModelAPI_Result;
21 class ModelHighAPI_Selection;
22 class ModelHighAPI_Dumper;
23 //--------------------------------------------------------------------------------------
24 /**\class ModelHighAPI_Interface
25  * \ingroup CPPHighAPI
26  * \brief Base class for feature interfaces
27  */
28 class ModelHighAPI_Interface
29 {
30 public:
31   /// Constructor
32   MODELHIGHAPI_EXPORT
33   explicit ModelHighAPI_Interface(const std::shared_ptr<ModelAPI_Feature> & theFeature);
34   /// Destructor
35   MODELHIGHAPI_EXPORT
36   virtual ~ModelHighAPI_Interface();
37
38   /// Return ModelAPI_Feature
39   MODELHIGHAPI_EXPORT
40   std::shared_ptr<ModelAPI_Feature> feature() const;
41
42   /// If feature is composite return intefrace for sub-feature by zero-based index,
43   /// or empty pointer if feature not composite or does not have sub-feature with such index.
44   MODELHIGHAPI_EXPORT
45   std::shared_ptr<ModelHighAPI_Interface> subFeature(const int theIndex) const;
46
47   /// Shortcut for feature()->getKind()
48   MODELHIGHAPI_EXPORT
49   const std::string& getKind() const;
50
51   /// Shortcut for feature()->execute()
52   MODELHIGHAPI_EXPORT
53   void execute();
54
55   /// Shortcut for feature()->data()->setName()
56   MODELHIGHAPI_EXPORT
57   void setName(const std::string& theName);
58
59   // TODO(spo): rename to selectAll()
60   /// Return all objects of the feature
61   MODELHIGHAPI_EXPORT
62   virtual std::list<ModelHighAPI_Selection> result() const;
63
64   /// Return default result. Default implementation feature()->lastResult()
65   MODELHIGHAPI_EXPORT
66   virtual std::shared_ptr<ModelAPI_Result> defaultResult() const;
67
68   /// Throw exception to event loop
69   MODELHIGHAPI_EXPORT
70   void throwException(const std::string & theDescription);
71
72   /// Return name of getter for specified attribute
73   MODELHIGHAPI_EXPORT
74   const std::string& attributeGetter(const std::string& theAttrName);
75
76   /// Dump wrapped feature
77   MODELHIGHAPI_EXPORT
78   virtual void dump(ModelHighAPI_Dumper& theDumper) const {}
79
80 protected:
81   std::shared_ptr<ModelAPI_Feature> myFeature;
82
83   std::map<std::string, std::string> myAttrGetter; ///< names of attributes and their getters
84 };
85
86 //! Pointer on Interface object
87 typedef std::shared_ptr<ModelHighAPI_Interface> InterfacePtr;
88
89 //--------------------------------------------------------------------------------------
90 //--------------------------------------------------------------------------------------
91 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_INTERFACE_H_ */