X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_Operation.h;h=77c8d3fe34e2b622d36476da8ff7b9b51660c06e;hb=7b95df2653284e65f416373ff010af49ee8c68ef;hp=b73ba4726c19f8cc50f4ef4f4cffb14bae817595;hpb=57d7218911641432cbf54faa263695e99a665936;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Operation.h b/src/ModuleBase/ModuleBase_Operation.h index b73ba4726..77c8d3fe3 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 * @@ -9,18 +11,20 @@ #define ModuleBase_Operation_H #include +#include -#include +#include +#include #include #include #include -#include - -class ModelAPI_Document; class ModuleBase_ModelWidget; class ModuleBase_OperationDescription; +class ModuleBase_IPropertyPanel; +class ModuleBase_ISelection; +class ModuleBase_IViewer; class QKeyEvent; @@ -62,13 +66,8 @@ Q_OBJECT * the operation is not granted. * The method has to be redefined for granted operations. */ - virtual bool isGranted(ModuleBase_Operation* theOperation) const { return false; } + 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; } @@ -83,7 +82,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 @@ -96,35 +95,57 @@ 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 setEditingFeature(FeaturePtr theFeature); + 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) {}; + /// 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); + + /// \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(); - virtual void activateNextToCurrentWidget() {}; + /// 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); - /// If operation needs to redisplay its result during operation - /// then this method has to return True - virtual bool hasPreview() const { return false; } + /// \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 + /// The operation is started + void started(); - /// Signals about the activating of the next widget - /// \param theWidget the previous active widget - void activateNextWidget(ModuleBase_ModelWidget* theWidget); + /// 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 filled with existing preselection + void activatedByPreselection(); public slots: /// Starts operation @@ -134,6 +155,10 @@ signals: /// be better to inherit own operator from base one and redefine startOperation method /// instead. void start(); + + /// Deactivates current operation which can be resumed later. + void postpone(); + /// Resumes operation /// Public slot. Verifies whether operation can be started and starts operation. /// This slot is not virtual and cannot be redefined. Redefine startOperation method @@ -141,10 +166,12 @@ signals: /// be better to inherit own operator from base one and redefine startOperation method /// instead. 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(); + /// Commits operation /// Public slot. Commits operation. This slot is not virtual and cannot be redefined. /// Redefine commitOperation method to change behavior of operation instead @@ -156,33 +183,32 @@ 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. - virtual void startOperation(); + virtual void startOperation() {} + + /// Implementation of specific steps on postpone operation + virtual void postponeOperation() {} /// Virtual method called when operation stopped - committed or aborted. - virtual void stopOperation(); + virtual void stopOperation() {} /// Virtual method called when operation aborted (see abort() method for more description) - virtual void abortOperation(); + 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(); + virtual void afterCommitOperation() {} + + /// Virtual method called after operation resume (see resume() method for more description) + virtual void resumeOperation() {} /// Send update message by loop void flushUpdated(); + /// Send created message by loop void flushCreated(); @@ -191,19 +217,30 @@ signals: /// \returns the created feature virtual FeaturePtr createFeature(const bool theFlushMessage = true); - /// Sets the operation feature - void setFeature(FeaturePtr theFeature); - /// 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. - boost::shared_ptr document() const; - + std::shared_ptr document() 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: - 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; @@ -217,6 +254,17 @@ signals: /// List of nested operations IDs QStringList myNestedFeatures; + /// List of pre-selected object + QList myPreSelection; + + /// 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