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   void setIsOpened(bool theOpened) { myIsOpened = theOpened; }
81
82  public slots:
83   virtual bool activateModule(SUIT_Study* theStudy);
84   virtual bool deactivateModule(SUIT_Study* theStudy);
85
86  protected slots:
87   virtual void onViewManagerAdded(SUIT_ViewManager* theMgr);
88
89  protected:
90   CAM_DataModel* createDataModel();
91
92  private:
93   NewGeom_OCCSelector* createSelector(SUIT_ViewManager* theMgr);
94
95   QStringList myActionsList;
96
97   XGUI_Workshop* myWorkshop;
98
99   NewGeom_OCCSelector* mySelector;
100
101   NewGeom_SalomeViewer* myProxyViewer;
102
103   QMap<QString, QStringList> myNestedActions;
104
105   bool myIsOpened;
106 };
107
108 #endif