示例#1
0
 def refresh_plan(self):
     expanded_list = []
     root = self.planView.invisibleRootItem()
     child_count = root.childCount()
     for i in range(child_count):
         item = root.child(i)
         if item.isExpanded():
             expanded_list.append(item.text(
                 self._column_index['action_id']))
     self.planView.clear()
     for action in self._action_list:
         item = QTreeWidgetItem(self.planView)
         item.setText(self._column_index['action_id'],
                      str(action.action_id))
         item.setText(self._column_index['dispatch_time'],
                      str(action.dispatch_time))
         item.setText(self._column_index['duration'], str(action.duration))
         item.setText(self._column_index['status'],
                      self._status_list.get(str(action.action_id), "-"))
         action_name = '(' + action.name
         for keyval in action.parameters:
             param = QTreeWidgetItem(item)
             param.setText(self._column_index['action_id'], '')
             param.setText(self._column_index['action_name'],
                           '- ' + keyval.key + ': ' + keyval.value)
             param.setText(self._column_index['dispatch_time'], '')
             param.setText(self._column_index['duration'], '')
             param.setText(self._column_index['status'], '')
             action_name = action_name + ' ' + keyval.value
         item.setText(self._column_index['action_name'], action_name + ')')
         if str(action.action_id) in expanded_list:
             item.setExpanded(True)
    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))