X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationSketchBase.h;h=5f4d556e07e27f1fc0203221a52f170404f1abdc;hb=8887fbea231db0c1fd9089dd237b90595f6d78a4;hp=48aa06c840fc0878d6b496543f17a92d0b1af7c1;hpb=fdba6b33575c4ed5ccfff778364e480806be1a53;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationSketchBase.h b/src/PartSet/PartSet_OperationSketchBase.h index 48aa06c84..5f4d556e0 100644 --- a/src/PartSet/PartSet_OperationSketchBase.h +++ b/src/PartSet/PartSet_OperationSketchBase.h @@ -11,19 +11,28 @@ #include #include -#include +#include +#include #include +#include + +class Handle_V3d_View; +class QMouseEvent; class GeomAPI_Shape; +class XGUI_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_EXPORT PartSet_OperationSketchBase : public ModuleBase_PropPanelOperation +class PARTSET_EXPORT PartSet_OperationSketchBase : public ModuleBase_Operation { Q_OBJECT +public: + enum FeatureActionMode { FM_Activation, FM_Deactivation, FM_Hide }; + public: /// Constructor /// \param theId an feature index @@ -34,41 +43,112 @@ public: /// Returns the feature preview shape /// \param theFeature the feature object to obtain the preview - boost::shared_ptr preview(boost::shared_ptr theFeature) const; + static boost::shared_ptr preview(FeaturePtr theFeature); + + /// Returns the map of the operation previews including the nested feature previews + /// \return the map of feature to the feature preview + virtual std::map > subPreview() const; /// Returns the operation local selection mode /// \param theFeature the feature object to get the selection mode /// \return the selection mode - virtual int getSelectionMode(boost::shared_ptr theFeature) const = 0; + virtual std::list getSelectionModes(FeaturePtr theFeature) const; - /// Gives the current selected objects to be processed by the operation - /// \param theList a list of interactive selected shapes - virtual void setSelectedShapes(const NCollection_List& theList) {}; + /// Initializes some fields accorging to the feature + /// \param theSelected the list of selected presentations + /// \param theHighlighted the list of highlighted presentations + virtual void init(FeaturePtr theFeature, + const std::list& theSelected, + const std::list& theHighlighted) {} + + /// Returns the operation sketch feature + /// \returns the sketch instance + virtual FeaturePtr sketch() const = 0; + + /// Processes the mouse pressed 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 + /// \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 - virtual void mouseReleased(const gp_Pnt& thePoint) {}; + /// \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& theHighlighted); /// Processes the mouse move in the point - /// \param thePoint a 3D point clicked in the viewer - virtual void mouseMoved(const gp_Pnt& thePoint) {}; + /// \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 + /// \param theHighlighted the list of highlighted presentations + virtual void mouseDoubleClick(QMouseEvent* theEvent, Handle_V3d_View theView, + const std::list& theSelected, + const std::list& theHighlighted); /// Processes the key pressed in the view /// \param theKey a key value - virtual void keyReleased(const int theKey) {}; + virtual void keyReleased(const int theKey); + + virtual void keyReleased(std::string theName, QKeyEvent* theEvent); + + /// 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, + FeaturePtr theFeature = FeaturePtr()); signals: + /// signal about the request to launch operation + /// theName the operation name + /// theFeature the operation argument + void launchOperation(std::string theName, FeaturePtr theFeature); + /// signal about the focus activated + /// theName the attribute name + void focusActivated(const std::string& theAttibuteName); + /// Signal about the feature construing is finished /// \param theFeature the result feature - void featureConstructed(boost::shared_ptr theFeature); + /// \param theMode the mode of the feature modification + void featureConstructed(FeaturePtr 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 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 std::list& theFeatures, const bool theToStop); + /// signal to set selection in the viewer + /// \param theFeatures a list of features to be disabled + void setSelection(const std::list& theFeatures); + + /// signal to close the operation local context if it is opened + void closeLocalContext(); -public: - /// temporary code to provide edition mode - void setEditMode(const bool isEditMode) { myIsEditMode = isEditMode; }; protected: - bool isEditMode() const { return myIsEditMode; } -private: - bool myIsEditMode; + /// 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 FeaturePtr createFeature(const bool theFlushMessage = true); }; #endif