mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-10 23:35:45 +08:00
ee01f2720b
* [supervision] Set custom icons, and change shortcut for clean. * [supervision] Add control panel selector. * [supervision] remember last target built. * [supervision] refresh AC before build.
96 lines
3.5 KiB
Python
96 lines
3.5 KiB
Python
# Copyright (C) 2008-2022 The Paparazzi Team
|
|
# released under GNU GPLv2 or later. See COPYING file.
|
|
from PyQt5.QtWidgets import *
|
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
from generated.ui_conf_header import Ui_ConfHeader
|
|
from conf import Aircraft, Conf
|
|
import utils
|
|
import os
|
|
import sys
|
|
import paparazzi
|
|
from typing import List
|
|
|
|
|
|
class HeaderWidget(QWidget, Ui_ConfHeader):
|
|
|
|
set_changed = QtCore.pyqtSignal(str)
|
|
ac_changed = QtCore.pyqtSignal(str)
|
|
ac_edited = QtCore.pyqtSignal(Aircraft)
|
|
ac_rename = QtCore.pyqtSignal(Aircraft)
|
|
ac_delete = QtCore.pyqtSignal(Aircraft)
|
|
ac_duplicate = QtCore.pyqtSignal(Aircraft)
|
|
ac_save = QtCore.pyqtSignal(Aircraft)
|
|
ac_new = QtCore.pyqtSignal()
|
|
|
|
def __init__(self, parent=None):
|
|
QWidget.__init__(self, parent=parent)
|
|
self.setupUi(self)
|
|
self.currentAc: Aircraft = None
|
|
self.set_combo.currentTextChanged.connect(self.set_changed)
|
|
self.ac_combo.currentTextChanged.connect(self.ac_changed)
|
|
self.id_spinBox.valueChanged.connect(self.handle_id_changed)
|
|
|
|
self.refresh_button.clicked.connect(lambda: self.ac_edited.emit(self.currentAc))
|
|
self.color_button.clicked.connect(self.change_color)
|
|
self.save_button.clicked.connect(lambda: self.ac_save.emit(self.currentAc))
|
|
|
|
self.menu_button.addAction(self.rename_action)
|
|
self.rename_action.triggered.connect(lambda: self.ac_rename.emit(self.currentAc))
|
|
self.menu_button.addAction(self.remove_ac_action)
|
|
self.remove_ac_action.triggered.connect(lambda: self.ac_delete.emit(self.currentAc))
|
|
self.menu_button.addAction(self.duplicate_action)
|
|
self.duplicate_action.triggered.connect(lambda: self.ac_duplicate.emit(self.currentAc))
|
|
self.menu_button.addAction(self.new_ac_action)
|
|
self.new_ac_action.triggered.connect(self.ac_new)
|
|
|
|
def handle_id_changed(self, new_id):
|
|
self.currentAc.ac_id = new_id
|
|
self.ac_edited.emit(self.currentAc)
|
|
|
|
def update_sets(self):
|
|
sets = paparazzi.get_list_of_conf_files()
|
|
conf_init = Conf.get_current_conf()
|
|
self.set_combo.addItems(sets)
|
|
if conf_init in sets:
|
|
self.set_combo.setCurrentText(conf_init)
|
|
|
|
def set_acs(self, acs: List[str]):
|
|
self.ac_combo.clear()
|
|
self.ac_combo.addItems(acs)
|
|
|
|
def set_ac(self, ac: Aircraft):
|
|
self.currentAc = ac
|
|
self.id_spinBox.blockSignals(True)
|
|
self.id_spinBox.setValue(ac.ac_id)
|
|
self.id_spinBox.blockSignals(False)
|
|
self.color_button.setStyleSheet("background-color: {};".format(ac.get_color()))
|
|
self.ac_combo.setCurrentText(ac.name)
|
|
|
|
def add_ac(self, ac: Aircraft):
|
|
self.ac_combo.addItem(ac.name)
|
|
|
|
def remove_ac(self, ac):
|
|
for i in range(self.ac_combo.count()):
|
|
if self.ac_combo.itemText(i) == ac.name:
|
|
self.ac_combo.removeItem(i)
|
|
break
|
|
|
|
def rename_ac(self, new_name):
|
|
i = self.ac_combo.currentIndex()
|
|
self.ac_combo.setItemText(i, new_name)
|
|
|
|
def change_color(self):
|
|
initial = QtGui.QColor(self.currentAc.get_color())
|
|
color = QColorDialog.getColor(initial, self, "AC color")
|
|
if color.isValid():
|
|
color_name = color.name()
|
|
self.currentAc.set_color(color_name)
|
|
self.color_button.setStyleSheet("background-color: {};".format(color_name))
|
|
self.ac_edited.emit(self.currentAc)
|
|
|
|
def disable_sets(self):
|
|
self.set_combo.setDisabled(True)
|
|
|
|
def enable_sets(self):
|
|
self.set_combo.setDisabled(False)
|