2 from Screens.Screen import Screen
3 from Screens.MessageBox import MessageBox
4 from Screens.ChoiceBox import ChoiceBox
5 from AutoTimerEditor import AutoTimerEditor
6 from AutoTimerConfiguration import AutoTimerConfiguration
7 from AutoTimerPreview import AutoTimerPreview
8 from AutoTimerImporter import AutoTimerImportSelector
11 from AutoTimerList import AutoTimerList
12 from Components.ActionMap import ActionMap
13 from Components.Button import Button
16 from AutoTimerComponent import AutoTimerComponent
18 class AutoTimerOverview(Screen):
19 """Overview of AutoTimers"""
21 skin = """<screen name="AutoTimerOverview" position="140,148" size="460,265" title="AutoTimer Overview">
22 <widget name="entries" position="5,5" size="450,200" scrollbarMode="showOnDemand" />
23 <ePixmap position="0,220" zPosition="1" size="140,40" pixmap="skin_default/key-green.png" transparent="1" alphatest="on" />
24 <ePixmap position="140,220" zPosition="1" size="140,40" pixmap="skin_default/key-yellow.png" transparent="1" alphatest="on" />
25 <ePixmap position="280,220" zPosition="1" size="140,40" pixmap="skin_default/key-blue.png" transparent="1" alphatest="on" />
26 <ePixmap position="422,230" zPosition="1" size="36,20" pixmap="key_menu-fs8.png" transparent="1" alphatest="on" />
27 <widget name="key_green" position="0,220" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;21" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
28 <widget name="key_yellow" position="140,220" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;21" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
29 <widget name="key_blue" position="280,220" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;21" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
32 def __init__(self, session, autotimer):
33 Screen.__init__(self, session)
36 self.autotimer = autotimer
41 self["key_green"] = Button(_("Save"))
42 self["key_yellow"] = Button(_("Delete"))
43 self["key_blue"] = Button(_("Add"))
45 # Create List of Timers
46 self["entries"] = AutoTimerList(self.autotimer.getTupleTimerList())
49 self["actions"] = ActionMap(["OkCancelActions", "MenuActions", "ColorActions"],
52 "cancel": self.cancel,
54 "yellow": self.remove,
61 self.session.openWithCallback(
64 # TODO: implement setting a default?
66 self.autotimer.getUniqueId(), # Id
73 def editCallback(self, ret):
78 def addCallback(self, ret):
81 self.autotimer.add(ret)
84 def refresh(self, res = None):
86 self["entries"].setList(self.autotimer.getTupleTimerList())
90 current = self["entries"].getCurrent()
91 if current is not None:
92 self.session.openWithCallback(
99 # Remove selected Timer
100 cur = self["entries"].getCurrent()
102 self.session.openWithCallback(
105 _("Do you really want to delete %s?") % (cur[0].name),
108 def removeCallback(self, ret):
109 cur = self["entries"].getCurrent()
111 self.autotimer.remove(cur[0].id)
116 self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
120 def cancelConfirm(self, ret):
122 # Invalidate config mtime to force re-read on next run
123 self.autotimer.configMtime = -1
125 # Close and indicated that we canceled by returning None
129 self.session.openWithCallback(
133 (_("Preview"), "preview"),
134 (_("Import"), "import"),
135 (_("Setup"), "setup"),
139 def menuCallback(self, ret):
141 if ret[1] == "preview":
142 total, new, modified, timers = self.autotimer.parseEPG(simulateOnly = True)
147 elif ret[1] == "import":
148 self.session.openWithCallback(
150 AutoTimerImportSelector,
152 self.autotimer.getUniqueId(), # Id
158 elif ret[1] == "setup":
160 AutoTimerConfiguration
166 self.autotimer.writeXml()
168 # Don't crash during development
169 import traceback, sys
170 traceback.print_exc(file=sys.stdout)
172 # Nothing else to be done?
173 self.close(self.session)