コード例 #1
0
ファイル: scneditorscene.cpp プロジェクト: DavidBermuda/kbe
void SCnEditorScene::selectPrevField(SCnFieldItem *field)
{
    SCnFieldItem *prev = prevField(field);
    if (prev != 0)
    {
        unselectItems();
        prev->setSelected(true);
        views().first()->centerOn(prev);
    }
}
コード例 #2
0
ファイル: scneditorscene.cpp プロジェクト: DavidBermuda/kbe
void SCnEditorScene::selectNextField(SCnFieldItem *field)
{
    SCnFieldItem *next = nextField(field);
    if (next != 0)
    {
        unselectItems();
        next->setSelected(true);
        views().first()->centerOn(next);
    }
}
コード例 #3
0
ファイル: scneditorscene.cpp プロジェクト: DenisKlimenko/kbe
SCnEditorScene::SCnEditorScene(QObject *parent) :
    QGraphicsScene(parent),
    mLevelOffset(30),
    mLevelDistance(10)
{
    SCnFieldItem *pitem = new SCnFieldGlobalIdtf(this);
    pitem->setValue("test");
    appendField(pitem);

    for (quint32 i = 0; i < 5; i++)
    {
        SCnFieldItem *item = new SCnFieldGlobalIdtf(pitem);
        item->setValue(QString("test %1").arg(i));
        item->setParentItem(pitem);

        for (quint32 j = 0; j < 5; j++)
        {
            SCnFieldItem *jitem = new SCnFieldGlobalIdtf(item);
            jitem->setValue(QString("test %1_%2").arg(i).arg(j));
            jitem->setParentItem(item);
        }
    }

    inputDialog = new SCnInputDialog();
    connect(inputDialog, SIGNAL(textRecieved(QString)), this, SLOT(setTextForSelectedField(QString)));
}
コード例 #4
0
ファイル: scnfielditem.cpp プロジェクト: DenisKlimenko/kbe
void SCnFieldItem::updateOnChilds()
{
    qreal offset = childsOffset();
    QGraphicsItem *child = 0;
    QList<QGraphicsItem*> _childItems = childItems();

    foreach(child, _childItems)
    {
        if (!isSCnFieldType(child->type())) return; // skip non scn-fields
        SCnFieldItem *item = static_cast<SCnFieldItem*>(child);

        item->setPos(30, offset);
        offset += 10 + item->boundingRect().height();
    }

}
コード例 #5
0
ファイル: scneditorscene.cpp プロジェクト: DenisKlimenko/kbe
void SCnEditorScene::removeField(SCnFieldItem *field)
{
    if (!mFields.contains(field))
    {
        SCnFieldItem* parent = parentField(field);
        removeItem(field);

        delete field;

        while (parent)
        {
            parent->updateOnChilds();
            parent = parentField(parent);
        }

        updateFieldsPositions();
    }
}
コード例 #6
0
ファイル: scneditorscene.cpp プロジェクト: DenisKlimenko/kbe
void SCnEditorScene::updateFieldsPositions()
{
    SCnFieldItem *field = 0;
    qreal y_offset = 40.f;
    qreal max_width = 0.f;
    foreach(field, mFields)
    {
        QRectF rect = field->boundingRect();
        // calculate new position
        QPointF pos;
        pos.setX(20);
        pos.setY(y_offset);

        y_offset += mLevelDistance + rect.height();

        qreal w = rect.width();
        max_width = qMax(w, max_width);

        field->setPos(pos);
    }
コード例 #7
0
ファイル: scneditorscene.cpp プロジェクト: DenisKlimenko/kbe
SCnFieldItem* SCnEditorScene::prevField(SCnFieldItem *field, bool withLevelChange)
{
    SCnFieldItem *prevField;
    SCnFieldItem *nextField = 0;
    QGraphicsItem *parentItem = field->parentItem();
    if (!parentItem)
        return 0;
    QList<QGraphicsItem *> items = withLevelChange
            ? this->items()
            : parentItem->childItems();
    foreach (QGraphicsItem *item, items)
    {
        if (nextField->isSCnFieldType(item->type()))
        {
            prevField = nextField;
            nextField = static_cast<SCnFieldItem*>(item);
            if (nextField == field)
                return prevField;
        }
    }
    return 0;
}
コード例 #8
0
ファイル: scneditorscene.cpp プロジェクト: DenisKlimenko/kbe
SCnFieldItem* SCnEditorScene::nextField(SCnFieldItem *field, bool withLevelChange)
{    
    SCnFieldItem *nextField = 0;
    bool prevFieldComingFlag = false;
    QGraphicsItem *parentItem = field->parentItem();
    if (!parentItem)
        return 0;
    QList<QGraphicsItem *> items = withLevelChange
            ? this->items()
            : parentItem->childItems();
    foreach(QGraphicsItem *item, items)
    {
        if (nextField->isSCnFieldType(item->type()))
        {
            nextField = static_cast<SCnFieldItem*>(item);
            if (prevFieldComingFlag)
                return nextField;
            if (nextField == field)
                prevFieldComingFlag = true;
        }
    }
    return 0;
}
コード例 #9
0
ファイル: scneditorscene.cpp プロジェクト: DavidBermuda/kbe
SCnEditorScene::SCnEditorScene(QObject *parent) :
    QGraphicsScene(parent),
    mLevelOffset(30),
    mLevelDistance(10)
{
    SCnFieldItem *pitem = new SCnFieldGlobalIdtf(this);
    pitem->setValue("test");
    appendField(pitem);

    for (quint32 i = 0; i < 10; i++)
    {
        SCnFieldItem *item = new SCnFieldGlobalIdtf(pitem);
        item->setValue(QString("test %1").arg(i));
        item->setParentItem(pitem);

        for (quint32 j = 0; j < 10; j++)
        {
            SCnFieldItem *jitem = new SCnFieldGlobalIdtf(pitem);
            jitem->setValue(QString("test %1_%2").arg(i).arg(j));
            jitem->setParentItem(item);
        }
    }
}