X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_WidgetPoint2d.h;h=a12e35d0fb875673dc0922527229a77eec33914a;hb=825fc0c15ec31fb813103b3062fa1e51c0a2d10e;hp=a66e11a923e584f203b3e1915cdb9bc2d2ae7d54;hpb=d48393d6fc34df209585623b7d0d0546d3d6ec25;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_WidgetPoint2d.h b/src/PartSet/PartSet_WidgetPoint2d.h index a66e11a92..a12e35d0f 100755 --- a/src/PartSet/PartSet_WidgetPoint2d.h +++ b/src/PartSet/PartSet_WidgetPoint2d.h @@ -8,6 +8,8 @@ #define PartSet_WidgetPoint2D_H #include "PartSet.h" +#include "PartSet_MouseProcessor.h" + #include #include @@ -34,7 +36,8 @@ class QMouseEvent; * * \endcode */ -class PARTSET_EXPORT PartSet_WidgetPoint2D : public ModuleBase_ModelWidget +class PARTSET_EXPORT PartSet_WidgetPoint2D : public ModuleBase_ModelWidget, + public PartSet_MouseProcessor { Q_OBJECT public: @@ -42,18 +45,21 @@ Q_OBJECT /// \param theParent the parent object /// \param theWorkshop a current workshop /// \param theData the widget configuation. The attribute of the model widget is obtained from - /// \param theParentId is Id of a parent of the current attribute PartSet_WidgetPoint2D(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop, - const Config_WidgetAPI* theData, - const std::string& theParentId); + const Config_WidgetAPI* theData); /// Destructor virtual ~PartSet_WidgetPoint2D(); + /// Checks if the selection presentation is valid in widget + /// \param theValue a selected presentation in the view + /// \return a boolean value + virtual bool isValidSelectionCustom(const std::shared_ptr& theValue); + /// Set the given wrapped value to the current widget /// This value should be processed in the widget according to the needs /// \param theValues the wrapped widget values /// \param theToValidate a validation flag - virtual bool setSelection(QList& theValues, + virtual bool setSelection(QList>& theValues, const bool theToValidate); /// Select the internal content if it can be selected. It is empty in the default realization @@ -65,10 +71,6 @@ Q_OBJECT //bool initFromPrevious(ObjectPtr theObject); - /// Defines if the widget can be activated by mouse move. - /// By default it returns false - virtual bool canBeActivatedByMove(); - /// The methiod called when widget is deactivated virtual void deactivate(); @@ -97,25 +99,27 @@ Q_OBJECT /// and creating a coincidence constraint to them. This control use them. virtual bool useSelectedShapes() const; -signals: - /// Signal about selection of an existing vertex from an object - void vertexSelected(); - -public slots: - /// Process mouse move event - /// \param theWnd a view window + /// Processing the mouse move event in the viewer + /// \param theWindow a view window /// \param theEvent a mouse event - void onMouseMove(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent); + virtual void mouseMoved(ModuleBase_IViewWindow* theWindow, QMouseEvent* theEvent); - /// Process mouse release event - /// \param theWnd a view window + /// Processing the mouse release event in the viewer + /// \param theWindow a view window /// \param theEvent a mouse event - void onMouseRelease(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent); + virtual void mouseReleased(ModuleBase_IViewWindow* theWindow, QMouseEvent* theEvent); + + /// Fill preselection used in mouseReleased + void setPreSelection(const std::shared_ptr& thePreSelected); + +signals: + /// Signal about selection of an existing vertex from an object + void vertexSelected(); protected: /// Saves the internal parameters to the given feature /// \return True in success - virtual bool storeValueCustom() const; + virtual bool storeValueCustom(); /// Restore value from attribute data to the widget's control virtual bool restoreValueCustom(); @@ -124,7 +128,8 @@ protected: void storeCurentValue(); /// Restore cashed value in the model attribute - void restoreCurentValue(); + /// \return boolean state if the restored feature shoud be hidden + bool restoreCurentValue(); /// Fills the widget with default values /// \return true if the widget current value is reset @@ -147,7 +152,7 @@ protected: /// Compute the feature default value and fill the controls with it /// or store the control value to the feature - /// The widget is not initialize the attribute value in order to avoid the + /// The widget is not initialize the attribute value in order to avoid the /// incorrect visualization in Sketch. E.g. by a line creation, the line should not /// be visualized immediatelly when the end point widget is activated. virtual void initializeValueByActivate(); @@ -158,12 +163,13 @@ protected: /// \param theShape a vertex shape /// \param theX an output value of X coordinate /// \param theY an output value of Y coordinate - bool getPoint2d(const Handle(V3d_View)& theView, const TopoDS_Shape& theShape, + bool getPoint2d(const Handle(V3d_View)& theView, const TopoDS_Shape& theShape, double& theX, double& theY) const; /// Create a coincidence constraint between the attribute and the parameter object /// \theObject a result object - void setConstraintWith(const ObjectPtr& theObject); + /// \return true if succed + bool setConstraintWith(const ObjectPtr& theObject); /// Returns if the feature is an orphan point, circle or an arc. Returns true if it /// has no a coincident to other lines. It processes point, circle and arc features @@ -175,7 +181,15 @@ protected: /// \param theY an Y coordinate of the point /// \return boolean result static bool isOrphanPoint(const FeaturePtr& theFeature, const CompositeFeaturePtr& theSketch, - double theX, double theY, const bool theSearchInResults = false); + double theX, double theY); + + /// Explode the given shape by vertices and found closed to the point vertes + /// \param theShape a shape to be exploded + /// \param thePoint a point + /// \return boolean value + static bool shapeContainsPoint(const std::shared_ptr& theShape, + const std::shared_ptr& thePoint, + const CompositeFeaturePtr& theSketch); protected: ModuleBase_IWorkshop* myWorkshop; ///< workshop @@ -186,11 +200,14 @@ private: ModuleBase_ParamSpinBox* myXSpin; ///< the spin box for the X coordinate ModuleBase_ParamSpinBox* myYSpin; ///< the spin box for the Y coordinate - //std::string myOptionParam; /// Parameter name which has to be taken from previous feature + /// value used as selection in mouse release method + std::shared_ptr myPreSelected; + /// it is important during restart operation CompositeFeaturePtr mySketch; bool myValueIsCashed; /// boolean state if the value is cashed during value state change + bool myIsFeatureVisibleInCash; /// boolean value if the feature was visible when cash if filled double myXValueInCash; /// the cashed X value during value state change double myYValueInCash; /// the cashed Y value during value state change };