1 from Screens.Screen import Screen
2 from Screens.MessageBox import MessageBox
3 from Components.Label import Label
4 from Components.ScrollLabel import ScrollLabel
5 from Components.ActionMap import NumberActionMap
6 from Components.Sources.StaticText import StaticText
7 from twisted.web import client
10 from Components.config import config
12 class CurlyTx(Screen):
14 <screen name="CurlyTx" position="center,center" size="560,400" title="CurlyTx" >
15 <ePixmap position="0,0" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
16 <ePixmap position="140,0" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
17 <ePixmap position="280,0" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
18 <ePixmap position="420,0" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
19 <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
20 <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
21 <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
22 <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
23 <widget name="text" position="5,45" size="550,350" font="Console;20" />
29 def __init__(self, session, args = None):
30 #self.skin = CurlyTx.skin
31 Screen.__init__(self, session)
32 #self.skinName = [ "CurlyTx", "Setup" ]
34 self["text"] = ScrollLabel("foo")
36 self["key_red"] = StaticText(_("Settings"))
37 self["key_green"] = StaticText(_("Reload"))
38 self["key_yellow"] = StaticText(_("Prev"))
39 self["key_blue"] = StaticText(_("Next"))
42 self["actions"] = NumberActionMap(["WizardActions", "ColorActions", "InputActions"], {
46 "down": self.pageDown,
48 "red": self.showSettings,
50 "yellow": self.prevPage,
54 self.loadUrl(config.plugins.CurlyTx.defaultPage.value)
60 self["text"].pageDown()
63 pageId = self.currentPage - 1
65 pageId = len(config.plugins.CurlyTx.pages) - 1
69 pageId = self.currentPage + 1
70 if pageId > len(config.plugins.CurlyTx.pages) - 1:
75 self.loadUrl(self.currentPage)
77 def loadUrl(self, pageId):
79 if pageId > (len(config.plugins.CurlyTx.pages) - 1):
80 if len(config.plugins.CurlyTx.pages) == 0:
81 self["text"].setText("Go and add a page in the settings");
83 self["text"].setText("Invalid page " + pageId);
86 url = config.plugins.CurlyTx.pages[pageId].uri.value
87 title = config.plugins.CurlyTx.pages[pageId].title.value
88 self.currentPage = pageId
92 self["text"].setText("Loading ...\n" + url);
94 client.getPage(url).addCallback(self.urlLoaded).addErrback(self.urlFailed, url)
96 def urlLoaded(self, html):
97 self["text"].setText(html)
99 def urlFailed(self, error, url):
100 self["text"].setText(
101 "Error fetching URL:\n " + error.getErrorMessage()
105 def showSettings(self):
106 #self.session.openWithCallback(self.setConf ,Pic_Setup)
107 from CurlyTxSettings import CurlyTxSettings
108 self.session.openWithCallback(self.onSettingsChanged, CurlyTxSettings)
110 def onSettingsChanged(self):