get page list feed import working properly
authorChristian Weiske <cweiske@cweiske.de>
Wed, 23 Nov 2011 17:09:24 +0000 (18:09 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Wed, 23 Nov 2011 17:09:24 +0000 (18:09 +0100)
ChangeLog
README.rst
src/AtomFeed.py
src/CurlyTxSettings.py

index b240dfd93616e6a60e5bb8c7750cf1d35b7ebdc8..7cd59a7d4f66382ed419c0f7f0ff92c9c186e123 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-23  Christian Weiske  <cweiske@bogo>
+
+       * Add page list import via Atom feed
+
 2011-11-21  Christian Weiske  <cweiske@cweiske.de>
 
        * hide color buttons when no/only one page configured
index 463c8161d0359404a243bd5b587b1467a7b5697b..2bb171308e4f88e0ee79dd146a951e8dca150b0b 100644 (file)
@@ -10,7 +10,6 @@ Multiple URLs can be configured and navigated.
 
 Open issues
 ===========
-- page import via atom feed/opml
 - move mode to re-order pages
 - how to show clock in lcd?
 - show headers when pressing info button
index 07a6345f030c13f78bc70205fbff29dccbccfd84..f89c22fd64c6d75e462cd08d954e171f85ac7758 100644 (file)
@@ -6,7 +6,11 @@ class AtomFeed:
     """
     ns = "{http://www.w3.org/2005/Atom}"
     def __init__(self, url, callback):
-        getPage(url).addCallback(self.parse, callback)
+        getPage(url).addCallback(self.parse, callback).addErrback(self.fail)
+
+
+    def fail(self, msg):
+        print("CurlyTx", msg)
 
     def parse(self, data, callback):
         xml = fromstring(data)
index bd6dc1c44f2537b953309add2a5c34de7756fe99..23deb232f9ca56a17afc275a8b1c76b19aa1e5dd 100644 (file)
@@ -77,6 +77,9 @@ class CurlyTxSettings(ConfigListScreen, HelpableScreen, Screen):
         self.helpList.append((
                 self["actions"], "SetupActions",
                 [("ok", _("Edit selected page"))]))
+        self.helpList.append((
+                self["actions"], "SetupActions",
+                [("ok", _("Load pages from feed"))]))
         self.helpList.append((
                 self["actions"], "ColorActions",
                 [("yellow", _("Add new page"))]))
@@ -142,13 +145,17 @@ class CurlyTxSettings(ConfigListScreen, HelpableScreen, Screen):
             return
 
         del config.plugins.CurlyTx.pages[:]
-        config.plugins.CurlyTx.pages.save()
-        print("CurlyTx", len(config.plugins.CurlyTx.pages))
+
         for pageData in pages:
             page = createPage()
-            page.title.value = pageData["title"]
-            page.uri.value   = pageData["url"]
             config.plugins.CurlyTx.pages.append(page)
+            page.title.setValue(pageData["title"])
+            page.uri.setValue(pageData["url"])
+
+        #we cannot restore the old pages without enigma2 restart, so
+        # it's better to save here for a consistent user experience
+        config.plugins.CurlyTx.pages.save()
+
         self["config"].setList(self.getConfigList())
 
     def keySave(self):