[Twisted-Python] gtkLineClient.py
# gtkLineClient.py # Free. Please share from twisted.protocols.basic import LineReceiver from twisted.internet import gtkreactor gtkreactor.install() import gtk from twisted.internet import reactor class LoginInfo: def __init__(self): self.username = 'guest' self.host = 'localhost' self.port = 8888 self.quit = 0 class LoginWindow(gtk.GtkWindow): def __init__(self, info): self.info = info w = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL) w.connect('destroy', self.quit) vb = gtk.GtkVBox() w.add(vb) b = gtk.GtkButton('QUIT') b.signal_connect('clicked', self.quit) vb.add(b) self.usernameEntry = gtk.GtkEntry() self.usernameEntry.set_text(self.info.username) self.usernameEntry.signal_connect('activate', self.login) vb.add(self.usernameEntry) b = gtk.GtkButton('LOGIN') b.signal_connect('clicked', self.login) vb.add(b) w.show_all() self.w = w def login(self, b): print 'LOGGING IN' self.info.username = self.usernameEntry.get_text() self.w.hide() gtk.mainquit() def quit(self, b): print 'QUITTING' self.info.quit = 1 gtk.mainquit() class Client(LineReceiver): def __init__(self, info): self.info = info w = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL) w.connect('destroy', self.quit) vb = gtk.GtkVBox() w.add(vb) q = gtk.GtkButton('QUIT') q.connect('clicked', self.quit) vb.add(q) c = gtk.GtkButton('CLOSE') c.connect('clicked', self.close) vb.add(c) s = gtk.GtkButton('SEND') s.connect('clicked', self.send) vb.add(s) self.w = w def connectionMade(self): self.w.show_all() print 'CONNECTED' self.sendLine('USERNAME_%s' % self.info.username) def send(self, b): self.sendLine('message') def lineReceived(self, line): print 'Server said:', line def closeConnection(self): self.transport.loseConnection() def close(self, b): print "CLOSING" self.sendLine('CLOSE') self.w.hide() self.closeConnection() reactor.stop() def quit(self, b): self.info.quit = 1 self.close(b) def connectionLost(self): print 'Connection lost' self.w.hide() reactor.stop() def connectionFailed(self): print 'Connection failed' reactor.stop() def main(): info = LoginInfo() while 1: l = LoginWindow(info) gtk.mainloop() if l.info.quit: break e = Client(info) reactor.clientTCP(info.host, info.port, e) reactor.run() if info.quit: break if __name__ == '__main__': main() _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com
On Sat, 2002-08-24 at 12:39, Lee Harr wrote:
# gtkLineClient.py # Free. Please share
Hi Lee! What exactly is this client for? At first I figured it was just something to test one's line-based server protocols with, but the "USERNAME_foo" line implies some sort of protocol (I think?). -- Chris Armstrong << radix@twistedmatrix.com >> http://twistedmatrix.com/users/radix.twistd/
participants (2)
-
Christopher Armstrong
-
Lee Harr