- add positioner plugin (just basic gui atm)
[enigma2.git] / lib / gui / elistboxcontent.cpp
index 5421f2529555720b1a7f744111a4cd4894fdd579..f5ae2b3837d3507d8b2239f4bd27e7fb42c8f4fa 100644 (file)
@@ -374,10 +374,11 @@ void eListboxPythonStringContent::setList(PyObject *list)
 
 PyObject *eListboxPythonStringContent::getCurrentSelection()
 {
-       if (!m_list)
-               return 0;
-       if (!cursorValid())
-               return 0;
+       if (!(m_list && cursorValid()))
+       {
+               Py_INCREF(Py_None);
+               return Py_None;
+       }
        PyObject *r = PyList_GET_ITEM(m_list, m_cursor);
        Py_XINCREF(r);
        return r;
@@ -466,18 +467,23 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style,
                                                PyObject *pvalue = PyTuple_GET_ITEM(value, 1);
                                                const char *value = (pvalue && PyString_Check(pvalue)) ? PyString_AsString(pvalue) : "<not-a-string>";
                                                painter.setFont(fnt2);
-                                               painter.renderText(eRect(offset + eSize(m_seperation, 0), item_right), value, value_alignment_left ? gPainter::RT_HALIGN_LEFT : gPainter::RT_HALIGN_RIGHT);
+                                               if (value_alignment_left)
+                                                       painter.renderText(eRect(offset, item_right), value, gPainter::RT_HALIGN_LEFT);
+                                               else
+                                                       painter.renderText(eRect(offset + eSize(m_seperation, 0), item_right), value, gPainter::RT_HALIGN_RIGHT);
 
                                                        /* pvalue is borrowed */
                                        } else if (!strcmp(atype, "slider"))
                                        {
                                                PyObject *pvalue = PyTuple_GET_ITEM(value, 1);
+                                               PyObject *psize = PyTuple_GET_ITEM(value, 2);
                                                
                                                        /* convert value to Long. fallback to -1 on error. */
                                                int value = (pvalue && PyInt_Check(pvalue)) ? PyInt_AsLong(pvalue) : -1;
+                                               int size = (pvalue && PyInt_Check(psize)) ? PyInt_AsLong(psize) : 100;
                                                
                                                        /* calc. slider length */
-                                               int width = item_right.width() * value / 100;
+                                               int width = item_right.width() * value / size;
                                                int height = item_right.height();
                                                
                                                                                                
@@ -491,8 +497,8 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style,
                                        {
                                                PyObject *pvalue = PyTuple_GET_ITEM(value, 1);
                                                const char *text = (pvalue && PyString_Check(pvalue)) ? PyString_AsString(pvalue) : "<not-a-string>";
-                                               
-                                               ePtr<eTextPara> para = new eTextPara(eRect(offset + eSize(m_seperation, 0), item_right));
+                                               int xoffs = value_alignment_left ? 0 : m_seperation;
+                                               ePtr<eTextPara> para = new eTextPara(eRect(offset + eSize(xoffs, 0), item_right));
                                                para->setFont(fnt2);
                                                para->renderString(text, 0);
                                                para->realign(value_alignment_left ? eTextPara::dirLeft : eTextPara::dirRight);
@@ -514,7 +520,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style,
                                                        int num = PyInt_Check(entry) ? PyInt_AsLong(entry) : -1;
                                                        
                                                        if ((num < 0) || (num >= glyphs))
-                                                               eWarning("glyph index %d in PythonConfigList out of bounds!");
+                                                               eWarning("glyph index %d in PythonConfigList out of bounds!", num);
                                                        else
                                                        {
                                                                para->setGlyphFlag(num, GS_INVERT);
@@ -710,6 +716,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
 
                                break;
                        }
+                       case TYPE_PIXMAP_ALPHATEST:
                        case TYPE_PIXMAP: // pixmap
                        {
                                if (!(px && py && pwidth && pheight && pfnt))
@@ -733,7 +740,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
                                r &= itemrect;
                                
                                painter.clip(r);
-                               painter.blit(pixmap, r.topLeft(), r);
+                               painter.blit(pixmap, r.topLeft(), r, (type == TYPE_PIXMAP_ALPHATEST) ? gPainter::BT_ALPHATEST : 0);
                                painter.clippop();
 
                                break;