X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_ActionsMgr.h;h=27f43885a54127178f6cb000471f76418cd3f2af;hb=423f6b0a08a86d5e47115b87603cddeae4468b49;hp=cbff72d128403194a4c6858a045df346833b9326;hpb=b69a4c4ae0f7eb0e9c17d3db0229b04b1fe77ecf;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ActionsMgr.h b/src/XGUI/XGUI_ActionsMgr.h index cbff72d12..27f43885a 100644 --- a/src/XGUI/XGUI_ActionsMgr.h +++ b/src/XGUI/XGUI_ActionsMgr.h @@ -12,6 +12,8 @@ #include #include +#include + #include #include #include @@ -37,12 +39,14 @@ class XGUI_EXPORT XGUI_ActionsMgr : public QObject, public Events_Listener XGUI_ActionsMgr(XGUI_Workshop* theWorkshop); virtual ~XGUI_ActionsMgr(); + /// Actions on operations enum OperationStateActionId { Abort = 0, Accept = 1, Help = 2, AbortAll = 3, - AcceptAll = 4 + AcceptAll = 4, + Preview = 5 }; //! Add a command in the manager. @@ -75,36 +79,52 @@ class XGUI_EXPORT XGUI_ActionsMgr : public QObject, public Events_Listener //! Return property panel's action like ok, cancel, help. //! If there is no such action, it will be created. - QAction* operationStateAction(OperationStateActionId theId, QObject* theParent = 0); + QAction* operationStateAction(OperationStateActionId theId); + + /// Return an action by the given id, if it was registered in the manager + QAction* action(const QString& theId); - public slots: + /// Return info (icon, text, etc) about the action by the given id, + /// if it was registered in the manager + ActionInfo actionInfoById(const QString& theId); + + private: //! Update workbench actions according to OperationMgr state: //! No active operations: all actions but nested are available //! There is active operation: current operation + it's nested //! are enabled, all the rest is disabled. All active commands is checked. - void update(); + void updateCommandsStatus(); + //! Sets all commands checked if it's operation is active. void updateCheckState(); + //! Updates actions according to current selection in the viewer void updateOnViewSelection(); - protected: - //! Sets all actions to isEnabled state. - void setAllEnabled(bool isEnabled); + //! Sets all actions to enabled state. + void setAllEnabled(); + //! Sets all nested actions to isEnabled state for the command with given ID. //! If ID is empty - all nested actions will be affected. void setNestedCommandsEnabled(bool isEnabled, const QString& theParent = QString()); + //! Sets to enabled state all siblings of the given operation and it's parents recursively void setNestedStackEnabled(ModuleBase_Operation* theOperation); + //! Sets the action with theId to theChecked state. void setActionChecked(const QString& theId, const bool theChecked); + //! Sets the action with theId to theEnabled state. void setActionEnabled(const QString& theId, const bool theEnabled); + //! Updates actions according to their "document" tag void updateByDocumentKind(); + //! Asks plugins about their features state, using the Events system void updateByPlugins(FeaturePtr theActiveFeature); + QStringList allNestedCommands(ModuleBase_Operation* theOperation); + private: QMap myActions; @@ -114,6 +134,8 @@ class XGUI_EXPORT XGUI_ActionsMgr : public QObject, public Events_Listener XGUI_Workshop* myWorkshop; XGUI_OperationMgr* myOperationMgr; + + friend class XGUI_Workshop; }; #endif /* XGUI_ACTIONSMGR_H_ */