1 from Screen import Screen
2 from Components.Button import Button
3 from Components.ServiceList import ServiceList
4 from Components.ActionMap import ActionMap
6 from enigma import eServiceReference
8 from Screens.FixedMenu import FixedMenu
10 import xml.dom.minidom
12 class ChannelContextMenu(FixedMenu):
13 def __init__(self, session, csel):
16 menu = [("back", self.close)]
19 menu.append(("disable move mode", self.moveMode))
21 menu.append(("enable move mode", self.moveMode))
23 if csel.bouquet_mark_edit:
24 menu.append(("end bouquet edit", self.bouquetMarkEnd))
25 menu.append(("abort bouquet edit", self.bouquetMarkAbort))
27 menu.append(("edit bouquet...", self.bouquetMarkStart))
29 FixedMenu.__init__(self, session, "Channel Selection", menu)
30 self.skinName = "Menu"
33 self.csel.setMoveMode(self.csel.movemode)
36 def bouquetMarkStart(self):
37 self.csel.startMarkedEdit()
40 def bouquetMarkEnd(self):
41 self.csel.endMarkedEdit(abort=False)
44 def bouquetMarkAbort(self):
45 self.csel.endMarkedEdit(abort=True)
48 class ChannelSelection(Screen):
49 def __init__(self, session):
50 Screen.__init__(self, session)
52 self.entry_marked = False
54 self.bouquet_mark_edit = False
59 self["key_red"] = Button("All")
60 self["key_green"] = Button("Provider")
61 self["key_yellow"] = Button("Satellite")
62 self["key_blue"] = Button("Favourites")
64 self["list"] = ServiceList()
65 self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)"""))
67 #self["okbutton"] = Button("ok", [self.channelSelected])
69 class ChannelActionMap(ActionMap):
70 def action(self, contexts, action):
71 if action[:7] == "bouquet":
72 print "setting root to " + action[8:]
74 l.setMode(l.MODE_NORMAL)
75 l.setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:" + action[8:]))
77 ActionMap.action(self, contexts, action)
79 self["actions"] = ChannelActionMap(["ChannelSelectActions", "OkCancelActions"],
82 "ok": self.channelSelected,
84 "contextMenu": self.doContext,
85 "showFavourites": self.showFavourites
87 self["actions"].csel = self
91 def startMarkedEdit(self):
92 self.bouquet_mark_edit = True
96 marked = self.__marked
100 print "mark: " + str(x)
103 def endMarkedEdit(self, abort):
104 self.bouquet_mark_edit = True
105 new_marked = self["list"].getMarked()
106 self.__marked = new_marked
108 self.bouquet_mark_edit = False
110 def clearMarks(self):
111 self["list"].clearMarks()
114 if not self.bouquet_mark_edit:
117 ref = self["list"].getCurrent()
118 if self["list"].isMarked(ref):
119 self["list"].removeMarked(ref)
121 self["list"].addMarked(ref)
124 def channelSelected(self):
125 ref = self["list"].getCurrent()
127 if self.entry_marked:
128 self["list"].setCurrentMarked(False)
129 self.entry_marked = False
131 self["list"].setCurrentMarked(True)
132 self.entry_marked = True
133 elif (ref.flags & 7) == 7:
135 l.setMode(l.MODE_NORMAL)
138 self.session.nav.playService(ref)
139 print "current: " + ref.toString()
144 self.session.nav.playService(self["list"].getCurrent())
147 self["list"].moveUp()
150 self["list"].moveDown()
153 self.session.open(ChannelContextMenu, self)
155 def setMoveMode(self, mode):
157 self.movemode = False
161 def showFavourites(self):
163 l.setRoot(eServiceReference('1:0:1:0:0:0:0:0:0:0:(provider == "fav")'))
164 l.setMode(l.MODE_FAVOURITES)