delete old messages.po
[enigma2-curlytx.git] / src / CurlyTx.py
index 35478045ac22f78030063bcfe9f6de02ec397326..5e58e72f3747b9803ca6d68c23b10ab1ca3ffd28 100644 (file)
@@ -1,33 +1,90 @@
 from Screens.Screen import Screen
 from Screens.Screen import Screen
+from Screens.HelpMenu import HelpableScreen
 from Screens.MessageBox import MessageBox
 from Components.Label import Label
 from Components.ScrollLabel import ScrollLabel
 from Components.ActionMap import NumberActionMap
 from Screens.MessageBox import MessageBox
 from Components.Label import Label
 from Components.ScrollLabel import ScrollLabel
 from Components.ActionMap import NumberActionMap
+from Components.Sources.StaticText import StaticText
 from twisted.web import client
 
 from . import config
 from Components.config import config
 
 from twisted.web import client
 
 from . import config
 from Components.config import config
 
-class CurlyTx(Screen):
+class CurlyTx(Screen,HelpableScreen):
     skin = """
     skin = """
-        <screen position="100,100" size="550,400" title="CurlyTx" >
-           <widget name="text" position="0,0" size="550,400" font="Console;20" />
+        <screen name="CurlyTx" position="center,center" size="560,400" title="CurlyTx" >
+         <ePixmap position="0,0" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
+         <ePixmap position="140,0" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
+         <ePixmap position="280,0" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
+         <ePixmap position="420,0" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
+         <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" />
+         <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" />
+         <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" />
+         <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" />
+         <widget name="text" position="5,45" size="550,350" font="Console;20" />
         </screen>"""
 
         </screen>"""
 
+    currentUrl = None
+    currentPage = None
+
     def __init__(self, session, args = None):
     def __init__(self, session, args = None):
-        self.skin = CurlyTx.skin
+        #self.skin = CurlyTx.skin
         Screen.__init__(self, session)
         Screen.__init__(self, session)
+        HelpableScreen.__init__(self)
+        #self.skinName = [ "CurlyTx", "Setup" ]
 
         self["text"] = ScrollLabel("foo")
 
 
         self["text"] = ScrollLabel("foo")
 
-        self["actions"] = NumberActionMap(["WizardActions", "InputActions"], {
-                "ok": self.close,
+        self["key_red"]    = StaticText(_("Settings"))
+        self["key_green"]  = StaticText(_("Reload"))
+        self["key_yellow"] = StaticText(_("Prev"))
+        self["key_blue"]   = StaticText(_("Next"))
+
+
+        self["actions"] = NumberActionMap(
+            ["WizardActions", "ColorActions", "InputActions", "HelpActions"], {
+                "ok":   self.close,
                 "back": self.close,
                 "back": self.close,
-                "up": self.pageUp,
-                "down":        self.pageDown
+                "up":   self.pageUp,
+                "down": self.pageDown,
+
+                "red":    self.showSettings,
+                "green":  self.reload,
+                "yellow": self.prevPage,
+                "blue":   self.nextPage
             }, -1)
 
             }, -1)
 
-        self.loadUrl("http://monitoring.home.cweiske.de/wetter/plain.txt")
+        self.loadHelp()
+        self.loadUrl(config.plugins.CurlyTx.defaultPage.value)
+
+    def loadHelp(self):
+        self.helpList.append((
+                self["actions"], "WizardActions",
+                [("up", _("Scroll page contents up"))]))
+        self.helpList.append((
+                self["actions"], "WizardActions",
+                [("down", _("Scroll page contents down"))]))
+        self.helpList.append((
+                self["actions"], "ColorActions",
+                [("red", _("Show program settings"))]))
+        self.helpList.append((
+                self["actions"], "ColorActions",
+                [("green", _("Reload current page URL"))]))
+        self.helpList.append((
+                self["actions"], "ColorActions",
+                [("yellow", _("Switch to next configured page URL"))]))
+        self.helpList.append((
+                self["actions"], "ColorActions",
+                [("blue", _("Switch to previous configured page URL"))]))
+        self.helpList.append((
+                self["actions"], "WizardActions",
+                [("ok", _("Close window"))]))
+        self.helpList.append((
+                self["actions"], "WizardActions",
+                [("back", _("Close window"))]))
+        self.helpList.append((
+                self["actions"], "HelpActions",
+                [("displayHelp", _("Show this help screen"))]))
 
     def pageUp(self):
         self["text"].pageUp()
 
     def pageUp(self):
         self["text"].pageUp()
@@ -35,14 +92,49 @@ class CurlyTx(Screen):
     def pageDown(self):
         self["text"].pageDown()
 
     def pageDown(self):
         self["text"].pageDown()
 
+    def prevPage(self):
+        if self.currentPage == None:
+            return
+
+        pageId = self.currentPage - 1
+        if pageId < 0:
+            pageId = len(config.plugins.CurlyTx.pages) - 1
+        self.loadUrl(pageId)
+
+    def nextPage(self):
+        if self.currentPage == None:
+            return
+
+        pageId = self.currentPage + 1
+        if pageId > len(config.plugins.CurlyTx.pages) - 1:
+            pageId = 0
+        self.loadUrl(pageId)
 
 
-    def mycallback(self, answer):
-        print "answer:", answer
-        if answer:
-            raise Exception("test-crash")
-        self.close()
+    def reload(self):
+        if self.currentPage == None:
+            return
 
 
-    def loadUrl(self, url):
+        self.loadUrl(self.currentPage)
+
+    def loadUrl(self, pageId):
+        if pageId == None:
+            self.loadNoPage()
+            return
+
+        pageId = int(pageId)
+        if pageId > (len(config.plugins.CurlyTx.pages) - 1):
+            if len(config.plugins.CurlyTx.pages) == 0:
+                self.loadNoPage()
+            else:
+                self["text"].setText("Invalid page " + pageId);
+            return
+
+        url   = config.plugins.CurlyTx.pages[pageId].uri.value
+        title = config.plugins.CurlyTx.pages[pageId].title.value
+        self.currentPage = pageId
+        self.currentUrl = url
+
+        self.setTitle(title)
         self["text"].setText("Loading ...\n" + url);
 
         client.getPage(url).addCallback(self.urlLoaded).addErrback(self.urlFailed, url)
         self["text"].setText("Loading ...\n" + url);
 
         client.getPage(url).addCallback(self.urlLoaded).addErrback(self.urlFailed, url)
@@ -55,3 +147,18 @@ class CurlyTx(Screen):
             "Error fetching URL:\n " + error.getErrorMessage()
             + "\n\nURL: " + url
             )
             "Error fetching URL:\n " + error.getErrorMessage()
             + "\n\nURL: " + url
             )
+
+    def loadNoPage(self):
+        self["text"].setText("Go and add a page in the settings");
+
+    def showSettings(self):
+        from CurlyTxSettings import CurlyTxSettings
+        self.session.openWithCallback(self.onSettingsChanged, CurlyTxSettings)
+
+    def onSettingsChanged(self):
+        if len(config.plugins.CurlyTx.pages) == 0:
+            self.currentPage = None
+            self.loadUrl(self.currentPage)
+        elif self.currentPage == None:
+            self.currentPage = 0
+            self.loadUrl(self.currentPage)