Merge branch 'bug_618_fix_display_recording_indication'
[enigma2.git] / lib / python / Components / config.py
index 876e3a34a7b56683960a98981088ef409eb1bf35..44ad6d2acceec22f91938e59cb7498326075453f 100755 (executable)
@@ -29,6 +29,7 @@ from time import localtime, strftime
 class ConfigElement(object):
        def __init__(self):
                self.saved_value = None
+               self.save_forced = False
                self.last_value = None
                self.save_disabled = False
                self.__notifiers = None
@@ -83,7 +84,7 @@ class ConfigElement(object):
 
        # you need to override this if str(self.value) doesn't work
        def save(self):
-               if self.save_disabled or self.value == self.default:
+               if self.save_disabled or (self.value == self.default and not self.save_forced):
                        self.saved_value = None
                else:
                        self.saved_value = self.tostring(self.value)
@@ -1034,13 +1035,13 @@ class ConfigSelectionNumber(ConfigSelection):
                        step += stepwidth
                
                ConfigSelection.__init__(self, choices, default)
-               
+
        def getValue(self):
-               return int(self.text)
+               return int(ConfigSelection.getValue(self))
 
        def setValue(self, val):
-               self.text = str(val)
-               
+               ConfigSelection.setValue(self, str(val))
+
        def handleKey(self, key):
                if not self.wraparound:
                        if key == KEY_RIGHT:
@@ -1050,8 +1051,6 @@ class ConfigSelectionNumber(ConfigSelection):
                                if self.choices.index(self.value) == 0:
                                        return
                ConfigSelection.handleKey(self, key)
-                               
-                               
 
 class ConfigNumber(ConfigText):
        def __init__(self, default = 0):
@@ -1140,6 +1139,9 @@ class ConfigDirectory(ConfigText):
                else:
                        return ConfigText.getMulti(self, selected)
 
+       def onSelect(self, session):
+               self.allmarked = (self.value != "")
+
 # a slider.
 class ConfigSlider(ConfigElement):
        def __init__(self, default = 0, increment = 1, limits = (0, 100)):
@@ -1622,16 +1624,17 @@ class Config(ConfigSubsection):
                self.pickle_this("config", self.saved_value, result)
                return ''.join(result)
 
-       def unpickle(self, lines):
+       def unpickle(self, lines, base_file=True):
                tree = { }
                for l in lines:
                        if not l or l[0] == '#':
                                continue
 
                        n = l.find('=')
+                       name = l[:n]
                        val = l[n+1:].strip()
 
-                       names = l[:n].split('.')
+                       names = name.split('.')
 #                      if val.find(' ') != -1:
 #                              val = val[:val.find(' ')]
 
@@ -1642,6 +1645,12 @@ class Config(ConfigSubsection):
 
                        base[names[-1]] = val
 
+                       if not base_file: # not the initial config file..
+                               #update config.x.y.value when exist
+                               configEntry = eval(name)
+                               if configEntry is not None:
+                                       configEntry.value = val
+
                # we inherit from ConfigSubsection, so ...
                #object.__setattr__(self, "saved_value", tree["config"])
                if "config" in tree:
@@ -1653,9 +1662,9 @@ class Config(ConfigSubsection):
                f.write(text)
                f.close()
 
-       def loadFromFile(self, filename):
+       def loadFromFile(self, filename, base_file=False):
                f = open(filename, "r")
-               self.unpickle(f.readlines())
+               self.unpickle(f.readlines(), base_file)
                f.close()
 
 config = Config()
@@ -1666,7 +1675,7 @@ class ConfigFile:
 
        def load(self):
                try:
-                       config.loadFromFile(self.CONFIG_FILE)
+                       config.loadFromFile(self.CONFIG_FILE, True)
                except IOError, e:
                        print "unable to load config (%s), assuming defaults..." % str(e)