1 # for localized messages
5 from Screens.Screen import Screen
6 from Components.ConfigList import ConfigListScreen
7 from EPGRefreshChannelEditor import EPGRefreshServiceEditor
10 from Screens.Setup import SetupSummary
13 from Components.ActionMap import ActionMap
14 from Components.Sources.StaticText import StaticText
17 from Components.config import config, getConfigListEntry
19 from EPGRefresh import epgrefresh
20 from Components.SystemInfo import SystemInfo
22 class EPGRefreshConfiguration(Screen, ConfigListScreen):
23 """Configuration of EPGRefresh"""
25 skin = """<screen name="EPGRefreshConfiguration" title="Configure EPGRefresh" position="center,center" size="565,370">
26 <ePixmap position="0,5" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
27 <ePixmap position="140,5" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
28 <ePixmap position="280,5" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
29 <ePixmap position="420,5" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
30 <widget source="key_red" render="Label" position="0,5" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
31 <widget source="key_green" render="Label" position="140,5" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
32 <widget source="key_yellow" render="Label" position="280,5" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
33 <widget source="key_blue" render="Label" position="420,5" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
34 <widget name="config" position="5,50" size="555,250" scrollbarMode="showOnDemand" />
35 <ePixmap pixmap="skin_default/div-h.png" position="0,301" zPosition="1" size="565,2" />
36 <widget source="help" render="Label" position="5,305" size="555,63" font="Regular;21" />
39 def __init__(self, session):
40 Screen.__init__(self, session)
43 self.setup_title = _("EPGRefresh Configuration")
44 self.onChangedEntry = []
46 # Although EPGRefresh keeps services in a Set we prefer a list
48 [x for x in epgrefresh.services[0]],
49 [x for x in epgrefresh.services[1]]
53 getConfigListEntry(_("Refresh automatically"), config.plugins.epgrefresh.enabled, _("Unless this is enabled EPGRefresh won't automatically run but has to be explicitely started through the yellow button from this menu.")),
54 getConfigListEntry(_("Wakeup from Deep-Standby to refresh EPG"), config.plugins.epgrefresh.wakeup, _("If this is enabled, the plugin will wake the receiver up from deep-standby if possible. Otherwise it has to be turned on already.")),
55 getConfigListEntry(_("Time to stay on service (in m)"), config.plugins.epgrefresh.interval, _("This is the ammount of time a channel will be active during a refresh.")),
56 getConfigListEntry(_("Refresh EPG after"), config.plugins.epgrefresh.begin, _("An automated refresh will happen after this time of day, but before the next setting.")),
57 getConfigListEntry(_("Refresh EPG before"), config.plugins.epgrefresh.end, _("An automated refresh will happen before this time of day, but after the previous setting.")),
58 getConfigListEntry(_("Delay when not in Standby (in m)"), config.plugins.epgrefresh.delay_standby, _("If the receiver is currently not in standby this is the amount of time EPGRefresh will wait before trying again.")),
59 getConfigListEntry(_("Force scan even if receiver is in use"), config.plugins.epgrefresh.force, _("This setting controls whether or not the refresh will also be initiated when the receiver is being used (namely not in standby or currently recording).")),
60 getConfigListEntry(_("Inherit Services from AutoTimer if available"), config.plugins.epgrefresh.inherit_autotimer, _("If you're also using the AutoTimer plugin this allows to extend the list of services to refresh by the services your AutoTimers are restricted to.")),
61 getConfigListEntry(_("Make AutoTimer parse EPG if available"), config.plugins.epgrefresh.parse_autotimer, _("If you're also using the AutoTimer plugin this will initiate a scan of the EPG after a completed refresh.")),
62 getConfigListEntry(_("Shutdown after refresh"), config.plugins.epgrefresh.afterevent, _("This setting controls if the receiver should be sent to deep-standby after a completed refresh.")),
64 if SystemInfo.get("NumVideoDecoders", 1) > 1:
65 self.list.insert(1, getConfigListEntry(_("Refresh in Background"), config.plugins.epgrefresh.background, _("Use Picture In Picture to refresh EPG?")))
67 ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changed)
68 def selectionChanged():
69 if self["config"].current:
70 self["config"].current[1].onDeselect(self.session)
71 self["config"].current = self["config"].getCurrent()
72 if self["config"].current:
73 self["config"].current[1].onSelect(self.session)
74 for x in self["config"].onSelectionChanged:
76 self["config"].selectionChanged = selectionChanged
77 self["config"].onSelectionChanged.append(self.updateHelp)
80 self["key_red"] = StaticText(_("Cancel"))
81 self["key_green"] = StaticText(_("OK"))
82 self["key_yellow"] = StaticText(_("Refresh now"))
83 self["key_blue"] = StaticText(_("Edit Services"))
85 self["help"] = StaticText()
88 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
90 "cancel": self.keyCancel,
92 "yellow": self.forceRefresh,
93 "blue": self.editServices
100 self.onLayoutFinish.append(self.setCustomTitle)
102 def setCustomTitle(self):
103 self.setTitle(_("Configure EPGRefresh"))
105 def updateHelp(self):
106 cur = self["config"].getCurrent()
108 self["help"].text = cur[2]
110 def forceRefresh(self):
111 epgrefresh.services = (set(self.services[0]), set(self.services[1]))
112 epgrefresh.forceRefresh(self.session)
114 def editServices(self):
115 self.session.openWithCallback(
116 self.editServicesCallback,
117 EPGRefreshServiceEditor,
121 def editServicesCallback(self, ret):
126 for x in self.onChangedEntry:
132 def getCurrentEntry(self):
133 return self["config"].getCurrent()[0]
135 def getCurrentValue(self):
136 return str(self["config"].getCurrent()[1].getText())
138 def createSummary(self):
141 def cancelConfirm(self, result):
145 for x in self["config"].list:
148 self.close(self.session)
151 if self["config"].isChanged():
152 from Screens.MessageBox import MessageBox
154 self.session.openWithCallback(
157 _("Really close without saving settings?")
160 self.close(self.session)
163 epgrefresh.services = (set(self.services[0]), set(self.services[1]))
164 epgrefresh.saveConfiguration()
166 for x in self["config"].list:
169 self.close(self.session)