def updateColumn(self, column): if not self._values: return # when does this happen? data = self._values[column] for row, value in enumerate(data.value): if not isnan(value): cfg = self._config.get(column) if cfg and cfg.format != "Not specified": item = QtGui.QTableWidgetItem(cfg.format % value) else: item = QtGui.QTableWidgetItem(str(value)) item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) else: item = QtGui.QTableWidgetItem("NaN") item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) item.setBackgroundColor(QtGui.QColor(220, 220, 220)) item.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.table.setItem(row, column, item)
def setModel(self, devices, attributes=[]): if not devices: for dev, attrs in self.attributes.items(): for att in attrs: att and att.removeListener( self._items[dev][att.name].event_received) else: try: # TaurusWidget.setModel(self, attrs[0].rsplit("/", 1)[0]) attrnames = [a[0] if isinstance(a, tuple) else a for a in attributes] self.attributes = dict((dev, [Attribute("%s/%s" % (dev, a)) for a in attrnames]) for dev in devices) self.table.setColumnCount(len(attributes) + 1) colnames = [a[1] if isinstance(a, tuple) else a for a in attributes] labels = ["Device"] + colnames self.table.setHorizontalHeaderLabels(labels) header = self.table.horizontalHeader() header.setResizeMode(QtGui.QHeaderView.Stretch) # Check if there are any columns at all self.table.setRowCount(len(devices)) for r, (dev, attrs) in enumerate(self.attributes.items()): item = QtGui.QTableWidgetItem(dev) item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) self.table.setItem(r, 0, item) for c, att in enumerate(attrs, 1): # JFF: this is a workaround for a behavior in Taurus. Just # adding a new listener to each attribute does not work, the # previous ones get removed for some reason. item = TableItem(self.trigger) self.table.setItem(r, c, item) att.addListener(item.event_received) except PyTango.DevFailed: pass