void SCgCommandCreateBus::redo() { SCgBaseCommand::redo(); SCgBus *bus = 0; if (mObject == 0) { bus = mScene->construction()->createBus(); bus->setOwner(mOwner); mObject = bus; QPointF pt; foreach (pt, mPoints) bus->appendPoint(pt); connect(mObject, SIGNAL(destroyed()), this, SLOT(busDestroyed())); }else { mScene->construction()->appendObject(mObject); bus = qobject_cast<SCgBus*>(mObject); } bus->setOwner(mOwner); bus->updatePoints(); }
void SCgCommandCreateBus::undo() { Q_ASSERT_X(mObject != 0, "void SCgCommandCreateBus::undo()", "Bus doesn't exists"); mScene->construction()->removeObject(mObject); SCgBus *bus = qobject_cast<SCgBus*>(mObject); bus->setOwner(mOwner); SCgBaseCommand::undo(); }
SCgBus* SCgScene::createSCgBus(const QVector<QPointF>& points, SCgNode *owner) { SCgBus* bus = new SCgBus; if (owner != 0) bus->setOwner(owner); bus->setPoints(points); addItem(bus); return bus; }