void GwfStreamWriter::writeBus(SCgObject *obj) { writeStartElement("bus"); writeObjectAttributes(obj); SCgBus* bus = static_cast<SCgBus*>(obj); writeAttribute("owner", QString::number(bus->owner()->id())); QVector<QPointF> points = bus->scenePoints(); writeAttribute("b_x", QString::number(points.first().x())); writeAttribute("b_y", QString::number(points.first().y())); writeAttribute("e_x", QString::number(points.last().x())); writeAttribute("e_y", QString::number(points.last().y())); // do not save begin and end points points.pop_back(); points.pop_front(); writePoints(points); writeEndElement(); }
void SCgSelectSubGraph::select(SCgObject *obj) { obj->setSelected(true); // select parent //if (obj->parentItem() != 0 && SCgObject::isSCgObjectType(obj->parentItem()->type())) //select(static_cast<SCgObject*>(obj->parentItem())); switch(obj->type()) { case SCgBus::Type: { SCgBus *bus = static_cast<SCgBus*>(obj); if (bus->owner() != 0 && !bus->owner()->isSelected()) select(bus->owner()); } break; case SCgNode::Type: { SCgNode *node = static_cast<SCgNode*>(obj); if (node->bus() != 0 && !node->bus()->isSelected()) select(node->bus()); } break; case SCgPair::Type: { SCgPair *pair = static_cast<SCgPair*>(obj); if (pair->beginObject() != 0 && !pair->beginObject()->isSelected()) select(pair->beginObject()); if (pair->endObject() != 0 && !pair->endObject()->isSelected()) select(pair->endObject()); } break; case SCgContour::Type: { SCgContour *contour = static_cast<SCgContour*>(obj); QList<QGraphicsItem*> items = contour->childItems(); QGraphicsItem *item = 0; foreach(item, items) { // skip not sc.g-objects and selected objects if (!SCgObject::isSCgObjectType(item->type()) || item->isSelected()) continue; select(static_cast<SCgObject*>(item)); } } break; } SCgObject::SCgObjectList connected = obj->connectedObjects(); SCgObject *c_obj = 0; foreach(c_obj, connected) { // skip selected objects if (c_obj->isSelected()) continue; select(c_obj); } }