Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / NewGeom / NewGeom_Module.h
1
2 #ifndef NewGeom_Module_H
3 #define NewGeom_Module_H
4
5 #include "NewGeom.h"
6 #include "NewGeom_SalomeViewer.h"
7
8 #include <LightApp_Module.h>
9 #include <XGUI_SalomeConnector.h>
10
11 #include <QStringList>
12 #include <QMap>
13
14 class XGUI_Workshop;
15 class NewGeom_OCCSelector;
16 class OCCViewer_Viewer;
17
18 /** 
19  * An implementation of SALOME connector class for implementation of
20  * XGUI functionality as a module of SALOME
21  */
22 class NewGeom_EXPORT NewGeom_Module : public LightApp_Module, public XGUI_SalomeConnector
23 {
24 Q_OBJECT
25  public:
26   NewGeom_Module();
27   virtual ~NewGeom_Module();
28
29   //----- LightAPP_Module interface ---------------
30   virtual void initialize(CAM_Application* theApp);
31   virtual void windows(QMap<int, int>& theWndMap) const;
32   virtual void viewManagers(QStringList& theList) const;
33   virtual void selectionChanged();
34
35   //--- XGUI connector interface -----
36   virtual QAction* addFeature(const QString& theWBName, const QString& theId,
37                               const QString& theTitle, const QString& theTip, const QIcon& theIcon,
38                               const QKeySequence& theKeys = QKeySequence(),
39                               bool isCheckable = false);
40
41   virtual QAction* addEditCommand(const QString& theId, const QString& theTitle,
42                                   const QString& theTip, const QIcon& theIcon,
43                                   const QKeySequence& theKeys, bool isCheckable);
44
45   virtual void addEditMenuSeparator();
46
47   virtual QMainWindow* desktop() const;
48
49   virtual QString commandId(const QAction* theCmd) const;
50
51   virtual QAction* command(const QString& theId) const;
52
53   //! Set nested actions dependent on command Id
54   //! \param theId - the command ID
55   //! \param theActions - the list of nested actions
56   virtual void setNestedActions(const QString& theId, const QStringList& theActions);
57
58   //! Returns list of nested actions according to the given command ID
59   virtual QStringList nestedActions(const QString& theId) const;
60
61   //! Returns interface to Salome viewer
62   virtual XGUI_SalomeViewer* viewer() const
63   {
64     return myProxyViewer;
65   }
66
67   //! Returns list of defined actions (just by NewGeom module)
68   virtual QList<QAction*> commandList() const;
69
70   //! Returns list of Ids of defined actions (just by NewGeom module)
71   virtual QStringList commandIdList() const;
72
73   virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
74
75   virtual void createPreferences();
76   virtual void preferencesChanged(const QString& theSection, const QString& theParam);
77
78   XGUI_Workshop* workshop() const { return myWorkshop; }
79
80  public slots:
81   virtual bool activateModule(SUIT_Study* theStudy);
82   virtual bool deactivateModule(SUIT_Study* theStudy);
83
84  protected slots:
85   virtual void onViewManagerAdded(SUIT_ViewManager* theMgr);
86
87  protected:
88   CAM_DataModel* createDataModel();
89
90  private:
91   NewGeom_OCCSelector* createSelector(SUIT_ViewManager* theMgr);
92
93   QStringList myActionsList;
94
95   XGUI_Workshop* myWorkshop;
96
97   NewGeom_OCCSelector* mySelector;
98
99   NewGeom_SalomeViewer* myProxyViewer;
100
101   QMap<QString, QStringList> myNestedActions;
102 };
103
104 #endif