Added gui client.
authorMalte Bublitz <me@malte-bublitz.de>
Tue, 12 Feb 2013 20:55:11 +0000 (21:55 +0100)
committerMalte Bublitz <me@malte-bublitz.de>
Tue, 12 Feb 2013 20:55:11 +0000 (21:55 +0100)
client.py
server.py

index 03bbb0d8dff46edd81aa77f7192a6e788be120a7..a0bb6c76e6bb6cde27eb14e3ae2c242194f4c289 100644 (file)
--- a/client.py
+++ b/client.py
@@ -43,24 +43,85 @@ class ChatClient(object):
                        return False
                
        
-import thread
+import threading
 import time
 import select, sys
+import wx
 
-def autoRecv():
-       while True:
-               chat.recv()
+class SimpleChatFrame(wx.Frame):
+       def __init__(self, *args, **kwds):
+               wx.Frame.__init__(self, *args, **kwds)
+               # Menu Bar
+               self.frame_1_menubar = wx.MenuBar()
+               wxglade_tmp_menu = wx.Menu()
+               menu_quit = wxglade_tmp_menu.Append(wx.NewId(), "Quit", "", wx.ITEM_NORMAL)
+               self.Bind(wx.EVT_MENU, self.OnQuit, menu_quit)
+               self.frame_1_menubar.Append(wxglade_tmp_menu, "SimpleChat")
+               self.SetMenuBar(self.frame_1_menubar)
+               # Menu Bar end
+               self.text_ctrl_1 = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE)
+               self.text_ctrl_2 = wx.TextCtrl(self, -1, "")
+               self.button_1 = wx.Button(self, -1, "Senden.")
+               self.SetTitle("SimpleChat")
+               self.SetSize((400, 200))
+               self.text_ctrl_1.SetMinSize((400, 140))
+               self.text_ctrl_2.SetMinSize((290, -1))
+               self.button_1.SetMinSize((114, 32))
+               sizer_1 = wx.BoxSizer(wx.VERTICAL)
+               sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
+               sizer_1.Add(self.text_ctrl_1, 0, wx.ALL | wx.EXPAND, 0)
+               sizer_2.Add(self.text_ctrl_2, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 0)
+               sizer_2.Add(self.button_1, 0, wx.ALIGN_RIGHT, 0)
+               sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
+               self.SetSizer(sizer_1)
+               self.Layout()
+               self.Bind(wx.EVT_BUTTON, self.OnSend, self.button_1)
+               self.chat = ChatClient('127.0.0.1', 7070)
+               self.chat.name(sys.argv[1])
+               self.chat.enter()
+               self.my_worker1 = RecvThread(self)
+               self.my_worker1.start()
+               self.my_worker2 = RetrieveThread(self)
+               self.my_worker2.start()
+               
+       def OnSend(self, ev):
+               self.chat.all(self.text_ctrl_2.GetValue())
+               self.text_ctrl_2.SetValue("")
+               
+       def OnQuit(self, ev):
+               self.chat.exit()
+               self.Close()
+               
+class RecvThread(threading.Thread):
+       def __init__(self, parent):
+               threading.Thread.__init__(self)
+               self.parent = parent
+       
+       def run(self):
+               while True:
+                       self.parent.chat.recv()
 
-chat = ChatClient('127.0.0.1', 7070)
-chat.name("Client")
-chat.enter()
-chat.all("Hi!")
-chat.one("malte70", "Hello, Malte.")
-while True:
-       x = chat.retrieve()
-       if x != False:
-               print x
-       if select.select([sys.stdin,],[],[],0.0)[0]:
-               chat.send(sys.stdin.readline())
+class RetrieveThread(threading.Thread):
+       def __init__(self, parent):
+               threading.Thread.__init__(self)
+               self.parent = parent
+       
+       def run(self):
+               while True:
+                       x = self.parent.chat.retrieve()
+                       if x != False:
+                               self.parent.text_ctrl_1.AppendText(x.rstrip("\n")+"\n")
 
-chat.exit()
+#chat.exit()
+if __name__ == "__main__":
+       app = wx.PySimpleApp(0)
+       wx.InitAllImageHandlers()
+       frame_1 = SimpleChatFrame(None, -1, "")
+       app.SetTopWindow(frame_1)
+       frame_1.Show()
+       #while True:
+       #       x = frame_1.chat.retrieve()
+       #       if x != False:
+       #               #self.parent.text_ctrl_1.AppendText(x+"\n")
+       #               print x
+       app.MainLoop()
index a4e143e74bd20e1799bd75fc96b052f0eec44edd..185739702d5565e83edfa57f0600e97cfd07f5b6 100644 (file)
--- a/server.py
+++ b/server.py
@@ -37,7 +37,7 @@ class ChatProtocol(LineReceiver):
                        
        def broadcastLine(self, line):
                for client in self.factory.users.itervalues():
-                       client.sendLine(line)
+                       client.sendLine(line.strip())
 
 factory = Factory()
 factory.protocol = ChatProtocol