Salome HOME
14a418d01435fbb58e037a7af0e375118edf6265
[modules/shaper.git] / src / PartSet / PartSet_Module.h
1 #ifndef PartSet_Module_H
2 #define PartSet_Module_H
3
4 #include "PartSet.h"
5
6 #include <XGUI_Module.h>
7 #include <XGUI_Command.h>
8
9 #include <QMap>
10 #include <QObject>
11
12 #include <string>
13
14 #include <boost/shared_ptr.hpp>
15
16 class QMouseEvent;
17 class QKeyEvent;
18 class PartSet_Listener;
19 class ModelAPI_Feature;
20
21 class PARTSET_EXPORT PartSet_Module: public QObject, public XGUI_Module
22 {
23 Q_OBJECT
24
25 public:
26   PartSet_Module(XGUI_Workshop* theWshop);
27   virtual ~PartSet_Module();
28
29   /// Returns the module workshop
30   /// \returns a workshop instance
31   XGUI_Workshop* workshop() const;
32
33   virtual void createFeatures();
34   virtual void featureCreated(XGUI_Command* theFeature);
35   virtual QStringList nestedFeatures(QString theFeature);
36   std::string featureFile(const std::string&);
37
38   /// Creates an operation and send it to loop
39   /// \param theCmdId the operation name
40   virtual void launchOperation(const QString& theCmdId);
41
42   /// Displays or erase the current operation preview, if it has it.
43   /// \param theF
44   /// \param isDisplay the state whether the presentation should be displayed or erased
45   void visualizePreview(boost::shared_ptr<ModelAPI_Feature> theFeature, bool isDisplay);
46
47   /// Updates current operation preview, if it has it.
48   /// \param theCmdId the operation name
49   void updateCurrentPreview(const std::string& theCmdId);
50
51 public slots:
52   void onFeatureTriggered();
53   /// SLOT, that is called after the operation is stopped. Switched off the modfications performed
54   /// by the operation start
55   void onOperationStopped(ModuleBase_Operation* theOperation);
56
57   /// SLOT, that is called by mouse press in the viewer.
58   /// The mouse released point is sent to the current operation to be processed.
59   /// \param theEvent the mouse event
60   void onMousePressed(QMouseEvent* theEvent);
61   /// SLOT, that is called by mouse release in the viewer.
62   /// The mouse released point is sent to the current operation to be processed.
63   /// \param theEvent the mouse event
64   void onMouseReleased(QMouseEvent* theEvent);
65   /// SLOT, that is called by mouse move in the viewer.
66   /// The mouse moved point is sent to the current operation to be processed.
67   /// \param theEvent the mouse event
68   void onMouseMoved(QMouseEvent* theEvent);
69
70   /// SLOT, that is called by the key in the viewer is clicked.
71   /// \param theEvent the mouse event
72   void onKeyRelease(QKeyEvent*);
73
74   /// SLOT, to apply to the current viewer the operation
75   /// \param theX the X projection value
76   /// \param theY the Y projection value
77   /// \param theZ the Z projection value
78   void onPlaneSelected(double theX, double theY, double theZ);
79
80   void onLaunchOperation(std::string theName, boost::shared_ptr<ModelAPI_Feature> theFeature);
81
82   /// SLOT, to switch on/off the multi selection in the viewer
83   /// \param theEnabled the enabled state
84   void onMultiSelectionEnabled(bool theEnabled);
85
86   /// SLOT, to switch on/off the selection in the viewer
87   /// \param theEnabled the enabled state
88   void onSelectionEnabled(bool theEnabled);
89
90   /// SLOT, to visualize the feature in another local context mode
91   /// \param theFeature the feature to be put in another local context mode
92   /// \param theMode the mode appeared on the feature
93   void onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature,
94                             int theMode);
95 protected:
96   /// Creates a new operation
97   /// \param theCmdId the operation name
98   ModuleBase_Operation* createOperation(const std::string& theCmdId);
99
100   /// Sends the operation
101   /// \param theOperation the operation
102   void sendOperation(ModuleBase_Operation* theOperation);
103
104 private:
105   XGUI_Workshop* myWorkshop;
106   PartSet_Listener* myListener;
107
108   std::map<std::string, std::string> myFeaturesInFiles;
109 };
110
111 #endif