<key id="p" mapto="bouquet:(provider == PREMIERE)" flags="m" />
<key id="d" mapto="bouquet:(provider == ARD)" flags="m" />
<key id="a" mapto="bouquet:" flags="m" />
-
+
+ <key id="KEY_C" mapto="contextMenu" flags="m" />
<key id="KEY_M" mapto="mark" flags="m" />
<!-- yes, this is flexible as hell. -->
<key id="KEY_P" mapto="bouquet:(provider == PREMIERE)" flags="m" />
# mark stuff
def clearMarked(self):
self.l.clearMarked()
+
+ def clearMarks(self):
+ self.l.initMarked()
def isMarked(self, ref):
return self.l.isMarked(ref)
def removeMarked(self, ref):
self.l.removeMarked(ref)
+ def getMarked(self):
+ i = self.l
+ i.markedQueryStart()
+ ref = eServiceReference()
+ marked = [ ]
+ while i.markedQueryNext(ref) == 0:
+ marked.append(ref)
+ ref = eServiceReference()
+
+ return marked
from enigma import eServiceReference
+from Screens.Menu import FixedMenu
+
+import xml.dom.minidom
+
+class ChannelContextMenu(FixedMenu):
+ def __init__(self, session, csel):
+ self.csel = csel
+
+ menu = [("back", self.close)]
+
+ if csel.movemode:
+ menu.append(("disable move mode", self.moveMode))
+ else:
+ menu.append(("enable move mode", self.moveMode))
+
+ if csel.bouquet_mark_edit:
+ menu.append(("end bouquet edit", self.bouquetMarkEnd))
+ menu.append(("abort bouquet edit", self.bouquetMarkAbort))
+ else:
+ menu.append(("edit bouquet...", self.bouquetMarkStart))
+
+ FixedMenu.__init__(self, session, "Channel Selection", menu)
+ self.skinName = "Menu"
+
+ def moveMode(self):
+ self.csel.setMoveMode(self.csel.movemode)
+ self.close()
+
+ def bouquetMarkStart(self):
+ self.csel.startMarkedEdit()
+ self.close()
+
+ def bouquetMarkEnd(self):
+ self.csel.endMarkedEdit(abort=False)
+ self.close()
+
+ def bouquetMarkAbort(self):
+ self.csel.endMarkedEdit(abort=True)
+ self.close()
+
class ChannelSelection(Screen):
def __init__(self, session):
Screen.__init__(self, session)
-
+
+ self.movemode = False
+ self.bouquet_mark_edit = False
+
+ ## FIXME
+ self.__marked = [ ]
+
self["key_red"] = Button("red")
self["key_green"] = Button("green")
self["key_yellow"] = Button("yellow")
self["key_blue"] = Button("blue")
self["list"] = ServiceList()
- self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(provider=="ARD") && (type == 1)"""))
+ self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)"""))
#self["okbutton"] = Button("ok", [self.channelSelected])
{
"cancel": self.close,
"ok": self.channelSelected,
- "mark": self.doMark
+ "mark": self.doMark,
+ "contextMenu": self.doContext
})
self["actions"].csel = self
+ # marked edit mode
+
+ def startMarkedEdit(self):
+ self.bouquet_mark_edit = True
+ self.clearMarks()
+
+ # TODO
+ marked = self.__marked
+
+ l = self["list"]
+ for x in marked:
+ print "mark: " + str(x)
+ l.addMarked(x)
+
+ def endMarkedEdit(self, abort):
+ self.bouquet_mark_edit = True
+ new_marked = self["list"].getMarked()
+ self.__marked = new_marked
+ self.clearMarks()
+ self.bouquet_mark_edit = False
+
+ def clearMarks(self):
+ self["list"].clearMarks()
+
def doMark(self):
+ if not self.bouquet_mark_edit:
+ return
+
ref = self["list"].getCurrent()
if self["list"].isMarked(ref):
self["list"].removeMarked(ref)
else:
self["list"].addMarked(ref)
-
+
+ # ...
def channelSelected(self):
self.session.nav.playService(self["list"].getCurrent())
self.close()
def moveDown(self):
self["list"].moveDown()
+ def doContext(self):
+ self.session.open(ChannelContextMenu, self)
+
+ def setMoveMode(self, mode):
+ self.movemode = mode
+
import time
# hack alert!
-from Menu import *
+from Menu import MainMenu, mdom
class InfoBar(Screen):
def __init__(self, session):
print "loading mainmenu XML..."
menu = mdom.childNodes[0]
assert menu.tagName == "menu", "root element in menu must be 'menu'!"
- self.session.open(Menu, menu, menu.childNodes)
+ self.session.open(MainMenu, menu, menu.childNodes)
def switchChannelUp(self):
self.servicelist.moveUp()
self["sld_gamma"] = ProgressBar()
self["sld_gamma"].setValue(50)
-
-
-
class Menu(Screen):
- #add file load functions for the xml-file
- #remove old code (i.e. goScan / goClock...)
-
- def openDialog(self, dialog):
- self.session.open(dialog)
-
- def goSetup(self):
- self.session.open(configTest)
-
- def setModeTV(self):
- print "set Mode to TV"
- pass
-
- def setModeRadio(self):
- print "set Mode to Radio"
- pass
-
- def setModeFile(self):
- print "set Mode to File"
- pass
-
- def goScan(self):
- self.session.open(ServiceScan)
-
- def goClock(self):
- self.session.open(clockDisplay, Clock())
-
def okbuttonClick(self):
print "okbuttonClick"
selection = self["menu"].getCurrent()
a = getValbyAttr(parent, "text")
self["title"] = Header(a)
+class FixedMenu(Screen):
+ def okbuttonClick(self):
+ selection = self["menu"].getCurrent()
+ selection[1]()
+
+ def __init__(self, session, title, list):
+ Screen.__init__(self, session)
+
+ self["menu"] = MenuList(list)
+
+ self["actions"] = ActionMap(["OkCancelActions"],
+ {
+ "ok": self.okbuttonClick,
+ "cancel": self.close
+ })
+
+ self["title"] = Header(title)
+
+
+class MainMenu(Menu):
+ #add file load functions for the xml-file
+ #remove old code (i.e. goScan / goClock...)
+
+ def __init__(self, *x):
+ Menu.__init__(self, *x)
+ self.skinName = "Menu"
+
+ def openDialog(self, dialog):
+ self.session.open(dialog)
+
+ def goSetup(self):
+ self.session.open(configTest)
+
+ def setModeTV(self):
+ print "set Mode to TV"
+ pass
+
+ def setModeRadio(self):
+ print "set Mode to Radio"
+ pass
+
+ def setModeFile(self):
+ print "set Mode to File"
+ pass
+
+ def goScan(self):
+ self.session.open(ServiceScan)
+
+ def goClock(self):
+ self.session.open(clockDisplay, Clock())
<widget name="title" position="10,120" size="280,50" />
<widget name="theClock" position="10,60" size="280,50" />
</screen>
- <screen name="InfoBar" position="0,380" size="720,151" title="InfoBar" flags="wfNoBorder">
- <ePixmap position="0,0" size="720,151" pixmap="data/info-bg.png" />
+ <screen name="InfoBar" flags="wfNoBorder" position="0,380" size="720,148" title="InfoBar">
+ <ePixmap position="0,0" size="720,148" pixmap="data/info-bg.png" />
<widget name="ServiceName" position="69,30" size="427,26" valign="center" font="Arial;32" backgroundColor="#101258" />
<widget name="CurrentTime" position="575,10" size="66,30" backgroundColor="dark" font="Arial;16" />
# TODO: localization? as in e1?
value = str(a.value)
- skinAttributes[attrib] = value
+ skinAttributes.append((attrib, value))
def applySingleAttribute(guiObject, desktop, attrib, value):
# and set attributes
print "widget %s (%s) doesn't support attribute %s!" % ("", guiObject.__class__.__name__, attrib)
def applyAllAttributes(guiObject, desktop, attributes):
- for (attrib, value) in attributes.items():
+ for (attrib, value) in attributes:
applySingleAttribute(guiObject, desktop, attrib, value)
def loadSkin(desktop):
assert myscreen != None, "no skin for screen '" + name + "' found!"
- screen.skinAttributes = { }
+ screen.skinAttributes = [ ]
collectAttributes(screen.skinAttributes, myscreen)
screen.additionalWidgets = [ ]
# get corresponding gui object
try:
- attributes = screen[wname].skinAttributes = { }
+ attributes = screen[wname].skinAttributes = [ ]
except:
raise str("component with name '" + wname + "' was not found in skin of screen '" + name + "'!")
else:
raise str("unsupported stuff : %s" % widget.tagName)
- w.skinAttributes = { }
+ w.skinAttributes = [ ]
collectAttributes(w.skinAttributes, widget)
# applyAttributes(guiObject, widget, desktop)