def filter(self, text): self.setRowCount(0) self.resizeColumnsToContents() text = text.strip() if not text: records = self.records_all elif '=' not in text: records = self.search_database_for_string(text) else: records = self.get_records(text) if not records: return self.setRowCount(len(records)) for row, record in enumerate(records): for col, element in enumerate(record.to_xml()): if element.tag == 'connection' and record.connection is not None: self.setItem(row, col, QtWidgets.QTableWidgetItem('True')) elif element.tag == 'properties': text = u'' if not element: self.setItem(row, col, QtWidgets.QTableWidgetItem(text)) else: for sub_element in element: text += u'{}={}; '.format(sub_element.tag, sub_element.text) self.setItem(row, col, QtWidgets.QTableWidgetItem(text)) else: self.setItem(row, col, QtWidgets.QTableWidgetItem(element.text)) self.resizeColumnsToContents()
def update_table(self, root): items = [(e.tag, e.text, e.attrib) for e in root if not e.tag.startswith('equipment')] self.setRowCount(len(items)) for i, item in enumerate(items): self.setItem(i, 0, QtWidgets.QTableWidgetItem(item[0])) self.setItem(i, 1, QtWidgets.QTableWidgetItem(item[1])) text = '; '.join('{}={}'.format(k, v) for k, v in item[2].items()) self.setItem(i, 2, QtWidgets.QTableWidgetItem(text)) self.resizeColumnsToContents()