don't crash on empty configlist lines
[vuplus_dvbapp] / lib / python / Components / ConfigList.py
index 6078580..5a02c38 100755 (executable)
@@ -61,12 +61,13 @@ class ConfigList(HTMLComponent, GUIComponent, object):
        GUI_WIDGET = eListbox
        
        def selectionChanged(self):
-               if self.current:
+               if isinstance(self.current,tuple) and len(self.current) == 2:
                        self.current[1].onDeselect(self.session)
                self.current = self.getCurrent()
-               if self.current:
+               if isinstance(self.current,tuple) and len(self.current) == 2:
                        self.current[1].onSelect(self.session)
-
+               else:
+                       return
                for x in self.onSelectionChanged:
                        x()
 
@@ -75,11 +76,11 @@ class ConfigList(HTMLComponent, GUIComponent, object):
                instance.setContent(self.l)
        
        def preWidgetRemove(self, instance):
-               if self.current:
+               if isinstance(self.current,tuple) and len(self.current) == 2:
                        self.current[1].onDeselect(self.session)
                instance.selectionChanged.get().remove(self.selectionChanged)
                instance.setContent(None)
-       
+
        def setList(self, l):
                self.timer.stop()
                self.__list = l
@@ -87,7 +88,7 @@ class ConfigList(HTMLComponent, GUIComponent, object):
 
                if l is not None:
                        for x in l:
-                               assert isinstance(x[1], ConfigElement), "entry in ConfigList " + str(x[1]) + " must be a ConfigElement"
+                               assert isinstance(x, ConfigElement), "entry in ConfigList " + str(x) + " must be a ConfigElement"
 
        def getList(self):
                return self.__list
@@ -146,15 +147,20 @@ class ConfigListScreen:
                        self["config"].onSelectionChanged.append(self.handleInputHelpers)
 
        def handleInputHelpers(self):
-               if isinstance(self["config"].getCurrent()[1], ConfigText) or isinstance(self["config"].getCurrent()[1], ConfigPassword):
-                       if self.has_key("VKeyIcon"):
-                               self["VirtualKB"].setEnabled(True)
-                               self["VKeyIcon"].boolean = True
-                       if self.has_key("HelpWindow"):
-                               if self["config"].getCurrent()[1].help_window.instance is not None:
-                                       helpwindowpos = self["HelpWindow"].getPosition()
-                                       from enigma import ePoint
-                                       self["config"].getCurrent()[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1]))
+               if self["config"].getCurrent() is not None:
+                       if isinstance(self["config"].getCurrent()[1], ConfigText) or isinstance(self["config"].getCurrent()[1], ConfigPassword):
+                               if self.has_key("VKeyIcon"):
+                                       self["VirtualKB"].setEnabled(True)
+                                       self["VKeyIcon"].boolean = True
+                               if self.has_key("HelpWindow"):
+                                       if self["config"].getCurrent()[1].help_window.instance is not None:
+                                               helpwindowpos = self["HelpWindow"].getPosition()
+                                               from enigma import ePoint
+                                               self["config"].getCurrent()[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1]))
+                       else:
+                               if self.has_key("VKeyIcon"):
+                                       self["VirtualKB"].setEnabled(False)
+                                       self["VKeyIcon"].boolean = False
                else:
                        if self.has_key("VKeyIcon"):
                                self["VirtualKB"].setEnabled(False)