1 from Screens.Screen import Screen
2 from Components.config import config, ConfigSubsection, ConfigEnableDisable, ConfigText, getConfigListEntry
3 from Components.ConfigList import ConfigListScreen
4 from Components.Button import Button
5 from Components.ActionMap import ActionMap
7 class RSSFeedEdit(ConfigListScreen, Screen):
10 <screen name="RSSFeedEdit" position="100,100" size="550,120" title="Simple RSS Reader Setup" >
11 <widget name="config" position="20,10" size="510,75" scrollbarMode="showOnDemand" />
12 <ePixmap name="red" position="0,75" zPosition="4" size="140,40" pixmap="key_red-fs8.png" transparent="1" alphatest="on" />
13 <ePixmap name="green" position="140,75" zPosition="4" size="140,40" pixmap="key_green-fs8.png" transparent="1" alphatest="on" />
14 <widget name="key_red" position="0,75" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
15 <widget name="key_green" position="140,75" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
18 def __init__(self, session, id):
19 Screen.__init__(self, session)
22 getConfigListEntry(_("Autoupdate: "), config.plugins.simpleRSS.feed[id].autoupdate),
23 getConfigListEntry(_("Feed URI: "), config.plugins.simpleRSS.feed[id].uri)
26 ConfigListScreen.__init__(self, self.list, session)
28 self["key_red"] = Button(_("Cancel"))
29 self["key_green"] = Button(_("OK"))
31 self["setupActions"] = ActionMap(["SetupActions"],
34 "cancel": self.keyCancel
40 config.plugins.simpleRSS.feed[self.id].save()
41 config.plugins.simpleRSS.feed.save()
44 class RSSSetup(ConfigListScreen, Screen):
45 """Setup for SimpleRSS, quick-edit for Feed-URIs and settings present."""
47 <screen name="RSSSetup" position="100,100" size="550,400" title="Simple RSS Reader Setup" >
48 <widget name="config" position="20,10" size="510,350" scrollbarMode="showOnDemand" />
49 <ePixmap name="red" position="0,360" zPosition="4" size="140,40" pixmap="key_red-fs8.png" transparent="1" alphatest="on" />
50 <ePixmap name="green" position="140,360" zPosition="4" size="140,40" pixmap="key_green-fs8.png" transparent="1" alphatest="on" />
51 <ePixmap name="yellow" position="280,360" zPosition="4" size="140,40" pixmap="key_yellow-fs8.png" transparent="1" alphatest="on" />
52 <ePixmap name="blue" position="420,360" zPosition="4" size="140,40" pixmap="key_blue-fs8.png" transparent="1" alphatest="on" />
53 <widget name="key_red" position="0,360" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
54 <widget name="key_green" position="140,360" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
55 <widget name="key_yellow" position="280,360" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
56 <widget name="key_blue" position="420,360" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
59 def __init__(self, session, rssPoller = None):
60 Screen.__init__(self, session)
62 self.onClose.append(self.abort)
64 self.rssPoller = rssPoller
66 # nun erzeugen wir eine liste von elementen fuer die menu liste.
68 getConfigListEntry(_("Feed: "), config.plugins.simpleRSS.feed[i].uri)
69 for i in range(0, config.plugins.simpleRSS.feedcount.value)
71 self.list.append(getConfigListEntry(_("Start automatically with Enigma2: "), config.plugins.simpleRSS.autostart))
72 self.list.append(getConfigListEntry(_("Keep running in background: "), config.plugins.simpleRSS.keep_running))
73 self.list.append(getConfigListEntry(_("Show new Messages: "), config.plugins.simpleRSS.show_new))
74 self.list.append(getConfigListEntry(_("Update Interval (min): "), config.plugins.simpleRSS.interval))
77 ConfigListScreen.__init__(self, self.list, session)
79 self["key_red"] = Button(_("Cancel"))
80 self["key_green"] = Button(_("OK"))
81 self["key_yellow"] = Button(_("New"))
82 self["key_blue"] = Button(_("Delete"))
84 self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
89 "cancel": self.keyCancel,
94 self.session.openWithCallback(self.deleteConfirm, MessageBox, "Really delete this entry?\nIt cannot be recovered!")
96 def deleteConfirm(self, result):
98 id = self["config"].instance.getCurrentIndex()
99 del config.plugins.simpleRSS.feed[id]
100 config.plugins.simpleRSS.feedcount.value -= 1
103 self["config"].setList(self.list)
106 id = self["config"].instance.getCurrentIndex()
107 self.session.openWithCallback(self.refresh, RSSFeedEdit, id)
110 # TODO: anything to be done here?
114 id = len(config.plugins.simpleRSS.feed)
115 config.plugins.simpleRSS.feed.append(ConfigSubsection())
116 config.plugins.simpleRSS.feed[id].uri = ConfigText(default="http://", fixed_size = False)
117 config.plugins.simpleRSS.feed[id].autoupdate = ConfigEnableDisable(default=True)
118 self.session.openWithCallback(self.conditionalNew, RSSFeedEdit, id)
120 def conditionalNew(self):
121 id = len(config.plugins.simpleRSS.feed)-1
122 # Check if new feed differs from default
123 if config.plugins.simpleRSS.feed[id].uri.value == "http://":
124 del config.plugins.simpleRSS.feed[id]
126 self.list.insert(id, getConfigListEntry(_("Feed: "), config.plugins.simpleRSS.feed[id].uri))
127 config.plugins.simpleRSS.feedcount.value = id+1
130 if self.rssPoller is not None:
131 self.rssPoller.triggerReload()
132 ConfigListScreen.keySave(self)
135 print "[SimpleRSS] Closing Setup Dialog"
136 # Keep feedcount sane
137 config.plugins.simpleRSS.feedcount.value = len(config.plugins.simpleRSS.feed)
138 config.plugins.simpleRSS.feedcount.save()