1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
3 #ifndef XGUI_WORKSHOP_LISTENER_H
4 #define XGUI_WORKSHOP_LISTENER_H
7 #include <Events_Listener.h>
8 #include <Events_Message.h>
10 #include <ModelAPI_Feature.h>
14 class Config_FeatureMessage;
16 class ModelAPI_ObjectUpdatedMessage;
19 class ModuleBase_IWorkshop;
23 /**\class XGUI_WorkshopListener
25 * \brief Class which process the events from the event loop.
27 class XGUI_EXPORT XGUI_WorkshopListener : public QObject, public Events_Listener
32 /// \param theConnector a Salome connector object.
33 /// Used only if the workshop is launched in Salome environment
34 XGUI_WorkshopListener(ModuleBase_IWorkshop* theWorkshop);
35 virtual ~XGUI_WorkshopListener();
37 /// Register this class in the events loop for several types of events
38 void initializeEventListening();
40 //! Redefinition of Events_Listener method
41 virtual void processEvent(const std::shared_ptr<Events_Message>& theMessage);
44 /// Emitted when error in applivation happens
45 void errorOccurred(const QString&);
48 /// Updates Apply All button state of the feature to the state if the feature has the button
49 /// \param theFeatureId an index of the feature, the action is searched, which state is to be changed
50 /// \param theState an action enable state
51 //void onNestedStateChanged(const std::string& theFeatureId, const bool theState);
54 /// Procedure to process postponed events
55 bool event(QEvent * theEvent);
57 /// Process event "Add a feature"
58 void addFeature(const std::shared_ptr<Config_FeatureMessage>&);
60 /// Process feature update message
61 void onFeatureUpdatedMsg(const std::shared_ptr<ModelAPI_ObjectUpdatedMessage>& );
63 /// Process feature created message
64 void onFeatureCreatedMsg(const std::shared_ptr<ModelAPI_ObjectUpdatedMessage>& );
66 /// Process feature redisplay message
67 void onFeatureRedisplayMsg(const std::shared_ptr<ModelAPI_ObjectUpdatedMessage>& );
69 /// Displaus object and fit all viewer if the object is first (update viewer will not be called)
70 /// Asks the module whether the object can be displayed
71 /// \param theObj an object
72 /// \param theFirstVisualizedBody an output state whether there are not object displayed in the view
73 /// and the displayed object is a body
74 /// \return true if the object is displayed
75 bool displayObject(ObjectPtr theObj, bool& theFirstVisualizedBody);
77 /// Calls the module method of cusomize object for the feature of the current operation
78 /// \return true if the object is modified
79 bool customizeCurrentObject();
81 /// Returns the workshop
82 XGUI_Workshop* workshop() const;
85 ModuleBase_IWorkshop* myWorkshop; // the current workshop