Esempio n. 1
0
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();
}
Esempio n. 2
0
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);
    }
}