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()