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 self["config"].onSelectionChanged.append(self.updateHelp)
71 self["key_red"] = StaticText(_("Cancel"))
72 self["key_green"] = StaticText(_("OK"))
73 self["key_yellow"] = StaticText(_("Refresh now"))
74 self["key_blue"] = StaticText(_("Edit Services"))
76 self["help"] = StaticText()
79 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
81 "cancel": self.keyCancel,
83 "yellow": self.forceRefresh,
84 "blue": self.editServices
91 self.onLayoutFinish.append(self.setCustomTitle)
93 def setCustomTitle(self):
94 self.setTitle(_("Configure EPGRefresh"))
97 cur = self["config"].getCurrent()
99 self["help"].text = cur[2]
101 def forceRefresh(self):
102 epgrefresh.services = (set(self.services[0]), set(self.services[1]))
103 epgrefresh.forceRefresh(self.session)
105 def editServices(self):
106 self.session.openWithCallback(
107 self.editServicesCallback,
108 EPGRefreshServiceEditor,
112 def editServicesCallback(self, ret):
117 for x in self.onChangedEntry:
123 def getCurrentEntry(self):
124 return self["config"].getCurrent()[0]
126 def getCurrentValue(self):
127 return str(self["config"].getCurrent()[1].getText())
129 def createSummary(self):
132 def cancelConfirm(self, result):
136 for x in self["config"].list:
139 self.close(self.session)
142 if self["config"].isChanged():
143 from Screens.MessageBox import MessageBox
145 self.session.openWithCallback(
148 _("Really close without saving settings?")
151 self.close(self.session)
154 epgrefresh.services = (set(self.services[0]), set(self.services[1]))
155 epgrefresh.saveConfiguration()
157 for x in self["config"].list:
160 self.close(self.session)