X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2FModuleBase%2FModuleBase_Operation.h;h=0fffbc0fdae9bea6f8bfd4fbf3e9678e2b79f2f1;hb=868158fe6d39b25e60ac528295b1c908821e4af5;hp=c453e6b0616196a613694f90c9cd55214308dc3e;hpb=2a9a6901202ea3a0b8450f2e82473050345dd6e9;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Operation.h b/src/ModuleBase/ModuleBase_Operation.h index c453e6b06..0fffbc0fd 100644 --- a/src/ModuleBase/ModuleBase_Operation.h +++ b/src/ModuleBase/ModuleBase_Operation.h @@ -11,10 +11,6 @@ #define ModuleBase_Operation_H #include -#include - -#include -#include #include #include @@ -23,8 +19,6 @@ class ModuleBase_ModelWidget; class ModuleBase_OperationDescription; class ModuleBase_IPropertyPanel; -class ModuleBase_ISelection; -class ModuleBase_IViewer; class QKeyEvent; @@ -50,13 +44,11 @@ class MODULEBASE_EXPORT ModuleBase_Operation : public QObject Q_OBJECT public: - - /// Appends to operation's history id, if it is an "edit" operation (myIsEditing == true) - static QString EditSuffix() { return "_E"; } /// Constructor /// \param theId the operation identifier /// \param theParent the QObject parent ModuleBase_Operation(const QString& theId = "", QObject* theParent = 0); + /// Destructor virtual ~ModuleBase_Operation(); @@ -64,53 +56,32 @@ Q_OBJECT /// /returns the instance of the description class ModuleBase_OperationDescription* getDescription() const { return myDescription; } - /** - * Must return true if this operation can be launched as nested for any current operation - * and it is not necessary to check this operation on validity. By default - * the operation is not granted. - * The method has to be redefined for granted operations. - */ - virtual bool isGranted(QString theId) const; + /// Returns list of granted operation indices + const QStringList& grantedOperationIds() const; + /// Sets list of operation indices, which can be started without the current operation stop + /// \param theList an ids + void setGrantedOperationIds(const QStringList& theList); + + /// Must return true if this operation can be launched as nested for any current operation + /// and it is not necessary to check this operation on validity. By default + /// the operation is not granted. + /// The method has to be redefined for granted operations. + virtual bool isGranted(QString theId) const; /// Returns True if data of its feature was modified during operation virtual bool isModified() const { return myIsModified; } - /// Returns True id the current operation is launched in editing mode - bool isEditOperation() const { return myIsEditing; } - - /// Returns list of nested features - QStringList nestedFeatures() const { return myNestedFeatures; } - - /// Sets list of nested features - void setNestedFeatures(const QStringList& theList) { myNestedFeatures = theList; } - + /// Change the modified state of the operation + void setIsModified(const bool theIsModified) { myIsModified = theIsModified; } /// Returns operations Id from it's description QString id() const; - /// Returns the operation feature - /// \return the feature - FeaturePtr feature() const; - - /** - * Must return True if the operation's feature is valid. - * Since IOperation does not have any feature returns false. - */ + /// Must return True if the operation's feature is valid. + /// Since IOperation does not have any feature returns false. virtual bool isValid() const; - /// Sets the operation feature - void setFeature(FeaturePtr theFeature); - - /// Returns True if the current operation works with the given object (feature or result) - virtual bool hasObject(ObjectPtr theObj) const; - - /// Initialisation of operation with preliminary selection - /// \param theSelection an instance of Selection class - /// \param theViewer a viewer to have the viewer the eye position - virtual void initSelection(ModuleBase_ISelection* theSelection, - ModuleBase_IViewer* theViewer); - /// \brief Set property pane to the operation /// \param theProp a property panel instance virtual void setPropertyPanel(ModuleBase_IPropertyPanel* theProp); @@ -118,42 +89,30 @@ Q_OBJECT /// \return Currently installed property panel ModuleBase_IPropertyPanel* propertyPanel() const { return myPropertyPanel; } - /// Activates widgets by preselection if it is accepted. Emits signal if the activation is correct - virtual void activateByPreselection(); - - /// If the operation works with feature which is sub-feature of another one - /// then this variable has to be initialised by parent feature - /// before operation feature creating - void setParentFeature(CompositeFeaturePtr theParent); - - /// \return Installed parent feature (can be NULL) - CompositeFeaturePtr parentFeature() const; - signals: /// The operation is started - void started(); + void beforeStarted(); + /// The operation is started + void started(); /// The operation is aborted - void aborted(); + void beforeAborted(); + /// The operation is aborted + void aborted(); /// The operation is committed - void committed(); + void beforeCommitted(); + /// The operation is committed + void committed(); /// The operation is aborted or committed - void stopped(); + void stopped(); /// The operation is resumed - void resumed(); + void resumed(); /// The operation is postponed - void postponed(); - - /// The operation is triggered - /// \param theState a new triggered state - void triggered(bool theState); - - /// The operation is filled with existing preselection - void activatedByPreselection(); + void postponed(); public slots: /// Starts operation @@ -162,10 +121,11 @@ signals: /// to change behavior of operation. There is no point in using this method. It would /// be better to inherit own operator from base one and redefine startOperation method /// instead. - void start(); + /// \return true if the start is successful + virtual bool start(); /// Deactivates current operation which can be resumed later. - void postpone(); + virtual void postpone(); /// Resumes operation /// Public slot. Verifies whether operation can be started and starts operation. @@ -173,23 +133,20 @@ signals: /// to change behavior of operation. There is no point in using this method. It would /// be better to inherit own operator from base one and redefine startOperation method /// instead. - void resume(); + virtual void resume(); /// Aborts operation /// Public slot. Aborts operation. This slot is not virtual and cannot be redefined. /// Redefine abortOperation method to change behavior of operation instead - void abort(); + virtual void abort(); /// Commits operation /// Public slot. Commits operation. This slot is not virtual and cannot be redefined. /// Redefine commitOperation method to change behavior of operation instead - bool commit(); + virtual bool commit(); - /// Alias for start/abort slots - /// Public slot. Aborts operation if false, else does nothing. - /// Provided for S/S compatibility with QAction's toggle(bool) - /// \param theState th flag to abort, if it is true, do nothing, overwise abort - void setRunning(bool theState); + /// Changes the modified flag of the operation + void onValuesChanged(); protected: /// Virtual method called when operation started (see start() method for more description) @@ -206,7 +163,7 @@ signals: virtual void abortOperation() {} /// Virtual method called when operation committed (see commit() method for more description) - virtual void commitOperation() {} + virtual void commitOperation() {}; /// Virtual method called after operation committed (see commit() method for more description) virtual void afterCommitOperation() {} @@ -214,56 +171,22 @@ signals: /// Virtual method called after operation resume (see resume() method for more description) virtual void resumeOperation() {} - /// Creates an operation new feature - /// \param theFlushMessage the flag whether the create message should be flushed - /// \returns the created feature - virtual FeaturePtr createFeature(const bool theFlushMessage = true); - /// Verifies whether this operator can be commited. /// \return Returns TRUE if current operation can be committed, e.g. all parameters are filled virtual bool canBeCommitted() const; - /// Return a widget value point by the selection and the viewer position - /// The default realization returns false - /// \param thePrs the presentation - /// \param theViewer a viewer to have the viewer the eye position - /// \param theX the horizontal coordinate - /// \param theY the vertical coordinate - /// \return true if the point exits in the selection - virtual bool getViewerPoint(ModuleBase_ViewerPrs thePrs, - ModuleBase_IViewer* theViewer, - double& theX, double& theY); - - /// Removes the preselection information and clears the map of preselection - void clearPreselection(); - - protected: - /// The operation feature to be handled - FeaturePtr myFeature; - +private: /// the container to have the operation description - ModuleBase_OperationDescription* myDescription; - - /// Editing feature flag - bool myIsEditing; + ModuleBase_OperationDescription* myDescription; /// Modified feature flag bool myIsModified; - /// List of nested operations IDs - QStringList myNestedFeatures; - - /// List of pre-selected object - QList myPreSelection; + /// List of operations IDs which are granted of the current operation + QStringList myGrantedIds; /// Access to property panel ModuleBase_IPropertyPanel* myPropertyPanel; - - /// If the operation works with feature which is sub-feature of another one - /// then this variable has to be initialised by parent feature - /// before operation feature creating - CompositeFeaturePtr myParentFeature; - }; #endif