rendered paste bodyfrom qt import QApplication, QObject
import qtreactor
class QTwistedClientApplication(QApplication):
def __init__(self, factory = None):
if factory == None:
self.factory = StdClientFactory(self)
else:
self.factory = factory
qtreactor.install(self)
def connect (host, port):
from twisted.internet import reactor
reactor.connectTCP(host, port, self.factory)
from twisted.internet.protocol import ClientFactory
class StdClientFactory(ClientFactory):
def __init__(self, qapp):
self.qapp = qapp
def buildProtocol(self, addr):
p = StdLineReceiverClient(self.qapp, addr)
p.factory = self
return p
from twisted.protocols.basic import LineReceiver
class StdLineReceiver(LineReceiver, QObject):
def __init__(self, qapp, addr):
self.qapp = qapp
self.addr = addr
self.qapp.protocol = self
## self.qapp.sendLine = self.sendLine
## self.qapp.setLineMode = self.setLineMode
## self.qapp.setRawMode = self.setRawMode
## self.qapp.clearLineBuffer = self.clearLineBuffer
## self.qapp.makeConnection = self.makeConnection
## self.qapp.loseConnection = self.transport.loseConnection()
def loseConnection(self):
"""
Not sure if this whole method is a good idea.
"""
self.transport.loseConnection()
self.qapp.protocol = None
def connectionMade(self):
self.qapp.emit(PYSIGNAL("connectionMade"), self.addr)
def connectionLost(self):
self.qapp.emit(PYSIGNAL("connectionLost"), self.addr)
def lineReceived(self, line):
self.qapp.emit(PYSIGNAL("lineReceived"), line)
def dataReceived(self, data):
self.qapp.emit(PYSIGNAL("dataReceived"), data)
def rawDataReceived(self, raw_data):
self.qapp.emit(PYSIGNAL("rawDataReceived"), raw_data)
def lineLengthExceeded(self, lineChunk):
self.qapp.emit(PYSIGNAL("lineLengthExceeded"), lineChunk)