copy lists, not list identities... should fix saving of non-default values
[enigma2.git] / lib / python / Components / config.py
index 6897aa88bb7c0a5d574776a5cb65eba8f5fc92a1..1645784b7c33e676b90b91677d81d4368762d3de 100644 (file)
@@ -257,15 +257,10 @@ class configSequence:
                        olddec = oldvalue % 10 ** (numberLen - posinblock) - (oldvalue % 10 ** (numberLen - posinblock - 1))
                        newvalue = oldvalue - olddec + (10 ** (numberLen - posinblock - 1) * number)
                        
-                       print "You actually pressed a number (" + str(number) + ") which will be added at block number " + str(blocknumber) + " on position " + str(posinblock)
-                       print "Old value: " + str(oldvalue) + " olddec: " + str(olddec) + " newvalue: " + str(newvalue)
                        self.parent.value[blocknumber] = newvalue
                        self.markedPos += 1
                
-               self.checkValues()                      
-               
-               print "markPos:",
-               print self.markedPos
+               self.checkValues()
 
                #FIXME: dont call when press left/right
                self.parent.change()    
@@ -273,7 +268,6 @@ class configSequence:
        def __call__(self, selected):                   #needed by configlist
                value = ""
                mPos = self.markedPos
-               print "Positon: " + str(mPos)
                num = 0;
                for i in self.parent.value:
                        if len(value):  #fixme no heading separator possible
@@ -285,7 +279,6 @@ class configSequence:
                        #if diff > 0:
                                ## if this helps?!
                                #value += " " * diff
-                       print (("%0" + str(len(str(self.valueBounds[num][1]))) + "d") % i)
                        if (self.censorChar == ""):
                                value += ("%0" + str(len(str(self.valueBounds[num][1]))) + "d") % i
                        else:
@@ -323,7 +316,6 @@ class configText:
                self.parent.save()
                
        def nextEntry(self):
-               print self.parent
                self.parent.vals[1](self.parent.getConfigPath())
 
        def handleKey(self, key):
@@ -487,17 +479,20 @@ class configElement:
                        return str(data.strip())
 
                elif control == configSequence:
-                       print data
+                       print self.vals
+                       print self.value
                        try:
-                               value = ((len(data) * ("%d" + self.vals[0]))[0:-1]) % tuple(data)
+                               value = ""
+                               count = 0
+                               for i in data:
+                                       if value !="":
+                                               value += self.vals[0]
+                                       value += (("%0" + str(len(str(self.vals[1][count][1]))) + "d") % i)
+                                       count += 1
+                                       #value = ((len(data) * ("%d" + self.vals[0]))[0:-1]) % tuple(data)
                        except: 
                                value = str(data)       
-#                      just in case you don't understand the above, here an equivalent:
-#                      value = ""
-#                      for i in data:
-#                              if value !="":
-#                                      value += self.vals[0]
-#                              value += str(i)
+
                        return value
                elif control == configSatlist:
                        return str(self.vals[self.value][1]);
@@ -513,10 +508,11 @@ class configElement:
 
                if value == "":
                        #print "value not found - using default"
-
                        if self.controlType == configSatlist:
                                self.value = self.getIndexbyEntry(self.defaultValue)
-                       else:   
+                       elif self.controlType == configSequence:
+                               self.value = self.defaultValue[:]
+                       else:
                                self.value = self.defaultValue
 
                        self.save()             #add missing value to dict
@@ -527,13 +523,14 @@ class configElement:
                #is this right? activate settings after load/cancel and use default     
                self.change()
 
-       def __init__(self, configPath, control, defaultValue, vals):
+       def __init__(self, configPath, control, defaultValue, vals, saveDefaults = True):
                self.configPath = configPath
                self.defaultValue = defaultValue
                self.controlType = control
                self.vals = vals
                self.notifierList = [ ]
                self.enabled = True
+               self.saveDefaults = saveDefaults
                self.loadData()         
                
        def getConfigPath(self):
@@ -548,7 +545,8 @@ class configElement:
        def reload(self):
                self.loadData()
        def save(self):
-               configfile.setKey(self.configPath, self.datatoFile(self.controlType,self.value))
+               if (self.defaultValue != self.value) or (self.saveDefaults == True):
+                       configfile.setKey(self.configPath, self.datatoFile(self.controlType,self.value))
 
 class configElement_nonSave(configElement):
        def __init__(self, configPath, control, defaultValue, vals):