X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/31688e1b8f028059a700a92a8276c97928abd260..3cddda083f4ace59e279f9f4f6ae12bad079d33b:/lib/gui/elistboxcontent.cpp diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index 2f05f5dc..d51729d2 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -29,6 +29,14 @@ iListboxContent::~iListboxContent() { } +iListboxContent::iListboxContent(): m_listbox(0) +{ +} + +void iListboxContent::setListbox(eListbox *lb) +{ + m_listbox = lb; +} DEFINE_REF(eListboxTestContent); @@ -203,11 +211,6 @@ int eListboxStringContent::size() return m_size; } -RESULT eListboxStringContent::connectItemChanged(const Slot0 &itemChanged, ePtr &connection) -{ - return 0; -} - void eListboxStringContent::setSize(const eSize &size) { m_itemsize = size; @@ -316,11 +319,6 @@ int eListboxPythonStringContent::size() return PyList_Size(m_list); } -RESULT eListboxPythonStringContent::connectItemChanged(const Slot0 &itemChanged, ePtr &connection) -{ - return 0; -} - void eListboxPythonStringContent::setSize(const eSize &size) { m_itemsize = size; @@ -337,6 +335,10 @@ void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style, { PyObject *item = PyList_GetItem(m_list, m_cursor); // borrowed reference! painter.setFont(fnt); + + /* the user can supply tuples, in this case the first one will be displayed. */ + if (PyTuple_Check(item)) + item = PyTuple_GetItem(item, 0); const char *string = PyString_Check(item) ? PyString_AsString(item) : ""; @@ -376,3 +378,54 @@ PyObject *eListboxPythonStringContent::getCurrentSelection() } ////////////////////////////////////// + +void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) +{ + ePtr fnt = new gFont("Arial", 14); + ePtr fnt2 = new gFont("Arial", 16); + painter.clip(eRect(offset, m_itemsize)); + style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); + painter.clear(); + + if (m_list && cursorValid()) + { + PyObject *item = PyList_GetItem(m_list, m_cursor); // borrowed reference! + PyObject *text = 0, *value = 0; + painter.setFont(fnt); + + /* the user can supply tuples, in this case the first one will be displayed. */ + if (PyTuple_Check(item)) + { + text = PyTuple_GetItem(item, 0); + value = PyTuple_GetItem(item, 1); + } + + text = PyObject_Str(text); + value = PyObject_Str(value); + + const char *string = (text && PyString_Check(text)) ? PyString_AsString(text) : ""; + const char *string_val = (value && PyString_Check(value)) ? PyString_AsString(value) : ""; + + eSize item_left = eSize(m_seperation, m_itemsize.height()); + eSize item_right = eSize(m_itemsize.width() - m_seperation, m_itemsize.height()); + + painter.renderText(eRect(offset, item_left), string, gPainter::RT_HALIGN_LEFT); + + painter.setFont(fnt2); + painter.renderText(eRect(offset + eSize(m_seperation, 0), item_right), string_val, gPainter::RT_HALIGN_RIGHT); + + Py_XDECREF(text); + Py_XDECREF(value); + + if (selected) + style.drawFrame(painter, eRect(offset, m_itemsize), eWindowStyle::frameListboxEntry); + } + + painter.clippop(); +} + +void eListboxPythonConfigContent::invalidateEntry(int index) +{ + m_listbox->entryChanged(index); +} +