Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- class FenetreChat(QDialog):
- """Fenêtre principale de l'application iTchat"""
- def __init__(self, sock, parent=None):
- QDialog.__init__(self, parent)
- self.sock = sock
- self.parent = parent
- self.resize(600,500)
- self.setMinimumWidth(600) # Largeur minimale
- self.setMinimumHeight(500) # Hauteur minimale
- self.setWindowTitle('iTchat')
- size_ecran = QDesktopWidget().screenGeometry()
- size_fenetre = self.geometry()
- # on centre la fenetre
- self.move((size_ecran.width()-size_fenetre.width())/2, (size_ecran.height()-size_fenetre.height())/2)
- # Layouts du haut, du bas, et principal comprenant haut et bas
- self.layout_haut = QHBoxLayout()
- self.layout_bas = QHBoxLayout()
- self.layout_principal = QVBoxLayout()
- # Contenu du layout_haut
- self.tchat = QTextEdit()
- self.tchat.setReadOnly(True)
- self.tchat.append(u"<font color='red'><b>Connecté.</b></font>")
- self.connectes = QListWidget()
- self.connectes.setMaximumWidth(200) # Largeur maximale
- self.layout_haut.addWidget(self.tchat)
- self.layout_haut.addWidget(self.connectes)
- # Contenu du layout_bas
- self.input_texte = QLineEdit()
- self.bouton_envoyer = QPushButton('Envoyer')
- self.bouton_envoyer.setDefault(True)
- self.layout_bas.addWidget(self.input_texte)
- self.layout_bas.addWidget(self.bouton_envoyer)
- # Contenu du layout_principal
- self.layout_principal.addLayout(self.layout_haut)
- self.layout_principal.addLayout(self.layout_bas)
- self.setLayout(self.layout_principal)
- QWidget.connect(self.bouton_envoyer, SIGNAL("clicked()"), self.envoyer)
- self.listening_thread = ListeningThread(self, self.sock)
- self.connect(self.listening_thread, SIGNAL("message_recu"), self.recevoir)
- self.connect(self.listening_thread, SIGNAL("join"), self.ajout_connecte)
- self.connect(self.listening_thread, SIGNAL("left"), self.suppr_connecte)
- self.connect(self.listening_thread, SIGNAL("maj"), self.maj_connectes)
- self.listening_thread.start()
- def envoyer(self):
- message = self.input_texte.text().trimmed()
- if message != '':
- self.sock.send(QString.toUtf8(message))
- self.input_texte.setText('')
- def recevoir(self, message):
- message = message.decode('UTF-8')
- print message
- self.tchat.append(message)
- def ajout_connecte(self, pseudo):
- self.connectes.addItem(pseudo)
- def suppr_connecte(self, pseudo):
- for index in xrange(self.connectes.count()):
- if self.connectes.item(index).text() == pseudo:
- objet = self.connectes.takeItem(index)
- del objet
- break
- def maj_connectes(self, pseudos):
- for pseudo in pseudos.split(','):
- self.connectes.addItem(pseudo)
- def closeEvent(self, event):
- self.listening_thread.terminate()
- self.sock.close()
- QWidget.deleteLater(self)
- self.parent.close()
- event.accept()
- class ListeningThread(QThread):
- def __init__(self, parent, socket):
- QThread.__init__(self, parent)
- self.parent = parent
- self.sock = socket
- self.running = True
- def run(self):
- while self.running:
- message = self.sock.recv(1024)
- print 'message recu: ' + message
- if message[0:11] == "MAJsuperman":
- pseudos = message[12:]
- self.emit(SIGNAL("maj"), pseudos)
- elif message[0:12] != "JOINsuperman" and message[0:12] != "LEFTsuperman" and message[0:11] != "MAJsuperman":
- self.emit(SIGNAL("message_recu"), message)
- elif message[0:12] == "JOINsuperman":
- pseudo = message[13:]
- self.emit(SIGNAL("join"), pseudo)
- elif message[0:12] == "LEFTsuperman":
- pseudo = message[13:]
- self.emit(SIGNAL("left"), pseudo)
- QApplication.processEvents()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement