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)
    }
}
//back
void SCgCommandObjectDelete::undo()
{
    SCgBaseCommand::undo();

    QList<SCgObject*>::iterator it;
    for (it = mDelList.begin(); it != mDelList.end(); ++it)
    {
        SCgObject *object = *it;
        if(!object->parentItem())
        {
            QGraphicsItem *parent = mParents[object];

            object->undel(mScene);

            object->setParentItem(parent);
            object->positionChanged();
        }
    }

}
void SCgCommandObjectDelete::redo()
{
    mDelList.clear();
    mParents.clear();

    mObject->del(mDelList);

    QList<SCgObject*>::iterator it;
    for (it = mDelList.begin(); it != mDelList.end(); ++it)
    {
        SCgObject *object = *it;
        QGraphicsItem *parent = object->parentItem();

        mParents[object] = parent;

        if(object->scene() == mScene)
        {
            object->setParentItem(0);
            mScene->removeItem(object);
        }
    }

    SCgBaseCommand::redo();
}