X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ActionsMgr.h;h=5c74e2b796c0ce6c43f36438561ffdcec1d74a34;hb=4b713fff3138a7cea908a85b58ed90cf99cfacd1;hp=38b8e167d689f86173b6fc3936991704cae9b02f;hpb=fdfc221732acbce4be6b2c9c444f7c3643812811;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ActionsMgr.h b/src/XGUI/XGUI_ActionsMgr.h index 38b8e167d..5c74e2b79 100644 --- a/src/XGUI/XGUI_ActionsMgr.h +++ b/src/XGUI/XGUI_ActionsMgr.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + /* * XGUI_ActionsMgr.h */ @@ -7,31 +9,63 @@ #include "XGUI.h" +#include +#include + #include #include +#include #include +#include -class XGUI_Command; class XGUI_Workshop; class XGUI_OperationMgr; +class ModuleBase_Operation; class QAction; -class XGUI_EXPORT XGUI_ActionsMgr: public QObject +/** +* \ingroup GUI +* A class for management of actions (features) activation/deactivation +*/ +class XGUI_EXPORT XGUI_ActionsMgr : public QObject, public Events_Listener { - Q_OBJECT +Q_OBJECT -public: + public: + /// Constructor + /// \param theWorkshop an instance of workshop XGUI_ActionsMgr(XGUI_Workshop* theWorkshop); virtual ~XGUI_ActionsMgr(); //! Add a command in the manager. - //! Please note that nested commands in the Salome mode (No XGUI_Command, pure QActions) + //! Please note that nested commands in the Salome mode (No AppElements_Command, pure QActions) //! won't be extracted and should be added manually using the addNestedCommands method. void addCommand(QAction* theCmd); + //! Sets relation between the command (with given Id) and it's nested actions. void addNestedCommands(const QString& theId, const QStringList& theCommands); -public slots: + //! Returns list of nested commands by parent command Id + //! \param theId a parent command Id + QStringList nestedCommands(const QString& theId) const; + + /// Returns True if the given Id is an Id of nested command + /// \param theId an Id to check + bool isNested(const QString& theId) const; + + /// Registers shortcut (key sequence) for the command triggering + /// \param theKeySequence a key sequence to register + QKeySequence registerShortcut(const QKeySequence& theKeySequence); + + /// This is an overloaded function. + /// Registers shortcut (key sequence) for the command triggering + /// \param theKeySequence - string that contain a key sequence to register + QKeySequence registerShortcut(const QString& theKeySequence); + + //! Redefinition of Events_Listener method + virtual void processEvent(const std::shared_ptr& theMessage); + + public slots: //! 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 @@ -39,22 +73,32 @@ public slots: void update(); //! Sets all commands checked if it's operation is active. void updateCheckState(); + //! Updates actions according to current selection in the viewer + void updateOnViewSelection(); -protected: + protected: //! Sets all actions to isEnabled state. void setAllEnabled(bool isEnabled); //! 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); -private: + private: QMap myActions; QMap myNestedActions; + QList myShortcuts; + XGUI_Workshop* myWorkshop; XGUI_OperationMgr* myOperationMgr; };