X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetPoint2D.cpp;h=21cef047dc80351fff5b0ca7a32d1aaa36d132b8;hb=1b2cab75aa9df76d3fe6f791e2ddb2a065c8cf03;hp=2d8c814798d423fb16cbbe8a1f1dee2bc1865ae9;hpb=ae347a8a8014a15245199a3bb603413628e3f7d4;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp b/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp index 2d8c81479..21cef047d 100644 --- a/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp +++ b/src/ModuleBase/ModuleBase_WidgetPoint2D.cpp @@ -3,34 +3,42 @@ // Author: Natalia ERMOLAEVA #include +#include +#include +#include #include +#include #include -#include +#include #include #include #include #include +#include #include #include -#include #include #include -#include #include #include -ModuleBase_WidgetPoint2D::ModuleBase_WidgetPoint2D(QWidget* theParent, QString theTitle, - const std::string& theFeatureAttributeID) -: ModuleBase_ModelWidget(theParent), myFeatureAttributeID(theFeatureAttributeID) +ModuleBase_WidgetPoint2D::ModuleBase_WidgetPoint2D(QWidget* theParent, + const Config_WidgetAPI* theData, + const std::string& theParentId) + : ModuleBase_ModelWidget(theParent, theData, theParentId) { - myGroupBox = new QGroupBox(theTitle, theParent); + myOptionParam = theData->getProperty(PREVIOUS_FEATURE_PARAM); + QString aPageName = QString::fromStdString(theData->getProperty(CONTAINER_PAGE_NAME)); + myGroupBox = new QGroupBox(aPageName, theParent); + myGroupBox->setFlat(false); + QGridLayout* aGroupLay = new QGridLayout(myGroupBox); - aGroupLay->setContentsMargins(0, 0, 0, 0); + ModuleBase_Tools::adjustMargins(aGroupLay); aGroupLay->setColumnStretch(1, 1); { QLabel* aLabel = new QLabel(myGroupBox); @@ -38,12 +46,12 @@ ModuleBase_WidgetPoint2D::ModuleBase_WidgetPoint2D(QWidget* theParent, QString t aLabel->setPixmap(QPixmap(":pictures/x_point.png")); aGroupLay->addWidget(aLabel, 0, 0); - myXSpin = new QDoubleSpinBox(myGroupBox); + myXSpin = new ModuleBase_DoubleSpinBox(myGroupBox); myXSpin->setMinimum(-DBL_MAX); myXSpin->setMaximum(DBL_MAX); myXSpin->setToolTip("X"); aGroupLay->addWidget(myXSpin, 0, 1); - + connect(myXSpin, SIGNAL(valueChanged(double)), this, SIGNAL(valuesChanged())); } { @@ -52,7 +60,7 @@ ModuleBase_WidgetPoint2D::ModuleBase_WidgetPoint2D(QWidget* theParent, QString t aLabel->setPixmap(QPixmap(":pictures/y_point.png")); aGroupLay->addWidget(aLabel, 1, 0); - myYSpin = new QDoubleSpinBox(myGroupBox); + myYSpin = new ModuleBase_DoubleSpinBox(myGroupBox); myYSpin->setMinimum(-DBL_MAX); myYSpin->setMaximum(DBL_MAX); myYSpin->setToolTip("X"); @@ -60,35 +68,73 @@ ModuleBase_WidgetPoint2D::ModuleBase_WidgetPoint2D(QWidget* theParent, QString t connect(myYSpin, SIGNAL(valueChanged(double)), this, SIGNAL(valuesChanged())); } - myXSpin->installEventFilter(this); - myYSpin->installEventFilter(this); } ModuleBase_WidgetPoint2D::~ModuleBase_WidgetPoint2D() { } -bool ModuleBase_WidgetPoint2D::storeValue(FeaturePtr theFeature) const +bool ModuleBase_WidgetPoint2D::setValue(ModuleBase_WidgetValue* theValue) { - boost::shared_ptr aData = theFeature->data(); - boost::shared_ptr aPoint = - boost::dynamic_pointer_cast(aData->attribute(myFeatureAttributeID)); + 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()); + this->blockSignals(isBlocked); + + emit valuesChanged(); +} + +bool ModuleBase_WidgetPoint2D::storeValue() const +{ + boost::shared_ptr aData = myFeature->data(); + boost::shared_ptr aPoint = boost::dynamic_pointer_cast( + aData->attribute(attributeID())); + ModuleBase_WidgetPoint2D* that = (ModuleBase_WidgetPoint2D*) this; bool isBlocked = that->blockSignals(true); + bool isImmutable = aPoint->setImmutable(true); +#ifdef _DEBUG + std::string _attr_name = myAttributeID; + double _X = myXSpin->value(); + double _Y = myYSpin->value(); +#endif aPoint->setValue(myXSpin->value(), myYSpin->value()); - Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_FEATURE_UPDATED)); + updateObject(myFeature); + aPoint->setImmutable(isImmutable); that->blockSignals(isBlocked); return true; } -bool ModuleBase_WidgetPoint2D::restoreValue(FeaturePtr theFeature) +bool ModuleBase_WidgetPoint2D::restoreValue() { - boost::shared_ptr aData = theFeature->data(); - boost::shared_ptr aPoint = - boost::dynamic_pointer_cast(aData->attribute(myFeatureAttributeID)); - + boost::shared_ptr aData = myFeature->data(); + boost::shared_ptr aPoint = boost::dynamic_pointer_cast( + aData->attribute(attributeID())); + +#ifdef _DEBUG + std::string _attr_name = myAttributeID; + double _X = aPoint->x(); + double _Y = aPoint->y(); +#endif bool isBlocked = this->blockSignals(true); myXSpin->setValue(aPoint->x()); myYSpin->setValue(aPoint->y()); @@ -96,17 +142,6 @@ bool ModuleBase_WidgetPoint2D::restoreValue(FeaturePtr theFeature) return true; } -bool ModuleBase_WidgetPoint2D::canFocusTo(const std::string& theAttributeName) -{ - return theAttributeName == myFeatureAttributeID; -} - -void ModuleBase_WidgetPoint2D::focusTo() -{ - if (!myXSpin->hasFocus() && !myYSpin->hasFocus()) - myXSpin->setFocus(); -} - QWidget* ModuleBase_WidgetPoint2D::getControl() const { return myGroupBox; @@ -121,13 +156,22 @@ QList ModuleBase_WidgetPoint2D::getControls() const return aControls; } -bool ModuleBase_WidgetPoint2D::eventFilter(QObject *theObject, QEvent *theEvent) +bool ModuleBase_WidgetPoint2D::initFromPrevious(ObjectPtr theObject) { - if (theObject == myXSpin || theObject == myYSpin) { - if (theEvent->type() == QEvent::KeyRelease) { - emit keyReleased(myFeatureAttributeID, (QKeyEvent*) theEvent); - return true; - } + if (myOptionParam.length() == 0) + return false; + boost::shared_ptr aData = theObject->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(theObject, myOptionParam); + return true; } - return ModuleBase_ModelWidget::eventFilter(theObject, theEvent); + return false; }