add kill to Console
[enigma2.git] / lib / python / Components / ServiceList.py
index e39b1d0271dbc2284a36d70f2765104db7b9d680..b0283c11fcaa65b9b69bc25f7f81668a9b21be75 100644 (file)
@@ -1,12 +1,10 @@
 from HTMLComponent import HTMLComponent
 from GUIComponent import GUIComponent
 from HTMLComponent import HTMLComponent
 from GUIComponent import GUIComponent
-from skin import parseColor
+from skin import parseColor, parseFont
 
 from enigma import eListboxServiceContent, eListbox, eServiceCenter, eServiceReference, gFont, eRect
 from Tools.LoadPixmap import LoadPixmap
 
 
 from enigma import eListboxServiceContent, eListbox, eServiceCenter, eServiceReference, gFont, eRect
 from Tools.LoadPixmap import LoadPixmap
 
-from string import upper
-
 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
 
 class ServiceList(HTMLComponent, GUIComponent):
 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
 
 class ServiceList(HTMLComponent, GUIComponent):
@@ -17,11 +15,11 @@ class ServiceList(HTMLComponent, GUIComponent):
                GUIComponent.__init__(self)
                self.l = eListboxServiceContent()
 
                GUIComponent.__init__(self)
                self.l = eListboxServiceContent()
 
-               pic = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "folder.png"))
+               pic = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/folder.png"))
                if pic:
                        self.l.setPixmap(self.l.picFolder, pic)
 
                if pic:
                        self.l.setPixmap(self.l.picFolder, pic)
 
-               pic = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "marker-fs8.png"))
+               pic = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/marker.png"))
                if pic:
                        self.l.setPixmap(self.l.picMarker, pic)
 
                if pic:
                        self.l.setPixmap(self.l.picMarker, pic)
 
@@ -43,9 +41,13 @@ class ServiceList(HTMLComponent, GUIComponent):
 
                self.root = None
                self.mode = self.MODE_NORMAL
 
                self.root = None
                self.mode = self.MODE_NORMAL
+               self.ItemHeight = 28
+               self.ServiceNameFont = parseFont("Regular;22", ((1,1),(1,1)))
+               self.ServiceInfoFont = parseFont("Regular;18", ((1,1),(1,1)))
+               self.ServiceNumberFont = parseFont("Regular;20", ((1,1),(1,1)))
                self.onSelectionChanged = [ ]
 
                self.onSelectionChanged = [ ]
 
-       def applySkin(self, desktop):
+       def applySkin(self, desktop, parent):
                attribs = [ ]
                if self.skinAttributes is not None:
                        attribs = [ ]
                attribs = [ ]
                if self.skinAttributes is not None:
                        attribs = [ ]
@@ -60,10 +62,18 @@ class ServiceList(HTMLComponent, GUIComponent):
                                        self.l.setColor(eListboxServiceContent.markedBackgroundSelected, parseColor(value))
                                elif attrib == "foregroundColorServiceNotAvail":
                                        self.l.setColor(eListboxServiceContent.serviceNotAvail, parseColor(value))
                                        self.l.setColor(eListboxServiceContent.markedBackgroundSelected, parseColor(value))
                                elif attrib == "foregroundColorServiceNotAvail":
                                        self.l.setColor(eListboxServiceContent.serviceNotAvail, parseColor(value))
+                               elif attrib == "serviceItemHeight":
+                                       self.ItemHeight = int(value)
+                               elif attrib == "serviceNameFont":
+                                       self.ServiceNameFont = parseFont(value, ((1,1),(1,1)))
+                               elif attrib == "serviceInfoFont":
+                                       self.ServiceInfoFont = parseFont(value, ((1,1),(1,1)))
+                               elif attrib == "serviceNumberFont":
+                                       self.ServiceNumberFont = parseFont(value, ((1,1),(1,1)))
                                else:
                                        attribs.append((attrib, value))
                self.skinAttributes = attribs
                                else:
                                        attribs.append((attrib, value))
                self.skinAttributes = attribs
-               return GUIComponent.applySkin(self, desktop)
+               return GUIComponent.applySkin(self, desktop, parent)
 
        def connectSelChanged(self, fnc):
                if not fnc in self.onSelectionChanged:
 
        def connectSelChanged(self, fnc):
                if not fnc in self.onSelectionChanged:
@@ -101,7 +111,7 @@ class ServiceList(HTMLComponent, GUIComponent):
                # TODO fill with life
                print "Next char: "
                index = self.l.getNextBeginningWithChar(char)
                # TODO fill with life
                print "Next char: "
                index = self.l.getNextBeginningWithChar(char)
-               indexup = self.l.getNextBeginningWithChar(upper(char))
+               indexup = self.l.getNextBeginningWithChar(char.upper())
                if indexup != 0:
                        if (index > indexup or index == 0):
                                index = indexup
                if indexup != 0:
                        if (index > indexup or index == 0):
                                index = indexup
@@ -131,6 +141,10 @@ class ServiceList(HTMLComponent, GUIComponent):
                instance.selectionChanged.get().append(self.selectionChanged)
                self.setMode(self.mode)
 
                instance.selectionChanged.get().append(self.selectionChanged)
                self.setMode(self.mode)
 
+       def preWidgetRemove(self, instance):
+               instance.setContent(None)
+               instance.selectionChanged.get().remove(self.selectionChanged)
+
        def getRoot(self):
                return self.root
 
        def getRoot(self):
                return self.root
 
@@ -199,18 +213,17 @@ class ServiceList(HTMLComponent, GUIComponent):
 
        def setMode(self, mode):
                self.mode = mode
 
        def setMode(self, mode):
                self.mode = mode
-
                if mode == self.MODE_NORMAL:
                if mode == self.MODE_NORMAL:
-                       self.l.setItemHeight(28)
+                       self.l.setItemHeight(self.ItemHeight)
                        self.l.setVisualMode(eListboxServiceContent.visModeComplex)
                        self.l.setVisualMode(eListboxServiceContent.visModeComplex)
-                       self.l.setElementFont(self.l.celServiceName, gFont("Regular", 22))
-                       self.l.setElementPosition(self.l.celServiceName, eRect(0, 0, self.instance.size().width(), 28))
-                       self.l.setElementFont(self.l.celServiceInfo, gFont("Regular", 18))
+                       self.l.setElementFont(self.l.celServiceName, self.ServiceNameFont)
+                       self.l.setElementPosition(self.l.celServiceName, eRect(0, 0, self.instance.size().width(), self.ItemHeight))
+                       self.l.setElementFont(self.l.celServiceInfo, self.ServiceInfoFont)
                else:
                else:
-                       self.l.setItemHeight(28)
+                       self.l.setItemHeight(self.ItemHeight)
                        self.l.setVisualMode(eListboxServiceContent.visModeComplex)
                        self.l.setVisualMode(eListboxServiceContent.visModeComplex)
-                       self.l.setElementFont(self.l.celServiceNumber, gFont("Regular", 20))
-                       self.l.setElementPosition(self.l.celServiceNumber, eRect(0, 0, 50, 28))
-                       self.l.setElementFont(self.l.celServiceName, gFont("Regular", 22))
-                       self.l.setElementPosition(self.l.celServiceName, eRect(60, 0, self.instance.size().width()-60, 28))
-                       self.l.setElementFont(self.l.celServiceInfo, gFont("Regular", 18))
+                       self.l.setElementFont(self.l.celServiceNumber, self.ServiceNumberFont)
+                       self.l.setElementPosition(self.l.celServiceNumber, eRect(0, 0, 50, self.ItemHeight))
+                       self.l.setElementFont(self.l.celServiceName, self.ServiceNameFont)
+                       self.l.setElementPosition(self.l.celServiceName, eRect(60, 0, self.instance.size().width()-60, self.ItemHeight))
+                       self.l.setElementFont(self.l.celServiceInfo, self.ServiceInfoFont)