from __future__ import print_function import threading import time import syncplay import os import re from syncplay import utils class ConsoleUI(threading.Thread): def __init__(self): self.promptMode = threading.Event() self.PromptResult = "" self.promptMode.set() self._syncplayClient = None threading.Thread.__init__(self, name="ConsoleUI") def addClient(self, client): 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) def promptFor(self, prompt=">", message=""): if message <> "": print(message) self.promptMode.clear() print(prompt, end='') self.promptMode.wait() return self.PromptResult def showMessage(self, message, noTimestamp=False): if(os.name == "nt"): message = message.encode('ascii', 'replace') if(noTimestamp): print(message) else: print(time.strftime("[%X] ", time.localtime()) + message) def showDebugMessage(self, message): print(message) def showErrorMessage(self, message): print("ERROR:\t" + message) def _extractSign(self, m): if(m): if(m == "-"): return -1 else: return 1 else: return None def _tryAdvancedCommands(self, data): o = re.match(r"^(?:o|offset)\ ?(?P[/+-])?(?P