+# -*- coding: utf-8 -*-
+# CurlyTx configuration window
+# Copyright (C) 2011 Christian Weiske <cweiske@cweiske.de>
+# License: GPLv3 or later
+
from . import _
from Screens.Screen import Screen
from Screens.HelpMenu import HelpableScreen
from Components.ActionMap import ActionMap, NumberActionMap
from Components.Sources.StaticText import StaticText
+from Screens.MessageBox import MessageBox
from . import config
-from config import createPage, loadDefaultPageOptions
+from config import createPage, loadDefaultPageOptions, feedPagesToConfig, feedSettingsToConfig, savePageConfig
from Components.config import config, getConfigListEntry, ConfigSelection
from Components.ConfigList import ConfigList, ConfigListScreen
class CurlyTxSettings(ConfigListScreen, HelpableScreen, Screen):
skin = """
- <screen name="Setup" position="center,center" size="560,430" title="Setup">
+ <screen name="Setup" position="center,center" size="560,430" title="Settings">
<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" transparent="1" alphatest="on" />
<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" transparent="1" alphatest="on" />
<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" transparent="1" alphatest="on" />
ConfigListScreen.__init__(self, self.getConfigList(), session = self.session)
self.loadHelp()
- self.onClose.append(self.abort)
def getConfigList(self):
#reload titles
self.pageEdited, CurlyTxPageEdit,
config.plugins.CurlyTx.pages[id], False
)
- else:
+ elif config.plugins.CurlyTx.feedUrl.value:
from AtomFeed import AtomFeed
- AtomFeed(config.plugins.CurlyTx.feedUrl.value, self.feedPagesReceived)
+ AtomFeed(
+ config.plugins.CurlyTx.feedUrl.value,
+ self.feedPagesReceived, self.feedPagesFail
+ )
+ else:
+ self.session.open(
+ MessageBox, _("No page feed URL defined"), MessageBox.TYPE_ERROR
+ )
def pageEdited(self, page, new):
if not page:
self["config"].setList(self.getConfigList())
- def feedPagesReceived(self, pages):
- if len(pages) == 0:
- return
+ def feedPagesReceived(self, pages, settings):
+ feedPagesToConfig(pages)
+ feedSettingsToConfig(settings)
+ self["config"].setList(self.getConfigList())
- del config.plugins.CurlyTx.pages[:]
+ def feedPagesFail(self, errorMessage):
+ """ Downloading the page url feed failed somehow """
+ self.session.open(
+ MessageBox,
+ _("Error loading page feed:") + "\n\n" + str(errorMessage),
+ MessageBox.TYPE_ERROR
+ )
- for pageData in pages:
- page = createPage()
- config.plugins.CurlyTx.pages.append(page)
- page.title.setValue(pageData["title"])
- page.uri.setValue(pageData["url"])
+ def keySave(self):
+ savePageConfig()
+ ConfigListScreen.keySave(self)
- self["config"].setList(self.getConfigList())
+ def cancelConfirm(self, result):
+ """Overwriting ConfigListScreen.cancelConfirm to call cancelAll method"""
+ if not result:
+ return
- def keySave(self):
- for i in range(0, len(config.plugins.CurlyTx.pages)):
- config.plugins.CurlyTx.pages[i].save()
+ self.cancelAll()
+ self.close()
- config.plugins.CurlyTx.pages.save()
- ConfigListScreen.keySave(self)
+ def cancelAll(self):
+ for x in self["config"].list:
+ x[1].cancel()
- def abort(self):
#restore old page configuration
cfg = config.plugins.CurlyTx
del cfg.pages[:]