void GwfStreamWriter::writePair(SCgObject *obj) { QString type = mTypeAlias2GWFType[obj->typeAlias()].mid(0,3); if(type=="arc") writeStartElement(type); else writeStartElement("pair"); writeObjectAttributes(obj); SCgPair* pair = static_cast<SCgPair*>(obj); SCgObject* b = pair->beginObject(); SCgObject* e = pair->endObject(); writeAttribute("id_b", QString::number(b->id())); writeAttribute("id_e", QString::number(e->id())); writePosition(b,"b_x","b_y"); writePosition(e,"e_x","e_y"); writeAttribute("dotBBalance", QString::number(pair->beginDot())); writeAttribute("dotEBalance", QString::number(pair->endDot())); QVector<QPointF> points = pair->scenePoints(); 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); } }