Salome HOME
Issue #905 Update of invalid feature representation in property panel
[modules/shaper.git] / src / PartSet / PartSet_WidgetPoint2dDistance.h
index 95fc0ed19c450222bb2239c8c81d63f33cfcc7e4..889ee2ed0fb210b3b206ee7f4eda3cc7e9b4f98a 100644 (file)
@@ -12,8 +12,9 @@
 
 #include <ModelAPI_CompositeFeature.h>
 
+class PartSet_LockApplyMgr;
 class GeomAPI_Pnt2d;
-class XGUI_Workshop;
+class ModuleBase_IWorkshop;
 class ModuleBase_IViewWindow;
 class QMouseEvent;
 
@@ -40,26 +41,18 @@ Q_OBJECT
  public:
   /// Constructor
   /// \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, const Config_WidgetAPI* theData,
-                                   const std::string& theParentId);
+   PartSet_WidgetPoint2dDistance(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop,
+                                 const Config_WidgetAPI* theData,
+                                 const std::string& theParentId);
 
   virtual ~PartSet_WidgetPoint2dDistance();
 
-  /// Fills the widget with default values
-  //virtual void reset();
-
   /// The methiod called when widget is deactivated
   virtual void deactivate();
 
-  /// Returns workshop
-  XGUI_Workshop* workshop() const { return myWorkshop; }
-
-  /// Set workshop
-  /// \param theWork a pointer to workshop
-  void setWorkshop(XGUI_Workshop* theWork) { myWorkshop = theWork; }
-
   /// \returns the sketch instance
   CompositeFeaturePtr sketch() const { return mySketch; }
 
@@ -85,14 +78,22 @@ protected:
   /// 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);
 
+  /// 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);
+
 private slots:
   /// Process values changed event
   void onValuesChanged();
 
- private:
-  XGUI_Workshop* myWorkshop;
-  std::string myFirstPntName;
+protected:
+  ModuleBase_IWorkshop* myWorkshop;
+  PartSet_LockApplyMgr* myLockApplyMgr; ///< a manager to lock/unlock Apply button in PP
 
+  std::string myFirstPntName;
   CompositeFeaturePtr mySketch;
 };