X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_OperationMgr.h;h=1cf7dcefcbbd5fcbb6a5cc6588f24f313d39a979;hb=340b387f8fe22028900d0f2ba2b81eac538014c4;hp=954f61e88327c1a95b17b8bbbffe3ff67a8b5fde;hpb=02bc870879ae19215d5ef6f721acd5b12d245473;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_OperationMgr.h b/src/XGUI/XGUI_OperationMgr.h index 954f61e88..1cf7dcefc 100644 --- a/src/XGUI/XGUI_OperationMgr.h +++ b/src/XGUI/XGUI_OperationMgr.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + // File: XGUI_OperationMgr.h // Created: 20 Apr 2014 // Author: Natalia ERMOLAEVA @@ -37,12 +39,29 @@ Q_OBJECT /// Returns the current operation or NULL /// \return the current operation ModuleBase_Operation* currentOperation() const; + + /// Check if the given operation is active operation. + /// Also, returns false is ther is no active operation. + bool isCurrentOperation(ModuleBase_Operation* theOperation); + /// Returns true is operation manager has at least one non-null operation. bool hasOperation() const; + + /// Returns true is operation manager has an operation with given Id. + bool hasOperation(const QString& theId) const; + + /// Find and return operation by its Id. + ModuleBase_Operation* findOperation(const QString& theId) const; + /// Returns number of operations in the stack int operationsCount() const; + /// Returns list of all operations IDs - QStringList operationList(); + QStringList operationList() const; + + /// Returns previous (parent) operation if given operation started. + /// else, or if there is no parent - returns NULL + ModuleBase_Operation* previousOperation(ModuleBase_Operation* theOperation) const; virtual bool eventFilter(QObject *theObject, QEvent *theEvent); @@ -53,6 +72,23 @@ Q_OBJECT bool abortAllOperations(); + /// 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 canStopOperation(); + + /// Returns true if the operation can be aborted + bool canAbortOperation(); + + /// 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) { myIsValidationLock = toLock; } + + /// Returns state of validation locking + bool isValidationLocked() const { return myIsValidationLock; } + public slots: /// Slot that commits the current operation. void onCommitOperation(); @@ -63,60 +99,63 @@ Q_OBJECT signals: /// Signal about an operation is started. It is emitted after the start() of operation is done. - void operationStarted(); + void operationStarted(ModuleBase_Operation* theOperation); + /// Signal about an operation is stopped. It is emitted after the stop() of operation is done. /// \param theOperation a stopped operation void operationStopped(ModuleBase_Operation* theOperation); + /// Signal about an operation is resumed. It is emitted after the resume() of operation is done. - void operationResumed(); + void operationResumed(ModuleBase_Operation* theOperation); + + /// Emitted when current operation is Committed + void operationCommitted(ModuleBase_Operation* theOperation); + + /// Emitted when current operation is aborted + void operationAborted(ModuleBase_Operation* theOperation); + /// Signal is emitted after the validate methods calls. void operationValidated(bool); - /// Signal about the necessety of the next widget activating - /// \param theWidget the model widget - void activateNextWidget(ModuleBase_ModelWidget* theWidget); + + /// Signal is emitted after the current operation is filled with existing preselection. + void operationActivatedByPreselection(); + + /// Signal is emitted after the key released click. + void keyEnterReleased(); + protected: /// Commits the current operatin if it is valid - void commitOperation(); + bool commitOperation(); /// Sets the current operation or NULL /// \param theOperation the started operation /// \param isCheckBeforeStart the flag whether to check whether the operation can be started /// \return the state whether the operation is resumed void resumeOperation(ModuleBase_Operation* theOperation); - /// Checks if given operation is Valid, if so sends operationValidated signal - /// \param theOperation to be validated - /// \return validation state (true means valid) - bool validateOperation(ModuleBase_Operation* theOperation); - /// Returns whether the operation can be started. Check if there is already started operation and - /// the granted parameter of the launched operation - /// \param theOperation an operation to check - bool canStartOperation(ModuleBase_Operation* theOperation); - - bool canStopOperation(); - - /// Returns true if the operation can be aborted - bool canAbortOperation(); - - protected slots: - /// Slot that is called by an operation stop. Removes the stopped operation form the stack. - /// If there is a suspended operation, restart it. - void onOperationStopped(); - + public slots: /// SLOT, that is called by the key in the property panel is clicked. /// \param theName the attribute name /// \param theEvent the mouse event - void onKeyReleased(QKeyEvent* theEvent); + bool onKeyReleased(QKeyEvent* theEvent); - /// SLOT, that reacts to the widget activation - /// \param theWidget an activated widget - void onWidgetActivated(ModuleBase_ModelWidget* theWidget); + protected slots: + /// Slot that is called by an operation stop. Removes the stopped operation form the stack. + /// If there is a suspended operation, restart it. + void onOperationStopped(); + void onOperationStarted(); + void onOperationAborted(); + void onOperationCommitted(); + void onOperationResumed(); private: typedef QList Operations; ///< definition for a list of operations Operations myOperations; ///< a stack of started operations. The active operation is on top, // others are suspended and started by the active is finished + + /// Lock/Unlock access to Ok button in property panel + bool myIsValidationLock; }; #endif