X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=764e19f2d626079bbe01ce7dffca429f9ddd32ba;hb=8c99e5e8dd74d99dfbf534bd66b32b70ca134aa7;hp=dad0857074b93a92e6e91d51226012ecf5e5e4ea;hpb=ae347a8a8014a15245199a3bb603413628e3f7d4;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index dad085707..764e19f2d 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -4,6 +4,9 @@ #include "XGUI.h" #include "XGUI_Constants.h" #include +#include +#include +#include #include #include @@ -12,7 +15,6 @@ class XGUI_MainWindow; class XGUI_Command; -class XGUI_Module; class XGUI_Workbench; class XGUI_SelectionMgr; class XGUI_Displayer; @@ -28,6 +30,8 @@ class XGUI_ContextMenuMgr; class XGUI_ModuleConnector; class ModuleBase_Operation; +class ModuleBase_IModule; +class ModuleBase_IViewer; class Config_FeatureMessage; class Config_PointerMessage; @@ -35,14 +39,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(); @@ -57,64 +65,134 @@ 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; + } //! 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(FeaturePtr theFeature); + void activatePart(ResultPartPtr theFeature); //! Delete features - void deleteFeatures(QFeatureList theList); + void deleteObjects(const QList& theList); + + //! Show the given features in 3d Viewer + void showObjects(const QList& theList, bool isVisible); //! Show the given features in 3d Viewer - void showFeatures(QFeatureList theList, bool isVisible); + 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(); void onNew(); void onOpen(); @@ -123,6 +201,8 @@ public slots: void onExit(); void onUndo(); void onRedo(); + void onRebuild(); + void onPreferences(); void showPropertyPanel(); void hidePropertyPanel(); @@ -130,17 +210,32 @@ public slots: void hideObjectBrowser(); void onFeatureTriggered(); - void changeCurrentDocument(FeaturePtr thePart); + void changeCurrentDocument(ObjectPtr theObj); 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); -protected slots: + 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; + + 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(); @@ -151,10 +246,16 @@ protected slots: void onContextMenuCommand(const QString& theId, bool isChecked); -private: + 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); @@ -164,12 +265,12 @@ private: void createDockWidgets(); XGUI_MainWindow* myMainWindow; - XGUI_Module* myPartSetModule; + ModuleBase_IModule* myModule; XGUI_ObjectsBrowser* myObjectBrowser; 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; @@ -180,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