1 #ifndef XGUI_WORKSHOP_H
2 #define XGUI_WORKSHOP_H
5 #include "XGUI_Constants.h"
6 #include <Events_Listener.h>
7 #include <ModuleBase_Definitions.h>
8 #include <ModelAPI_ResultPart.h>
9 #include <ModelAPI_Document.h>
14 #include <QKeySequence>
16 class XGUI_MainWindow;
19 class XGUI_SelectionMgr;
21 class XGUI_OperationMgr;
22 class XGUI_SalomeConnector;
23 class XGUI_ObjectsBrowser;
24 class XGUI_ActionsMgr;
25 class XGUI_ErrorDialog;
26 class XGUI_SalomeViewer;
27 class XGUI_ViewerProxy;
28 class XGUI_PropertyPanel;
29 class XGUI_ContextMenuMgr;
30 class XGUI_ModuleConnector;
32 class ModuleBase_Operation;
33 class ModuleBase_IModule;
35 class Config_FeatureMessage;
36 class Config_PointerMessage;
41 class ModelAPI_ObjectUpdatedMessage;
42 class ModelAPI_ObjectDeletedMessage;
45 /**\class XGUI_Workshop
47 * \brief Class which defines a configuration of the application (Workshop) and launches it.
49 class XGUI_EXPORT XGUI_Workshop : public QObject, public Events_Listener
54 XGUI_Workshop(XGUI_SalomeConnector* theConnector = 0);
55 virtual ~XGUI_Workshop();
57 //! Starting of the application
58 void startApplication();
60 //! Returns main window (Desktop) of the application
61 XGUI_MainWindow* mainWindow() const
66 //! Returns selection manager object
67 XGUI_SelectionMgr* selector() const
73 XGUI_Displayer* displayer() const
78 //! ! Returns operation manager.
79 XGUI_OperationMgr* operationMgr() const
81 return myOperationMgr;
84 //! ! Returns an actions manager
85 XGUI_ActionsMgr* actionsMgr() const
91 //! Returns property panel widget
92 XGUI_PropertyPanel* propertyPanel() const
94 return myPropertyPanel;
97 //! Returns context menu manager object
98 XGUI_ContextMenuMgr* contextMenuMgr() const
100 return myContextMenuMgr;
103 //! Creates and adds a new workbench (menu group) with the given name and returns it
104 XGUI_Workbench* addWorkbench(const QString& theName);
106 //! Redefinition of Events_Listener method
107 virtual void processEvent(const Events_Message* theMessage);
109 //! Returns an object which provides interface to Salome Module (LightApp_Module)
110 XGUI_SalomeConnector* salomeConnector() const
112 return mySalomeConnector;
115 //! Provides an object which provides interface to Salome Viewer
116 XGUI_SalomeViewer* salomeViewer() const;
118 //! Returns true if the application works as SALOME module
119 bool isSalomeMode() const
121 return mySalomeConnector != 0;
124 //! Returns Object browser
125 XGUI_ObjectsBrowser* objectBrowser() const
127 return myObjectBrowser;
130 void salomeViewerSelectionChanged();
132 XGUI_ViewerProxy* viewer() const
134 return myViewerProxy;
137 /// Returns the module connectory
138 /// \returns the instance of connector
139 XGUI_ModuleConnector* moduleConnector() const
141 return myModuleConnector;
144 //! Returns icon name according to feature Id
145 static QString featureIcon(const std::string& theId);
147 //! Activates or deactivates a part
148 //! If PartPtr is Null pointer then PartSet will be activated
149 void activatePart(ResultPartPtr theFeature);
152 void deleteObjects(const QList<ObjectPtr>& theList);
154 //! Show the given features in 3d Viewer
155 void showObjects(const QList<ObjectPtr>& theList, bool isVisible);
157 //! Show the given features in 3d Viewer
158 void showOnlyObjects(const QList<ObjectPtr>& theList);
160 ModuleBase_IModule* module() const
166 void salomeViewerSelection();
167 void errorOccurred(const QString&);
170 void updateCommandStatus();
171 void updateCommandsOnViewSelection();
180 void onPreferences();
182 void showPropertyPanel();
183 void hidePropertyPanel();
184 void showObjectBrowser();
185 void hideObjectBrowser();
187 void onFeatureTriggered();
188 void changeCurrentDocument(ObjectPtr theObj);
190 void activateLastPart();
193 //Event-loop processing methods:
194 void addFeature(const Config_FeatureMessage*);
195 void connectWithOperation(ModuleBase_Operation* theOperation);
196 void saveDocument(QString theName);
198 void onFeatureUpdatedMsg(const ModelAPI_ObjectUpdatedMessage* theMsg);
199 void onFeatureCreatedMsg(const ModelAPI_ObjectUpdatedMessage* theMsg);
200 void onFeatureRedisplayMsg(const ModelAPI_ObjectUpdatedMessage* theMsg);
201 void onObjectDeletedMsg(const ModelAPI_ObjectDeletedMessage* theMsg);
203 void validateOperation(const QString& theOperationId);
205 QList<QAction*> getModuleCommands() const;
207 void displayAllResults();
208 void displayDocumentResults(DocumentPtr theDoc);
209 void displayGroupResults(DocumentPtr theDoc, std::string theGroup);
212 /// SLOT, that is called after the operation is started. Update workshop state according to
213 /// the started operation, e.g. visualizes the property panel and connect to it.
214 void onOperationStarted();
215 /// SLOT, that is called after the operation is stopped. Update workshop state, e.g.
216 /// hides the property panel and udpate the command status.
217 /// \param theOpertion a stopped operation
218 void onOperationStopped(ModuleBase_Operation* theOperation);
220 void onContextMenuCommand(const QString& theId, bool isChecked);
222 void onWidgetValuesChanged();
224 void onStartWaiting();
229 void registerValidators() const;
231 ModuleBase_IModule* loadModule(const QString& theModule);
232 bool activateModule();
234 QDockWidget* createObjectBrowser(QWidget* theParent);
235 QDockWidget* createPropertyPanel(QWidget* theParent);
237 // Creates Dock widgets: Object browser and Property panel
238 void createDockWidgets();
240 XGUI_MainWindow* myMainWindow;
241 ModuleBase_IModule* myModule;
242 XGUI_ObjectsBrowser* myObjectBrowser;
243 XGUI_PropertyPanel* myPropertyPanel;
244 XGUI_SelectionMgr* mySelector;
245 XGUI_Displayer* myDisplayer;
246 XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations
247 XGUI_ActionsMgr* myActionsMgr;
248 XGUI_SalomeConnector* mySalomeConnector;
249 XGUI_ErrorDialog* myErrorDlg;
250 XGUI_ViewerProxy* myViewerProxy;
251 XGUI_ContextMenuMgr* myContextMenuMgr;
252 XGUI_ModuleConnector* myModuleConnector;
254 QString myCurrentDir;
255 static QMap<QString, QString> myIcons;