def add_item(parent, element): if 'fields' not in element: return for field in element['fields']: name = field['name'] item = QtGui.QTreeWidgetItem(parent) item.setText(0, name) if 'children' in field: for child in field['children']: add_item(item, child)
def _handle_config(self): line = self._get_serial_line() if not line: return self.console.add_text(line + '\n') if line.startswith('OK'): # We're done with config now. self._serial_state = self.STATE_LINE cbk, self._config_callback = self._config_callback, None if cbk: cbk() else: # Add it into our tree view. key, value = line.split(' ', 1) name, rest = key.split('.', 1) if name not in self._config_tree_items: item = QtGui.QTreeWidgetItem() item.setText(0, name) self.ui.configTreeWidget.addTopLevelItem(item) self._config_tree_items[name] = item def add_config(item, key, value): if key == '': item.setText(1, value) item.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) return fields = key.split('.', 1) this_field = fields[0] next_key = '' if len(fields) > 1: next_key = fields[1] child = None # See if we already have an appropriate child. for i in range(item.childCount()): if item.child(i).text(0) == this_field: child = item.child(i) break if child is None: child = QtGui.QTreeWidgetItem(item) child.setText(0, this_field) add_config(child, next_key, value) add_config(self._config_tree_items[name], rest, value) self.ui.configTreeWidget.resizeColumnToContents(0)
def _add_schema_to_tree(self, name, archive): item = QtGui.QTreeWidgetItem() item.setText(0, name) self.ui.telemetryTreeWidget.addTopLevelItem(item) # TODO jpieper: Factor this out of tplot.py. def add_item(parent, element): if 'fields' not in element: return for field in element['fields']: name = field['name'] item = QtGui.QTreeWidgetItem(parent) item.setText(0, name) if 'children' in field: for child in field['children']: add_item(item, child) add_item(item, archive.root) return item
def _set_tree_widget_data(item, struct, getter=lambda x, y: getattr(x, y), required_size=0): if item.childCount() < required_size: for i in range(item.childCount(), required_size): subitem = QtGui.QTreeWidgetItem(item) subitem.setText(0, str(i)) for i in range(item.childCount()): child = item.child(i) name = child.text(0) field = getter(struct, name) if isinstance(field, tuple) and child.childCount() > 0: _set_tree_widget_data(child, field) elif isinstance(field, list): _set_tree_widget_data(child, field, getter=lambda x, y: x[int(y)], required_size=len(field)) else: child.setText(1, repr(field))
def add_config(item, key, value): if key == '': item.setText(1, value) item.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) return fields = key.split('.', 1) this_field = fields[0] next_key = '' if len(fields) > 1: next_key = fields[1] child = None # See if we already have an appropriate child. for i in range(item.childCount()): if item.child(i).text(0) == this_field: child = item.child(i) break if child is None: child = QtGui.QTreeWidgetItem(item) child.setText(0, this_field) add_config(child, next_key, value)