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