1 // File: ModuleBase_WidgetPoint2dDistance.h
2 // Created: 23 June 2014
3 // Author: Vitaly Smetannikov
5 #include "ModuleBase_WidgetPoint2dDistance.h"
6 #include "ModuleBase_WidgetValueFeature.h"
8 #include <GeomAPI_Pnt2d.h>
9 #include <Config_WidgetAPI.h>
10 #include <GeomDataAPI_Point2D.h>
12 #include <ModelAPI_Data.h>
13 #include <ModelAPI_AttributeDouble.h>
15 #include <QDoubleSpinBox>
17 ModuleBase_WidgetPoint2dDistance::ModuleBase_WidgetPoint2dDistance(QWidget* theParent,
18 const Config_WidgetAPI* theData,
19 const std::string& theParentId)
20 : ModuleBase_WidgetDoubleValue(theParent, theData, theParentId)
22 myFirstPntName = theData->getProperty("first_point");
25 ModuleBase_WidgetPoint2dDistance::~ModuleBase_WidgetPoint2dDistance()
29 bool ModuleBase_WidgetPoint2dDistance::setValue(ModuleBase_WidgetValue* theValue)
34 ModuleBase_WidgetValueFeature* aFeatureValue =
35 dynamic_cast<ModuleBase_WidgetValueFeature*>(theValue);
37 boost::shared_ptr<GeomAPI_Pnt2d> aPnt = aFeatureValue->point();
38 ObjectPtr aObject = aFeatureValue->object();
39 FeaturePtr aFeature = boost::dynamic_pointer_cast<ModelAPI_Feature>(aObject);
40 if (aFeature && aPnt) {
41 setPoint(aFeature, aPnt);
49 void ModuleBase_WidgetPoint2dDistance::setPoint(FeaturePtr theFeature,
50 const boost::shared_ptr<GeomAPI_Pnt2d>& thePnt)
52 boost::shared_ptr<ModelAPI_Data> aData = theFeature->data();
53 boost::shared_ptr<GeomDataAPI_Point2D> aPoint = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
54 aData->attribute(myFirstPntName));
58 double aRadius = thePnt->distance(aPoint->pnt());
59 AttributeDoublePtr aReal = aData->real(attributeID());
60 if (aReal && (aReal->value() != aRadius)) {
61 aReal->setValue(aRadius);
62 mySpinBox->setValue(aRadius);