diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index 681635f..2ab01ff 100644 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -5,6 +5,7 @@ import sys from syncplay import constants, utils from syncplay.messages import getMessage from syncplay.players.playerFactory import PlayerFactory +import codecs try: from syncplay.ui.GuiConfiguration import GuiConfiguration except ImportError: @@ -123,7 +124,9 @@ class ConfigurationGetter(object): def _parseConfigFile(self, iniPath): parser = SafeConfigParser() - parser.read(iniPath) + if(not os.path.isfile(iniPath)): + open(iniPath, 'w').close() + parser.readfp(codecs.open(iniPath, "r", "utf_8_sig")) for section, options in self._iniStructure.items(): if(parser.has_section(section)): for option in options: @@ -163,7 +166,7 @@ class ConfigurationGetter(object): if(self._config['noStore']): return parser = SafeConfigParser() - parser.read(iniPath) + parser.readfp(codecs.open(iniPath, "r", "utf_8_sig")) for section, options in self._iniStructure.items(): if(not parser.has_section(section)): parser.add_section(section) @@ -173,7 +176,7 @@ class ConfigurationGetter(object): changed = True parser.set(section, option, str(self._config[option])) if(changed): - parser.write(file(iniPath, "w")) + parser.write(codecs.open(iniPath, "wb", "utf_8_sig")) def getConfiguration(self): iniPath = self._getConfigurationFilePath() diff --git a/syncplay/ui/consoleUI.py b/syncplay/ui/consoleUI.py index 81f3059..33bdf7d 100644 --- a/syncplay/ui/consoleUI.py +++ b/syncplay/ui/consoleUI.py @@ -2,11 +2,11 @@ from __future__ import print_function import threading import time import syncplay -import os import re from syncplay import utils from syncplay import constants from syncplay.messages import getMessage +import sys class ConsoleUI(threading.Thread): def __init__(self): @@ -20,14 +20,17 @@ class ConsoleUI(threading.Thread): self._syncplayClient = client def run(self): - while True: - data = raw_input() - data = data.rstrip('\n\r') - if(not self.promptMode.isSet()): - self.PromptResult = data - self.promptMode.set() - elif(self._syncplayClient): - self._executeCommand(data) + try: + while True: + data = raw_input().decode(sys.stdin.encoding) + data = data.rstrip('\n\r') + if(not self.promptMode.isSet()): + self.PromptResult = data + self.promptMode.set() + elif(self._syncplayClient): + self._executeCommand(data) + except EOFError: + pass def promptFor(self, prompt=">", message=""): if message <> "": @@ -38,8 +41,7 @@ class ConsoleUI(threading.Thread): return self.PromptResult def showMessage(self, message, noTimestamp=False): - if(os.name == "nt"): - message = message.encode('ascii', 'replace') + message = message.encode(sys.stdout.encoding, 'replace') if(noTimestamp): print(message) else: