Salome HOME
"2.11 Constraint with a point from the intersection between an outer edge and plane...
[modules/shaper.git] / src / PartSet / PartSet_WidgetPoint2dDistance.h
index 7c2364780f69eebdc2d99579dce5aa8f88dd59dd..7b350d33edd8623e5e9a265bb1c89fe4d5c1010e 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        PartSet_WidgetPoint2dDistance.h
 // Created:     23 June 2014
 // Author:      Vitaly Smetannikov
 
 #include <ModelAPI_CompositeFeature.h>
 
-//class ModuleBase_WidgetValue;
 class GeomAPI_Pnt2d;
-class XGUI_Workshop;
+class ModuleBase_IWorkshop;
 class ModuleBase_IViewWindow;
 class QMouseEvent;
 
+/**
+* \ingroup Modules
+* Implementation of model widget for widget which provides input of a distance between two points
+* In XML file can be defined as following:
+* \code
+* <point2ddistance id="CircleRadius" 
+*   first_point="CircleCenter" 
+*   label="Radius:" 
+*   min="0" 
+*   step="1.0" 
+*   default="0" 
+*   icon=":icons/radius.png" 
+*   tooltip="Set radius">
+*   <validator id="GeomValidators_Positive"/>
+* </point2ddistance>
+* \endcode
+*/ 
 class PARTSET_EXPORT PartSet_WidgetPoint2dDistance : public ModuleBase_WidgetDoubleValue
 {
 Q_OBJECT
  public:
   /// Constructor
-  /// \theParent the parent object
-  /// \theData the widget configuation. The attribute of the model widget is obtained from
-  PartSet_WidgetPoint2dDistance(QWidget* theParent, const Config_WidgetAPI* theData,
-                                   const std::string& theParentId);
+  /// \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_WidgetPoint2dDistance(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop,
+                                 const Config_WidgetAPI* theData,
+                                 const std::string& theParentId);
 
   virtual ~PartSet_WidgetPoint2dDistance();
 
-  /// The methiod called when widget is activated
-  virtual void activate();
-
   /// The methiod called when widget is deactivated
   virtual void deactivate();
 
-  /// Set the given wrapped value to the current widget
-  /// This value should be processed in the widget according to the needs
-  /// \param theValue the wrapped widget value
-  //virtual bool setValue(ModuleBase_WidgetValue* theValue);
-
-  XGUI_Workshop* workshop() const { return myWorkshop; }
-
-  void setWorkshop(XGUI_Workshop* theWork) { myWorkshop = theWork; }
-
   /// \returns the sketch instance
   CompositeFeaturePtr sketch() const { return mySketch; }
+
+  /// Set sketch instance
   void setSketch(CompositeFeaturePtr theSketch) { mySketch = theSketch; }
 
- protected slots:
-  void onMouseRelease(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
+  /// Returns true if the event is processed.
+  virtual bool processEnter();
+
+public slots:
+   /// Process of mouse move
+   /// \param theWnd a pointer to a window
+   /// \param theEvent a mouse event
   void onMouseMove(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
 
+  protected slots:
+   /// Process of mouse release
+   /// \param theWnd a pointer to a window
+   /// \param theEvent a mouse event
+  void onMouseRelease(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
+
 protected:
+  /// The methiod called when widget is activated
+  virtual void activateCustom();
+
   /// Set the second point which defines a value in the widget as a distance with a first point defined by feature
   void setPoint(FeaturePtr theFeature, const std::shared_ptr<GeomAPI_Pnt2d>& thePnt);
 
- private:
-  XGUI_Workshop* myWorkshop;
+  /// Compute the distance between points
+  /// \param theFirstPnt a point value of the out point attribute
+  /// \param theCurrentPnt a point of the current widget
+  /// \return a double value
+  virtual double computeValue(const std::shared_ptr<GeomAPI_Pnt2d>& theFirstPnt,
+                              const std::shared_ptr<GeomAPI_Pnt2d>& theCurrentPnt);
+
+protected:
+  /// A reference to workshop
+  ModuleBase_IWorkshop* myWorkshop;
+  
+  /// A name of the first point
   std::string myFirstPntName;
 
+  /// Reference to sketch
   CompositeFeaturePtr mySketch;
 };