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()