void Relation::mouseMoveEvent(QGraphicsSceneMouseEvent * event) { QGraphicsItem::mouseMoveEvent(event); double eventPosX = mapFromScene(event->scenePos()).x(); double startX = mapFromScene(_start).x(); if (_leftHandleSelected) { changeBounds(_abstract->maxBound() == NO_BOUND ? std::max(eventPosX - startX, 0.) : std::min((float)std::max(eventPosX - startX, 0.), _abstract->maxBound()), _abstract->maxBound()); _scene->changeRelationBounds(_abstract->ID(), NO_LENGTH, _abstract->minBound(), _abstract->maxBound()); update(); } else if (_rightHandleSelected) { _scene->changeRelationBounds(_abstract->ID(), NO_LENGTH, _abstract->minBound(), std::max((float)std::max(eventPosX - startX, 0.), _abstract->minBound())); update(); } else if (_middleHandleSelected) { BasicBox *rightBox = _scene->getBox(_abstract->secondBox()); _scene->changeRelationBounds(_abstract->ID(), NO_LENGTH, NO_BOUND, NO_BOUND); qreal factorX = 2 * (eventPosX - _mouseClickPosSave.x()); rightBox->moveBy(factorX, 0.); rightBox->setTopLeft(rightBox->getTopLeft() + QPointF(factorX, 0.)); rightBox->updateStuff(); _scene->boxMoved(rightBox->ID()); } }
void AttributesEditor::startChanged() { // std::cout<<"--- startChanged ---"<<std::endl; BasicBox * box = _scene->getBox(_boxEdited); if (box != NULL) { box->moveBy(_boxStartValue->value() * S_TO_MS / MaquetteScene::MS_PER_PIXEL - box->getTopLeft().x(), 0); _scene->boxMoved(_boxEdited); } }