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"].onSelectionChanged.append(self.updateHelp)
79 self["key_red"] = StaticText(_("Cancel"))
80 self["key_green"] = StaticText(_("OK"))
81 self["key_yellow"] = StaticText(_("Refresh now"))
82 self["key_blue"] = StaticText(_("Edit Services"))
84 self["help"] = StaticText()
87 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
89 "cancel": self.keyCancel,
91 "yellow": self.forceRefresh,
92 "blue": self.editServices
99 self.onLayoutFinish.append(self.setCustomTitle)
101 def setCustomTitle(self):
102 self.setTitle(_("Configure EPGRefresh"))
104 def updateHelp(self):
105 cur = self["config"].getCurrent()
107 self["help"].text = cur[2]
109 def forceRefresh(self):
110 epgrefresh.services = (set(self.services[0]), set(self.services[1]))
111 epgrefresh.forceRefresh(self.session)
113 def editServices(self):
114 self.session.openWithCallback(
115 self.editServicesCallback,
116 EPGRefreshServiceEditor,
120 def editServicesCallback(self, ret):
125 for x in self.onChangedEntry:
131 def getCurrentEntry(self):
132 return self["config"].getCurrent()[0]
134 def getCurrentValue(self):
135 return str(self["config"].getCurrent()[1].getText())
137 def createSummary(self):
140 def cancelConfirm(self, result):
144 for x in self["config"].list:
147 self.close(self.session)
150 if self["config"].isChanged():
151 from Screens.MessageBox import MessageBox
153 self.session.openWithCallback(
156 _("Really close without saving settings?")
159 self.close(self.session)
162 epgrefresh.services = (set(self.services[0]), set(self.services[1]))
163 epgrefresh.saveConfiguration()
165 for x in self["config"].list:
168 self.close(self.session)