X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=3f857ff12400d7f12e68d8f34869a788b504ac65;hb=d86c77d1c6210bbe04fbc3e5b00f9e212e1ec930;hp=50e0a44cc0759dc0702f330cc29d552712a5c36c;hpb=366bd43e7fec56e20a6588f5e0522a154a921e96;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 50e0a44cc..3f857ff12 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -2,7 +2,7 @@ #define XGUI_WORKSHOP_H #include "XGUI.h" -#include +#include #include #include @@ -15,22 +15,30 @@ class XGUI_Module; class XGUI_Workbench; class XGUI_SelectionMgr; class XGUI_Displayer; +class XGUI_OperationMgr; +class XGUI_SalomeConnector; +class XGUI_ObjectsBrowser; +class XGUI_ActionsMgr; +class XGUI_ErrorDialog; class ModuleBase_Operation; class ModuleBase_PropPanelOperation; class Config_FeatureMessage; class Config_PointerMessage; +class QWidget; +class QDockWidget; + /**\class XGUI_Workshop * \ingroup GUI * \brief Class which defines a configuration of the application (Workshop) and launches it. */ -class XGUI_EXPORT XGUI_Workshop: public QObject, public Event_Listener +class XGUI_EXPORT XGUI_Workshop: public QObject, public Events_Listener { Q_OBJECT public: - XGUI_Workshop(); + XGUI_Workshop(XGUI_SalomeConnector* theConnector = 0); virtual ~XGUI_Workshop(); //! Starting of the application @@ -46,16 +54,29 @@ public: XGUI_SelectionMgr* selector() const { return mySelector; } //! Returns displayer - XGUI_Displayer* displayer() const { return myDisplayer; } + XGUI_Displayer* displayer() const; + + //! ! Returns operation manager. + XGUI_OperationMgr* operationMgr() const { return myOperationMgr; } //! Creates and adds a new workbench (menu group) with the given name and returns it XGUI_Workbench* addWorkbench(const QString& theName); - //! Returns the current operation or NULL - ModuleBase_Operation* currentOperation() { return myCurrentOperation; } + //! Redefinition of Events_Listener method + virtual void processEvent(const Events_Message* theMessage); + + XGUI_SalomeConnector* salomeConnector() const { return mySalomeConnector; } + + //! Returns true if the application works as SALOME module + bool isSalomeMode() const { return mySalomeConnector != 0; } - //! Redefinition of Event_Listener method - virtual void processEvent(const Event_Message* theMessage); + //! Returns Object browser + XGUI_ObjectsBrowser* objectBrowser() const { return myObjectBrowser; } + + void salomeViewerSelectionChanged(); + +signals: + void salomeViewerSelection(); public slots: void updateCommandStatus(); @@ -68,12 +89,31 @@ public slots: void onUndo(); void onRedo(); + void showPropertyPanel(); + void hidePropertyPanel(); + void showObjectBrowser(); + void hideObjectBrowser(); + + void onFeatureTriggered(); + void changeCurrentDocument(); + +signals: + void errorOccurred(const QString&); + protected: //Event-loop processing methods: void addFeature(const Config_FeatureMessage*); - void fillPropertyPanel(ModuleBase_PropPanelOperation* theOperation); - void connectToPropertyPanel(ModuleBase_Operation* theOperation); - void setCurrentOperation(ModuleBase_Operation* theOperation); + void connectWithOperation(ModuleBase_Operation* theOperation); + void saveDocument(QString theName); + +protected slots: + /// SLOT, that is called after the operation is started. Update workshop state according to + /// the started operation, e.g. visualizes the property panel and connect to it. + void onOperationStarted(); + /// SLOT, that is called after the operation is stopped. Update workshop state, e.g. + /// hides the property panel and udpate the command status. + /// \param theOpertion a stopped operation + void onOperationStopped(ModuleBase_Operation* theOperation); private: void initMenu(); @@ -81,13 +121,24 @@ private: XGUI_Module* loadModule(const QString& theModule); bool activateModule(); + QDockWidget* createObjectBrowser(QWidget* theParent); + QDockWidget* createPropertyPanel(QWidget* theParent); + + // Creates Dock widgets: Object browser and Property panel + void createDockWidgets(); + void setPropertyPannelTitle(const QString& theTitle); + + QString myCurrentFile; XGUI_MainWindow* myMainWindow; XGUI_Module* myPartSetModule; - + XGUI_ObjectsBrowser* myObjectBrowser; + QDockWidget* myPropertyPanelDock; XGUI_SelectionMgr* mySelector; XGUI_Displayer* myDisplayer; - - ModuleBase_Operation* myCurrentOperation; + XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations + XGUI_ActionsMgr* myActionsMgr; + XGUI_SalomeConnector* mySalomeConnector; + XGUI_ErrorDialog* myErrorDlg; }; #endif