X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=d2423262c0d08803c5a1fe2d56e54363706bffda;hb=5e6c61f177b2d7f07fcf94abaf96de4f8366f27b;hp=dbf160d15105689a1fcf31346a25f7752e00e628;hpb=3f24e90e54348a9e4d93adb08759361fce8716d4;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index dbf160d15..d2423262c 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -1,21 +1,24 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + #ifndef XGUI_WORKSHOP_H #define XGUI_WORKSHOP_H #include "XGUI.h" -#include "XGUI_Constants.h" +//#include "XGUI_Constants.h" #include #include -#include #include +#include #include #include -#include #include +#include + +class AppElements_MainWindow; +class AppElements_Command; +class AppElements_Workbench; -class XGUI_MainWindow; -class XGUI_Command; -class XGUI_Workbench; class XGUI_SelectionMgr; class XGUI_Displayer; class XGUI_OperationMgr; @@ -31,6 +34,7 @@ class XGUI_ModuleConnector; class ModuleBase_Operation; class ModuleBase_IModule; +class ModuleBase_IViewer; class Config_FeatureMessage; class Config_PointerMessage; @@ -40,6 +44,7 @@ class QDockWidget; class ModelAPI_ObjectUpdatedMessage; class ModelAPI_ObjectDeletedMessage; +class ModelAPI_ResultPart; class QAction; /**\class XGUI_Workshop @@ -58,7 +63,7 @@ Q_OBJECT void startApplication(); //! Returns main window (Desktop) of the application - XGUI_MainWindow* mainWindow() const + AppElements_MainWindow* mainWindow() const { return myMainWindow; } @@ -86,7 +91,6 @@ Q_OBJECT { return myActionsMgr; } - ; //! Returns property panel widget XGUI_PropertyPanel* propertyPanel() const @@ -101,10 +105,10 @@ Q_OBJECT } //! Creates and adds a new workbench (menu group) with the given name and returns it - XGUI_Workbench* addWorkbench(const QString& theName); + AppElements_Workbench* addWorkbench(const QString& theName); //! Redefinition of Events_Listener method - virtual void processEvent(const Events_Message* theMessage); + virtual void processEvent(const std::shared_ptr& theMessage); //! Returns an object which provides interface to Salome Module (LightApp_Module) XGUI_SalomeConnector* salomeConnector() const @@ -113,7 +117,7 @@ Q_OBJECT } //! 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 @@ -141,34 +145,58 @@ Q_OBJECT return myModuleConnector; } - //! Returns icon name according to feature Id - static QString featureIcon(const std::string& theId); + //! Returns icon name according to feature + static QIcon featureIcon(const FeaturePtr& theFeature); //! Activates or deactivates a part //! If PartPtr is Null pointer then PartSet will be activated - void activatePart(ResultPartPtr theFeature); + void activatePart(std::shared_ptr theFeature); //! Delete features - void deleteObjects(const QList& theList); + void deleteObjects(const QObjectPtrList& theList); //! Show the given features in 3d Viewer - void showObjects(const QList& theList, bool isVisible); + void showObjects(const QObjectPtrList& theList, bool isVisible); //! Show the given features in 3d Viewer - void showOnlyObjects(const QList& theList); + void showOnlyObjects(const QObjectPtrList& theList); + + void setDisplayMode(const QObjectPtrList& 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&); + //! the signal about the workshop actions states are updated. + void commandStatusUpdated(); public slots: void updateCommandStatus(); - void updateCommandsOnViewSelection(); void onNew(); void onOpen(); @@ -177,6 +205,7 @@ signals: void onExit(); void onUndo(); void onRedo(); + void onRebuild(); void onPreferences(); void showPropertyPanel(); @@ -189,21 +218,29 @@ signals: void activateLastPart(); + void closeDocument(); + protected: + // Find the nested features and set them into the operation + // \param theOperation an operation + void setNestedFeatures(ModuleBase_Operation* theOperation); + // Update the property panel content by the XML description of the operation and set the panel + // into the operation + // \param theOperation an operation + void setPropertyPanel(ModuleBase_Operation* theOperation); + + bool event(QEvent * theEvent); //Event-loop processing methods: - void addFeature(const Config_FeatureMessage*); + void addFeature(const std::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 std::shared_ptr& theMsg); + void onFeatureCreatedMsg(const std::shared_ptr& theMsg); + void onFeatureRedisplayMsg(const std::shared_ptr& theMsg); + void onObjectDeletedMsg(const std::shared_ptr& theMsg); void validateOperation(const QString& theOperationId); - QList getModuleCommands() const; - void displayAllResults(); void displayDocumentResults(DocumentPtr theDoc); void displayGroupResults(DocumentPtr theDoc, std::string theGroup); @@ -211,11 +248,26 @@ signals: 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(); + /// \param theOpertion a started operation + void onOperationStarted(ModuleBase_Operation* theOperation); + + /// SLOT, that is called after the operation is resumed. Update workshop state according to + /// the started operation, e.g. visualizes the property panel and connect to it. + /// \param theOpertion a resumed operation + virtual void onOperationResumed(ModuleBase_Operation* theOperation); + /// 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); + virtual void onOperationStopped(ModuleBase_Operation* theOperation); + + /// SLOT, that is called after the operation is committed. + /// \param theOpertion a commmitted operation + virtual void onOperationCommitted(ModuleBase_Operation* theOperation); + + /// SLOT, that is called after the operation is aborted. + /// \param theOpertion an aborted operation + void onOperationAborted(ModuleBase_Operation* theOperation); void onContextMenuCommand(const QString& theId, bool isChecked); @@ -237,7 +289,11 @@ signals: // Creates Dock widgets: Object browser and Property panel void createDockWidgets(); - XGUI_MainWindow* myMainWindow; + /// Displaus object and fit all viewer if the object is first (update viewer will not be called) + void displayObject(ObjectPtr theObj); + +private: + AppElements_MainWindow* myMainWindow; ModuleBase_IModule* myModule; XGUI_ObjectsBrowser* myObjectBrowser; XGUI_PropertyPanel* myPropertyPanel; @@ -255,6 +311,9 @@ signals: static QMap myIcons; bool myUpdatePrefs; + + // Flag to check that part document is in process of activating + bool myPartActivating; }; #endif