X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=3f857ff12400d7f12e68d8f34869a788b504ac65;hb=d86c77d1c6210bbe04fbc3e5b00f9e212e1ec930;hp=9b7980196d9aea866d19d82a88ec041112980f76;hpb=f09c9895be486d30c9aa48da040c3aeb3ccbaa74;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 9b7980196..3f857ff12 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -1,7 +1,9 @@ - #ifndef XGUI_WORKSHOP_H #define XGUI_WORKSHOP_H +#include "XGUI.h" +#include + #include #include #include @@ -10,59 +12,133 @@ class XGUI_MainWindow; class XGUI_Command; class XGUI_Module; - -class XGUI_Workshop: public QObject +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 Events_Listener { - Q_OBJECT +Q_OBJECT public: - enum XCommandId { - NEW_CMD, - OPEN_CMD, - SAVE_CMD, - SAVEAS_CMD, - EXIT_CMD, - UNDO_CMD, - REDO_CMD, - COPY_CMD, - CUT_CMD, - PASTE_CMD, - LAST_CMD - }; - XGUI_Workshop(); - virtual ~XGUI_Workshop(); + XGUI_Workshop(XGUI_SalomeConnector* theConnector = 0); + virtual ~XGUI_Workshop(); - void startApplication(); + //! Starting of the application + void startApplication(); - XGUI_Command* command(XCommandId theId) const; + //! Returns main window (Desktop) of the application + XGUI_MainWindow* mainWindow() const + { + return myMainWindow; + } - XGUI_MainWindow* mainWindow() const { return myMainWindow; } + //! Returns selection manager object + XGUI_SelectionMgr* selector() const { return mySelector; } -public slots: - void onNew(); - void onOpen(); - void onSave(); - void onSaveAs(); - void onExit(); + //! Returns displayer + XGUI_Displayer* displayer() const; -private: - void initMenu(); + //! ! 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); - XGUI_Module* loadModule(const QString& theModule); - void loadModules(); + //! Redefinition of Events_Listener method + virtual void processEvent(const Events_Message* theMessage); - void buildModuleMenu(const QString& theXML); + XGUI_SalomeConnector* salomeConnector() const { return mySalomeConnector; } - int addWorkbench(const QString& theName); - int addPageGroup(int thePageId); - void addCommand(XCommandId theCommandId, int thePageId, int theGroupId, XGUI_Command* theCommand); - XGUI_Command* createMenuCommand(int thePageId, int theGroupId, XCommandId theCmdId, - const QString& theTitle, const QString& theTip, - const QIcon& theIcon = QIcon(), const QKeySequence& theKeys = QKeySequence()); + //! Returns true if the application works as SALOME module + bool isSalomeMode() const { return mySalomeConnector != 0; } - QMap myCommands; + //! Returns Object browser + XGUI_ObjectsBrowser* objectBrowser() const { return myObjectBrowser; } - XGUI_MainWindow* myMainWindow; + void salomeViewerSelectionChanged(); + +signals: + void salomeViewerSelection(); + +public slots: + void updateCommandStatus(); + + void onNew(); + void onOpen(); + void onSave(); + void onSaveAs(); + void onExit(); + 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 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(); + + 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; + XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations + XGUI_ActionsMgr* myActionsMgr; + XGUI_SalomeConnector* mySalomeConnector; + XGUI_ErrorDialog* myErrorDlg; }; -#endif \ No newline at end of file +#endif