X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_OperationFeature.h;h=ab0ce8c900ab13485f5ecf6333ff950674daf10b;hb=450d1bd65c11870d3942a30164518037b9a7503e;hp=cc937e1a41017dc0a5f1cf4c7dbcee628920641a;hpb=03936c76cd52c555961e4636e640c12fe2d47f2f;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_OperationFeature.h b/src/ModuleBase/ModuleBase_OperationFeature.h index cc937e1a4..ab0ce8c90 100755 --- a/src/ModuleBase/ModuleBase_OperationFeature.h +++ b/src/ModuleBase/ModuleBase_OperationFeature.h @@ -14,12 +14,15 @@ #include #include +#include #include #include #include #include +#include + class ModuleBase_ModelWidget; class ModuleBase_ISelection; class ModuleBase_IViewer; @@ -58,31 +61,22 @@ Q_OBJECT /// Destructor virtual ~ModuleBase_OperationFeature(); - /** - * 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 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 operation mode from create to edit. + /// The transaction and the operation name in the model history of transaction are the same. + /// It updates the edit state in the widgets of property panel + /// \param theRestartTransaction if true, the current model transaction is committed and + /// the new one is started + void setEditOperation(const bool theRestartTransaction); /// 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 @@ -91,6 +85,11 @@ Q_OBJECT /// Returns True if the current operation works with the given object (feature or result) virtual bool hasObject(ObjectPtr theObj) const; + /// Returns true if the object is displayed when the operation was started + /// \param theObject a feature or result of the operation feature + /// \return boolean value whether the object display state was changed + virtual bool isDisplayedOnStart(ObjectPtr theObject); + /// Initialisation of operation with preliminary selection /// \param theSelection an instance of Selection class /// \param theViewer a viewer to have the viewer the eye position @@ -115,6 +114,14 @@ Q_OBJECT /// \return Installed parent feature (can be NULL) CompositeFeaturePtr parentFeature() const; + /// Stores the previous to the operation current feature + /// \param theFeature a feature + void setPreviousCurrentFeature(const FeaturePtr& theFeature); + + /// Returns the previous to the operation current feature + /// \return theFeature a feature + FeaturePtr previousCurrentFeature(); + signals: /// The operation is filled with existing preselection void activatedByPreselection(); @@ -126,7 +133,8 @@ 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(); /// Aborts operation /// Public slot. Aborts operation. This slot is not virtual and cannot be redefined. @@ -139,6 +147,12 @@ signals: bool commit(); protected: + /// Displays the feature/results if it is hidden. It will be hided in stopOperation + virtual void startOperation(); + + /// Hide feature/results if they were hided on start + virtual void stopOperation(); + /// Creates an operation new feature /// \param theFlushMessage the flag whether the create message should be flushed /// \returns the created feature @@ -151,22 +165,24 @@ signals: /// The operation feature to be handled FeaturePtr myFeature; + /// a list of hidden objects, whic are diplayed by operation start + /// and should be hidden by operation stop + std::set myVisualizedObjects; + /// Editing feature flag bool myIsEditing; - /// List of nested operations IDs - QStringList myNestedFeatures; - /// List of pre-selected object QList myPreSelection; /// 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; + CompositeFeaturePtr myParentFeature; - /// Last current feature before editing operation - FeaturePtr myCurrentFeature; + /// Last current feature before editing operation. It is cashed when Edit operation is started + /// in order to restore the document current feature on commit/abort this operation. + FeaturePtr myPreviousCurrentFeature; }; #endif