示例#1
0
SCnFieldItem* SCnEditorScene::appendField(SCnFieldItem *field, SCnFieldItem *afterField)
{
    if (field->mEditorScene != 0)
        field->mEditorScene->removeField(field);

    field->mEditorScene = this;

    if (afterField != 0)
    {
        bool inserted = false;
        FieldItems::iterator it;
        for (it = mFields.begin(); it != mFields.end(); ++it)
        {
            if (*it == afterField)
            {
                mFields.insert(it + 1, field);
                inserted = true;
                break;
            }
        }

        if (!inserted)
            mFields.push_back(field);
    }else
        mFields.push_back(field);

    addItem(field);
    updateFieldsPositions();

    return field;
}
示例#2
0
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();
    }
}
示例#3
0
void SCnEditorScene::removeField(SCnFieldItem *field)
{
    Q_ASSERT(mFields.contains(field));

    removeItem(field);
    for (qint32 i = 0; i < mFields.size(); i++)
    {
        if (mFields[i] == field)
        {
            mFields.remove(i);
            break;
        }
    }

    delete field;

    updateFieldsPositions();
}