Files
paparazzi/sw/supervision/python/conf_widget.py
Fabien-B e42330c58d Supervision improvements (#3002)
* [supervision] disable build and clean buttons during build/clean.

* [supervision] Move AC color at the left.

* [supervision] Add shortcuts and rename "flash" to "upload".

* [supervision] Fix telemetry select base path.

* [supervision] return key terminate program.

* [supervision] Add option to keep "build" programs after they finished.
2023-02-28 18:49:42 +01:00

63 lines
2.3 KiB
Python

from PyQt5.QtWidgets import *
from PyQt5 import QtCore
import conf
import utils
from conf_file_widget import ConfFileWidget
from conf_settings_widget import ConfSettingsWidget
class ConfWidget(QWidget):
conf_changed = QtCore.pyqtSignal()
setting_changed = QtCore.pyqtSignal()
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
lay = QVBoxLayout(self)
self.airframe = ConfFileWidget("Airframe", "airframes", self)
self.airframe.file_changed.connect(self.conf_changed)
self.flight_plan = ConfFileWidget("Flight Plan", "flight_plans", self)
self.flight_plan.file_changed.connect(self.conf_changed)
self.flight_plan.edit_alt_button.show()
self.flight_plan.edit_alt_button.setText("Edit GCS")
self.settings = ConfSettingsWidget(self)
self.settings.settings_changed.connect(self.setting_changed)
self.radio = ConfFileWidget("Radio", "radios", self)
self.radio.file_changed.connect(self.conf_changed)
self.telemetry = ConfFileWidget("Telemetry", "telemetry", self)
self.telemetry.file_changed.connect(self.conf_changed)
self.settings.settings.itemDoubleClicked.connect(self.edit_setting)
self.settings.settings.itemChanged.connect(self.setting_changed)
vb = QVBoxLayout()
vb.addWidget(self.settings)
lay.addWidget(self.airframe)
lay.addWidget(self.flight_plan)
lay.addItem(vb)
lay.addWidget(self.radio)
lay.addWidget(self.telemetry)
def set_ac(self, ac: conf.Aircraft):
self.airframe.set_path(ac.airframe)
self.telemetry.set_path(ac.telemetry)
self.radio.set_path(ac.radio)
self.flight_plan.set_path(ac.flight_plan)
self.settings.settings.clear()
for setting in ac.settings + ac.settings_modules:
item = QListWidgetItem(setting.name)
item.setCheckState(QtCore.Qt.Checked if setting.enabled else QtCore.Qt.Unchecked)
self.settings.settings.addItem(item)
def edit_setting(self, item: QListWidgetItem):
utils.edit_file(item.text())
def reset(self):
self.airframe.set_path("")
self.flight_plan.set_path("")
self.telemetry.set_path("")
self.radio.set_path("")
self.settings.settings.clear()