From: Christian Weiske Date: Thu, 24 Nov 2011 17:19:40 +0000 (+0100) Subject: Show headers when pressing info button X-Git-Tag: v1.0.0~33 X-Git-Url: https://git.cweiske.de/enigma2-curlytx.git/commitdiff_plain/48dcd6c40effaf3e783959edbf9257525a773319?hp=a36b80acbdee4586c8f6d28bdc46b268293c39e8 Show headers when pressing info button --- diff --git a/ChangeLog b/ChangeLog index 9a9d38a..24c11b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,13 +1,17 @@ +2011-11-24 Christian Weiske + + * Show headers when pressing info button + 2011-11-23 Christian Weiske * Add page list import via Atom feed 2011-11-21 Christian Weiske - * hide color buttons when no/only one page configured - * hide default page config option when no page defined - * show current page when multiple ones are defined: "2/6" - * configurable text font size per page + * Hide color buttons when no/only one page configured + * Hide default page config option when no page defined + * Show current page when multiple ones are defined: "2/6" + * Configurable text font size per page 2011-11-18 Christian Weiske diff --git a/README.rst b/README.rst index 2bb1713..aad58c2 100644 --- a/README.rst +++ b/README.rst @@ -12,7 +12,6 @@ Open issues =========== - move mode to re-order pages - how to show clock in lcd? -- show headers when pressing info button License diff --git a/src/CurlyTx.py b/src/CurlyTx.py index 09d9ad1..b6df45d 100644 --- a/src/CurlyTx.py +++ b/src/CurlyTx.py @@ -8,6 +8,7 @@ from Components.ScrollLabel import ScrollLabel from Components.ActionMap import ActionMap from Components.Sources.StaticText import StaticText from twisted.web import client +from twisted.web.client import _makeGetterFactory, HTTPClientFactory from enigma import gFont from . import config @@ -30,6 +31,8 @@ class CurlyTx(Screen,HelpableScreen): currentUrl = None currentPage = None currentFontSize = 20 + httpGetterFactory = None + showingHeaders = False def __init__(self, session, args = None): #self.skin = CurlyTx.skin @@ -46,7 +49,7 @@ class CurlyTx(Screen,HelpableScreen): self["actions"] = ActionMap( - ["WizardActions", "ColorActions", "InputActions"], { + ["WizardActions", "ColorActions", "InputActions", "InfobarEPGActions"], { "ok": self.close, "back": self.close, "up": self.pageUp, @@ -55,7 +58,9 @@ class CurlyTx(Screen,HelpableScreen): "red": self.showSettings, "green": self.reload, "yellow": self.prevPage, - "blue": self.nextPage + "blue": self.nextPage, + + "showEventInfo": self.showHeader }, -1) self.loadHelp() @@ -70,6 +75,9 @@ class CurlyTx(Screen,HelpableScreen): self.helpList.append(( self["actions"], "WizardActions", [("down", _("Scroll page contents down"))])) + self.helpList.append(( + self["actions"], "InfobarEPGActions", + [("showEventInfo", _("Show HTTP response headers"))])) self.helpList.append(( self["actions"], "ColorActions", [("red", _("Show program settings"))])) @@ -166,7 +174,7 @@ class CurlyTx(Screen,HelpableScreen): self.setTextFont() self["text"].setText("Loading ...\n" + url); - client.getPage(url).addCallback(self.urlLoaded).addErrback(self.urlFailed, url) + self.getPageWebClient(url).addCallback(self.urlLoaded).addErrback(self.urlFailed, url) def setTextFont(self): if self["text"].long_text is not None: @@ -184,6 +192,19 @@ class CurlyTx(Screen,HelpableScreen): def loadNoPage(self): self["text"].setText("Go and add a page in the settings"); + def showHeader(self): + if self.showingHeaders: + self["text"].setText(self.pageContent) + self.pageContent = None + self.showingHeaders = False + else: + headers = "HTTP response headers for\n" + self.currentUrl + "\n\n" + for (k, v) in self.httpGetterFactory.response_headers.items(): + headers += k + ": " + ("\n" + k + ": ").join(v) + "\n" + self.pageContent = self["text"].getText() + self["text"].setText(headers) + self.showingHeaders = True + def showSettings(self): from CurlyTxSettings import CurlyTxSettings self.session.openWithCallback(self.onSettingsChanged, CurlyTxSettings) @@ -196,3 +217,22 @@ class CurlyTx(Screen,HelpableScreen): elif self.currentPage == None: self.currentPage = 0 self.loadUrl(self.currentPage) + + + def getPageWebClient(self, url, contextFactory=None, *args, **kwargs): + """ + Download a web page as a string. + + COPY OF twisted.web.client.getPage to store the factory + + Download a page. Return a deferred, which will callback with a + page (as a string) or errback with a description of the error. + + See L{HTTPClientFactory} to see what extra arguments can be passed. + """ + self.httpGetterFactory = _makeGetterFactory( + url, + HTTPClientFactory, + contextFactory=contextFactory, + *args, **kwargs) + return self.httpGetterFactory.deferred