Files
paparazzi/sw/supervision/python/tools_menu.py
Fabien-B ee01f2720b [supervision] Set custom icons, and change shortcut for clean. (#3049)
* [supervision] Set custom icons, and change shortcut for clean.

* [supervision] Add control panel selector.

* [supervision] remember last target built.

* [supervision] refresh AC before build.
2023-08-25 13:21:07 +02:00

60 lines
2.1 KiB
Python

# Copyright (C) 2008-2022 The Paparazzi Team
# released under GNU GPLv2 or later. See COPYING file.
from PyQt5 import QtCore, QtGui
from programs_conf import *
import os
import utils
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from generated.ui_tools_list import Ui_ToolsList
ICON_SIZE = (40, 40)
class ToolMenu(QWidget, Ui_ToolsList):
tool_clicked = QtCore.pyqtSignal(str)
def __init__(self):
super(ToolMenu, self).__init__()
self.setupUi(self)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Popup)
self.tools_buttons: Dict[str, QToolButton] = {}
self.filter_lineedit.textChanged.connect(self.filter)
self.setFocusProxy(self.filter_lineedit)
# self.gridLayout.setContentsMargins(10, 10, 24, 10)
# self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
# self.setWidgetResizable(True)
def add_tool(self, t: Tool):
button = QToolButton()
button.setText(t.name)
icon = QtGui.QIcon(os.path.join(utils.PAPARAZZI_HOME, "data", "pictures", "tools_icons", t.icon))
button.setIcon(icon)
button.setIconSize(QtCore.QSize(*ICON_SIZE))
# button.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
button.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
button.clicked.connect(lambda: self.tool_clicked.emit(button.text()))
self.tools_buttons[t.name] = button
self.content_widget.layout().addWidget(button)
def clear(self):
for _name, widget in self.tools_buttons.items():
self.content_widget.layout().removeWidget(widget)
self.tools_buttons.clear()
def filter(self, txt: str):
for name, button in self.tools_buttons.items():
show = txt.lower() in name.lower()
button.setVisible(show)
def keyPressEvent(self, e: QtGui.QKeyEvent) -> None:
if e.key() == Qt.Key_Escape:
self.releaseMouse()
self.close()
def show(self) -> None:
super(ToolMenu, self).show()
self.filter_lineedit.clear()