Merge 2afa2b39b3abc0ee8415359552b8db2b3e9ec376 into 661d3926dfec51c3356ed1c8295f3fa6572706cc

This commit is contained in:
Etoh 2014-03-27 23:03:33 +00:00
commit 893e822472
7 changed files with 21 additions and 30 deletions

View File

@ -42,7 +42,7 @@ class SyncClientFactory(ClientFactory):
def clientConnectionFailed(self, connector, reason): def clientConnectionFailed(self, connector, reason):
if not self.reconnecting: if not self.reconnecting:
self._client.ui.showErrorMessage(getMessage("en", "connection-failed-notification")) self._client.stop(getMessage("en", "connection-failed-notification"))
else: else:
self.clientConnectionLost(connector, reason) self.clientConnectionLost(connector, reason)
@ -366,7 +366,8 @@ class SyncplayClient(object):
reactor.connectTCP(host, port, self.protocolFactory) reactor.connectTCP(host, port, self.protocolFactory)
reactor.run() reactor.run()
def stop(self, promptForAction=False):
def stop(self, stopMessage=None):
if not self._running: if not self._running:
return return
self._running = False self._running = False
@ -376,10 +377,12 @@ class SyncplayClient(object):
if self._player: if self._player:
self._player.drop() self._player.drop()
if self.ui: if self.ui:
if(stopMessage):
self.ui.showErrorMessage(stopMessage, True)
self.ui.drop() self.ui.drop()
reactor.callLater(0.1, reactor.stop) reactor.callLater(0.1, reactor.stop)
if(promptForAction): if(stopMessage):
self.ui.promptFor(getMessage("en", "enter-to-exit-prompt")) self.ui.waitForUserAction(getMessage("en", "enter-to-exit-prompt"))
class _WarningManager(object): class _WarningManager(object):
def __init__(self, player, userlist, ui): def __init__(self, player, userlist, ui):
@ -596,8 +599,8 @@ class UiManager(object):
def showErrorMessage(self, message, criticalerror=False): def showErrorMessage(self, message, criticalerror=False):
self.__ui.showErrorMessage(message, criticalerror) self.__ui.showErrorMessage(message, criticalerror)
def promptFor(self, prompt): def waitForUserAction(self, prompt):
return self.__ui.promptFor(prompt) return self.__ui.waitForUserAction(prompt)
def userListChange(self): def userListChange(self):
self.__ui.userListChange() self.__ui.userListChange()

View File

@ -311,7 +311,7 @@ class MPCHCAPIPlayer(BasePlayer):
self.__client = client self.__client = client
self._mpcApi = MpcHcApi() self._mpcApi = MpcHcApi()
self._mpcApi.callbacks.onUpdateFilename = lambda _: self.__makePing() self._mpcApi.callbacks.onUpdateFilename = lambda _: self.__makePing()
self._mpcApi.callbacks.onMpcClosed = lambda _: self.reactor.callFromThread(self.__client.stop, (False),) self._mpcApi.callbacks.onMpcClosed = lambda _: self.reactor.callFromThread(self.__client.stop,)
self._mpcApi.callbacks.onFileStateChange = lambda _: self.__lockAsking() self._mpcApi.callbacks.onFileStateChange = lambda _: self.__lockAsking()
self._mpcApi.callbacks.onUpdatePlaystate = lambda _: self.__unlockAsking() self._mpcApi.callbacks.onUpdatePlaystate = lambda _: self.__unlockAsking()
self._mpcApi.callbacks.onGetCurrentPosition = lambda _: self.__onGetPosition() self._mpcApi.callbacks.onGetCurrentPosition = lambda _: self.__onGetPosition()
@ -356,8 +356,7 @@ class MPCHCAPIPlayer(BasePlayer):
def __dropIfNotSufficientVersion(self): def __dropIfNotSufficientVersion(self):
self._mpcApi.askForVersion() self._mpcApi.askForVersion()
if(not self.__versionUpdate.wait(0.1) or not self._mpcApi.version): if(not self.__versionUpdate.wait(0.1) or not self._mpcApi.version):
self.__mpcError(getMessage("en", "mpc-version-insufficient-error").format(constants.MPC_MIN_VER)) self.reactor.callFromThread(self.__client.stop, getMessage("en", "mpc-version-insufficient-error").format(constants.MPC_MIN_VER),)
self.reactor.callFromThread(self.__client.stop, (True),)
def __testMpcReady(self): def __testMpcReady(self):
if(not self.__preventAsking.wait(10)): if(not self.__preventAsking.wait(10)):
@ -370,8 +369,7 @@ class MPCHCAPIPlayer(BasePlayer):
self.__handleUpdatedFilename() self.__handleUpdatedFilename()
self.askForStatus() self.askForStatus()
except Exception, err: except Exception, err:
self.__client.ui.showErrorMessage(err.message) self.reactor.callFromThread(self.__client.stop, err.message,)
self.reactor.callFromThread(self.__client.stop)
def initPlayer(self, filePath): def initPlayer(self, filePath):
self.__dropIfNotSufficientVersion() self.__dropIfNotSufficientVersion()
@ -456,10 +454,6 @@ class MPCHCAPIPlayer(BasePlayer):
self.__setUpStateForNewlyOpenedFile() self.__setUpStateForNewlyOpenedFile()
args = (self._mpcApi.filePlaying, self._mpcApi.fileDuration, self._mpcApi.filePath) args = (self._mpcApi.filePlaying, self._mpcApi.fileDuration, self._mpcApi.filePath)
self.reactor.callFromThread(self.__client.updateFile, *args) self.reactor.callFromThread(self.__client.updateFile, *args)
def __mpcError(self, err=""):
self.__client.ui.showErrorMessage(err)
self.reactor.callFromThread(self.__client.stop)
def sendCustomCommand(self, cmd, val): def sendCustomCommand(self, cmd, val):
self._mpcApi.sendRawCommand(cmd, val) self._mpcApi.sendRawCommand(cmd, val)

View File

@ -21,9 +21,7 @@ class MplayerPlayer(BasePlayer):
try: try:
self._listener = self.__Listener(self, playerPath, filePath, args) self._listener = self.__Listener(self, playerPath, filePath, args)
except ValueError: except ValueError:
self._client.ui.showMessage(getMessage("en", "mplayer-file-required-notification")) self.reactor.callFromThread(self._client.stop,getMessage("en", "mplayer-file-required-notification")+"\n"+getMessage("en", "mplayer-file-required-notification/example"),)
self._client.ui.showMessage(getMessage("en", "mplayer-file-required-notification/example"))
self.reactor.callFromThread(self._client.stop, (True),)
return return
self._listener.setDaemon(True) self._listener.setDaemon(True)
self._listener.start() self._listener.start()
@ -181,9 +179,8 @@ class MplayerPlayer(BasePlayer):
return path return path
def notMplayer2(self): def notMplayer2(self):
print getMessage("en", "mplayer2-required")
self._listener.sendLine('quit') self._listener.sendLine('quit')
self.reactor.callFromThread(self._client.stop, (True),) self.reactor.callFromThread(self._client.stop, getMessage("en", "mplayer2-required"),)
def _takeLocksDown(self): def _takeLocksDown(self):
self._durationAsk.set() self._durationAsk.set()
@ -195,7 +192,7 @@ class MplayerPlayer(BasePlayer):
def drop(self): def drop(self):
self._listener.sendLine('quit') self._listener.sendLine('quit')
self._takeLocksDown() self._takeLocksDown()
self.reactor.callFromThread(self._client.stop, (False),) self.reactor.callFromThread(self._client.stop,)
class __Listener(threading.Thread): class __Listener(threading.Thread):
def __init__(self, playerController, playerPath, filePath, args): def __init__(self, playerController, playerPath, filePath, args):

View File

@ -40,15 +40,13 @@ class VlcPlayer(BasePlayer):
try: try:
self._listener = self.__Listener(self, playerPath, filePath, args, self._vlcready, self._vlcclosed) self._listener = self.__Listener(self, playerPath, filePath, args, self._vlcready, self._vlcclosed)
except ValueError: except ValueError:
self._client.ui.showErrorMessage(getMessage("en", "vlc-failed-connection"), True) self.reactor.callFromThread(self._client.stop, getMessage("en", "vlc-failed-connection"),)
self.reactor.callFromThread(self._client.stop, (True),)
return return
self._listener.setDaemon(True) self._listener.setDaemon(True)
self._listener.start() self._listener.start()
if(not self._vlcready.wait(constants.VLC_OPEN_MAX_WAIT_TIME)): if(not self._vlcready.wait(constants.VLC_OPEN_MAX_WAIT_TIME)):
self._vlcready.set() self._vlcready.set()
self._client.ui.showErrorMessage(getMessage("en", "vlc-failed-connection"), True) self.reactor.callFromThread(self._client.stop, getMessage("en", "vlc-failed-connection"),)
self.reactor.callFromThread(self._client.stop, (True),)
self.reactor.callFromThread(self._client.initPlayer, (self),) self.reactor.callFromThread(self._client.initPlayer, (self),)
def _fileUpdateClearEvents(self): def _fileUpdateClearEvents(self):
@ -204,7 +202,7 @@ class VlcPlayer(BasePlayer):
self._positionAsk.set() self._positionAsk.set()
self._vlcready.set() self._vlcready.set()
self._pausedAsk.set() self._pausedAsk.set()
self.reactor.callFromThread(self._client.stop, (False),) self.reactor.callFromThread(self._client.stop,)
class __Listener(threading.Thread, asynchat.async_chat): class __Listener(threading.Thread, asynchat.async_chat):
def __init__(self, playerController, playerPath, filePath, args, vlcReady, vlcClosed): def __init__(self, playerController, playerPath, filePath, args, vlcReady, vlcClosed):

View File

@ -67,9 +67,9 @@ class SyncClientProtocol(JSONCommandProtocol):
self._client.destroyProtocol() self._client.destroyProtocol()
def dropWithError(self, error): def dropWithError(self, error):
self._client.ui.showErrorMessage(error)
self._client.protocolFactory.stopRetrying() self._client.protocolFactory.stopRetrying()
self.drop() self.drop()
self._client.stop(error)
def _extractHelloArguments(self, hello): def _extractHelloArguments(self, hello):
username = hello["username"] if hello.has_key("username") else None username = hello["username"] if hello.has_key("username") else None

View File

@ -36,7 +36,7 @@ class ConsoleUI(threading.Thread):
except EOFError: except EOFError:
pass pass
def promptFor(self, prompt=">", message=""): def waitForUserAction(self, prompt=">", message=""):
if message <> "": if message <> "":
print(message) print(message)
self.promptMode.clear() self.promptMode.clear()

View File

@ -12,8 +12,7 @@ class MainWindow(QtGui.QMainWindow):
self._syncplayClient = client self._syncplayClient = client
self.roomInput.setText(self._syncplayClient.getRoom()) self.roomInput.setText(self._syncplayClient.getRoom())
def promptFor(self, prompt=">", message=""): def waitForUserAction(self, prompt=">", message=""):
#TODO: Prompt user
return None return None
def showMessage(self, message, noTimestamp=False): def showMessage(self, message, noTimestamp=False):