fix frequently segfault on clean shutdown
[enigma2.git] / lib / python / Components / config.py
index ad389a08d2e11f87ae923906ddc671b6ac22d701..de06871a59dff3936f14cf4b1dac388dba81a6ec 100644 (file)
@@ -328,6 +328,8 @@ class ConfigSequence(ConfigElement):
                
                self.default = default
                self.value = copy.copy(default)
+               
+               self.endNotifier = []
 
        def validate(self):
                max_pos = 0
@@ -344,6 +346,8 @@ class ConfigSequence(ConfigElement):
                        num += 1
 
                if self.marked_pos >= max_pos:
+                       for x in self.endNotifier:
+                               x(self)
                        self.marked_pos = max_pos - 1
 
                if self.marked_pos < 0:
@@ -357,6 +361,9 @@ class ConfigSequence(ConfigElement):
 
                if self.marked_pos >= total_len:
                        self.marked_pos = total_len - 1
+                       
+       def addEndNotifier(self, notifier):
+               self.endNotifier.append(notifier)
 
        def handleKey(self, key):
                if key == KEY_LEFT:
@@ -440,11 +447,15 @@ class ConfigSequence(ConfigElement):
                return str(v)
 
        def fromstring(self, value):
-               return [int(x) for x in self.saved_value.split(self.seperator)]
+               return [int(x) for x in value.split(self.seperator)]
 
 class ConfigIP(ConfigSequence):
        def __init__(self, default):
                ConfigSequence.__init__(self, seperator = ".", limits = [(0,255),(0,255),(0,255),(0,255)], default = default)
+       
+       def getHTML(self, id):
+               # we definitely don't want leading zeros
+               return '.'.join(["%d" % d for d in self.value])
 
 class ConfigMAC(ConfigSequence):
        def __init__(self, default):
@@ -622,7 +633,7 @@ class ConfigSatlist(ConfigSelection):
        def __init__(self, list, default = None):
                if default is not None:
                        default = str(default)
-               ConfigSelection.__init__(self, choices = [(str(orbpos), desc, flags) for (orbpos, desc, flags) in list], default = default)
+               ConfigSelection.__init__(self, choices = [(str(orbpos), desc) for (orbpos, desc, flags) in list], default = default)
 
        def getOrbitalPosition(self):
                if self.value == "":