X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_WidgetPoint2d.cpp;h=5baa133e7e279303c0581dfd5c2d065cc1edcc8c;hb=f94d2fb4ecb53808ddea8a98d38a1d53208edfd8;hp=ad30fc24800b52b74abc58ee19c58c7060defe78;hpb=5c93de643578deee4726ab1ae799ea4a421daabe;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_WidgetPoint2d.cpp b/src/PartSet/PartSet_WidgetPoint2d.cpp index ad30fc248..5baa133e7 100644 --- a/src/PartSet/PartSet_WidgetPoint2d.cpp +++ b/src/PartSet/PartSet_WidgetPoint2d.cpp @@ -60,28 +60,28 @@ PartSet_WidgetPoint2D::PartSet_WidgetPoint2D(QWidget* theParent, aGroupLay->setColumnStretch(1, 1); { QLabel* aLabel = new QLabel(myGroupBox); - aLabel->setText("X"); + aLabel->setText(tr("X")); aLabel->setPixmap(QPixmap(":pictures/x_point.png")); aGroupLay->addWidget(aLabel, 0, 0); myXSpin = new ModuleBase_DoubleSpinBox(myGroupBox); myXSpin->setMinimum(-DBL_MAX); myXSpin->setMaximum(DBL_MAX); - myXSpin->setToolTip("X"); + myXSpin->setToolTip(tr("X")); aGroupLay->addWidget(myXSpin, 0, 1); connect(myXSpin, SIGNAL(valueChanged(double)), this, SLOT(onValuesChanged())); } { QLabel* aLabel = new QLabel(myGroupBox); - aLabel->setText("Y"); + aLabel->setText(tr("Y")); aLabel->setPixmap(QPixmap(":pictures/y_point.png")); aGroupLay->addWidget(aLabel, 1, 0); myYSpin = new ModuleBase_DoubleSpinBox(myGroupBox); myYSpin->setMinimum(-DBL_MAX); myYSpin->setMaximum(DBL_MAX); - myYSpin->setToolTip("X"); + myYSpin->setToolTip(tr("Y")); aGroupLay->addWidget(myYSpin, 1, 1); connect(myYSpin, SIGNAL(valueChanged(double)), this, SLOT(onValuesChanged())); @@ -229,27 +229,44 @@ bool PartSet_WidgetPoint2D::getPoint2d(const Handle(V3d_View)& theView, void PartSet_WidgetPoint2D::onMouseRelease(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent) { XGUI_Selection* aSelection = myWorkshop->selector()->selection(); - NCollection_List aShapes; - std::list aObjects; - aSelection->selectedShapes(aShapes, aObjects); - if (aShapes.Extent() > 0) { - TopoDS_Shape aShape = aShapes.First(); - double aX, aY; - if (getPoint2d(theWnd->v3dView(), aShape, aX, aY)) { - setPoint(aX, aY); - - PartSet_Tools::setConstraints(mySketch, feature(), attributeID(),aX, aY); - emit vertexSelected(aObjects.front(), aShape); - emit focusOutWidget(this); - return; - } - } + // TODO: This fragment doesn't work because bug in OCC Viewer. It can be used after fixing. + //NCollection_List aShapes; + //std::list aObjects; + //aSelection->selectedShapes(aShapes, aObjects); + //if (aShapes.Extent() > 0) { + // TopoDS_Shape aShape = aShapes.First(); + // double aX, aY; + // if (getPoint2d(theWnd->v3dView(), aShape, aX, aY)) { + // setPoint(aX, aY); + + // PartSet_Tools::setConstraints(mySketch, feature(), attributeID(),aX, aY); + // emit vertexSelected(aObjects.front(), aShape); + // emit focusOutWidget(this); + // return; + // } + //} + // End of Bug dependent fragment + // A case when point is taken from mouse event gp_Pnt aPoint = PartSet_Tools::convertClickToPoint(theEvent->pos(), theWnd->v3dView()); double aX, anY; - PartSet_Tools::convertTo2D(aPoint, mySketch, theWnd->v3dView(), aX, anY); + Handle(V3d_View) aView = theWnd->v3dView(); + PartSet_Tools::convertTo2D(aPoint, mySketch, aView, aX, anY); setPoint(aX, anY); + std::shared_ptr aFeaturePoint = std::dynamic_pointer_cast< + GeomDataAPI_Point2D>(feature()->data()->attribute(attributeID())); + QList aIgnore; + aIgnore.append(feature()); + + double aTolerance = aView->Convert(4); + std::shared_ptr aAttrPnt = + PartSet_Tools::findAttributePoint(mySketch, aX, anY, aTolerance, aIgnore); + if (aAttrPnt.get() != NULL) { + + PartSet_Tools::createConstraint(mySketch, aAttrPnt, aFeaturePoint); + emit vertexSelected(); + } emit focusOutWidget(this); }