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