from PyQt4 import QtGui, QtCore import time from clMonty import monty from misc import * from traceback import print_exc from clSettings import settings class winConnect(QtGui.QWidget): txtHost=None txtPort=None lblInfo=None _timerID=None def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.txtHost=QtGui.QLineEdit(settings.get('host', 'localhost')) self.txtPort=QtGui.QLineEdit(settings.get('port', '6600')) self.lblInfo=QtGui.QLabel("connecting ...") frame=QtGui.QVBoxLayout() inputs=QtGui.QHBoxLayout() frame.addLayout(inputs) frame.addWidget(self.lblInfo) inputs.addWidget(self.txtHost) inputs.addWidget(self.txtPort) self.setWindowTitle('Connect to mpd') self.setLayout(frame) self.resize(200,80) self.center() doEvents() monty.addListener('onReady', self.onReady) monty.addListener('onConnect', self.onConnect) monty.addListener('onDisconnect', self.onDisconnect) def center(self): screen = QtGui.QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2+100) def monitor(self): self.txtHost.setEnabled(True) self.txtPort.setEnabled(True) if self._timerID==None: self._timerID=self.startTimer(200) if self.isVisible()==False: self.show() self.activateWindow() self.raise_() doEvents() def onConnect(self, params): if self._timerID: self.killTimer(self._timerID) self._timerID=None self.lblInfo.setText('Connected!\nRestoring library ...') doEvents() settings.set('host', str(self.txtHost.text())) settings.set('port', str(self.txtPort.text())) self.txtHost.setEnabled(False) self.txtPort.setEnabled(False) doEvents() def onReady(self, params): self.hide() def onDisconnect(self, params): self.monitor() def timerEvent(self, event): host=str(self.txtHost.text()) try: port=int(self.txtPort.text()) self.lblInfo.setText('Trying to connect to '+host+':'+str(port)+' ...') doEvents() monty.connect(host, port) doEvents() except: print_exc() self.lblInfo.setText('Invalid port.') doEvents() def windowActivationChange(self, bool): self.activateWindow() self.raise_() doEvents()