From 4324803bf17e4f674693d233f6a3a1b6c8b5b412 Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 8 Jun 2013 16:40:53 +0200 Subject: [PATCH] Fix for saving unicode config values.[ --- syncplay/ui/ConfigurationGetter.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index acc6dd2..6fefb6a 100644 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -1,4 +1,4 @@ -from ConfigParser import SafeConfigParser +from ConfigParser import SafeConfigParser, DEFAULTSECT import argparse import os import sys @@ -142,7 +142,7 @@ class ConfigurationGetter(object): return configFile def _parseConfigFile(self, iniPath, createConfig = True): - parser = SafeConfigParser() + parser = SafeConfigParserUnicode() if(not os.path.isfile(iniPath)): if(createConfig): open(iniPath, 'w').close() @@ -187,7 +187,7 @@ class ConfigurationGetter(object): changed = False if(self._config['noStore']): return - parser = SafeConfigParser() + parser = SafeConfigParserUnicode() parser.readfp(codecs.open(iniPath, "r", "utf_8_sig")) for section, options in self._iniStructure.items(): if(not parser.has_section(section)): @@ -250,3 +250,20 @@ class ConfigurationGetter(object): qt4reactor.install() return self._config +class SafeConfigParserUnicode(SafeConfigParser): + def write(self, fp): + """Write an .ini-format representation of the configuration state.""" + if self._defaults: + fp.write("[%s]\n" % DEFAULTSECT) + for (key, value) in self._defaults.items(): + fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t'))) + fp.write("\n") + for section in self._sections: + fp.write("[%s]\n" % section) + for (key, value) in self._sections[section].items(): + if key == "__name__": + continue + if (value is not None) or (self._optcre == self.OPTCRE): + key = " = ".join((key, unicode(value).replace('\n', '\n\t'))) + fp.write("%s\n" % (key)) + fp.write("\n")