Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / ModuleBase / ModuleBase_IModule.h
1 #ifndef ModuleBase_IModule_H\r
2 #define ModuleBase_IModule_H\r
3 \r
4 #include <QString>\r
5 #include <QObject>\r
6 \r
7 class QAction;\r
8 class XGUI_Workshop;\r
9 class Config_WidgetAPI;\r
10 class ModuleBase_ModelWidget;\r
11 \r
12 /**\r
13  * Interface to a module\r
14  */\r
15 class ModuleBase_IModule : public QObject\r
16 {\r
17  public:\r
18   /// Reads description of features from XML file \r
19   virtual void createFeatures() = 0;\r
20 \r
21   /// Called on creation of menu item in desktop\r
22   virtual void featureCreated(QAction*) = 0;\r
23 \r
24   /// Creates an operation and send it to loop\r
25   /// \param theCmdId the operation name\r
26   virtual void launchOperation(const QString& theCmdId) = 0;\r
27 \r
28   /// Called when it is necessary to update a command state (enable or disable it)\r
29   //virtual bool isFeatureEnabled(const QString& theCmdId) const = 0;\r
30 \r
31   /// Creates custom widgets for property panel\r
32   virtual QWidget* createWidgetByType(const std::string& theType, QWidget* theParent,\r
33                                       Config_WidgetAPI* theWidgetApi,\r
34                                       QList<ModuleBase_ModelWidget*>& theModelWidgets)\r
35   {\r
36     return 0;\r
37   }\r
38 \r
39   virtual ~ModuleBase_IModule()\r
40   {\r
41   }\r
42   ;\r
43 };\r
44 \r
45 //! This function must return a new module instance.\r
46 extern "C" {\r
47 typedef ModuleBase_IModule* (*CREATE_FUNC)(XGUI_Workshop*);\r
48 }\r
49 \r
50 #define CREATE_MODULE "createModule"\r
51 \r
52 #endif //ModuleBase_IModule\r