Salome HOME
Provide preferences in Salome mode
[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  public slots:
79   virtual bool activateModule(SUIT_Study* theStudy);
80   virtual bool deactivateModule(SUIT_Study* theStudy);
81
82  protected slots:
83   virtual void onViewManagerAdded(SUIT_ViewManager* theMgr);
84
85  protected:
86   CAM_DataModel* createDataModel();
87
88  private:
89   NewGeom_OCCSelector* createSelector(SUIT_ViewManager* theMgr);
90
91   QStringList myActionsList;
92
93   XGUI_Workshop* myWorkshop;
94
95   NewGeom_OCCSelector* mySelector;
96
97   NewGeom_SalomeViewer* myProxyViewer;
98
99   QMap<QString, QStringList> myNestedActions;
100 };
101
102 #endif