X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModuleBase%2FModuleBase_WidgetPoint2D.cpp;h=baa7285b054873ef2bf7f8c59defbac16ebd0f05;hb=f4bd13ed4b2456d13a8d58fd0bc4029264592815;hp=7903c829333acd1615e8db23da85477f6b0fec7a;hpb=7abdb925235d8208608a26fe85eeb599dfa56653;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp b/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp index 7903c8293..baa7285b0 100644 --- a/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp +++ b/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp @@ -3,6 +3,7 @@ // Author: Natalia ERMOLAEVA #include +#include #include #include @@ -30,6 +31,7 @@ ModuleBase_WidgetPoint2D::ModuleBase_WidgetPoint2D(QWidget* theParent, const Config_WidgetAPI* theData) : ModuleBase_ModelWidget(theParent, theData) { + myOptionParam = theData->getProperty(PREVIOUS_FEATURE_PARAM); myGroupBox = new QGroupBox(QString::fromStdString(theData->getProperty(CONTAINER_PAGE_NAME)), theParent); QGridLayout* aGroupLay = new QGridLayout(myGroupBox); @@ -71,8 +73,26 @@ ModuleBase_WidgetPoint2D::~ModuleBase_WidgetPoint2D() { } +bool ModuleBase_WidgetPoint2D::setValue(ModuleBase_WidgetValue* theValue) +{ + bool isDone = false; + if (theValue) { + ModuleBase_WidgetValueFeature* aFeatureValue = + dynamic_cast(theValue); + if (aFeatureValue) { + boost::shared_ptr aPoint = aFeatureValue->point(); + if (aPoint) { + setPoint(aPoint); + isDone = true; + } + } + } + return isDone; +} + void ModuleBase_WidgetPoint2D::setPoint(const boost::shared_ptr& thePoint) { + bool isBlocked = this->blockSignals(true); myXSpin->setValue(thePoint->x()); myYSpin->setValue(thePoint->y()); @@ -127,9 +147,33 @@ bool ModuleBase_WidgetPoint2D::eventFilter(QObject *theObject, QEvent *theEvent) { if (theObject == myXSpin || theObject == myYSpin) { if (theEvent->type() == QEvent::KeyRelease) { + QKeyEvent* aKeyEvent = (QKeyEvent*)theEvent; + if (aKeyEvent && aKeyEvent->key() == Qt::Key_Return) { + emit focusOutWidget(this); + } emit keyReleased(attributeID(), (QKeyEvent*) theEvent); return true; } } return ModuleBase_ModelWidget::eventFilter(theObject, theEvent); } + +bool ModuleBase_WidgetPoint2D::initFromPrevious(FeaturePtr theFeature) +{ + if (myOptionParam.length() == 0) + return false; + boost::shared_ptr aData = theFeature->data(); + boost::shared_ptr aPoint = + boost::dynamic_pointer_cast(aData->attribute(myOptionParam)); + if (aPoint) { + bool isBlocked = this->blockSignals(true); + myXSpin->setValue(aPoint->x()); + myYSpin->setValue(aPoint->y()); + this->blockSignals(isBlocked); + + emit valuesChanged(); + emit storedPoint2D(theFeature, myOptionParam); + return true; + } + return false; +}