mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-02-07 12:18:28 +08:00
* [supervision] Set custom icons, and change shortcut for clean. * [supervision] Add control panel selector. * [supervision] remember last target built. * [supervision] refresh AC before build.
60 lines
2.1 KiB
Python
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()
|