def flags(self, index): """ Returns the item flags for the given index. """ if index.column() == 0: # The First Column is just a label and unchangable return Qt.ItemIsEnabled | Qt.ItemIsSelectable if not index.isValid(): return Qt.ItemFlag(0) item_col, item_rowid = self.index2_itemdata(index) if item_rowid: if item_col in self.col_editable: return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable return Qt.ItemFlag(0)
def initTable(self): # stop the update timer self.timerDataRequest.stop() # init servo memory data table self.tableServoData.clear() self.tableServoData.setColumnCount(1) self.tableServoData.setHorizontalHeaderItem( 0, QTableWidgetItem('Parameter')) self.tableServoData.setRowCount( len(self.serialProtocol.memoryInfo['fieldNames'])) rowNumber = 0 for fieldName in self.serialProtocol.memoryInfo['fieldNames']: fieldInfo = self.serialProtocol.memoryInfo[fieldName] nameItem = QTableWidgetItem(fieldInfo['name']) if fieldInfo['writable']: nameItem.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) else: nameItem.setFlags(Qt.ItemFlag()) self.tableServoData.setItem(rowNumber, 0, nameItem) self.tableServoData.resizeRowToContents(rowNumber) self.tableServoData.setRowHeight( rowNumber, self.tableServoData.rowHeight(rowNumber) - 7) rowNumber += 1 self.tableServoData.resizeColumnToContents(0) # restart the update timer self.timerDataRequest.start(20)
def flags(self, index): if not index.isValid(): return Qt.NoItemFlags item = self.colours[index.row()] thread_type = self.headers[index.column()] if item.hasThread(thread_type): return Qt.ItemIsEnabled | Qt.ItemIsSelectable else: return Qt.ItemFlags(Qt.ItemFlag(0)) # Qt.NoItemFlags
def servoDataUpdate(self, servoId, addressOffset, servoData): if not self.servos.has_key(servoId): self.servoAdd(servoId) columnNumber = self.servos[servoId]['columnNumber'] self.updating = True servoDataString = ('%c' * len(servoData)) % tuple( chr(c) for c in servoData) index = 0 while index < len(servoDataString): fieldInfo = self.serialProtocol.memoryInfo[addressOffset + index] if fieldInfo['numElements'] != 1: self.log( 0, 'ERROR: MainWindow.servoDataUpdate(): numElements != 1 -> Arrays are not supported, yet...' ) value = self.converter.fromString(servoDataString[index:], fieldInfo['type']) index += fieldInfo['size'] # check if the item is being plotted subscribeId = '[%d].%s' % (servoId, fieldInfo['name']) if self.subscribedData.has_key(subscribeId): self.dataPlot.updateValue(subscribeId, float(value)) # check for existing item, or create a new one dataItem = self.tableServoData.item(fieldInfo['index'], columnNumber) if not dataItem: dataItem = QTableWidgetItem() if fieldInfo['writable']: dataItem.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsSelectable) else: dataItem.setFlags(Qt.ItemFlag()) self.tableServoData.setItem(fieldInfo['index'], columnNumber, dataItem) if type(value) == float: valueString = ('%.7f' % value).rstrip('0') else: valueString = str(value) dataItem.setText(valueString) # update item text dataItem.setToolTip( fieldInfo['makeToolTip'](value)) # update item tool tip self.tableServoData.resizeColumnToContents(columnNumber) self.updating = False