take care of scrollbar size when build movielist and timerlist entries
[enigma2.git] / lib / python / Components / config.py
index 3c01794ab0fdcf92e15a85313a9caae7ad434262..7df6e762f7c3df5d0fa86e54d3b31c91acfb253e 100644 (file)
@@ -336,7 +336,7 @@ class ConfigSequence(ConfigElement):
                        max_pos += len(str(self.limits[num][1]))
 
                        while self._value[num] < self.limits[num][0]:
-                               self.value[num] += 1
+                               self._value[num] += 1
 
                        while self._value[num] > self.limits[num][1]:
                                self._value[num] -= 1
@@ -440,11 +440,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):
@@ -512,10 +516,10 @@ class ConfigText(ConfigElement, NumericalTextInput):
                self.value = self.default = default
 
        def validateMarker(self):
-               if self.marked_pos < 0:
-                       self.marked_pos = 0
                if self.marked_pos >= len(self.text):
                        self.marked_pos = len(self.text) - 1
+               if self.marked_pos < 0:
+                       self.marked_pos = 0
 
        #def nextEntry(self):
        #       self.vals[1](self.getConfigPath())
@@ -529,9 +533,7 @@ class ConfigText(ConfigElement, NumericalTextInput):
                        self.marked_pos -= 1
                elif key == KEY_RIGHT:
                        self.marked_pos += 1
-                       if not self.fixed_size:
-                               if self.marked_pos >= len(self.text):
-                                       self.text = self.text.ljust(len(self.text) + 1)
+                       self.maybeExpand()
                elif key in KEY_NUMBERS:
                        number = self.getKey(getKeyNumber(key))
                        self.text = self.text[0:self.marked_pos] + unicode(number) + self.text[self.marked_pos + 1:]
@@ -542,8 +544,14 @@ class ConfigText(ConfigElement, NumericalTextInput):
                self.validateMarker()
                self.changed()
 
+       def maybeExpand(self):
+               if not self.fixed_size:
+                       if self.marked_pos >= len(self.text):
+                               self.text = self.text.ljust(len(self.text) + 1)
+
        def nextFunc(self):
                self.marked_pos += 1
+               self.maybeExpand()
                self.validateMarker()
                self.changed()
 
@@ -694,6 +702,12 @@ class ConfigSubList(list, object):
                        item.saved_value = self.stored_values[i]
                        item.load()
 
+       def dict(self):
+               res = dict()
+               for index in range(len(self)):
+                       res[str(index)] = self[index]
+               return res
+
 # same as ConfigSubList, just as a dictionary.
 # care must be taken that the 'key' has a proper
 # str() method, because it will be used in the config
@@ -733,6 +747,9 @@ class ConfigSubDict(dict, object):
                        item.saved_value = self.stored_values[str(key)]
                        item.load()
 
+       def dict(self):
+               return self
+
 # Like the classes above, just with a more "native"
 # syntax.
 #
@@ -793,6 +810,9 @@ class ConfigSubsection(object):
                for x in self.content.items.values():
                        x.load()
 
+       def dict(self):
+               return self.content.items
+
 # the root config object, which also can "pickle" (=serialize)
 # down the whole config tree.
 #
@@ -874,7 +894,7 @@ class ConfigFile:
        def __resolveValue(self, pickles, cmap):
                if cmap.has_key(pickles[0]):
                        if len(pickles) > 1:
-                               return self.__resolveValue(pickles[1:], cmap[pickles[0]].content.items)
+                               return self.__resolveValue(pickles[1:], cmap[pickles[0]].dict())
                        else:
                                return str(cmap[pickles[0]].value)
                return None