X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3b5048babf7e8df97b8d0267543c7fa47ec7f21d..485ab51b143b6308bc96f3c0028534c5961cdfb0:/lib/python/Components/GUISkin.py diff --git a/lib/python/Components/GUISkin.py b/lib/python/Components/GUISkin.py index b7cfb430..9eb4a80b 100644 --- a/lib/python/Components/GUISkin.py +++ b/lib/python/Components/GUISkin.py @@ -1,7 +1,6 @@ from GUIComponent import GUIComponent from skin import applyAllAttributes from Tools.CList import CList -from Sources.Source import Source class GUISkin: __module__ = __name__ @@ -9,25 +8,35 @@ class GUISkin: def __init__(self): self.onLayoutFinish = [ ] self.summaries = CList() + self.instance = None + self.desktop = None - def createGUIScreen(self, parent, desktop): + def createGUIScreen(self, parent, desktop, updateonly = False): for val in self.renderer: if isinstance(val, GUIComponent): - val.GUIcreate(parent) - if not val.applySkin(desktop): + if not updateonly: + val.GUIcreate(parent) + if not val.applySkin(desktop, self): print "warning, skin is missing renderer", val, "in", self for key in self: val = self[key] if isinstance(val, GUIComponent): - val.GUIcreate(parent) - if not val.applySkin(desktop): + if not updateonly: + val.GUIcreate(parent) + depr = val.deprecationInfo + if val.applySkin(desktop, self): + if depr: + print "WARNING: OBSOLETE COMPONENT '%s' USED IN SKIN. USE '%s' INSTEAD!" % (key, depr[0]) + print "OBSOLETE COMPONENT WILL BE REMOVED %s, PLEASE UPDATE!" % (depr[1]) + elif not depr: print "warning, skin is missing element", key, "in", self for w in self.additionalWidgets: - w.instance = w.widget(parent) - # w.instance.thisown = 0 - applyAllAttributes(w.instance, desktop, w.skinAttributes) + if not updateonly: + w.instance = w.widget(parent) + # w.instance.thisown = 0 + applyAllAttributes(w.instance, desktop, w.skinAttributes, self.scale) for f in self.onLayoutFinish: if type(f) is not type(self.close): # is this the best way to do this? @@ -36,14 +45,9 @@ class GUISkin: f() def deleteGUIScreen(self): - seenFakeSource = False for (name, val) in self.items(): - if name == "fake" and isinstance(val, Source): - seenFakeSource = True if isinstance(val, GUIComponent): val.GUIdelete() - if seenFakeSource: - del self["fake"] def close(self): self.deleteGUIScreen() @@ -61,3 +65,26 @@ class GUISkin: self.instance.setTitle(title) self.title = title self.summaries.setTitle(title) + + def setDesktop(self, desktop): + self.desktop = desktop + + def applySkin(self): + z = 0 + title = "" + baseres = (720, 576) # FIXME: a skin might have set another resolution, which should be the base res + for (key, value) in self.skinAttributes: + if key == "zPosition": + z = int(value) + elif key == "title": + title = value + elif key == "baseResolution": + baseres = tuple([int(x) for x in value.split(',')]) + self.scale = ((baseres[0], baseres[0]), (baseres[1], baseres[1])) + + if not self.instance: + from enigma import eWindow + self.instance = eWindow(self.desktop, z) + self.title = title + applyAllAttributes(self.instance, self.desktop, self.skinAttributes, self.scale) + self.createGUIScreen(self.instance, self.desktop)