X-Git-Url: https://git.cweiske.de/enigma2-curlytx.git/blobdiff_plain/af5c122cd4d9532e3f39082609bc8ae590c102d8..f96d685b8c91177c3dcfc84a882ec8f1745fa3d5:/src/CurlyTxSettings.py diff --git a/src/CurlyTxSettings.py b/src/CurlyTxSettings.py index e0408f2..f733e12 100644 --- a/src/CurlyTxSettings.py +++ b/src/CurlyTxSettings.py @@ -1,15 +1,24 @@ +# -*- coding: utf-8 -*- +# CurlyTx configuration window +# Copyright (C) 2011 Christian Weiske +# 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 -from Components.config import config, getConfigListEntry +from config import createPage, loadDefaultPageOptions +from Components.config import config, getConfigListEntry, ConfigSelection from Components.ConfigList import ConfigList, ConfigListScreen -class CurlyTxSettings(ConfigListScreen, Screen): +class CurlyTxSettings(ConfigListScreen, HelpableScreen, Screen): skin = """ - + @@ -24,6 +33,7 @@ class CurlyTxSettings(ConfigListScreen, Screen): def __init__(self, session): self.skin = CurlyTxSettings.skin Screen.__init__(self, session) + HelpableScreen.__init__(self) #self.skinName = [ "CurlyTxSettings", "Setup" ] self.setup_title = _("Settings") @@ -32,8 +42,8 @@ class CurlyTxSettings(ConfigListScreen, Screen): "cancel": self.keyCancel, "save": self.keySave, "ok": self.editPage, - "blue": self.deletePage, - "yellow": self.newPage + "yellow": self.newPage, + "blue": self.deletePage }, -2) self["key_red"] = StaticText(_("Cancel")) @@ -42,17 +52,46 @@ class CurlyTxSettings(ConfigListScreen, Screen): self["key_blue"] = StaticText(_("Delete")) ConfigListScreen.__init__(self, self.getConfigList(), session = self.session) - self.onClose.append(self.abort) + + self.loadHelp() def getConfigList(self): + #reload titles + loadDefaultPageOptions() + cfg = config.plugins.CurlyTx + list = [ getConfigListEntry(_("Page:") + " " + x.title.value, x.uri) - for x in config.plugins.CurlyTx.pages + for x in cfg.pages ] - list.append(getConfigListEntry(_("Show in main menu"), config.plugins.CurlyTx.menuMain)) - list.append(getConfigListEntry(_("Menu title"), config.plugins.CurlyTx.menuTitle)) + if len(cfg.pages): + list.append(getConfigListEntry(_("Default page"), cfg.defaultPage)) + list.append(getConfigListEntry(_("Show in main menu"), cfg.menuMain)) + list.append(getConfigListEntry(_("Show in extensions menu"), cfg.menuExtensions)) + list.append(getConfigListEntry(_("Menu title"), cfg.menuTitle)) + list.append(getConfigListEntry(_("Page feed URL"), cfg.feedUrl)) return list + def loadHelp(self): + self.helpList.append(( + self["actions"], "SetupActions", + [("cancel", _("Dismiss all setting changes"))])) + self.helpList.append(( + self["actions"], "SetupActions", + [("save", _("Save settings and close 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"))])) + self.helpList.append(( + self["actions"], "ColorActions", + [("blue", _("Delete selected page"))])) + def keyLeft(self): ConfigListScreen.keyLeft(self) @@ -60,12 +99,16 @@ class CurlyTxSettings(ConfigListScreen, Screen): ConfigListScreen.keyRight(self) def deletePage(self): + pageCount = len(config.plugins.CurlyTx.pages) + if pageCount == 0 or self["config"].getCurrentIndex() >= pageCount: + return + from Screens.MessageBox import MessageBox self.session.openWithCallback( self.deletePageConfirm, MessageBox, _("Really delete this page?\nIt cannot be recovered!") - ) + ) def deletePageConfirm(self, result): if not result: @@ -88,7 +131,14 @@ class CurlyTxSettings(ConfigListScreen, Screen): self.session.openWithCallback( self.pageEdited, CurlyTxPageEdit, config.plugins.CurlyTx.pages[id], False - ) + ) + elif config.plugins.CurlyTx.feedUrl.value: + from AtomFeed import AtomFeed + AtomFeed(config.plugins.CurlyTx.feedUrl.value, self.feedPagesReceived) + else: + self.session.open( + MessageBox, _("No page feed URL defined"), MessageBox.TYPE_ERROR + ) def pageEdited(self, page, new): if not page: @@ -99,6 +149,19 @@ class CurlyTxSettings(ConfigListScreen, Screen): self["config"].setList(self.getConfigList()) + def feedPagesReceived(self, pages): + if len(pages) == 0: + return + + del config.plugins.CurlyTx.pages[:] + + for pageData in pages: + page = createPage() + config.plugins.CurlyTx.pages.append(page) + page.title.setValue(pageData["title"]) + page.uri.setValue(pageData["url"]) + + self["config"].setList(self.getConfigList()) def keySave(self): for i in range(0, len(config.plugins.CurlyTx.pages)): @@ -107,8 +170,23 @@ class CurlyTxSettings(ConfigListScreen, Screen): config.plugins.CurlyTx.pages.save() ConfigListScreen.keySave(self) - def abort(self): - pass + def cancelConfirm(self, result): + """Overwriting ConfigListScreen.cancelConfirm to call cancelAll method""" + if not result: + return + + self.cancelAll() + self.close() + + def cancelAll(self): + for x in self["config"].list: + x[1].cancel() + + #restore old page configuration + cfg = config.plugins.CurlyTx + del cfg.pages[:] + for i in cfg.pages.stored_values: + cfg.pages.append(createPage()) @@ -131,12 +209,12 @@ class CurlyTxPageEdit(Screen, ConfigListScreen): list = [ getConfigListEntry(_("Page URL"), page.uri), getConfigListEntry(_("Title"), page.title), + getConfigListEntry(_("Font size"), page.fontSize), ] ConfigListScreen.__init__(self, list, session = self.session) def save(self): self.close(self.page, self.new) - #FIXME: pass page to parent def keyCancel(self): self.close(None, self.new)