AutoTimer: add "Fast Scan" support
[vuplus_dvbapp-plugin] / autotimer / src / AutoTimerSettings.py
1 # for localized messages
2 from . import _
3
4 # GUI (Screens)
5 from Screens.Screen import Screen
6 from Components.ConfigList import ConfigListScreen
7
8 # GUI (Summary)
9 from Screens.Setup import SetupSummary
10
11 # GUI (Components)
12 from Components.ActionMap import ActionMap
13 from Components.Sources.StaticText import StaticText
14
15 # Configuration
16 from Components.config import config, getConfigListEntry
17
18 class AutoTimerSettings(Screen, ConfigListScreen):
19         skin = """<screen name="AutoTimerSettings" title="AutoTimer Settings" position="center,center" size="565,370">
20                 <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
21                 <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
22                 <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
23                 <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
24                 <widget name="config" position="5,50" size="555,250" scrollbarMode="showOnDemand" />
25                 <ePixmap pixmap="skin_default/div-h.png" position="0,301" zPosition="1" size="565,2" />
26                 <widget source="help" render="Label" position="5,305" size="555,63" font="Regular;21" />
27         </screen>"""
28
29         def __init__(self, session):
30                 Screen.__init__(self, session)
31
32                 # Summary
33                 self.setup_title = _("AutoTimer Settings")
34                 self.onChangedEntry = []
35
36                 ConfigListScreen.__init__(
37                         self,
38                         [
39                                 getConfigListEntry(_("Poll automatically"), config.plugins.autotimer.autopoll, _("Unless this is enabled AutoTimer will NOT automatically look for events matching your AutoTimers but only when you leave the GUI with the green button.")),
40                                 getConfigListEntry(_("Poll Interval (in h)"), config.plugins.autotimer.interval, _("This is the delay in hours that the AutoTimer will wait after a search to search the EPG again.")),
41                                 getConfigListEntry(_("Show in extension menu"), config.plugins.autotimer.show_in_extensionsmenu, _("Enable this to be able to access the AutoTimer Overview from within the extension menu.")),
42                                 getConfigListEntry(_("Modify existing timers"), config.plugins.autotimer.refresh, _("This setting controls the behavior when a timer matches a found event.")),
43                                 getConfigListEntry(_("Guess existing timer based on begin/end"), config.plugins.autotimer.try_guessing, _("If this is enabled an existing timer will also be considered recording an event if it records at least 80% of the it.")),
44                                 getConfigListEntry(_("Add timer as disabled on conflict"), config.plugins.autotimer.disabled_on_conflict, _("This toggles the behavior on timer conflicts. If an AutoTimer matches an event that conflicts with an existing timer it will not ignore this event but add it disabled.")),
45                                 getConfigListEntry(_("Editor for new AutoTimers"), config.plugins.autotimer.editor, _("The editor to be used for new AutoTimers. This can either be the Wizard or the classic editor.")),
46                                 getConfigListEntry(_("Support \"Fast Scan\"?"), config.plugins.autotimer.fastscan, _("When supporting \"Fast Scan\" the service type is ignored. You don't need to enable this unless your Image supports \"Fast Scan\" and you are using it.")),
47                         ],
48                         session = session,
49                         on_change = self.changed
50                 )
51                 self["config"].onSelectionChanged.append(self.updateHelp)
52
53                 # Initialize widgets
54                 self["key_green"] = StaticText(_("OK"))
55                 self["key_red"] = StaticText(_("Cancel"))
56                 self["help"] = StaticText()
57
58                 # Define Actions
59                 self["actions"] = ActionMap(["SetupActions"],
60                         {
61                                 "cancel": self.keyCancel,
62                                 "save": self.keySave,
63                         }
64                 )
65
66                 # Trigger change
67                 self.changed()
68
69                 self.onLayoutFinish.append(self.setCustomTitle)
70
71         def setCustomTitle(self):
72                 self.setTitle(_("Configure AutoTimer behavior"))
73
74         def updateHelp(self):
75                 cur = self["config"].getCurrent()
76                 if cur:
77                         self["help"].text = cur[2]
78
79         def changed(self):
80                 for x in self.onChangedEntry:
81                         x()
82
83         def getCurrentEntry(self):
84                 return self["config"].getCurrent()[0]
85
86         def getCurrentValue(self):
87                 return str(self["config"].getCurrent()[1].getText())
88
89         def createSummary(self):
90                 return SetupSummary
91