1 # -*- coding: UTF-8 -*-
2 ## Zap-History Browser by AliAbdul
3 from Components.ActionMap import ActionMap
4 from Components.Label import Label
5 from Components.Language import language
6 from Components.MenuList import MenuList
7 from Components.MultiContent import MultiContentEntryText
8 from enigma import eListboxPythonMultiContent, eServiceCenter, gFont
10 from Plugins.Plugin import PluginDescriptor
11 from Screens.Screen import Screen
12 from Tools.Directories import resolveFilename, SCOPE_LANGUAGE, SCOPE_PLUGINS
15 ################################################
18 lang = language.getLanguage()
19 environ["LANGUAGE"] = lang[:2]
\r
20 gettext.bindtextdomain("enigma2", resolveFilename(SCOPE_LANGUAGE))
\r
21 gettext.textdomain("enigma2")
22 gettext.bindtextdomain("ZapHistoryBrowser", "%s%s" % (resolveFilename(SCOPE_PLUGINS), "Extensions/ZapHistoryBrowser/locale/"))
25 t = gettext.dgettext("ZapHistoryBrowser", txt)
\r
27 t = gettext.gettext(txt)
\r
31 language.addCallback(localeInit)
33 ################################################
35 class ZapHistoryBrowserList(MenuList):
36 def __init__(self, list, enableWrapAround=False):
37 MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
38 self.l.setItemHeight(40)
39 self.l.setFont(0, gFont("Regular", 20))
40 self.l.setFont(1, gFont("Regular", 18))
42 def ZapHistoryBrowserListEntry(serviceName, eventName):
44 res.append(MultiContentEntryText(pos=(0, 0), size=(560, 22), font=0, text=serviceName))
45 res.append(MultiContentEntryText(pos=(0, 22), size=(560, 18), font=1, text=eventName))
48 ################################################
50 class ZapHistoryBrowser(Screen):
52 <screen position="center,center" size="560,440" title="%s" >
53 <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" transparent="1" alphatest="on" />
54 <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" transparent="1" alphatest="on" />
55 <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" transparent="1" alphatest="on" />
56 <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" transparent="1" alphatest="on" />
57 <widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
58 <widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
59 <widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
60 <widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
61 <widget name="list" position="0,40" size="560,400" scrollbarMode="showOnDemand" />
62 </screen>""" % _("Zap-History Browser")
64 def __init__(self, session, servicelist):
65 Screen.__init__(self, session)
66 self.session = session
68 self.servicelist = servicelist
69 self.serviceHandler = eServiceCenter.getInstance()
71 self["list"] = ZapHistoryBrowserList([])
72 self["key_red"] = Label(_("Clear"))
73 self["key_green"] = Label(_("Delete"))
74 self["key_yellow"] = Label(_("Zap & Close"))
75 self["key_blue"] = Label("")
77 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
83 "yellow": self.zapAndClose
86 self.onLayoutFinish.append(self.buildList)
90 for x in self.servicelist.history:
91 if len(x) == 2: # Single-Bouquet
95 info = self.serviceHandler.info(ref)
96 name = info.getName(ref).replace('\xc2\x86', '').replace('\xc2\x87', '')
97 event = info.getEvent(ref)
99 eventName = event.getEventName()
100 if eventName is None:
104 list.append(ZapHistoryBrowserListEntry(name, eventName))
106 self["list"].setList(list)
109 length = len(self.servicelist.history)
111 self.servicelist.history_pos = (length - self["list"].getSelectionIndex()) - 1
112 self.servicelist.setHistoryPath()
115 for i in range(0, len(self.servicelist.history)):
116 del self.servicelist.history[0]
118 self.servicelist.history_pos = 0
121 length = len(self.servicelist.history)
123 idx = (length - self["list"].getSelectionIndex()) - 1
124 del self.servicelist.history[idx]
127 # We must check if the current service is still in the zap-history
128 currRef = self.session.nav.getCurrentlyPlayingServiceReference()
130 for x in self.servicelist.history:
131 if len(x) == 2: # Single-Bouquet
133 else: # Multi-Bouquet
137 self.servicelist.history_pos = idx
142 def zapAndClose(self):
146 ################################################
148 def main(session, servicelist, **kwargs):
149 session.open(ZapHistoryBrowser, servicelist)
151 def Plugins(**kwargs):
152 return PluginDescriptor(name=_("Zap-History Browser"), where=PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)