Example #1
0
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);
    }
}