diff options
| author | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-01-06 15:48:47 +0000 |
|---|---|---|
| committer | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-01-06 15:48:47 +0000 |
| commit | bb438bec17665a907c28ca47d665766c7b26be79 (patch) | |
| tree | 498dd3e71e349dc5845cdb5e48312c166328c0dd /lib/python/Screens/Menu.py | |
| parent | eec9fe4a7e1381ee158c75431bc5fdd685b8f552 (diff) | |
| download | enigma2-bb438bec17665a907c28ca47d665766c7b26be79.tar.gz enigma2-bb438bec17665a907c28ca47d665766c7b26be79.zip | |
plugins can register their own menu now
menus have their own id now
the update plugin for example adds a menu item to the Setup menu with the id "setup"
Diffstat (limited to 'lib/python/Screens/Menu.py')
| -rw-r--r-- | lib/python/Screens/Menu.py | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/lib/python/Screens/Menu.py b/lib/python/Screens/Menu.py index 0abc1735..4ad36d18 100644 --- a/lib/python/Screens/Menu.py +++ b/lib/python/Screens/Menu.py @@ -55,7 +55,27 @@ class boundFunction: self.args = args def __call__(self): self.fnc(*self.args) - + +class MenuUpdater: + def __init__(self): + self.updatedMenuItems = {} + + def addMenuItem(self, id, text, module, screen): + if not self.updatedMenuAvailable(id): + self.updatedMenuItems[id] = [] + self.updatedMenuItems[id].append([text, module, screen]) + + def delMenuItem(self, id, text, module, screen): + self.updatedMenuItems[id].remove([text, module, screen]) + + def updatedMenuAvailable(self, id): + return self.updatedMenuItems.has_key(id) + + def getUpdatedMenu(self, id): + return self.updatedMenuItems[id] + +menuupdater = MenuUpdater() + class Menu(Screen): def okbuttonClick(self): print "okbuttonClick" @@ -73,8 +93,8 @@ class Menu(Screen): # stuff which is just imported) # FIXME. somehow. if arg[0] != "": - exec "from Screens." + arg[0] + " import *" - + exec "from " + arg[0] + " import *" + self.openDialog(*eval(arg[1])) def nothing(self): #dummy @@ -100,7 +120,7 @@ class Menu(Screen): if x.nodeType != xml.dom.minidom.Element.nodeType: continue elif x.tagName == 'screen': - module = getValbyAttr(x, "module") + module = "Screens." + getValbyAttr(x, "module") screen = getValbyAttr(x, "screen") if len(screen) == 0: @@ -128,6 +148,7 @@ class Menu(Screen): Screen.__init__(self, session) list = [] + menuID = "" for x in childNode: #walk through the actual nodelist if x.nodeType != xml.dom.minidom.Element.nodeType: @@ -136,6 +157,12 @@ class Menu(Screen): self.addItem(list, x) elif x.tagName == 'menu': self.addMenu(list, x) + elif x.tagName == "id": + menuID = getValbyAttr(x, "val") + + if menuupdater.updatedMenuAvailable(menuID): + for x in menuupdater.getUpdatedMenu(menuID): + list.append((x[0], boundFunction(self.runScreen, (x[1], x[2] + ", ")))) self["menu"] = MenuList(list) |
