fix saving of advanced satconfig
[enigma2.git] / lib / python / Components / config.py
index 1645784b7c33e676b90b91677d81d4368762d3de..c06d3b7298e1c0f48588d2d17435f2c6a589700b 100644 (file)
@@ -29,11 +29,16 @@ class configFile:
                        self.configElements[line[:x]] = line[x + 1:-1]
        
        def getKey(self, key):
-               return self.configElements[key]
+               if self.configElements.has_key(key):
+                       return self.configElements[key]
+               return None
 
-       def setKey(self, key, value):
+       def setKey(self, key, value, isDefaultKey=False):
                self.changed = 1
-               self.configElements[key] = value
+               if isDefaultKey and self.configElements.has_key(key):
+                       del self.configElements[key]
+               else:
+                       self.configElements[key] = value
 
        def save(self):
                if self.changed == 0:           #no changes, so no write to disk needed
@@ -477,10 +482,9 @@ class configElement:
                        return str(data)
                elif control == configText:
                        return str(data.strip())
-
                elif control == configSequence:
-                       print self.vals
-                       print self.value
+#                      print self.vals
+#                      print self.value
                        try:
                                value = ""
                                count = 0
@@ -492,7 +496,6 @@ class configElement:
                                        #value = ((len(data) * ("%d" + self.vals[0]))[0:-1]) % tuple(data)
                        except: 
                                value = str(data)       
-
                        return value
                elif control == configSatlist:
                        return str(self.vals[self.value][1]);
@@ -519,7 +522,7 @@ class configElement:
                else:
                        #print "set val:" + str(value)
                        self.value = value
-                       
+
                #is this right? activate settings after load/cancel and use default     
                self.change()
 
@@ -539,14 +542,25 @@ class configElement:
        def addNotifier(self, notifier):
                self.notifierList.append(notifier);
                notifier(self);
+
        def change(self):
                for notifier in self.notifierList:
                        notifier(self)
+
        def reload(self):
                self.loadData()
+
        def save(self):
-               if (self.defaultValue != self.value) or (self.saveDefaults == True):
-                       configfile.setKey(self.configPath, self.datatoFile(self.controlType,self.value))
+               if self.controlType == configSatlist:
+                       defaultValue = self.getIndexbyEntry(self.defaultValue)
+               else:
+                       defaultValue = self.defaultValue
+               if self.value != defaultValue or self.saveDefaults:
+                       configfile.setKey(self.configPath, self.datatoFile(self.controlType, self.value))
+               else:
+                       oldValue = configfile.getKey(self.configPath)
+                       if oldValue is not None and oldValue != defaultValue:
+                               configfile.setKey(self.configPath, self.datatoFile(self.controlType, self.value), True)
 
 class configElement_nonSave(configElement):
        def __init__(self, configPath, control, defaultValue, vals):
@@ -554,13 +568,12 @@ class configElement_nonSave(configElement):
 
        def save(self):
                pass
-               
+
 def getConfigListEntry(description, element):
        b = element
        item = b.controlType(b)
        return ((description, item))
 
-
 def configElementBoolean(name, default, texts=(_("Enable"), _("Disable"))):
        return configElement(name, configSelection, default, texts)