X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetPoint2dDistance.cpp;h=56496ebd15cdf0a6eab3b59e8fde136562a33f1c;hb=7981678231adaa3ef7468d7564fef427cffdaf50;hp=7597fe126f3b86d447dfbb9ab18486cb5e46c751;hpb=c3d65a61b0e82724e3211ba475c124472c1de39d;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetPoint2dDistance.cpp b/src/ModuleBase/ModuleBase_WidgetPoint2dDistance.cpp index 7597fe126..56496ebd1 100644 --- a/src/ModuleBase/ModuleBase_WidgetPoint2dDistance.cpp +++ b/src/ModuleBase/ModuleBase_WidgetPoint2dDistance.cpp @@ -2,7 +2,9 @@ // Created: 23 June 2014 // Author: Vitaly Smetannikov -#include "ModuleBase_WidgetPoint2dDistance.h" +#include +#include +#include #include #include @@ -11,10 +13,10 @@ #include #include -#include - -ModuleBase_WidgetPoint2dDistance::ModuleBase_WidgetPoint2dDistance(QWidget* theParent, const Config_WidgetAPI* theData) - : ModuleBase_WidgetDoubleValue(theParent, theData) +ModuleBase_WidgetPoint2dDistance::ModuleBase_WidgetPoint2dDistance(QWidget* theParent, + const Config_WidgetAPI* theData, + const std::string& theParentId) + : ModuleBase_WidgetDoubleValue(theParent, theData, theParentId) { myFirstPntName = theData->getProperty("first_point"); } @@ -23,15 +25,39 @@ ModuleBase_WidgetPoint2dDistance::~ModuleBase_WidgetPoint2dDistance() { } -void ModuleBase_WidgetPoint2dDistance::setPoint(FeaturePtr theFeature, const boost::shared_ptr& thePnt) +bool ModuleBase_WidgetPoint2dDistance::setValue(ModuleBase_WidgetValue* theValue) +{ + bool isDone = false; + + if (theValue) { + ModuleBase_WidgetValueFeature* aFeatureValue = + dynamic_cast(theValue); + if (aFeatureValue) { + boost::shared_ptr aPnt = aFeatureValue->point(); + ObjectPtr aObject = aFeatureValue->object(); + FeaturePtr aFeature = boost::dynamic_pointer_cast(aObject); + if (aFeature && aPnt) { + setPoint(aFeature, aPnt); + isDone = true; + } + } + } + return isDone; +} + +void ModuleBase_WidgetPoint2dDistance::setPoint(FeaturePtr theFeature, + const boost::shared_ptr& thePnt) { boost::shared_ptr aData = theFeature->data(); - boost::shared_ptr aPoint = boost::dynamic_pointer_cast - (aData->attribute(myFirstPntName)); + boost::shared_ptr aPoint = boost::dynamic_pointer_cast( + aData->attribute(myFirstPntName)); + if (!aPoint) + return; + double aRadius = thePnt->distance(aPoint->pnt()); AttributeDoublePtr aReal = aData->real(attributeID()); if (aReal && (aReal->value() != aRadius)) { aReal->setValue(aRadius); mySpinBox->setValue(aRadius); } -} \ No newline at end of file +}