X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=cddb72f72d5c2eb242fd5784a0ee25e626a06f94;hb=b070f5d30325537aa8cf883a55f8d3315115c384;hp=1cf400d0f89a52956cf8e9d05516641cfea30c80;hpb=4f5cbc32b2621344e253876da67abc1ccd94fe31;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 1cf400d0f..cddb72f72 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -5,7 +5,6 @@ #include "XGUI.h" //#include "XGUI_Constants.h" -#include #include #include #include @@ -21,40 +20,36 @@ class AppElements_MainWindow; class AppElements_Command; class AppElements_Workbench; -class XGUI_SelectionMgr; +class XGUI_ActionsMgr; +class XGUI_ContextMenuMgr; class XGUI_Displayer; +class XGUI_ErrorDialog; +class XGUI_ErrorMgr; +class XGUI_ModuleConnector; +class XGUI_ObjectsBrowser; class XGUI_OperationMgr; +class XGUI_PropertyPanel; class XGUI_SalomeConnector; -class XGUI_ObjectsBrowser; -class XGUI_ActionsMgr; -class XGUI_ErrorDialog; class XGUI_SalomeViewer; +class XGUI_SelectionMgr; class XGUI_ViewerProxy; -class XGUI_PropertyPanel; -class XGUI_ContextMenuMgr; -class XGUI_ModuleConnector; +class XGUI_WorkshopListener; -class ModuleBase_Operation; class ModuleBase_IModule; class ModuleBase_IViewer; - -class Config_FeatureMessage; -class Config_PointerMessage; +class ModuleBase_Operation; class QWidget; class QDockWidget; class QMainWindow; -class ModelAPI_ObjectUpdatedMessage; -class ModelAPI_ObjectDeletedMessage; -class ModelAPI_ResultPart; 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 { Q_OBJECT public: @@ -67,6 +62,12 @@ Q_OBJECT //! Starting of the application void startApplication(); + // Activates the module controls. Should be called after module creation + void activateModule(); + + // Deactivates the module controls. Should be called after module creation + void deactivateModule(); + //! Returns main window (Desktop) of the application AppElements_MainWindow* mainWindow() const { @@ -91,6 +92,12 @@ Q_OBJECT return myOperationMgr; } + //! ! Returns error manager. + XGUI_ErrorMgr* errorMgr() const + { + return myErrorMgr; + } + //! ! Returns an actions manager XGUI_ActionsMgr* actionsMgr() const { @@ -112,9 +119,6 @@ Q_OBJECT //! Creates and adds a new workbench (menu group) with the given name and returns it AppElements_Workbench* addWorkbench(const QString& theName); - //! Redefinition of Events_Listener method - virtual void processEvent(const std::shared_ptr& theMessage); - //! Returns an object which provides interface to Salome Module (LightApp_Module) XGUI_SalomeConnector* salomeConnector() const { @@ -156,15 +160,29 @@ Q_OBJECT /// \return a desktop instance QMainWindow* desktop() const; - //! Returns icon name according to feature - static QIcon featureIcon(const FeaturePtr& theFeature); + //! Delete features + void deleteObjects(); - //! Activates or deactivates a part - //! If PartPtr is Null pointer then PartSet will be activated - void activatePart(std::shared_ptr theFeature); + //! Returns true if the selected feature can be moved to the position after the current feature + //! \return boolean value + bool canMoveFeature(); - //! Delete features - void deleteObjects(const QObjectPtrList& theList); + //! Move selected features to be after the current feature + void moveObjects(); + + //! Returns true if the object can be shaded. If the object is a compsolid result, the method + //! checks subobjects of the result + //! \return boolean value + bool canBeShaded(const ObjectPtr& theObject) const; + + //! Returns true if there is at least one selected body/construction/group result + //! \return boolean value + bool canChangeColor() const; + + //! Change color of the features if it is possible + //! The operation is available for construction, body and group results + //! theObjects a list of selected objects + void changeColor(const QObjectPtrList& theObjects); //! Show the given features in 3d Viewer void showObjects(const QObjectPtrList& theList, bool isVisible); @@ -202,7 +220,30 @@ Q_OBJECT * - operation aborted successfully * - there is no active operation */ - bool isActiveOperationAborted(); + bool abortAllOperations(); + + //! Delete features. Delete the referenced features. There can be a question with a list of referenced + //! objects. + //! \param theList an objects to be deleted + //! \param theIgnoredFeatures a list of features to be ignored during delete + //! \param theParent a parent widget for the question message box + //! \param theAskAboutDeleteReferences if true, the message box with a list of references to the + //! objects features appear. If the user chose do not continue, the deletion is not performed + //! \return the success of the delete + bool deleteFeatures(const QObjectPtrList& theList, + const std::set& theIgnoredFeatures = std::set(), + QWidget* theParent = 0, + const bool theAskAboutDeleteReferences = false); + + /// Deactivates the object, if it is active and the module returns that the activation + /// of selection for the object is not possible currently(the current operation uses it) + /// \param theObject an object + /// \param theUpdateViewer a boolean flag to update viewer immediately + void deactivateActiveObject(const ObjectPtr& theObject, const bool theUpdateViewer); + + /// Returns true if the action of the feature is created to contain Accept/Cancel button + /// \param theFeature a feature + bool isFeatureOfNested(const FeaturePtr& theFeature); signals: /// Emitted when selection happens in Salome viewer @@ -217,7 +258,10 @@ signals: //! the application is started void applicationStarted(); + //! Signal to update Undo history list void updateUndoHistory(const QList&); + + //! Signal to update Redo history list void updateRedoHistory(const QList&); public slots: @@ -266,54 +310,23 @@ signals: /// Hide object Browser void hideObjectBrowser(); - /// Reaction on command call - void onFeatureTriggered(); - - /// Change active document - /// \param theObj a part object. If it is NULL then active document is a main document - void changeCurrentDocument(ObjectPtr theObj); - - //void activateLastPart(); - /// Close document void closeDocument(); protected: - /// Find the nested features and set them into the operation + /// Sets the granted operations for the parameter operation. Firtsly, it finds the nested features + /// and set them into the operation. Secondly, it asks the module about ids of granted operations. /// \param theOperation an operation - void setNestedFeatures(ModuleBase_Operation* theOperation); + void setGrantedFeatures(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); - /// Procedure to process postponed events - bool event(QEvent * theEvent); - - //Event-loop processing methods: - - /// Process event "Add a feature" - void addFeature(const std::shared_ptr&); - - /// Connect to operation signals - /// \param theOperation an operation - void connectWithOperation(ModuleBase_Operation* theOperation); - - /// Process feature update message - void onFeatureUpdatedMsg(const std::shared_ptr& ); - - ///Process feature created message - void onFeatureCreatedMsg(const std::shared_ptr& ); - - /// Process feature redisplay message - void onFeatureRedisplayMsg(const std::shared_ptr& ); - - /// Process feature delete message - void onObjectDeletedMsg(const std::shared_ptr& ); - +private: /// Display all results - void displayAllResults(); + //void displayAllResults(); /// Displau results from document /// \param theDoc a document @@ -351,12 +364,22 @@ signals: /// \param isChecked a state of toggle if the action is checkable void onContextMenuCommand(const QString& theId, bool isChecked); - /// Processing of values changed in model widget - void onWidgetValuesChanged(); - /// Set waiting cursor void onStartWaiting(); + /// Called by Ok button clicked in the property panel. Asks the error manager whether + /// the operation can be commited and do it if it returns true. + void onAcceptActionClicked(); + + /// Listens the corresponded signal from operation manager and send it with the Ok + /// action to operation manager. + /// \param theEnabled an enabled state for the action + //void onValidationStateChanged(bool theEnabled); + + //connect(myOperationMgr, SIGNAL(validationStateChanged(bool)), + // aOkAct, SLOT(setEnabled(bool))); + + private: /// Init menu void initMenu(); @@ -368,8 +391,8 @@ signals: /// \param theModule name of the module ModuleBase_IModule* loadModule(const QString& theModule); - /// Activate module - bool activateModule(); + /// Create module + bool createModule(); /// Create object browser widget /// \param theParent a parent of widget @@ -382,9 +405,6 @@ signals: // Creates Dock widgets: Object browser and Property panel void createDockWidgets(); - /// Displaus object and fit all viewer if the object is first (update viewer will not be called) - void displayObject(ObjectPtr theObj); - //! Extends undo/redo toolbutton's with history menu //! \param theObject - in the OpenParts it is a QToolButton by itself, //! in salome mode - QAction that creates a button. @@ -392,9 +412,13 @@ signals: //! \param theSlot - onUndo(int) or onRedo(int) SLOT void addHistoryMenu(QObject* theObject, const char* theSignal, const char* theSlot); + //! Creates list of actions (commands) by given history list from session + QList processHistoryList(const std::list&) const; + private: AppElements_MainWindow* myMainWindow; ModuleBase_IModule* myModule; + XGUI_ErrorMgr* myErrorMgr; XGUI_ObjectsBrowser* myObjectBrowser; XGUI_PropertyPanel* myPropertyPanel; XGUI_SelectionMgr* mySelector; @@ -406,14 +430,9 @@ private: XGUI_ViewerProxy* myViewerProxy; XGUI_ContextMenuMgr* myContextMenuMgr; XGUI_ModuleConnector* myModuleConnector; + XGUI_WorkshopListener* myEventsListener; QString myCurrentDir; - static QMap myIcons; - - bool myUpdatePrefs; - - // Flag to check that part document is in process of activating - bool myPartActivating; }; #endif