Exemplo n.º 1
0
    def _on_plans(self, msg):
        if self._plans == msg.plans:
            return
        self._plans = msg.plans

        mission_tree = self._widget.findChild(QTreeWidget, "missionTreeWidget")
        mission_tree.clear()
        contigency_combo = self._widget.findChild(QComboBox, "contigencyCombo")
        contigency_combo.clear()

        for plan in sorted(self._plans, key=lambda plan: plan.name):
            item = QTreeWidgetItem([plan.name])
            for entry in plan.entries:
                contigency = entry.contigency_plan
                if len(contigency) == 0:
                    contigency = "none"
                dist = str(entry.dist) if entry.dist != 0 else ""
                subitem = QTreeWidgetItem([entry.mission, str(entry.timeout.secs), contigency, entry.path, dist])
                item.setFlags(item.flags() | Qt.ItemIsEditable)
                item.addChild(subitem)
            mission_tree.addTopLevelItem(item)
            item.setExpanded(True)
            if plan.name != "main":
                contigency_combo.addItem(plan.name)
        contigency_combo.addItem("none")

        mission_combo = self._widget.findChild(QComboBox, "missionCombo")
        mission_combo.clear()
        mission_combo.addItems(sorted(msg.available_missions))
    def _recursive_create_widget_items(self, parent, topic_name, type_name, message, is_editable=True):
        item = QTreeWidgetItem(parent)
        if is_editable:
            item.setFlags(item.flags() | Qt.ItemIsEditable)
        else:
            item.setFlags(item.flags() & (~Qt.ItemIsEditable))

        if parent is None:
            # show full topic name with preceding namespace on toplevel item
            topic_text = topic_name
        else:
            topic_text = topic_name.split('/')[-1]

        item.setText(self._column_index['service'], topic_text)
        item.setText(self._column_index['type'], type_name)

        item.setData(0, Qt.UserRole, topic_name)

        if hasattr(message, '__slots__') and hasattr(message, '_slot_types'):
            for slot_name, type_name in zip(message.__slots__, message._slot_types):
                self._recursive_create_widget_items(item, topic_name + '/' + slot_name, type_name, getattr(message, slot_name), is_editable)

        elif type(message) in (list, tuple) and (len(message) > 0) and hasattr(message[0], '__slots__'):
            type_name = type_name.split('[', 1)[0]
            for index, slot in enumerate(message):
                self._recursive_create_widget_items(item, topic_name + '[%d]' % index, type_name, slot, is_editable)

        else:
            item.setText(self._column_index['expression'], repr(message))

        return item
 def refresh_tree(self):
     self.select_tree.itemChanged.disconnect()
     self.select_tree.clear()
     for joint_name in self.joint_names:
         item = QTreeWidgetItem(self.select_tree)
         item.setText(0, joint_name)
         item.setCheckState(0, Qt.Unchecked)
         item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
         for traj_name in ['position', 'velocity', 'acceleration', 'effort']:
             sub_item = QTreeWidgetItem(item)
             sub_item.setText(0, traj_name)
             sub_item.setCheckState(0, Qt.Unchecked)
             sub_item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
     self.select_tree.itemChanged.connect(self.update_checkbox)
 def refresh_tree(self):
     self.select_tree.itemChanged.disconnect()
     self.select_tree.clear()
     for joint_name in self.joint_names:
         item = QTreeWidgetItem(self.select_tree)
         item.setText(0, joint_name)
         item.setCheckState(0, Qt.Unchecked)
         item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
         for traj_name in [
                 'position', 'velocity', 'acceleration', 'effort'
         ]:
             sub_item = QTreeWidgetItem(item)
             sub_item.setText(0, traj_name)
             sub_item.setCheckState(0, Qt.Unchecked)
             sub_item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
     self.select_tree.itemChanged.connect(self.update_checkbox)
Exemplo n.º 5
0
    def _recursive_create_widget_items(self,
                                       parent,
                                       topic_name,
                                       type_name,
                                       message,
                                       is_editable=True):
        item = QTreeWidgetItem(parent)
        if is_editable:
            item.setFlags(item.flags() | Qt.ItemIsEditable)
        else:
            item.setFlags(item.flags() & (~Qt.ItemIsEditable))

        if parent is None:
            # show full topic name with preceding namespace on toplevel item
            topic_text = topic_name
        else:
            topic_text = topic_name.split('/')[-1]

        item.setText(self._column_index['service'], topic_text)
        item.setText(self._column_index['type'], type_name)

        item.setData(0, Qt.UserRole, topic_name)

        if hasattr(message, '__slots__') and hasattr(message, '_slot_types'):
            for slot_name, type_name in zip(message.__slots__,
                                            message._slot_types):
                self._recursive_create_widget_items(
                    item, topic_name + '/' + slot_name, type_name,
                    getattr(message, slot_name), is_editable)

        elif type(message) in (list, tuple) and (len(message) > 0) and hasattr(
                message[0], '__slots__'):
            type_name = type_name.split('[', 1)[0]
            for index, slot in enumerate(message):
                self._recursive_create_widget_items(
                    item, topic_name + '[%d]' % index, type_name, slot,
                    is_editable)

        else:
            item.setText(self._column_index['expression'], repr(message))

        return item