from PyQt4 import QtGui, QtCore from PyQt4.QtCore import QVariant import time class ConnectWidget(QtGui.QWidget): host_txt = None port_txt = None info_lbl = None connect_btn = None mpclient = None settings = None def __init__(self, parent): QtGui.QWidget.__init__(self) self.mpclient = parent.mpclient self.settings = QtCore.QSettings() self.host_txt = QtGui.QLineEdit(self.settings.value('MPD/host', QVariant('localhost')).toString()) self.port_txt = QtGui.QLineEdit(self.settings.value('MPD/port', QVariant('6600')).toString()) self.port_txt.setValidator(QtGui.QIntValidator(1, 65535, self.port_txt)) self.info_lbl = QtGui.QLabel("connecting...") self.connect_btn = QtGui.QPushButton('Connect') self.connect(self.connect_btn, QtCore.SIGNAL('clicked()'), self.connect_mpd) self.setLayout(QtGui.QGridLayout()) self.layout().addWidget(self.info_lbl, 0, 0, 1, 2) self.layout().addWidget(self.host_txt, 1, 0) self.layout().addWidget(self.port_txt, 1, 1) self.layout().addWidget(self.connect_btn, 2, 0) self.setWindowTitle('Connect to MPD') self.center() self.connect(self.mpclient, QtCore.SIGNAL('connected'), self.on_connected) 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.show() self.activateWindow() self.raise_() if self.host_txt: self.connect_mpd() def connect_mpd(self): host = str(self.host_txt.text()) port = int(self.port_txt.text()) if self.port_txt.text() else None self.info_lbl.setText('Trying to connect to %s' + (':%d'%port if port else '')) if not self.mpclient.connect_mpd(host, port): self.info_lbl.setText('Connection failed') def on_connected(self): self.info_lbl.setText('Connected') self.settings.setValue('MPD/host', QVariant(self.host_txt.text())) self.settings.setValue('MPD/port', QVariant(self.port_txt.text())) self.hide()