Exemplo n.º 1
0
        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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
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
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
            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)