X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/08289b4fcdfc9478089ba586c05d74222bb1b12c..d30c9cf675ad7141d1c8e31d2e72315267d45cf2:/GroupItem.cpp?ds=sidebyside diff --git a/GroupItem.cpp b/GroupItem.cpp index 04d7bca..bb26e53 100644 --- a/GroupItem.cpp +++ b/GroupItem.cpp @@ -36,7 +36,8 @@ GroupItem::GroupItem(BoxItem *_parentItem, setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges); - updateGeometry(); + + updateGeometry(InterfaceMove); QPointF initPos = QPointF(0.0,0.0) - originPoint; setPos(initPos); cout << "total size of group: " << totalWidth << "," << totalHeight << endl; @@ -155,7 +156,7 @@ void GroupItem::updateMinimumSize() { } void GroupItem::updateShape() { - updateGeometry(); + updateGeometry(InterfaceMove); } bool GroupItem::updateGeometry(ChangeType type) { @@ -163,20 +164,29 @@ bool GroupItem::updateGeometry(ChangeType type) { QPointF oldOrigin = originPoint; QSize oldSize(totalWidth,totalHeight); - updateMinimumSize(); bool boxSizeChanged = false; + + // whatever the change, the minimum size may have changed + updateMinimumSize(); + + if (type == Resize) { + boxSizeChanged = true; + } + // if an internal block has moved, the actual box size may be inadequate if (boxWidth < minimumBoxWidth) { boxWidth = minimumBoxWidth; boxSizeChanged = true; } if (boxHeight < minimumBoxHeight) { boxHeight = minimumBoxHeight; - boxSizeChanged = true; + boxSizeChanged = true; } + if (boxSizeChanged) { updateInterfacesAndConnections(); } + // compute the max. width of interfaces' name for 4 orientations. int maxSouth = 0; int maxNorth = 0; @@ -221,7 +231,7 @@ bool GroupItem::updateGeometry(ChangeType type) { originPoint.setY(y); if ((boxSizeChanged) || (newSize != oldSize) || (originPoint != oldOrigin)) { - //cout << "must change group item shape" << endl; + cout << "must change group item shape" << endl; prepareGeometryChange(); return true; } @@ -283,7 +293,7 @@ void GroupItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { cout << "abnormal case while resizing block" << endl; break; } - updateGeometry(); + updateGeometry(Resize); /* // recompute the geometry of the block updateGeometry(); @@ -302,16 +312,16 @@ void GroupItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { } else if(params->editState == Parameters::EditInterfaceMove) { prepareGeometryChange(); - deplaceInterface(event->pos()); + moveInterfaceTo(event->pos()); // recompute the geometry of the block - updateGeometry(); + updateGeometry(InterfaceMove); // update connection from/to the selected interface foreach(ConnectionItem *item, getScene()->getConnectionItems()){ if ((item->getFromInterfaceItem() == currentInterface) || (item->getToInterfaceItem() == currentInterface)) { - item->setPathes(); + item->setPath(); } } - update(); + //update(); } }