#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;
/// 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; }
-
/// 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
/// 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
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
/// 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;
- /// List of nested operations IDs
- QStringList myNestedFeatures;
-
/// List of pre-selected object
QList<ModuleBase_ViewerPrs> 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