예제 #1
0
 def load(self, name, default=None):
     try:
         eslog.debug("Looking for {0} in {1}".format(
             name, self.settingsFile))
         return self.config.get('DEFAULT', name, default)
     except ConfigParser.NoOptionError, e:
         return None
예제 #2
0
    def __init__(self, settingsFile, separator='', defaultComment='#'):
        self.settingsFile = settingsFile
        self.separator = separator
        # unused. left for compatibility with previous implementation
        self.comment = defaultComment

        # use ConfigParser as backend.
        eslog.debug("Creating parser for {0}".format(self.settingsFile))
        self.config = configparser.ConfigParser(
            interpolation=None, strict=False
        )  # strict=False to allow to read duplicates set by users
        # To prevent ConfigParser from converting to lower case
        self.config.optionxform = str

        try:
            # TODO: remove me when we migrate to Python 3
            # pretend where have a [DEFAULT] section
            file = io.StringIO()
            file.write('[DEFAULT]\n')
            file.write(io.open(self.settingsFile, encoding='utf_8_sig').read())
            file.seek(0, os.SEEK_SET)

            self.config.readfp(file)
        except IOError as e:
            eslog.debug(str(e))
예제 #3
0
    def loadAll(self, name):
        eslog.debug("Looking for {0}.* in {1}".format(name, self.settingsFile))
        res = dict()
        for (key, value) in self.config.items('DEFAULT'):
            m = re.match(r"^" + name + "\.(.+)", key)
            if m:
                res[m.group(1)] = value

        return res
예제 #4
0
 def write(self):
     fp = open(self.settingsFile, 'w')
     try:
         for (key, value) in self.config.items('DEFAULT'):
             fp.write("{0}{2}={2}{1}\n".format(key, str(value), self.separator))
     except:
         # PSX Mednafen writes beetle_psx_hw_cpu_freq_scale = "100%(native)"
         # Python 2.7 is EOL and ConfigParser 2.7 takes "%(" as a won't fix error
         # TODO: clean that up when porting to Python 3
         eslog.debug("Wrong value detected (after % char maybe?), ignoring.")
     fp.close()
예제 #5
0
    def __init__(self, settingsFile, separator='', defaultComment='#'):
        self.settingsFile = settingsFile
        self.separator = separator
        # unused. left for compatibility with previous implementation
        self.comment = defaultComment

        # use ConfigParser as backend.
        eslog.debug("Creating parser for {0}".format(self.settingsFile))
        self.config = ConfigParser.ConfigParser()
        try:
            # TODO: remove me when we migrate to Python 3
            # pretend where have a [DEFAULT] section
            file = StringIO.StringIO()
            file.write('[DEFAULT]\n')
            file.write(io.open(self.settingsFile, encoding='utf_8_sig').read())
            file.seek(0, os.SEEK_SET)

            self.config.readfp(file)
        except IOError, e:
            eslog.debug(str(e))
예제 #6
0
 def disableAll(self, name):
     eslog.debug("Disabling {0} from {1}".format(name, self.settingsFile))
     for (key, value) in self.config.items('DEFAULT'):
         m = re.match(r"^" + name, key)
         if m:
             self.config.remove_option('DEFAULT', key)
예제 #7
0
 def save(self, name, value):
     eslog.debug("Writing {0} = {1} to {2}".format(name, value,
                                                   self.settingsFile))
     # TODO: do we need proper section support? PSP config is an ini file
     self.config.set('DEFAULT', name, str(value))