1 from HTMLComponent import HTMLComponent
2 from GUIComponent import GUIComponent
4 from enigma import loadPNG, eListboxServiceContent, eListbox, eServiceCenter, eServiceReference, gFont, eRect
6 from string import upper
8 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
10 class ServiceList(HTMLComponent, GUIComponent):
15 GUIComponent.__init__(self)
16 self.l = eListboxServiceContent()
18 pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "folder.png"))
20 self.l.setPixmap(self.l.picFolder, pic)
22 pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "marker-fs8.png"))
24 self.l.setPixmap(self.l.picMarker, pic)
26 pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "ico_dvb_s-fs8.png"))
28 self.l.setPixmap(self.l.picDVB_S, pic)
30 pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "ico_dvb_c-fs8.png"))
32 self.l.setPixmap(self.l.picDVB_C, pic)
34 pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "ico_dvb_t-fs8.png"))
36 self.l.setPixmap(self.l.picDVB_T, pic)
38 pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "ico_service_group-fs8.png"))
40 self.l.setPixmap(self.l.picServiceGroup, pic)
43 self.mode = self.MODE_NORMAL
45 def setCurrent(self, ref):
46 self.l.setCurrent(ref)
49 r = eServiceReference()
54 return self.instance.atBegin()
57 return self.instance.atEnd()
60 self.instance.moveSelection(self.instance.moveUp)
63 self.instance.moveSelection(self.instance.moveDown)
65 def moveToChar(self, char):
68 index = self.l.getNextBeginningWithChar(char)
69 indexup = self.l.getNextBeginningWithChar(upper(char))
71 if (index > indexup or index == 0):
74 self.instance.moveSelectionTo(index)
75 print "Moving to character " + str(char)
77 def moveToNextMarker(self):
78 idx = self.l.getNextMarkerPos()
79 self.instance.moveSelectionTo(idx)
81 def moveToPrevMarker(self):
82 idx = self.l.getPrevMarkerPos()
83 self.instance.moveSelectionTo(idx)
85 def moveToIndex(self, index):
86 self.instance.moveSelectionTo(index)
88 def getCurrentIndex(self):
89 return self.instance.getCurrentIndex()
93 def postWidgetCreate(self, instance):
94 instance.setWrapAround(True)
95 instance.setContent(self.l)
96 self.setMode(self.mode)
101 def getRootServices(self):
102 serviceHandler = eServiceCenter.getInstance()
103 list = serviceHandler.list(self.root)
109 dest.append(s.toString())
114 def setNumberOffset(self, offset):
115 self.l.setNumberOffset(offset)
117 def setPlayableIgnoreService(self, ref):
118 self.l.setIgnoreService(ref)
120 def setRoot(self, root, justSet=False):
122 self.l.setRoot(root, justSet)
126 def removeCurrent(self):
127 self.l.removeCurrent()
129 def addService(self, service, beforeCurrent=False):
130 self.l.addService(service, beforeCurrent)
132 def finishFill(self):
133 self.l.FillFinished()
136 # stuff for multiple marks (edit mode / later multiepg)
137 def clearMarks(self):
140 def isMarked(self, ref):
141 return self.l.isMarked(ref)
143 def addMarked(self, ref):
144 self.l.addMarked(ref)
146 def removeMarked(self, ref):
147 self.l.removeMarked(ref)
152 ref = eServiceReference()
154 while i.markedQueryNext(ref) == 0:
155 marked.append(ref.toString())
156 ref = eServiceReference()
159 #just for movemode.. only one marked entry..
160 def setCurrentMarked(self, state):
161 self.l.setCurrentMarked(state)
163 def setMode(self, mode):
166 if mode == self.MODE_NORMAL:
167 self.l.setItemHeight(28)
168 self.l.setVisualMode(eListboxServiceContent.visModeComplex)
169 self.l.setElementFont(self.l.celServiceName, gFont("Regular", 22))
170 self.l.setElementPosition(self.l.celServiceName, eRect(0, 0, self.instance.size().width(), 28))
171 self.l.setElementFont(self.l.celServiceInfo, gFont("Regular", 18))
173 self.l.setItemHeight(28)
174 self.l.setVisualMode(eListboxServiceContent.visModeComplex)
175 self.l.setElementFont(self.l.celServiceNumber, gFont("Regular", 20))
176 self.l.setElementPosition(self.l.celServiceNumber, eRect(0, 0, 50, 28))
177 self.l.setElementFont(self.l.celServiceName, gFont("Regular", 22))
178 self.l.setElementPosition(self.l.celServiceName, eRect(60, 0, self.instance.size().width()-60, 28))
179 self.l.setElementFont(self.l.celServiceInfo, gFont("Regular", 18))