g.setRange(0, 100)
return g
+
class MenuList(HTMLComponent, GUIComponent):
- def __init__(self):
+ def __init__(self, list):
GUIComponent.__init__(self)
+ self.l = eListboxPythonStringContent()
+ self.l.setList(list)
def getCurrent(self):
-# return self.l.getCurrentSelection()
- return "none"
+ return self.l.getCurrentSelection()
def GUIcreateInstance(self, priv, parent, skindata):
g = eListbox(parent)
- # BIG BIG HACK. :( we have to ensure that the eListboxPythonStringContent doesn't get destroyed.
- # we really have to take a look at the GC stuff
- l = eListboxPythonStringContent()
- l.setList(["Test Object 1", "Item #2", "Item #3", "nun kommt eine Zahl:", 15, "Bla fasel", "lulabla"])
- g.setContent(l)
+ g.setContent(self.l)
return g
def GUIdeleteInstance(self, g):
g.setContent(None)
- #del self.l
{
m_content = content;
invalidate();
- m_content->cursorHome();
+ if (m_content)
+ m_content->cursorHome();
m_top = 0;
m_selected = 0;
}
{
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) : "<not-a-string>";
self.currentDialog = None
def processDelay(self):
- self.currentDialog.close()
+ self.currentDialog.doClose()
if self.currentWindow != None:
self.currentWindow.hide()
class Screen(dict, HTMLSkin, GUISkin):
""" bla """
- def close(self):
+ # never call this directly - it will be called from the session!
+ def doClose(self):
GUISkin.close(self)
+ def close(self, retval=None):
+ self.session.close()
+
# a test dialog
class testDialog(Screen):
def testDialogClick(self):
- self["title"].setText(self["menu"].getCurrent())
-
- self.tries += 1
+ selection = self["menu"].getCurrent()
+ selection[1]()
+
+ def goMain(self):
+# self.close(0)
+ self["title"].setText("you selected the main menu!");
+
+ def goEmu(self):
+# self.close(1)
+ self["title"].setText("EMUs ARE ILLEGAL AND NOT SUPPORTED!");
+
+ def goTimeshift(self):
+# self.close(2)
+ self["title"].setText("JUST PRESS THE YELLOW BUTTON!");
+
+ def goHDTV(self):
+# self.close(3)
+ self["title"].setText("HDTV GREEN FLASHES: ENABLED");
def __init__(self):
GUISkin.__init__(self)
b.onClick = [ self.testDialogClick ]
self["okbutton"] = b
self["title"] = Header("Test Dialog - press ok to leave!")
- self["menu"] = MenuList()
+ self["menu"] = MenuList(
+ [
+ ("MAIN MENU", self.goMain),
+ ("EMU SETUP", self.goEmu),
+ ("TIMESHIFT SETUP", self.goTimeshift),
+ ("HDTV PIP CONFIG", self.goHDTV)
+ ])
+
+
+class MainMenu(Screen):
+ def __init__(self):
+ GUISkin.__init__(self)
- self.tries = 0
+ self["ok"] = Button("ok")
+ self["ok"].onClick = [ self.close ]
+
# a clock display dialog
class clockDisplay(Screen):
def okbutton(self):