Salome HOME
It removes SketchShapePlugin from plugins
[modules/shaper.git] / src / ModuleBase / ModuleBase_OperationFeature.h
index c2eeb0087459168239810d314131e1a948605d75..ab0ce8c900ab13485f5ecf6333ff950674daf10b 100755 (executable)
 #include <ModuleBase_Operation.h>
 #include <ModuleBase_ViewerPrs.h>
 
+#include <ModelAPI_Object.h>
 #include <ModelAPI_CompositeFeature.h>
 
 #include <QObject>
 #include <QString>
 #include <QStringList>
 
+#include <set>
+
 class ModuleBase_ModelWidget;
 class ModuleBase_ISelection;
 class ModuleBase_IViewer;
@@ -61,6 +64,13 @@ Q_OBJECT
   /// Returns True id the current operation is launched in editing mode
   bool isEditOperation() const { return myIsEditing; }
 
+  /// 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;
@@ -75,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
@@ -99,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(); 
@@ -110,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.
@@ -123,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
@@ -135,6 +165,10 @@ 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<ObjectPtr> myVisualizedObjects;
+
   /// Editing feature flag
   bool myIsEditing;
 
@@ -144,7 +178,7 @@ signals:
   /// 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. It is cashed when Edit operation is started
   /// in order to restore the document current feature on commit/abort this operation.