Salome HOME
4b970e1ac6379473357a2c4ac0b694be26205c29
[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   //! Set the document kind of the action by the given command Id
62   //! \param theId - the command ID
63   //! \param theKind - the document kind
64   virtual void setDocumentKind(const QString& theId, const QString& theKind);
65
66   //! Returns the document kind of the action by the given command ID
67   virtual QString documentKind(const QString& theId) const;
68
69   //! Returns interface to Salome viewer
70   virtual ModuleBase_IViewer* viewer() const
71   {
72     return myProxyViewer;
73   }
74
75   //! Returns list of defined actions (just by NewGeom module)
76   virtual QList<QAction*> commandList() const;
77
78   //! Returns list of Ids of defined actions (just by NewGeom module)
79   virtual QStringList commandIdList() const;
80
81   virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle);
82
83   virtual void createPreferences();
84   virtual void preferencesChanged(const QString& theSection, const QString& theParam);
85
86   XGUI_Workshop* workshop() const { return myWorkshop; }
87
88   void setIsOpened(bool theOpened) { myIsOpened = theOpened; }
89
90  public slots:
91   virtual bool activateModule(SUIT_Study* theStudy);
92   virtual bool deactivateModule(SUIT_Study* theStudy);
93
94  protected slots:
95   virtual void onViewManagerAdded(SUIT_ViewManager* theMgr);
96   void onDefaultPreferences();
97
98  protected:
99   CAM_DataModel* createDataModel();
100   virtual QtxPopupMgr* popupMgr();
101
102  private:
103   NewGeom_OCCSelector* createSelector(SUIT_ViewManager* theMgr);
104
105   QStringList myActionsList;
106
107   XGUI_Workshop* myWorkshop;
108
109   NewGeom_OCCSelector* mySelector;
110
111   NewGeom_SalomeViewer* myProxyViewer;
112
113   QMap<QString, QStringList> myNestedActions;
114   QMap<QString, QString> myDocumentType;
115
116   bool myIsOpened;
117   bool myIsStorePositions;
118
119   QtxPopupMgr* myPopupMgr;
120 };
121
122 #endif