From f2ed1adfec01f64e2f9b2e6cfb4ba0986f6e55ca Mon Sep 17 00:00:00 2001 From: Fabien-B Date: Wed, 6 Sep 2023 18:53:35 +0200 Subject: [PATCH] [supervision] Fix edit flight plan in GCS. --- conf/tools/flight_plan_editor.xml | 5 +++-- sw/supervision/python/configuration_panel.py | 12 ++++++------ sw/supervision/python/paparazzicenter.py | 2 ++ sw/supervision/python/session_widget.py | 2 ++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/conf/tools/flight_plan_editor.xml b/conf/tools/flight_plan_editor.xml index 105d80a7d7..6a1c74f96e 100644 --- a/conf/tools/flight_plan_editor.xml +++ b/conf/tools/flight_plan_editor.xml @@ -1,4 +1,5 @@ - - + + + diff --git a/sw/supervision/python/configuration_panel.py b/sw/supervision/python/configuration_panel.py index d7d999bb37..e3ff2c555a 100644 --- a/sw/supervision/python/configuration_panel.py +++ b/sw/supervision/python/configuration_panel.py @@ -5,10 +5,11 @@ import utils from generated.ui_configuration_panel import Ui_ConfigurationPanel from program_widget import ProgramWidget, TabProgramsState from conf import * -from programs_conf import parse_tools +from programs_conf import Tool import subprocess + class ConfigurationPanel(QWidget, Ui_ConfigurationPanel): clear_error = QtCore.pyqtSignal() @@ -67,13 +68,12 @@ class ConfigurationPanel(QWidget, Ui_ConfigurationPanel): self.currentAC.radio = self.conf_widget.radio.path self.currentAC.telemetry = self.conf_widget.telemetry.path self.ac_edited.emit(self.currentAC) + + def handle_tools_changed(self, tools: Dict[str, Tool]): + if "Flight Plan Editor" in tools: + self.flight_plan_editor = tools["Flight Plan Editor"] def edit_flightplan_gcs(self, path): - if self.flight_plan_editor is None: - tools = parse_tools() - if "Flight Plan Editor" in tools: - self.flight_plan_editor = tools["Flight Plan Editor"] - if self.flight_plan_editor is not None: cmd = [os.path.join(utils.PAPARAZZI_SRC, self.flight_plan_editor.command)] for arg in self.flight_plan_editor.args: diff --git a/sw/supervision/python/paparazzicenter.py b/sw/supervision/python/paparazzicenter.py index 22efd8d0e3..34fcab2452 100755 --- a/sw/supervision/python/paparazzicenter.py +++ b/sw/supervision/python/paparazzicenter.py @@ -61,6 +61,8 @@ class PprzCenter(QMainWindow, Ui_SupervisionWindow): self.operation_panel.session.program_spawned.connect(self.header.disable_sets) self.operation_panel.session.programs_all_stopped.connect(self.header.enable_sets) + self.operation_panel.session.tools_changed.connect(self.configuration_panel.handle_tools_changed) + self.configuration_panel.splitter.splitterMoved.connect(self.update_left_pane_width) settings = utils.get_settings() window_size = settings.value("ui/window_size", QtCore.QSize(1000, 600), QtCore.QSize) diff --git a/sw/supervision/python/session_widget.py b/sw/supervision/python/session_widget.py index 71f97d8cd3..e3646de6dd 100644 --- a/sw/supervision/python/session_widget.py +++ b/sw/supervision/python/session_widget.py @@ -22,6 +22,7 @@ class SessionWidget(QWidget, Ui_Session): programs_all_stopped = QtCore.pyqtSignal() program_spawned = QtCore.pyqtSignal() program_state_changed = QtCore.pyqtSignal(TabProgramsState) + tools_changed = QtCore.pyqtSignal(dict) # Dict[str, Tool] def __init__(self, parent=None): QWidget.__init__(self, parent=parent) @@ -63,6 +64,7 @@ class SessionWidget(QWidget, Ui_Session): current_cp = self.control_panel_combo.currentText() self.sessions = parse_sessions(current_cp) self.tools = parse_tools(current_cp) + self.tools_changed.emit(self.tools) self.init_tools_menu() sessions_names = [session.name for session in self.sessions] self.sessions_combo.clear()