From 983a31577ff10bc1d7ce34a5d49fe4f10aae1fcf Mon Sep 17 00:00:00 2001 From: ghost Date: Sat, 17 Oct 2009 13:58:35 +0200 Subject: [PATCH 1/1] cleanup screen title handling no more need to directly access self.instance.setTitle or getTitle --- lib/python/Components/GUISkin.py | 20 ++++++++++++++++---- lib/python/Screens/ChannelSelection.py | 18 ++++++++---------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/python/Components/GUISkin.py b/lib/python/Components/GUISkin.py index 4ee8a4a3..f26c8256 100755 --- a/lib/python/Components/GUISkin.py +++ b/lib/python/Components/GUISkin.py @@ -64,7 +64,8 @@ class GUISkin: self.summaries.remove(summary) def setTitle(self, title): - self.instance.setTitle(title) + if self.instance: + self.instance.setTitle(title) self["Title"].text = title self.summaries.setTitle(title) @@ -78,23 +79,34 @@ class GUISkin: def applySkin(self): z = 0 - title = "" baseres = (720, 576) # FIXME: a skin might have set another resolution, which should be the base res + idx = 0 + skin_title_idx = -1 + title = self.title for (key, value) in self.skinAttributes: if key == "zPosition": z = int(value) elif key == "title": - title = value + skin_title_idx = idx + if title: + self.skinAttributes[skin_title_idx] = ("title", title) + else: + self["Title"].text = value + self.summaries.setTitle(value) elif key == "baseResolution": baseres = tuple([int(x) for x in value.split(',')]) + idx += 1 self.scale = ((baseres[0], baseres[0]), (baseres[1], baseres[1])) if not self.instance: from enigma import eWindow self.instance = eWindow(self.desktop, z) + if skin_title_idx == -1 and title: + self.skinAttributes.append(("title", title)) + # we need to make sure that certain attributes come last self.skinAttributes.sort(key=lambda a: {"position": 1}.get(a[0], 0)) - self["Title"].text = title + applyAllAttributes(self.instance, self.desktop, self.skinAttributes, self.scale) self.createGUIScreen(self.instance, self.desktop) diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 5d78ec77..0432823b 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -526,7 +526,7 @@ class ChannelSelectionEdit: self.mutableList = self.getMutableList() # add all services from the current list to internal marked set in listboxservicecontent self.clearMarks() # this clears the internal marked set in the listboxservicecontent - self.saved_title = self.instance.getTitle() + self.saved_title = self.getTitle() pos = self.saved_title.find(')') new_title = self.saved_title[:pos+1] if type == EDIT_ALTERNATIVES: @@ -626,7 +626,7 @@ class ChannelSelectionEdit: self.mutableList = self.getMutableList() self.movemode = True self.pathChangeDisabled = True # no path change allowed in movemode - self.saved_title = self.instance.getTitle() + self.saved_title = self.getTitle() new_title = self.saved_title pos = self.saved_title.find(')') new_title = self.saved_title[:pos+1] + ' ' + _("[move mode]") + self.saved_title[pos+1:] @@ -761,7 +761,7 @@ class ChannelSelectionBase(Screen): self.mode = MODE_TV self.servicePath = self.servicePathTV self.recallBouquetMode() - title = self.instance.getTitle() + title = self.getTitle() pos = title.find(" (") if pos != -1: title = title[:pos] @@ -772,7 +772,7 @@ class ChannelSelectionBase(Screen): self.mode = MODE_RADIO self.servicePath = self.servicePathRadio self.recallBouquetMode() - title = self.instance.getTitle() + title = self.getTitle() pos = title.find(" (") if pos != -1: title = title[:pos] @@ -814,7 +814,7 @@ class ChannelSelectionBase(Screen): return str def buildTitleString(self): - titleStr = self.instance.getTitle() + titleStr = self.getTitle() pos = titleStr.find(']') if pos == -1: pos = titleStr.find(')') @@ -1492,9 +1492,6 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS class SimpleChannelSelection(ChannelSelectionBase): def __init__(self, session, title): ChannelSelectionBase.__init__(self, session) - self.title = title - self.onShown.append(self.__onExecCallback) - self["actions"] = ActionMap(["OkCancelActions", "TvRadioActions"], { "cancel": self.close, @@ -1502,9 +1499,10 @@ class SimpleChannelSelection(ChannelSelectionBase): "keyRadio": self.setModeRadio, "keyTV": self.setModeTv, }) + self.title = title + self.onLayoutFinish.append(self.layoutFinished) - def __onExecCallback(self): - self.setTitle(self.title) + def layoutFinished(self): self.setModeTv() def channelSelected(self): # just return selected service -- 2.30.2