/* * ControlList_AddItem * (string label) / (ListItem) * ListItem is added to vector * For a string we create a new ListItem and add it to the vector */ PyDoc_STRVAR(addItem__doc__, "addItem(item) -- Add a new item to this control list.\n" "\n" "item : string, unicode or ListItem - item to add.\n" "\n" "example:\n" " - cList.addItem('Reboot XBMC')\n"); PyObject* ControlList_AddItem(ControlList *self, PyObject *args) { int itemPosition = INT_MAX; PyObject *pObject; string strText; ListItem* pListItem = NULL; if (!PyArg_ParseTuple(args, "O|i", &pObject, &itemPosition)) return NULL; if (ListItem_CheckExact(pObject)) { // object is a listitem pListItem = (ListItem*)pObject; Py_INCREF(pListItem); } else { // object is probably a text item if (!PyGetUnicodeString(strText, pObject, 1)) return NULL; // object is a unicode string now, create a new ListItem pListItem = ListItem_FromString(strText); } // add item to objects vector if (itemPosition == INT_MAX || itemPosition > m_vecItems.Size()) { self->vecItems.push_back(pListItem); } else if (itemPosition < -1 && !(itemPosition*-1 < m_vecItems.Size())) { self->vecItems.insert(self->vecItems.begin(), pListItem); } else { if (itemPosition >= 0) { self->vecItems.insert(self->vecItems.begin()+itemPosition, pListItem) } else { self->vecItems.insert(self->vecItems.begin()+(self->vecItems.size()+itemPosition), pListItem); } }