X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationSketchBase.h;h=c7d639348f858daae620f6403558e1f81e3f17a6;hb=43780ffac779af7f061513b0f6243f2edb73602c;hp=cce1c55113f1b99362c47e0bce2efdc500d42f18;hpb=3bb056033567ef420a3eb7cdc2a2cada3d94ee06;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationSketchBase.h b/src/PartSet/PartSet_OperationSketchBase.h index cce1c5511..c7d639348 100644 --- a/src/PartSet/PartSet_OperationSketchBase.h +++ b/src/PartSet/PartSet_OperationSketchBase.h @@ -13,27 +13,38 @@ #include #include + +#include +#include + #include +#include + #include class Handle_V3d_View; class QMouseEvent; class GeomAPI_Shape; -class XGUI_ViewerPrs; +class ModuleBase_ViewerPrs; /*! - \class PartSet_OperationSketchBase - * \brief The base operation for the sketch features. - * Base class for all sketch operations. It provides an access to the feature preview -*/ + \class PartSet_OperationSketchBase + * \brief The base operation for the sketch features. + * Base class for all sketch operations. It provides an access to the feature preview + */ class PARTSET_EXPORT PartSet_OperationSketchBase : public ModuleBase_Operation { - Q_OBJECT -public: - enum FeatureActionMode { FM_Activation, FM_Deactivation, FM_Abort }; - -public: +Q_OBJECT + public: + enum FeatureActionMode + { + FM_Activation, + FM_Deactivation, + FM_Hide + }; + + public: /// Constructor /// \param theId an feature index /// \param theParent the object parent @@ -43,68 +54,96 @@ public: /// Returns the feature preview shape /// \param theFeature the feature object to obtain the preview - boost::shared_ptr preview(boost::shared_ptr theFeature) const; - - /// Returns the map of the operation previews including the nested feature previews - /// \return the map of feature to the feature preview - virtual std::map, boost::shared_ptr > preview() const; + static boost::shared_ptr preview(FeaturePtr theFeature); - /// Returns the operation local selection mode - /// \param theFeature the feature object to get the selection mode - /// \return the selection mode - virtual std::list getSelectionModes(boost::shared_ptr theFeature) const = 0; + /// Returns the list of the nested features + /// \return the list of subfeatures + virtual std::list subFeatures() const; - /// Initializes some fields accorging to the feature - /// \param theFeature the feature - virtual void init(boost::shared_ptr theFeature) {} + /// Returns the operation sketch feature + /// \returns the sketch instance + virtual CompositeFeaturePtr sketch() const = 0; /// Processes the mouse pressed in the point - /// \param thePoint a point clicked in the viewer /// \param theEvent the mouse event - virtual void mousePressed(QMouseEvent* theEvent, Handle_V3d_View theView); + /// \param theView a viewer to have the viewer the eye position + /// \param theSelected the list of selected presentations + /// \param theHighlighted the list of highlighted presentations + virtual void mousePressed(QMouseEvent* theEvent, Handle_V3d_View theView, + const std::list& theSelected, + const std::list& theHighlighted); /// Processes the mouse release in the point - /// \param thePoint a point clicked in the viewer /// \param theEvent the mouse event + /// \param theView a viewer to have the viewer the eye position /// \param theSelected the list of selected presentations + /// \param theHighlighted the list of highlighted presentations virtual void mouseReleased(QMouseEvent* theEvent, Handle_V3d_View theView, - const std::list& theSelected); + const std::list& theSelected, + const std::list& theHighlighted); /// Processes the mouse move in the point - /// \param thePoint a 3D point clicked in the viewer /// \param theEvent the mouse event + /// \param theView a viewer to have the viewer the eye position + virtual void mouseMoved(QMouseEvent* theEvent, Handle_V3d_View theView); + + /// Processes the mouse double click in the point + /// \param theEvent the mouse event + /// \param theView a viewer to have the viewer the eye position /// \param theSelected the list of selected presentations - virtual void mouseMoved(QMouseEvent* theEvent, Handle_V3d_View theView, - const std::list& theSelected); + /// \param theHighlighted the list of highlighted presentations + virtual void mouseDoubleClick(QMouseEvent* theEvent, Handle_V3d_View theView, + const std::list& theSelected, + const std::list& theHighlighted); + + /// Emits a signal about the operation start. This signal has an information about the feature. + /// If the provided feature is empty, the current operation feature is used. + /// \param theType a type of an operation started + /// theFeature the operation argument + void restartOperation(const std::string& theType, ObjectPtr theFeature = ObjectPtr()); - /// Processes the key pressed in the view - /// \param theKey a key value - 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 true; } signals: - /// Signal about the feature construing is finished - /// \param theFeature the result feature - /// \param theMode the mode of the feature modification - void featureConstructed(boost::shared_ptr theFeature, - int theMode); /// signal about the request to launch operation /// theName the operation name /// theFeature the operation argument - void launchOperation(std::string theName, boost::shared_ptr theFeature); + void restartRequired(std::string theName, ObjectPtr theFeature); + + /// Signal about the feature construing is finished + /// \param theFeature the result feature + /// \param theMode the mode of the feature modification + void featureConstructed(ObjectPtr theFeature, int theMode); + + /// Signal about the features should be selected + /// \param theSelected the list of selected presentations + void featureSelected(const std::list& theSelected); + /// signal to enable/disable multi selection in the viewer /// \param theEnabled the boolean state void multiSelectionEnabled(bool theEnabled); - /// signal to enable/disable usual selection in the viewer - /// \param theEnabled the boolean state - void selectionEnabled(bool theEnabled); + /// signal to enable/disable selection in the viewer + /// \param theFeatures a list of features to be disabled + /// \param theToStop the boolean state whether it it stopped or non stopped + void stopSelection(const QList& theFeatures, const bool theToStop); -protected: + /// signal to set selection in the viewer + /// \param theFeatures a list of features to be disabled + void setSelection(const QList& theFeatures); + + protected: /// Creates an operation new feature /// In addition to the default realization it appends the created line feature to /// the sketch feature + /// \param theFlushMessage the flag whether the create message should be flushed /// \returns the created feature - virtual boost::shared_ptr createFeature(); + virtual FeaturePtr createFeature(const bool theFlushMessage = true); + + /// Activates widgets by preselection if it is accepted + virtual void activateByPreselection(); }; #endif