X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=764e19f2d626079bbe01ce7dffca429f9ddd32ba;hb=c58d52e4c1562a78b91e222190b2fd6e5bba0ef0;hp=74c20b177a4f38e11d3b18166d66eda1ce7b3736;hpb=871d21cd6e0ab86c79867145cb90a7e9dd7cd830;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 74c20b177..764e19f2d 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -6,13 +6,13 @@ #include #include #include +#include #include #include #include #include - class XGUI_MainWindow; class XGUI_Command; class XGUI_Workbench; @@ -31,6 +31,7 @@ class XGUI_ModuleConnector; class ModuleBase_Operation; class ModuleBase_IModule; +class ModuleBase_IViewer; class Config_FeatureMessage; class Config_PointerMessage; @@ -46,10 +47,10 @@ class QAction; * \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(); @@ -64,48 +65,82 @@ public: } //! Returns selection manager object - XGUI_SelectionMgr* selector() const { return mySelector; } + XGUI_SelectionMgr* selector() const + { + return mySelector; + } //! Returns displayer - XGUI_Displayer* displayer() const { return myDisplayer; } + 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; }; + XGUI_ActionsMgr* actionsMgr() const + { + return myActionsMgr; + } + ; //! Returns property panel widget - XGUI_PropertyPanel* propertyPanel() const { return myPropertyPanel; } + XGUI_PropertyPanel* propertyPanel() const + { + return myPropertyPanel; + } //! Returns context menu manager object - XGUI_ContextMenuMgr* contextMenuMgr() const { return myContextMenuMgr; } + 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); //! Redefinition of Events_Listener method - virtual void processEvent(const Events_Message* theMessage); + virtual void processEvent(const boost::shared_ptr& theMessage); //! Returns an object which provides interface to Salome Module (LightApp_Module) - XGUI_SalomeConnector* salomeConnector() const { return mySalomeConnector; } + XGUI_SalomeConnector* salomeConnector() const + { + return mySalomeConnector; + } //! Provides an object which provides interface to Salome Viewer - XGUI_SalomeViewer* salomeViewer() const; + ModuleBase_IViewer* 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; } + XGUI_ViewerProxy* viewer() const + { + return myViewerProxy; + } /// Returns the module connectory /// \returns the instance of connector - XGUI_ModuleConnector* moduleConnector() const { return myModuleConnector; } + XGUI_ModuleConnector* moduleConnector() const + { + return myModuleConnector; + } //! Returns icon name according to feature Id static QString featureIcon(const std::string& theId); @@ -120,13 +155,42 @@ public: //! Show the given features in 3d Viewer void showObjects(const QList& theList, bool isVisible); - ModuleBase_IModule* module() const { return myModule; } + //! Show the given features in 3d Viewer + void showOnlyObjects(const QList& theList); + + void setDisplayMode(const QList& theList, int theMode); + + ModuleBase_IModule* module() const + { + return myModule; + } + + /// Returns current directory whic contains data files + QString currentDataDir() const { return myCurrentDir; } + + /// Returns current directory whic contains data files + void setCurrentDataDir(const QString& theDir) { myCurrentDir = theDir; } + + /** + * Save the current document into a directory + * \param theName - path to the directory + * \param theFileNames - returned file names created in this directory + */ + void saveDocument(const QString& theName, std::list& theFileNames); + + /* + * If there is an active (uncommited) operation shows a prompt to abort it + * and performs abortion if user agreed. Returns true if + * - operation aborted successfully + * - there is no active operation + */ + bool isActiveOperationAborted(); signals: void salomeViewerSelection(); void errorOccurred(const QString&); -public slots: + public slots: void updateCommandStatus(); void updateCommandsOnViewSelection(); @@ -137,6 +201,8 @@ public slots: void onExit(); void onUndo(); void onRedo(); + void onRebuild(); + void onPreferences(); void showPropertyPanel(); void hidePropertyPanel(); @@ -148,20 +214,28 @@ public slots: void activateLastPart(); -protected: + void closeDocument(); + + protected: + bool event(QEvent * theEvent); //Event-loop processing methods: - void addFeature(const Config_FeatureMessage*); + void addFeature(const boost::shared_ptr&); 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 onFeatureUpdatedMsg(const boost::shared_ptr& theMsg); + void onFeatureCreatedMsg(const boost::shared_ptr& theMsg); + void onFeatureRedisplayMsg(const boost::shared_ptr& theMsg); + void onObjectDeletedMsg(const boost::shared_ptr& theMsg); + + void validateOperation(const QString& theOperationId); QList getModuleCommands() const; -protected slots: + void displayAllResults(); + void displayDocumentResults(DocumentPtr theDoc); + void displayGroupResults(DocumentPtr theDoc, std::string theGroup); + + private 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(); @@ -174,12 +248,13 @@ protected slots: void onWidgetValuesChanged(); -private: + void onStartWaiting(); + + private: void initMenu(); void registerValidators() const; - ModuleBase_IModule* loadModule(const QString& theModule); bool activateModule(); @@ -195,7 +270,7 @@ private: 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; @@ -206,6 +281,10 @@ private: QString myCurrentDir; static QMap myIcons; + bool myUpdatePrefs; + + // Flag to check that part document is in process of activating + bool myPartActivating; }; #endif