void CGUIAttributeEditor::refreshAttribs() { // clear the attribute list u32 i; for (i=0; i<AttribList.size(); ++i) { AttribList[i]->remove(); AttribList[i]->drop(); } AttribList.clear(); position2di top(10, 5); rect<s32> r(top.X, top.Y, getClientArea().getWidth() - 10, 5 + Environment->getSkin()->getFont()->getDimension(L"A").Height); // add attribute elements u32 c = Attribs->getAttributeCount(); for (i=0; i<c; ++i) { // try to create attribute stringc str = Attribs->getAttributeTypeString(i); str += "_attribute"; CGUIAttribute* n = (CGUIAttribute*)Environment->addGUIElement(str.c_str(), this); if (n) { // add custom attribute editor AttribList.push_back(n); n->setParentID(getID()); n->grab(); } else { // create a generic string editor AttribList.push_back(new CGUIStringAttribute(Environment, this, getID())); // dont grab it because we created it with new } AttribList[i]->setSubElement(true); AttribList[i]->setRelativePosition(r); AttribList[i]->setAlignment(EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); AttribList[i]->setAttrib(Attribs, i); r += position2di(0, AttribList[i]->getRelativePosition().getHeight() + 5); } }