X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgui%2Felistboxcontent.cpp;h=621fa5cc907b0a33549d414c7891a9ede769f084;hb=55c2a88ecd94a2eb6aa00f1227912fcd2659932b;hp=afffbbe438a97c90b78015b79a31e6142fbb1ab9;hpb=df8830e6f19c5557fd52b1a9ac4fbf23c1afcdf2;p=vuplus_dvbapp diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index afffbbe..621fa5c 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include /* The basic idea is to have an interface which gives all relevant list @@ -50,7 +50,6 @@ DEFINE_REF(eListboxPythonStringContent); eListboxPythonStringContent::eListboxPythonStringContent() { - m_list = 0; } eListboxPythonStringContent::~eListboxPythonStringContent() @@ -104,7 +103,7 @@ int eListboxPythonStringContent::currentCursorSelectable() { if (m_list && cursorValid()) { - PyObject *item = PyList_GET_ITEM(m_list, m_cursor); + ePyObject item = PyList_GET_ITEM(m_list, m_cursor); if (!PyTuple_Check(item)) return 1; if (PyTuple_Size(item) >= 2) @@ -145,7 +144,7 @@ void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style, if (m_list && cursorValid()) { int gray = 0; - PyObject *item = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference! + ePyObject item = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference! painter.setFont(fnt); /* the user can supply tuples, in this case the first one will be displayed. */ @@ -177,12 +176,12 @@ void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style, painter.clippop(); } -void eListboxPythonStringContent::setList(PyObject *list) +void eListboxPythonStringContent::setList(ePyObject list) { Py_XDECREF(m_list); if (!PyList_Check(list)) { - m_list = 0; + m_list = ePyObject(); } else { m_list = list; @@ -196,11 +195,9 @@ void eListboxPythonStringContent::setList(PyObject *list) PyObject *eListboxPythonStringContent::getCurrentSelection() { if (!(m_list && cursorValid())) - { - Py_INCREF(Py_None); - return Py_None; - } - PyObject *r = PyList_GET_ITEM(m_list, m_cursor); + Py_RETURN_NONE; + + ePyObject r = PyList_GET_ITEM(m_list, m_cursor); Py_XINCREF(r); return r; } @@ -214,7 +211,12 @@ void eListboxPythonStringContent::invalidateEntry(int index) void eListboxPythonStringContent::invalidate() { if (m_listbox) + { + int s = size(); + if ( m_cursor >= s ) + m_listbox->moveSelectionTo(s?s-1:0); m_listbox->invalidate(); + } } ////////////////////////////////////// @@ -231,8 +233,8 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, if (m_list && cursorValid()) { /* get current list item */ - PyObject *item = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference! - PyObject *text = 0, *value = 0; + ePyObject item = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference! + ePyObject text, value; painter.setFont(fnt); /* the first tuple element is a string for the left side. @@ -261,7 +263,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, value = PyTuple_GET_ITEM(item, 1); if (value) { - PyObject *args = PyTuple_New(1); + ePyObject args = PyTuple_New(1); PyTuple_SET_ITEM(args, 0, PyInt_FromLong(selected)); /* CallObject will call __call__ which should return the value tuple */ @@ -278,14 +280,14 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, if (value && PyTuple_Check(value)) { /* convert type to string */ - PyObject *type = PyTuple_GET_ITEM(value, 0); + ePyObject type = PyTuple_GET_ITEM(value, 0); const char *atype = (type && PyString_Check(type)) ? PyString_AsString(type) : 0; if (atype) { if (!strcmp(atype, "text")) { - PyObject *pvalue = PyTuple_GET_ITEM(value, 1); + ePyObject pvalue = PyTuple_GET_ITEM(value, 1); const char *value = (pvalue && PyString_Check(pvalue)) ? PyString_AsString(pvalue) : ""; painter.setFont(fnt2); if (value_alignment_left) @@ -296,8 +298,8 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, /* pvalue is borrowed */ } else if (!strcmp(atype, "slider")) { - PyObject *pvalue = PyTuple_GET_ITEM(value, 1); - PyObject *psize = PyTuple_GET_ITEM(value, 2); + ePyObject pvalue = PyTuple_GET_ITEM(value, 1); + ePyObject 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; @@ -316,7 +318,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, /* pvalue is borrowed */ } else if (!strcmp(atype, "mtext")) { - PyObject *pvalue = PyTuple_GET_ITEM(value, 1); + ePyObject pvalue = PyTuple_GET_ITEM(value, 1); const char *text = (pvalue && PyString_Check(pvalue)) ? PyString_AsString(pvalue) : ""; int xoffs = value_alignment_left ? 0 : m_seperation; ePtr para = new eTextPara(eRect(offset + eSize(xoffs, 0), item_right)); @@ -325,7 +327,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, para->realign(value_alignment_left ? eTextPara::dirLeft : eTextPara::dirRight); int glyphs = para->size(); - PyObject *plist = 0; + ePyObject plist; if (PyTuple_Size(value) >= 3) plist = PyTuple_GET_ITEM(value, 2); @@ -337,7 +339,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, for (int i = 0; i < entries; ++i) { - PyObject *entry = PyList_GET_ITEM(plist, i); + ePyObject entry = PyList_GET_ITEM(plist, i); int num = PyInt_Check(entry) ? PyInt_AsLong(entry) : -1; if ((num < 0) || (num >= glyphs)) @@ -382,7 +384,6 @@ int eListboxPythonConfigContent::currentCursorSelectable() RESULT SwigFromPython(ePtr &res, PyObject *obj); eListboxPythonMultiContent::eListboxPythonMultiContent() - :m_buildFunc(0) { } @@ -399,7 +400,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear(); - PyObject *items=0; + ePyObject items; if (m_list && cursorValid()) { @@ -433,7 +434,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c int size = PyList_Size(items); for (int i = 1; i < size; ++i) { - PyObject *item = PyList_GET_ITEM(items, i); // borrowed reference! + ePyObject item = PyList_GET_ITEM(items, i); // borrowed reference! if (!item) { @@ -441,7 +442,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c goto error_out; } - PyObject *px = 0, *py = 0, *pwidth = 0, *pheight = 0, *pfnt = 0, *pstring = 0, *pflags = 0, *pcolor = 0; + ePyObject px, py, pwidth, pheight, pfnt, pstring, pflags, pcolor; /* we have a list of tuples: @@ -625,7 +626,7 @@ error_out: painter.clippop(); } -void eListboxPythonMultiContent::setBuildFunc(PyObject *cb) +void eListboxPythonMultiContent::setBuildFunc(ePyObject cb) { if (m_buildFunc) Py_DECREF(m_buildFunc); @@ -639,7 +640,7 @@ int eListboxPythonMultiContent::currentCursorSelectable() /* each list-entry is a list of tuples. if the first of these is none, it's not selectable */ if (m_list && cursorValid()) { - PyObject *item = PyList_GET_ITEM(m_list, m_cursor); + ePyObject item = PyList_GET_ITEM(m_list, m_cursor); if (PyList_Check(item)) { item = PyList_GET_ITEM(item, 0);