From 1ffc04b5ff358b2f96e4f500e7877a0d7b37cfe1 Mon Sep 17 00:00:00 2001 From: DonRenando Date: Thu, 2 Apr 2015 16:36:24 +0200 Subject: [PATCH] =?UTF-8?q?c'est=20une=20turie=20=C3=A7a=20marche=20git=20?= =?UTF-8?q?add=20.git=20add=20.git=20add=20.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/view/start.py | 90 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 14 deletions(-) diff --git a/client/view/start.py b/client/view/start.py index 1614a14..479a004 100755 --- a/client/view/start.py +++ b/client/view/start.py @@ -1,6 +1,8 @@ from mainWindow import Ui_Dialog from PyQt4 import QtGui, QtCore -import time, threading, datetime +from PySide.QtCore import * +from PySide.QtGui import * +import time, threading, datetime, time from socket import * Host = "127.0.0.1" @@ -8,11 +10,56 @@ Port = 2222 Addr = (Host, Port) +class MySignal(QObject): + sig = Signal(str) + +class MyLongThread(QThread): + def __init__(self, parent = None): + QThread.__init__(self, parent) + self.exiting = False + self.signal = MySignal() + + def run(self): + end = time.time()+10 + while self.exiting==False: + sys.stdout.write('*') + sys.stdout.flush() + time.sleep(1) + now = time.time() + if now>=end: + self.exiting=True + self.signal.sig.emit('OK') + +class MyThread(QThread): + def __init__(self, parent = None): + QThread.__init__(self, parent) + + self.exiting = False + + def run(self): + self.s.settimeout(None) + data = self.s.recv(4096) + messgServeur = (data.decode()) + self.gui.setNewMsg(messgServeur) + + def setConfig(self,s,gui): + self.s = s + self.gui = gui + + + class start(QtGui.QDialog): def __init__(self): super(start, self).__init__() + self.queueMsg= [] + self.thread = MyThread() + self.thread.finished.connect(self.UpdateChat) + self.createWidgets() - + + def setNewMsg (self,msg) : + self.queueMsg.append(msg) + def getTimeStamp(self): return ('[%s] ' % str(datetime.datetime.fromtimestamp(int(time.time())).strftime('%H:%M'))) @@ -25,15 +72,22 @@ class start(QtGui.QDialog): return html + def ShowMessageErreur(self, txt): + self.message_buffer += '
'+ self.htmlToText(txt) +' ' def ShowMessageAsText(self, txt): self.message_buffer += '
' + self.getTimeStamp() + ' <BOB> ' + self.htmlToText(txt) + '' - def UpdateChat(self, messgServeur) : - self.ShowMessageAsText(messgServeur) - self.ui.txtOutput.setText(self.message_buffer) - sb = self.ui.txtOutput.verticalScrollBar() - sb.setValue(sb.maximum()) + def UpdateChat(self) : + if self.queueMsg : + m = self.queueMsg.pop(0) + if m : + self.thread.start() + self.ShowMessageAsText(m) + self.ui.txtOutput.setText(self.message_buffer) + sb = self.ui.txtOutput.verticalScrollBar() + sb.setValue(sb.maximum()) + def connectActions(self): self.ui.pushButton_2.clicked.connect(self.connecter) @@ -43,14 +97,15 @@ class start(QtGui.QDialog): def connecter(self): self.s = socket(AF_INET, SOCK_STREAM) self.s.connect(Addr) + self.thread.setConfig(self.s,self) self.ui.lineEdit.setDisabled(False) self.ui.pushButton.setDisabled(False) self.ui.pushButton_2.setDisabled(True) self.ui.pushButton_3.setDisabled(False) - + self.thread.start() + + #threading.Thread(target=self.ecoute).start() - #for t in threading.enumerate(): - # if t != threading.main_thread(): t.join() def deco(self): self.s.close() @@ -101,16 +156,21 @@ class start(QtGui.QDialog): cmd = self.ui.lineEdit.text() if cmd != "": self.ui.lineEdit.setText('') - + self.s.settimeout(5.0) try: self.s.send(cmd.encode()) data = self.s.recv(4096) messgServeur = (data.decode()) - self.UpdateChat(messgServeur) + self.ShowMessageAsText(messgServeur) + self.ui.txtOutput.setText(self.message_buffer) + sb = self.ui.txtOutput.verticalScrollBar() + sb.setValue(sb.maximum()) - except timeout: - print("Erreur : Timeout. Le serveur ne repond pas.") + self.ShowMessageErreur("Erreur : Timeout. Le serveur ne repond pas") + self.ui.txtOutput.setText(self.message_buffer) + sb = self.ui.txtOutput.verticalScrollBar() + sb.setValue(sb.maximum()) if __name__ == "__main__": @@ -120,3 +180,5 @@ if __name__ == "__main__": myapp.show() myapp.focusWidget() sys.exit(app.exec_()) + for t in threading.enumerate(): + if t != threading.main_thread(): t.join()