fix bsod when select a not available service in channel selection
[enigma2.git] / lib / python / Components / ServiceList.py
index b255cd99641ae8344f2badd5dd5d346448ea2667..4a27c7682c259503b5fdbc702f7ad97e2ebe66da 100644 (file)
@@ -35,8 +35,25 @@ class ServiceList(HTMLComponent, GUIComponent):
                if pic:
                        self.l.setPixmap(self.l.picDVB_T, pic)
 
+               pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "ico_service_group-fs8.png"))
+               if pic:
+                       self.l.setPixmap(self.l.picServiceGroup, pic)
+
                self.root = None
                self.mode = self.MODE_NORMAL
+               self.onSelectionChanged = [ ]
+
+       def connectSelChanged(self, fnc):
+               if not fnc in self.onSelectionChanged:
+                       self.onSelectionChanged.append(fnc)
+
+       def disconnectSelChanged(self, fnc):
+               if fnc in self.onSelectionChanged:
+                       self.onSelectionChanged.remove(fnc)
+
+       def selectionChanged(self):
+               for x in self.onSelectionChanged:
+                       x()
 
        def setCurrent(self, ref):
                self.l.setCurrent(ref)
@@ -89,6 +106,7 @@ class ServiceList(HTMLComponent, GUIComponent):
        def postWidgetCreate(self, instance):
                instance.setWrapAround(True)
                instance.setContent(self.l)
+               instance.selectionChanged.get().append(self.selectionChanged)
                self.setMode(self.mode)
 
        def getRoot(self):
@@ -118,6 +136,7 @@ class ServiceList(HTMLComponent, GUIComponent):
                self.l.setRoot(root, justSet)
                if not justSet:
                        self.l.sort()
+               self.selectionChanged()
 
        def removeCurrent(self):
                self.l.removeCurrent()