uisignaler.py
1 2 from PyQt4.QtCore import QThread, SIGNAL 3 import sys 4 5 import queues 6 7 8 class UISignaler(QThread): 9 _instance = None 10 11 def __init__(self, parent=None): 12 QThread.__init__(self, parent) 13 14 @classmethod 15 def get(cls): 16 if not cls._instance: 17 cls._instance = UISignaler() 18 return cls._instance 19 20 def run(self): 21 while True: 22 command, data = queues.UISignalQueue.get() 23 if command == 'writeNewAddressToTable': 24 label, address, streamNumber = data 25 self.emit( 26 SIGNAL("writeNewAddressToTable(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), 27 label, 28 address, 29 str(streamNumber)) 30 elif command == 'updateStatusBar': 31 self.emit(SIGNAL("updateStatusBar(PyQt_PyObject)"), data) 32 elif command == 'updateSentItemStatusByToAddress': 33 toAddress, message = data 34 self.emit(SIGNAL( 35 "updateSentItemStatusByToAddress(PyQt_PyObject,PyQt_PyObject)"), toAddress, message) 36 elif command == 'updateSentItemStatusByAckdata': 37 ackData, message = data 38 self.emit(SIGNAL( 39 "updateSentItemStatusByAckdata(PyQt_PyObject,PyQt_PyObject)"), ackData, message) 40 elif command == 'displayNewInboxMessage': 41 inventoryHash, toAddress, fromAddress, subject, body = data 42 self.emit(SIGNAL( 43 "displayNewInboxMessage(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), 44 inventoryHash, toAddress, fromAddress, subject, body) 45 elif command == 'displayNewSentMessage': 46 toAddress, fromLabel, fromAddress, subject, message, ackdata = data 47 self.emit(SIGNAL( 48 "displayNewSentMessage(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), 49 toAddress, fromLabel, fromAddress, subject, message, ackdata) 50 elif command == 'updateNetworkStatusTab': 51 outbound, add, destination = data 52 self.emit( 53 SIGNAL("updateNetworkStatusTab(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), 54 outbound, 55 add, 56 destination) 57 elif command == 'updateNumberOfMessagesProcessed': 58 self.emit(SIGNAL("updateNumberOfMessagesProcessed()")) 59 elif command == 'updateNumberOfPubkeysProcessed': 60 self.emit(SIGNAL("updateNumberOfPubkeysProcessed()")) 61 elif command == 'updateNumberOfBroadcastsProcessed': 62 self.emit(SIGNAL("updateNumberOfBroadcastsProcessed()")) 63 elif command == 'setStatusIcon': 64 self.emit(SIGNAL("setStatusIcon(PyQt_PyObject)"), data) 65 elif command == 'changedInboxUnread': 66 self.emit(SIGNAL("changedInboxUnread(PyQt_PyObject)"), data) 67 elif command == 'rerenderMessagelistFromLabels': 68 self.emit(SIGNAL("rerenderMessagelistFromLabels()")) 69 elif command == 'rerenderMessagelistToLabels': 70 self.emit(SIGNAL("rerenderMessagelistToLabels()")) 71 elif command == 'rerenderAddressBook': 72 self.emit(SIGNAL("rerenderAddressBook()")) 73 elif command == 'rerenderSubscriptions': 74 self.emit(SIGNAL("rerenderSubscriptions()")) 75 elif command == 'rerenderBlackWhiteList': 76 self.emit(SIGNAL("rerenderBlackWhiteList()")) 77 elif command == 'removeInboxRowByMsgid': 78 self.emit(SIGNAL("removeInboxRowByMsgid(PyQt_PyObject)"), data) 79 elif command == 'newVersionAvailable': 80 self.emit(SIGNAL("newVersionAvailable(PyQt_PyObject)"), data) 81 elif command == 'alert': 82 title, text, exitAfterUserClicksOk = data 83 self.emit( 84 SIGNAL("displayAlert(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"), 85 title, 86 text, 87 exitAfterUserClicksOk) 88 else: 89 sys.stderr.write( 90 'Command sent to UISignaler not recognized: %s\n' % command)