X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_OperationMgr.h;h=0cda5543cac21bd86caa7adc9ea582a2ee03585a;hb=57626695d1a88caac8e7940758a8ba93a8bcc9c2;hp=48b6a7ea2927b4c54be8715cbda86274fd672d3d;hpb=f0f8fbdcadad2d5d42c443e70afc6251faea1469;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_OperationMgr.h b/src/XGUI/XGUI_OperationMgr.h old mode 100644 new mode 100755 index 48b6a7ea2..0cda5543c --- a/src/XGUI/XGUI_OperationMgr.h +++ b/src/XGUI/XGUI_OperationMgr.h @@ -10,6 +10,7 @@ #include "XGUI.h" #include +#include "ModelAPI_Feature.h" #include #include @@ -18,6 +19,7 @@ class QKeyEvent; class ModuleBase_IWorkshop; +class XGUI_Workshop; /**\class XGUI_OperationMgr * \ingroup GUI @@ -34,10 +36,14 @@ Q_OBJECT public: /// Constructor /// \param theParent the parent + /// \param theWorkshop a reference to workshop XGUI_OperationMgr(QObject* theParent, ModuleBase_IWorkshop* theWorkshop); + /// Destructor virtual ~XGUI_OperationMgr(); + /// Set reference to workshop + /// \param theWorkshop reference to workshop void setWorkshop(ModuleBase_IWorkshop* theWorkshop) { myWorkshop = theWorkshop; }; @@ -55,8 +61,10 @@ Q_OBJECT /// Returns true is operation manager has an operation with given Id. bool hasOperation(const QString& theId) const; - /// Returns true if the operation can be aborted - bool canStopOperation(); + /// Returns true if the operation can be aborted. If the operation is modified, + /// the warning message box is shown. + /// \param theOperation an operation which is checked on stop + bool canStopOperation(ModuleBase_Operation* theOperation); /// Find and return operation by its Id. ModuleBase_Operation* findOperation(const QString& theId) const; @@ -82,7 +90,7 @@ Q_OBJECT /// Returns whether the operation can be started. Check if there is already started operation and /// the granted parameter of the launched operation /// \param theId id of the operation which is going to start - bool canStartOperation(QString theId); + bool canStartOperation(const QString& theId); /// Aborts the parameter operation if it is current, else abort operations from the stack /// of operations until the operation is found. All operations upper the parameter one are @@ -90,13 +98,6 @@ Q_OBJECT /// \param theOperation an aborted operation void abortOperation(ModuleBase_Operation* theOperation); - /// Blocking/unblocking enabling of Ok button in property panel. - /// It is used when operation can not be validated even all attributes are valid - void setLockValidating(bool toLock); - - /// Returns state of validation locking - bool isValidationLocked() const { return myIsValidationLock; } - /// Returns enable apply state /// \return theEnabled a boolean value bool isApplyEnabled() const; @@ -135,14 +136,6 @@ signals: /// Emitted when current operation is aborted void operationAborted(ModuleBase_Operation* theOperation); - /// Signal is emitted after the apply enable state changed. - void validationStateChanged(bool); - - /// Signal is emitted after the model is modified. It is emitted for all active operations. - /// \param theFeatureKind a feature id - /// \param theState validity of the operation with the feature kind - void nestedStateChanged(const std::string& theFeatureKind, const bool theState); - /// Signal is emitted after the current operation is filled with existing preselection. void operationActivatedByPreselection(); @@ -167,6 +160,17 @@ protected: // TEMPORARY /// \param theOperation the started operation void resumeOperation(ModuleBase_Operation* theOperation); + /// Returns whether the parameter operation is granted in relation to the previous operation + /// in a stack of started operations. It is used in canStopOperation to avoid warning message + /// when granted operation is aborted, e.g. SketchLine in Sketch + /// \param theId id of the operation which is checked + /// \return boolean result + bool isGrantedOperation(const QString& theId); + + /// Sets the feature as a current in the document + /// \param theFeature a feature + void setCurrentFeature(const FeaturePtr& theFeature); + public slots: /// SLOT, that is called by the key in the property panel is clicked. /// \param theEvent the mouse event @@ -177,18 +181,32 @@ protected: // TEMPORARY /// If there is a suspended operation, restart it. void onOperationStopped(); - /// Slot called on operation start + /// Slot called before operation started. Stores the previous current feature, set the feature + /// of the operation as a current in the document. The previous current feature should be restored + /// by the operation abort/commit + void onBeforeOperationStarted(); + + /// Slot called after operation started void onOperationStarted(); - /// Slot called on operation abort + /// Slot called before operation aborted. Restore the previous current operation + void onBeforeOperationAborted(); + + /// Slot called after operation aborted void onOperationAborted(); - /// Slot called on operation commit + /// Slot called before operation committed. Restore the previous current operation + void onBeforeOperationCommitted(); + + /// Slot called after operation committed void onOperationCommitted(); /// Slot called on operation resume void onOperationResumed(); +private: + XGUI_Workshop* workshop() const; + private: typedef QList Operations; ///< definition for a list of operations Operations myOperations; ///< a stack of started operations. The active operation is on top, @@ -197,9 +215,6 @@ protected: // TEMPORARY /// Current workshop ModuleBase_IWorkshop* myWorkshop; - - /// Lock/Unlock access to Ok button in property panel - bool myIsValidationLock; /// Lock/Unlock access to Ok button in property panel bool myIsApplyEnabled; };