diff --git a/syncplay/client.py b/syncplay/client.py index a66306d..c4a5051 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -42,7 +42,7 @@ class SyncClientFactory(ClientFactory): def clientConnectionFailed(self, connector, reason): if not self.reconnecting: - self._client.ui.showErrorMessage(getMessage("en", "connection-failed-notification")) + self._client.stop(getMessage("en", "connection-failed-notification")) else: self.clientConnectionLost(connector, reason) @@ -366,7 +366,8 @@ class SyncplayClient(object): reactor.connectTCP(host, port, self.protocolFactory) reactor.run() - def stop(self, promptForAction=False): + + def stop(self, stopMessage=None): if not self._running: return self._running = False @@ -376,10 +377,12 @@ class SyncplayClient(object): if self._player: self._player.drop() if self.ui: + if(stopMessage): + self.ui.showErrorMessage(stopMessage, True) self.ui.drop() reactor.callLater(0.1, reactor.stop) - if(promptForAction): - self.ui.promptFor(getMessage("en", "enter-to-exit-prompt")) + if(stopMessage): + self.ui.waitForUserAction(getMessage("en", "enter-to-exit-prompt")) class _WarningManager(object): def __init__(self, player, userlist, ui): @@ -596,8 +599,8 @@ class UiManager(object): def showErrorMessage(self, message, criticalerror=False): self.__ui.showErrorMessage(message, criticalerror) - def promptFor(self, prompt): - return self.__ui.promptFor(prompt) + def waitForUserAction(self, prompt): + return self.__ui.waitForUserAction(prompt) def userListChange(self): self.__ui.userListChange() diff --git a/syncplay/players/mpc.py b/syncplay/players/mpc.py index c12a147..80e782c 100644 --- a/syncplay/players/mpc.py +++ b/syncplay/players/mpc.py @@ -311,7 +311,7 @@ class MPCHCAPIPlayer(BasePlayer): self.__client = client self._mpcApi = MpcHcApi() 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.onUpdatePlaystate = lambda _: self.__unlockAsking() self._mpcApi.callbacks.onGetCurrentPosition = lambda _: self.__onGetPosition() @@ -356,8 +356,7 @@ class MPCHCAPIPlayer(BasePlayer): def __dropIfNotSufficientVersion(self): self._mpcApi.askForVersion() 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, (True),) + self.reactor.callFromThread(self.__client.stop, getMessage("en", "mpc-version-insufficient-error").format(constants.MPC_MIN_VER),) def __testMpcReady(self): if(not self.__preventAsking.wait(10)): @@ -370,8 +369,7 @@ class MPCHCAPIPlayer(BasePlayer): self.__handleUpdatedFilename() self.askForStatus() except Exception, err: - self.__client.ui.showErrorMessage(err.message) - self.reactor.callFromThread(self.__client.stop) + self.reactor.callFromThread(self.__client.stop, err.message,) def initPlayer(self, filePath): self.__dropIfNotSufficientVersion() @@ -456,10 +454,6 @@ class MPCHCAPIPlayer(BasePlayer): self.__setUpStateForNewlyOpenedFile() args = (self._mpcApi.filePlaying, self._mpcApi.fileDuration, self._mpcApi.filePath) 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): self._mpcApi.sendRawCommand(cmd, val) diff --git a/syncplay/players/mplayer.py b/syncplay/players/mplayer.py index 41fde9b..78b92ee 100644 --- a/syncplay/players/mplayer.py +++ b/syncplay/players/mplayer.py @@ -21,9 +21,7 @@ class MplayerPlayer(BasePlayer): try: self._listener = self.__Listener(self, playerPath, filePath, args) except ValueError: - self._client.ui.showMessage(getMessage("en", "mplayer-file-required-notification")) - self._client.ui.showMessage(getMessage("en", "mplayer-file-required-notification/example")) - self.reactor.callFromThread(self._client.stop, (True),) + self.reactor.callFromThread(self._client.stop,getMessage("en", "mplayer-file-required-notification")+"\n"+getMessage("en", "mplayer-file-required-notification/example"),) return self._listener.setDaemon(True) self._listener.start() @@ -181,9 +179,8 @@ class MplayerPlayer(BasePlayer): return path def notMplayer2(self): - print getMessage("en", "mplayer2-required") self._listener.sendLine('quit') - self.reactor.callFromThread(self._client.stop, (True),) + self.reactor.callFromThread(self._client.stop, getMessage("en", "mplayer2-required"),) def _takeLocksDown(self): self._durationAsk.set() @@ -195,7 +192,7 @@ class MplayerPlayer(BasePlayer): def drop(self): self._listener.sendLine('quit') self._takeLocksDown() - self.reactor.callFromThread(self._client.stop, (False),) + self.reactor.callFromThread(self._client.stop,) class __Listener(threading.Thread): def __init__(self, playerController, playerPath, filePath, args): diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py index 49d49fd..c456842 100644 --- a/syncplay/players/vlc.py +++ b/syncplay/players/vlc.py @@ -40,15 +40,13 @@ class VlcPlayer(BasePlayer): try: self._listener = self.__Listener(self, playerPath, filePath, args, self._vlcready, self._vlcclosed) except ValueError: - self._client.ui.showErrorMessage(getMessage("en", "vlc-failed-connection"), True) - self.reactor.callFromThread(self._client.stop, (True),) + self.reactor.callFromThread(self._client.stop, getMessage("en", "vlc-failed-connection"),) return self._listener.setDaemon(True) self._listener.start() if(not self._vlcready.wait(constants.VLC_OPEN_MAX_WAIT_TIME)): self._vlcready.set() - self._client.ui.showErrorMessage(getMessage("en", "vlc-failed-connection"), True) - self.reactor.callFromThread(self._client.stop, (True),) + self.reactor.callFromThread(self._client.stop, getMessage("en", "vlc-failed-connection"),) self.reactor.callFromThread(self._client.initPlayer, (self),) def _fileUpdateClearEvents(self): @@ -204,7 +202,7 @@ class VlcPlayer(BasePlayer): self._positionAsk.set() self._vlcready.set() self._pausedAsk.set() - self.reactor.callFromThread(self._client.stop, (False),) + self.reactor.callFromThread(self._client.stop,) class __Listener(threading.Thread, asynchat.async_chat): def __init__(self, playerController, playerPath, filePath, args, vlcReady, vlcClosed): diff --git a/syncplay/protocols.py b/syncplay/protocols.py index f83cfa0..492a4af 100644 --- a/syncplay/protocols.py +++ b/syncplay/protocols.py @@ -67,9 +67,9 @@ class SyncClientProtocol(JSONCommandProtocol): self._client.destroyProtocol() def dropWithError(self, error): - self._client.ui.showErrorMessage(error) self._client.protocolFactory.stopRetrying() self.drop() + self._client.stop(error) def _extractHelloArguments(self, hello): username = hello["username"] if hello.has_key("username") else None diff --git a/syncplay/ui/consoleUI.py b/syncplay/ui/consoleUI.py index 39ecf1d..74565c4 100644 --- a/syncplay/ui/consoleUI.py +++ b/syncplay/ui/consoleUI.py @@ -36,7 +36,7 @@ class ConsoleUI(threading.Thread): except EOFError: pass - def promptFor(self, prompt=">", message=""): + def waitForUserAction(self, prompt=">", message=""): if message <> "": print(message) self.promptMode.clear() diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 7aea0ee..192625a 100644 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -12,8 +12,7 @@ class MainWindow(QtGui.QMainWindow): self._syncplayClient = client self.roomInput.setText(self._syncplayClient.getRoom()) - def promptFor(self, prompt=">", message=""): - #TODO: Prompt user + def waitForUserAction(self, prompt=">", message=""): return None def showMessage(self, message, noTimestamp=False):