X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=458b8a4c415a9a35c8d358ce98d574adc325900a;hb=dbe90044b0b96aa64dfe6609083413da2bdf08ec;hp=5ea558ca2fc4c9763054219dcc7901df7ca83417;hpb=af3e1c3206761f41cbdf56b5ca4da2ac20c62193;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 5ea558ca2..458b8a4c4 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -2,7 +2,11 @@ #define XGUI_WORKSHOP_H #include "XGUI.h" +#include "XGUI_Constants.h" #include +#include +#include +#include #include #include @@ -11,15 +15,22 @@ class XGUI_MainWindow; class XGUI_Command; -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 XGUI_SalomeViewer; +class XGUI_ViewerProxy; +class XGUI_PropertyPanel; +class XGUI_ContextMenuMgr; +class XGUI_ModuleConnector; + class ModuleBase_Operation; -class ModuleBase_PropPanelOperation; +class ModuleBase_IModule; class Config_FeatureMessage; class Config_PointerMessage; @@ -27,14 +38,18 @@ class Config_PointerMessage; class QWidget; class QDockWidget; +class ModelAPI_ObjectUpdatedMessage; +class ModelAPI_ObjectDeletedMessage; +class QAction; + /**\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 +class XGUI_EXPORT XGUI_Workshop : public QObject, public Events_Listener { Q_OBJECT -public: + public: XGUI_Workshop(XGUI_SalomeConnector* theConnector = 0); virtual ~XGUI_Workshop(); @@ -49,13 +64,41 @@ public: } //! Returns selection manager object - XGUI_SelectionMgr* selector() const { return mySelector; } + XGUI_SelectionMgr* selector() const + { + return mySelector; + } //! Returns displayer - XGUI_Displayer* displayer() const; + XGUI_Displayer* displayer() const + { + return myDisplayer; + } //! ! Returns operation manager. - XGUI_OperationMgr* operationMgr() const { return myOperationMgr; } + XGUI_OperationMgr* operationMgr() const + { + return myOperationMgr; + } + + //! ! Returns an actions manager + XGUI_ActionsMgr* actionsMgr() const + { + return myActionsMgr; + } + ; + + //! Returns property panel widget + XGUI_PropertyPanel* propertyPanel() const + { + return myPropertyPanel; + } + + //! Returns context menu manager object + XGUI_ContextMenuMgr* contextMenuMgr() const + { + return myContextMenuMgr; + } //! Creates and adds a new workbench (menu group) with the given name and returns it XGUI_Workbench* addWorkbench(const QString& theName); @@ -63,29 +106,75 @@ public: //! Redefinition of Events_Listener method virtual void processEvent(const Events_Message* theMessage); - XGUI_SalomeConnector* salomeConnector() const { return mySalomeConnector; } + //! Returns an object which provides interface to Salome Module (LightApp_Module) + XGUI_SalomeConnector* salomeConnector() const + { + return mySalomeConnector; + } + + //! Provides an object which provides interface to Salome Viewer + XGUI_SalomeViewer* salomeViewer() const; //! Returns true if the application works as SALOME module - bool isSalomeMode() const { return mySalomeConnector != 0; } + bool isSalomeMode() const + { + return mySalomeConnector != 0; + } //! Returns Object browser - XGUI_ObjectsBrowser* objectBrowser() const { return myObjectBrowser; } + XGUI_ObjectsBrowser* objectBrowser() const + { + return myObjectBrowser; + } void salomeViewerSelectionChanged(); + XGUI_ViewerProxy* viewer() const + { + return myViewerProxy; + } + + /// Returns the module connectory + /// \returns the instance of connector + XGUI_ModuleConnector* moduleConnector() const + { + return myModuleConnector; + } + + //! Returns icon name according to feature Id + static QString featureIcon(const std::string& theId); + + //! Activates or deactivates a part + //! If PartPtr is Null pointer then PartSet will be activated + void activatePart(ResultPartPtr theFeature); + + //! Delete features + void deleteObjects(const QList& theList); + + //! Show the given features in 3d Viewer + void showObjects(const QList& theList, bool isVisible); + + ModuleBase_IModule* module() const + { + return myModule; + } + signals: void salomeViewerSelection(); + void errorOccurred(const QString&); -public slots: + public slots: void updateCommandStatus(); + void updateCommandsOnViewSelection(); void onNew(); void onOpen(); - void onSave(); - void onSaveAs(); + bool onSave(); + bool onSaveAs(); void onExit(); void onUndo(); void onRedo(); + void onPreferences(); void showPropertyPanel(); void hidePropertyPanel(); @@ -93,15 +182,30 @@ public slots: void hideObjectBrowser(); void onFeatureTriggered(); + void changeCurrentDocument(ObjectPtr theObj); - void changeCurrentDocument(); + void activateLastPart(); -protected: + protected: //Event-loop processing methods: void addFeature(const Config_FeatureMessage*); void connectWithOperation(ModuleBase_Operation* theOperation); + void saveDocument(QString theName); + + void onFeatureUpdatedMsg(const ModelAPI_ObjectUpdatedMessage* theMsg); + void onFeatureCreatedMsg(const ModelAPI_ObjectUpdatedMessage* theMsg); + void onFeatureRedisplayMsg(const ModelAPI_ObjectUpdatedMessage* theMsg); + void onObjectDeletedMsg(const ModelAPI_ObjectDeletedMessage* theMsg); + + void validateOperation(const QString& theOperationId); -protected slots: + QList getModuleCommands() const; + + void displayAllResults(); + void displayDocumentResults(DocumentPtr theDoc); + void displayGroupResults(DocumentPtr theDoc, std::string theGroup); + + 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(); @@ -110,10 +214,18 @@ protected slots: /// \param theOpertion a stopped operation void onOperationStopped(ModuleBase_Operation* theOperation); -private: + void onContextMenuCommand(const QString& theId, bool isChecked); + + void onWidgetValuesChanged(); + + void onStartWaiting(); + + private: void initMenu(); - XGUI_Module* loadModule(const QString& theModule); + void registerValidators() const; + + ModuleBase_IModule* loadModule(const QString& theModule); bool activateModule(); QDockWidget* createObjectBrowser(QWidget* theParent); @@ -121,21 +233,23 @@ private: // Creates Dock widgets: Object browser and Property panel void createDockWidgets(); - void setPropertyPannelTitle(const QString& theTitle); - XGUI_MainWindow* myMainWindow; - XGUI_Module* myPartSetModule; - + ModuleBase_IModule* myModule; XGUI_ObjectsBrowser* myObjectBrowser; - QDockWidget* myPropertyPanelDock; - + XGUI_PropertyPanel* myPropertyPanel; XGUI_SelectionMgr* mySelector; XGUI_Displayer* myDisplayer; - - XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations - + XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations + XGUI_ActionsMgr* myActionsMgr; XGUI_SalomeConnector* mySalomeConnector; + XGUI_ErrorDialog* myErrorDlg; + XGUI_ViewerProxy* myViewerProxy; + XGUI_ContextMenuMgr* myContextMenuMgr; + XGUI_ModuleConnector* myModuleConnector; + + QString myCurrentDir; + static QMap myIcons; }; #endif