def __init__(self,parent=None): QtGui.QDialog.__init__(self,parent) self.ui = Ui_Dialog() self.ui.setupUi(self) intVal = QtGui.QIntValidator() floatVal = QtGui.QDoubleValidator() self.ui.lineEditBoxID.setValidator(intVal) self.ui.lineEditHead.setValidator(intVal) self.ui.lineEditTime.setValidator(floatVal) self.data = {'head':0xAAF0,'length':0x14,'function':0x01, 'ID':0xAABBCCDD,'fireBox':None,'firePoint':None, 'seconds':None,'offsetSec':None,'crc':0,'tail':0xDD} self.dataSync = {'head':0xAAF0,'length':0x0A,'function':0x04, 'ID':0xAABBCCDD,'seconds':None,'crc':0,'tail':0xDD} self.ExistList = [] self.q = Queue.Queue() self.c = getMessage(self.q) thread = QtCore.QThread() self.c.moveToThread(thread) thread.start() time.sleep(1) self.c.signalRead.emit() self.pauseFlag = True self.deleteFlag = True self.ui.tableView.setAlternatingRowColors(True) self.model = QtGui.QStandardItemModel(0, 2, self) self.model.setHorizontalHeaderLabels(['BoxID','Heads','Time']) self.ui.tableView.setModel(self.model) self.ui.tableView.setColumnWidth(0,100) self.ui.tableView.setColumnWidth(1,100) self.ui.tableView.setColumnWidth(2,100) self.proxyModel = QtGui.QSortFilterProxyModel() self.proxyModel.setDynamicSortFilter(True) self.proxyModel.setSourceModel(self.model) self.ui.tableView.setModel(self.proxyModel) self.ui.tableView.setSortingEnabled(True) self.ui.tableView.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.tableView.customContextMenuRequested.connect(self.deleteBoxAction) self.ui.pushButtonAdd.clicked.connect(self.addFun) self.ui.pushButtonDownload.clicked.connect(self.downloadFun) self.ui.pushButtonStart.clicked.connect(self.startFun) self.ui.pushButtonPause.clicked.connect(self.pauseFun) self.ui.pushButtonDownload.setEnabled(False) self.ui.pushButtonStart.setEnabled(False) self.ui.pushButtonPause.setEnabled(False)
class uiShow(QtGui.QDialog): def __init__(self,parent=None): QtGui.QDialog.__init__(self,parent) self.ui = Ui_Dialog() self.ui.setupUi(self) intVal = QtGui.QIntValidator() floatVal = QtGui.QDoubleValidator() self.ui.lineEditBoxID.setValidator(intVal) self.ui.lineEditHead.setValidator(intVal) self.ui.lineEditTime.setValidator(floatVal) self.data = {'head':0xAAF0,'length':0x14,'function':0x01, 'ID':0xAABBCCDD,'fireBox':None,'firePoint':None, 'seconds':None,'offsetSec':None,'crc':0,'tail':0xDD} self.dataSync = {'head':0xAAF0,'length':0x0A,'function':0x04, 'ID':0xAABBCCDD,'seconds':None,'crc':0,'tail':0xDD} self.ExistList = [] self.q = Queue.Queue() self.c = getMessage(self.q) thread = QtCore.QThread() self.c.moveToThread(thread) thread.start() time.sleep(1) self.c.signalRead.emit() self.pauseFlag = True self.deleteFlag = True self.ui.tableView.setAlternatingRowColors(True) self.model = QtGui.QStandardItemModel(0, 2, self) self.model.setHorizontalHeaderLabels(['BoxID','Heads','Time']) self.ui.tableView.setModel(self.model) self.ui.tableView.setColumnWidth(0,100) self.ui.tableView.setColumnWidth(1,100) self.ui.tableView.setColumnWidth(2,100) self.proxyModel = QtGui.QSortFilterProxyModel() self.proxyModel.setDynamicSortFilter(True) self.proxyModel.setSourceModel(self.model) self.ui.tableView.setModel(self.proxyModel) self.ui.tableView.setSortingEnabled(True) self.ui.tableView.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.tableView.customContextMenuRequested.connect(self.deleteBoxAction) self.ui.pushButtonAdd.clicked.connect(self.addFun) self.ui.pushButtonDownload.clicked.connect(self.downloadFun) self.ui.pushButtonStart.clicked.connect(self.startFun) self.ui.pushButtonPause.clicked.connect(self.pauseFun) self.ui.pushButtonDownload.setEnabled(False) self.ui.pushButtonStart.setEnabled(False) self.ui.pushButtonPause.setEnabled(False) @Slot(QPoint) def deleteBoxAction(self,point): if self.deleteFlag == False: return rightMenu = QtGui.QMenu(self) deleteAction = QtGui.QAction("Delete", self) self.row = self.ui.tableView.rowAt(point.y()) deleteAction.connect(SIGNAL("triggered()"), self.deleteRecord) rightMenu.addAction(deleteAction) rightMenu.exec_(QtGui.QCursor.pos()) def deleteRecord(self): print 'deleted' node = {'Box':None,'Head':None,'Time':None} node['Box'] = self.model.item(self.row,0).text() node['Head'] = self.model.item(self.row,1).text() node['Time'] = self.model.item(self.row,2).text() self.model.takeRow(self.row) for row in self.ExistList: if row['Box'] == node['Box'] and row['Head'] == node['Head']: self.ExistList.remove(row) def startFun(self): self.timer = QtCore.QTimer() QtCore.QObject.connect(self.timer,SIGNAL("timeout()"), self.timerEvent) self.timer.start(1000) self.timeCount = 0 self.downloadFlag = False self.ui.pushButtonPause.setEnabled(True) self.ui.pushButtonStart.setEnabled(False) def pauseFun(self): if self.pauseFlag == True: self.timer.stop() self.pauseFlag = False self.ui.pushButtonPause.setText('Continue') else: self.timer.start(1000) self.pauseFlag = True self.ui.pushButtonPause.setText('Pause') def timerEvent(self): self.sync() def sync(self): print 'seconds' , self.timeCount self.dataSync['seconds'] = self.timeCount dataPacks = dataPack(self.dataSync) self.q.put((dataPacks.package, False)) self.timeCount = self.timeCount + 1 if self.timeCount > self.maxTime: self.timer.stop() self.deleteFlag = True self.ui.pushButtonPause.setEnabled(False) self.ui.pushButtonAdd.setEnabled(True) print "*******************" print ' Fire finished' print "*******************" def addFun(self): if self.ui.lineEditBoxID.text() == '' or self.ui.lineEditHead.text() == '' or self.ui.lineEditTime.text() == '': print 'please input data' return for row in self.ExistList: if row['Box'] == self.ui.lineEditBoxID.text() and row['Head'] == self.ui.lineEditHead.text(): print 'exist' return node = {'Box':None,'Head':None,'Time':None} node['Box'] =self.ui.lineEditBoxID.text() node['Head'] = self.ui.lineEditHead.text() node['Time'] = float(self.ui.lineEditTime.text()) self.ExistList.append(node) sortedList = sorted(self.ExistList,key = lambda k:k['Time']) self.model.clear() self.model.setHorizontalHeaderLabels(['BoxID','Heads','Time']) self.ui.tableView.setModel(self.model) self.ui.tableView.setColumnWidth(0,100) self.ui.tableView.setColumnWidth(1,100) self.ui.tableView.setColumnWidth(2,100) for node in sortedList: newRow = [] newRow.append (QtGui.QStandardItem (node['Box'])) newRow.append (QtGui.QStandardItem (node['Head'])) newRow.append (QtGui.QStandardItem (str(node['Time']))) self.model.appendRow(newRow) self.ui.pushButtonDownload.setEnabled(True) def downloadFun(self): if len(self.ExistList)== 0: print 'Please add first' return self.maxTime = 0.0 for node in self.ExistList: sec = node['Time'] if sec > self.maxTime: self.maxTime = sec self.data['fireBox'] = int(node['Box']) self.data['firePoint'] = int(node['Head']) self.data['seconds'] = int(sec) self.data['offsetSec'] = int((sec - int(sec))*1000) print self.data['seconds'],'.',self.data['offsetSec'] dataPackage = dataPack(self.data) print repr(dataPackage.package) self.q.put ((dataPackage.package, True)) self.ExistList = [] self.downloadFlag = True self.ui.pushButtonStart.setEnabled(True) self.ui.pushButtonAdd.setEnabled(False) self.ui.pushButtonDownload.setEnabled(False) self.deleteFlag = False