Introduction of localization including german messages
[vuplus_dvbapp-plugin] / autotimer / src / AutoTimerOverview.py
1 # for localized messages
2 from . import _
3
4 # GUI (Screens)
5 from Screens.Screen import Screen
6 from Screens.HelpMenu import HelpableScreen
7 from Screens.MessageBox import MessageBox
8 from Screens.ChoiceBox import ChoiceBox
9 from AutoTimerEditor import AutoTimerEditor
10 from AutoTimerSettings import AutoTimerSettings
11 from AutoTimerPreview import AutoTimerPreview
12 from AutoTimerImporter import AutoTimerImportSelector
13
14 # GUI (Components)
15 from AutoTimerList import AutoTimerList
16 from Components.ActionMap import HelpableActionMap
17 from Components.Button import Button
18
19 # Plugin
20 from AutoTimerComponent import AutoTimerComponent
21
22 class AutoTimerOverview(Screen, HelpableScreen):
23         """Overview of AutoTimers"""
24
25         skin = """<screen name="AutoTimerOverview" position="140,148" size="460,265" title="AutoTimer Overview">
26                         <widget name="entries" position="5,5" size="450,200" scrollbarMode="showOnDemand" />
27                         <ePixmap position="0,220" zPosition="1" size="140,40" pixmap="skin_default/buttons/green.png" alphatest="on" />
28                         <ePixmap position="140,220" zPosition="1" size="140,40" pixmap="skin_default/buttons/yellow.png" alphatest="on" />
29                         <ePixmap position="280,220" zPosition="1" size="140,40" pixmap="skin_default/buttons/blue.png" alphatest="on" />
30                         <ePixmap position="422,230" zPosition="1" size="35,25" pixmap="skin_default/buttons/key_menu.png" alphatest="on" />
31                         <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" />
32                         <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" />
33                         <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" />
34                 </screen>"""
35
36         def __init__(self, session, autotimer):
37                 Screen.__init__(self, session)
38                 HelpableScreen.__init__(self)
39
40                 # Save autotimer
41                 self.autotimer = autotimer
42
43                 self.changed = False
44
45                 # Button Labels
46                 self["key_green"] = Button(_("Save"))
47                 self["key_yellow"] = Button(_("Delete"))
48                 self["key_blue"] = Button(_("Add"))
49
50                 # Create List of Timers
51                 self["entries"] = AutoTimerList(self.autotimer.getTupleTimerList())
52
53                 # Define Actions
54                 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
55                         {
56                                 "ok": (self.ok, _("Edit selected AutoTimer")),
57                                 "cancel": (self.cancel, _("Close and forget changes")),
58                         }
59                 )
60
61                 self["MenuActions"] = HelpableActionMap(self, "MenuActions",
62                         {
63                                 "menu": (self.menu, _("Open Context Menu"))
64                         }
65                 )
66
67                 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
68                         {
69                                 "green": (self.save, _("Close and save changes")),
70                                 "yellow": (self.remove, _("Remove selected AutoTimer")),
71                                 "blue": (self.add, _("Add new AutoTimer")),
72                         }
73                 )
74
75         def add(self):
76                 newTimer = self.autotimer.defaultTimer.clone()
77                 newTimer.id = self.autotimer.getUniqueId()
78                 
79                 self.session.openWithCallback(
80                         self.addCallback,
81                         AutoTimerEditor,
82                         newTimer
83                 )
84
85         def editCallback(self, ret):
86                 if ret:
87                         self.changed = True
88                         self.refresh()
89
90         def addCallback(self, ret):
91                 if ret:
92                         self.changed = True
93                         self.autotimer.add(ret)
94                         self.refresh()
95
96         def importCallback(self, ret):
97                 if ret:
98                         self.session.openWithCallback(
99                                 self.addCallback,
100                                 AutoTimerEditor,
101                                 ret
102                         )
103
104         def refresh(self, res = None):
105                 # Re-assign List
106                 self["entries"].setList(self.autotimer.getTupleTimerList())
107
108         def ok(self):
109                 # Edit selected Timer
110                 current = self["entries"].getCurrent()
111                 if current is not None:
112                         self.session.openWithCallback(
113                                 self.editCallback,
114                                 AutoTimerEditor,
115                                 current[0]
116                         )
117
118         def remove(self):
119                 # Remove selected Timer
120                 cur = self["entries"].getCurrent()
121                 if cur is not None:
122                         self.session.openWithCallback(
123                                 self.removeCallback,
124                                 MessageBox,
125                                 _("Do you really want to delete %s?") % (cur[0].name),
126                         )
127
128         def removeCallback(self, ret):
129                 cur = self["entries"].getCurrent()
130                 if ret and cur:
131                         self.autotimer.remove(cur[0].id)
132                         self.refresh()
133
134         def cancel(self):
135                 if self.changed:
136                         self.session.openWithCallback(
137                                 self.cancelConfirm,
138                                 MessageBox,
139                                 _("Really close without saving settings?")
140                         )
141                 else:
142                         self.close(None)
143
144         def cancelConfirm(self, ret):
145                 if ret:
146                         # Invalidate config mtime to force re-read on next run
147                         self.autotimer.configMtime = -1
148
149                         # Close and indicated that we canceled by returning None
150                         self.close(None)
151
152         def menu(self):
153                 self.session.openWithCallback(
154                         self.menuCallback,
155                         ChoiceBox,
156                         list = [
157                                 (_("Preview"), "preview"),
158                                 (_("Import"), "import"),
159                                 (_("Setup"), "setup"),
160                                 (_("Edit new timer defaults"), "defaults")
161                         ],
162                 )
163
164         def menuCallback(self, ret):
165                 ret = ret and ret[1]
166                 if ret:
167                         if ret == "preview":
168                                 total, new, modified, timers = self.autotimer.parseEPG(simulateOnly = True)
169                                 self.session.open(
170                                         AutoTimerPreview,
171                                         timers
172                                 )
173                         elif ret == "import":
174                                 # XXX: apply defaults here too?
175                                 self.session.openWithCallback(
176                                         self.importCallback,
177                                         AutoTimerImportSelector,
178                                         AutoTimerComponent(
179                                                 self.autotimer.getUniqueId(),   # Id
180                                                 "",                                                             # Name
181                                                 "",                                                             # Match
182                                                 True                                                    # Enabled
183                                         )
184                                 )
185                         elif ret == "setup":
186                                 self.session.open(
187                                         AutoTimerSettings
188                                 )
189                         elif ret == "defaults":
190                                 self.session.open(
191                                         AutoTimerEditor,
192                                         self.autotimer.defaultTimer,
193                                         editingDefaults = True
194                                 )
195
196         def save(self):
197                 # Just close here, saving will be done by cb
198                 self.close(self.session)