X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_Operation.h;h=97e742eae9d3e346154ac63feb2c6043ab196486;hb=c8e35a67c60489a46aaf7c8ff75001511ac2635b;hp=208e3503581df161ca6895fc7981cc60a8da9818;hpb=976244bad37e04fcebaf8866d7d7a02efd2b7d35;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Operation.h b/src/ModuleBase/ModuleBase_Operation.h index 208e35035..97e742eae 100644 --- a/src/ModuleBase/ModuleBase_Operation.h +++ b/src/ModuleBase/ModuleBase_Operation.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + /* * ModuleBase_Operation.h * @@ -23,12 +25,12 @@ class ModuleBase_OperationDescription; class ModuleBase_IPropertyPanel; class ModuleBase_ISelection; class ModuleBase_IViewer; -class ModuleBase_WidgetValueFeature; class QKeyEvent; /*! - \class ModuleBase_Operation + * \class ModuleBase_Operation + * \ingroup GUI * \brief Base class for all operations * * Base class for all operations. If you perform an action it is reasonable to create @@ -48,6 +50,9 @@ 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 @@ -67,11 +72,6 @@ Q_OBJECT */ virtual bool isGranted(QString theId) const; - /// Sets a list of model widgets, according to the operation feature xml definition - /// \param theXmlRepresentation an xml feature definition - /// \param theWidgets a list of widgets - //void setModelWidgets(const std::string& theXmlRepresentation, - // QList theWidgets); /// Returns True if data of its feature was modified during operation virtual bool isModified() const { return myIsModified; } @@ -86,7 +86,7 @@ Q_OBJECT void setNestedFeatures(const QStringList& theList) { myNestedFeatures = theList; } - // Returns operations Id from it's description + /// Returns operations Id from it's description QString id() const; /// Returns the operation feature @@ -99,50 +99,61 @@ Q_OBJECT */ virtual bool isValid() const; - /// Returns whether the nested operations are enabled. - /// The state can depend on the operation current state. - /// \return enabled state - virtual bool isNestedOperationsEnabled() 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; - //virtual void keyReleased(const int theKey) {}; - - /// If operation needs to redisplay its result during operation - /// then this method has to return True - //virtual bool hasPreview() const { return false; } - /// Initialisation of operation with preliminary selection - /// \param theSelected the list of selected presentations - /// \param theHighlighted the list of highlighted presentations + /// \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*/); + ModuleBase_IViewer* theViewer); + /// \brief Set property pane to the operation + /// \param theProp a property panel instance virtual void setPropertyPanel(ModuleBase_IPropertyPanel* theProp); + /// \return Currently installed property panel ModuleBase_IPropertyPanel* propertyPanel() const { return myPropertyPanel; } - /// Activates widgets by preselection if it is accepted - virtual bool activateByPreselection(); + /// 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) { myParentFeature = theParent; } - CompositeFeaturePtr parentFeature() const { return myParentFeature; } + void setParentFeature(CompositeFeaturePtr theParent); + + /// \return Installed parent feature (can be NULL) + CompositeFeaturePtr parentFeature() const; signals: - void started(); /// the operation is started - void aborted(); /// the operation is aborted - void committed(); /// the operation is committed - void stopped(); /// the operation is aborted or committed - void resumed(); /// the operation is resumed - void postponed(); /// the operation is postponed + /// The operation is started + void started(); + + /// The operation is aborted + void aborted(); + + /// The operation is committed + void committed(); + + /// The operation is aborted or committed + void stopped(); + + /// The operation is 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(); public slots: /// Starts operation @@ -180,14 +191,6 @@ signals: /// \param theState th flag to abort, if it is true, do nothing, overwise abort void setRunning(bool theState); - // Data model methods. - /// Stores a custom value in model. - //virtual void storeCustomValue(); - - /// Slots which listen the mode widget activation - /// \param theWidget the model widget - //virtual void onWidgetActivated(ModuleBase_ModelWidget* theWidget); - protected: /// Virtual method called when operation started (see start() method for more description) /// Default impl calls corresponding slot and commits immediately. @@ -208,32 +211,18 @@ signals: /// Virtual method called after operation committed (see commit() method for more description) virtual void afterCommitOperation() {} - /// Send update message by loop - //void flushUpdated(); - - /// Send created message by loop - void flushCreated(); + /// 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 - /// \param theCompositeFeature the feature that must be used for adding the created object or null - /// \returns the created + /// \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; - /// Returns pointer to the root document. - std::shared_ptr document() const; - - /// Set value to the active widget - /// \param theFeature the feature - /// \param theX the horizontal coordinate - /// \param theY the vertical coordinate - /// \return true if the point is set - //virtual bool setWidgetValue(ObjectPtr theFeature, double theX, double theY); - /// Return a widget value point by the selection and the viewer position /// The default realization returns false /// \param thePrs the presentation @@ -245,11 +234,12 @@ signals: ModuleBase_IViewer* theViewer, double& theX, double& theY); - // Removes the preselection information and clears the map of preselection + /// Removes the preselection information and clears the map of preselection void clearPreselection(); protected: - FeaturePtr myFeature; /// the operation feature to be handled + /// The operation feature to be handled + FeaturePtr myFeature; /// the container to have the operation description ModuleBase_OperationDescription* myDescription; @@ -264,7 +254,7 @@ signals: QStringList myNestedFeatures; /// List of pre-selected object - QList myPreSelection; + QList myPreSelection; /// Access to property panel ModuleBase_IPropertyPanel* myPropertyPanel; @@ -274,6 +264,8 @@ signals: /// before operation feature creating CompositeFeaturePtr myParentFeature; + /// Last current feature before editing operation + FeaturePtr myCurrentFeature; }; #endif