void SCgPairModeEventHandler::mousePress(QGraphicsSceneMouseEvent *event) { SCgEventHandler::mousePress(event); if (event->button() == Qt::LeftButton) { QPointF mousePos = event->scenePos(); SCgObject *obj = mScene->objectAt(mousePos); // if we not create pair yet and press on scg-object, then // start pair creation if (obj && !mPathItem) startLineCreation(mousePos); else if (obj && obj != mPathItem->parentItem()) { SCgObject *begObj = mObjectAtFirstPoint; SCgObject *endObj = obj; // do not create lines with equivalent begin end end object if (begObj != endObj && begObj && !begObj->isDead()) { SCgContour* c=0; // get parent contour QGraphicsItem* parent = begObj->parentItem(); if(parent && parent == endObj->parentItem()) if (parent->type() == SCgContour::Type) c = static_cast<SCgContour*>(parent); mScene->createPairCommand(mLinePoints, begObj, endObj, c); } endLineCreation(); } // if (obj) } }
foreach(QGraphicsItem* grItem, childItems()) { if (SCgObject::isSCgObjectType(grItem->type())) { SCgObject *scgObject = static_cast<SCgObject*>(grItem); if(!scgObject->isDead()) scgObject->del(delList); } }
void SCgContour::updateConnected() { SCgPointObject::updateConnected(); // update child items foreach(QGraphicsItem* grItem, childItems()) { if (SCgObject::isSCgObjectType(grItem->type())) { SCgObject *scgObject = static_cast<SCgObject*>(grItem); if(!scgObject->isDead()) scgObject->updateConnected(); } } }