mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-29 02:38:07 +08:00
python paparazzi center tools impovement (#2445)
* [Python supervision] Change tool Menu. #2093 * [Python supervision] Adds tool icons. * [Python supervision] Separates tools from control panel. * [Python supervision] Adds blacklist feature. * [Python supervision] Clean test code. * [Python supervision] Allows tools override. * [Python supervision] Removes useless constants. * [Tools] Adds script to convert old xml tools format to the new one. * [Python supervision] Handles new tools definition. * Reduce diff with master * [tools] adds reference to icons in tools xmls.
This commit is contained in:
committed by
Gautier Hattenberger
parent
a369cea81c
commit
096209b787
@@ -43,6 +43,8 @@ import shutil
|
||||
###############################################################################
|
||||
# [Constants]
|
||||
|
||||
DEFAULT_TOOL_ICON = "default_tool_icon.svg"
|
||||
|
||||
LOGGER = logging.getLogger("[HMI]")
|
||||
|
||||
CONF_PATH = env.PAPARAZZI_CONF
|
||||
@@ -54,6 +56,7 @@ ERROR_QPIXMAP = "icons/dialog-error.svg"
|
||||
START_ICON = "icons/media-playback-start.svg"
|
||||
STOP_ICON = "icons/process-stop.svg"
|
||||
CHANGED_ICON = "icons/dialog-warning-symbolic.svg"
|
||||
ICONS_TOOLS_PATH = "data/pictures/tools_icons/"
|
||||
|
||||
UNKNOWN_VALUE = "---"
|
||||
|
||||
@@ -545,14 +548,13 @@ class Hmi(Widgets.QMainWindow):
|
||||
-> Fill the 'Tools' menu with the names found in 'control_panel.xml'
|
||||
-> Connect each action to the corresponding tool process.
|
||||
"""
|
||||
self.ui.menuTools.clear()
|
||||
sorted_names = parser.sorted_tools_names(self.data.tools)
|
||||
for name in sorted_names:
|
||||
action = Widgets.QAction(name, self)
|
||||
self.ui.menuTools.addAction(action)
|
||||
for action in self.ui.menuTools.actions():
|
||||
action.triggered.connect(functools.partial(
|
||||
self.add_program_to_session, self.data.tools[action.text()]))
|
||||
# The tools are sorted first by whether they are favorite or not, then by their names
|
||||
for tool in sorted(self.data.tools.values(), key=lambda tool: (not tool.favorite, tool.name)):
|
||||
if not tool.blacklisted:
|
||||
command = functools.partial(self.add_program_to_session, tool)
|
||||
icon_name = tool.icon if tool.icon is not None else DEFAULT_TOOL_ICON
|
||||
icon_path = "/".join([env.PAPARAZZI_HOME, ICONS_TOOLS_PATH, icon_name])
|
||||
self.ui.tools_menu.add_item(tool.name, icon_path, command)
|
||||
|
||||
def fullscreen_view(self):
|
||||
if self.isMaximized():
|
||||
|
||||
@@ -134,14 +134,17 @@ class Session(object):
|
||||
|
||||
class Program(object):
|
||||
"""Class to define a Program (old tool) object."""
|
||||
def __init__(self, name, command, options):
|
||||
def __init__(self, name, command, options, icon=None, favorite=None, blacklisted=None):
|
||||
self.name = name
|
||||
self.command = command
|
||||
self.options = options
|
||||
self.icon = icon
|
||||
self.favorite = favorite
|
||||
self.blacklisted = blacklisted
|
||||
|
||||
def __repr__(self):
|
||||
string = "\t| name = {!s:<30} | command = {!s:<60} | options = {!s:<70} |"
|
||||
format_string = string.format(self.name, self.command, self.options)
|
||||
string = "\t| name = {!s:<30} | command = {!s:<60} | options = {!s:<70} | icon={!s} |"
|
||||
format_string = string.format(self.name, self.command, self.options, self.icon)
|
||||
return format_string
|
||||
|
||||
|
||||
|
||||
@@ -30,12 +30,16 @@ import os
|
||||
import re
|
||||
import logging
|
||||
import time
|
||||
|
||||
from typing import List, Dict
|
||||
import shutil
|
||||
|
||||
|
||||
###############################################################################
|
||||
# [Constants]
|
||||
|
||||
STRINGS_FALSE = ["False", "false", None, "0"]
|
||||
|
||||
LOGGER = logging.getLogger("[PARSER]")
|
||||
|
||||
XML_EXT = ".xml"
|
||||
@@ -47,6 +51,7 @@ VALUE_REF = "value"
|
||||
CONSTANT_REF = "constant"
|
||||
VARIABLE_REF = "variable"
|
||||
MODE_REF = "mode"
|
||||
FAVORITE_REF = "favorite"
|
||||
|
||||
# REFERENCES AND STRUCTURES OF CONF XML FILES :
|
||||
# CONF_STRUCTURE = [(node_name, [node_attributes],
|
||||
@@ -128,6 +133,9 @@ DEVICE_STRUCTURE = [(DEVICE, [],
|
||||
DEFAULT_DEVICE_NAME = " __Default__ "
|
||||
DEFAULT_DEVICE = db.Device(DEFAULT_DEVICE_NAME)
|
||||
|
||||
# TOOLS
|
||||
TOOLS = "tools"
|
||||
|
||||
# CONTROL_PANEL :
|
||||
CONTROL_PANEL = "control_panel"
|
||||
CONTROL_PANEL_FILE = CONTROL_PANEL + XML_EXT
|
||||
@@ -136,10 +144,10 @@ SECTION_REF = "section"
|
||||
PROGRAM_REF = "program"
|
||||
SESSION_REF = "session"
|
||||
COMMAND_REF = "command"
|
||||
ICON_REF = "icon"
|
||||
FLAG_REF = "flag"
|
||||
OPTION_REF = "arg"
|
||||
|
||||
PROGRAM_TAG_REF = "/".join((SECTION_REF, PROGRAM_REF))
|
||||
SESSION_TAG_REF = "/".join((SECTION_REF, SESSION_REF))
|
||||
|
||||
CONTROL_PANEL_STRUCTURE = [(CONTROL_PANEL, [NAME_REF],
|
||||
@@ -389,6 +397,10 @@ def load_init_files(conf_path):
|
||||
cp_file = cp_path
|
||||
else:
|
||||
raise Exception("%s not found!"% conf_path)
|
||||
|
||||
tools_path = conf_path + "/" + TOOLS
|
||||
if not os.path.exists(tools_path):
|
||||
raise Exception("%s not found!" % tools_path)
|
||||
|
||||
for root, dirs, files in os.walk(conf_path):
|
||||
for file in files:
|
||||
@@ -417,7 +429,7 @@ def load_init_files(conf_path):
|
||||
LOGGER.debug(file)
|
||||
LOGGER.debug("'control_panel' file(s) :")
|
||||
LOGGER.debug(cp_file)
|
||||
return conf_files, cp_file, devices_files, info
|
||||
return conf_files, cp_file, tools_path, devices_files, info
|
||||
|
||||
|
||||
###############################################################################
|
||||
@@ -633,29 +645,46 @@ def parse_arg_option(option_tag):
|
||||
return option
|
||||
|
||||
|
||||
def parse_tools(cp_file):
|
||||
def parse_tools(tools_path):
|
||||
"""
|
||||
:param cp_file:
|
||||
-> Parse all tools in the 'control_panel' file given.
|
||||
:param tools_path:
|
||||
-> Parse all tools files in the 'tools_path' directory.
|
||||
-> Except an incorrect XML format and raise ERROR.
|
||||
"""
|
||||
tools = {}
|
||||
try:
|
||||
cp_tree = Et.parse(cp_file)
|
||||
tools_tags = cp_tree.findall(PROGRAM_TAG_REF)
|
||||
for tool_tag in tools_tags:
|
||||
tool_name = tool_tag.get(NAME_REF)
|
||||
tool_command = tool_tag.get(COMMAND_REF)
|
||||
options = []
|
||||
for option_tag in tool_tag:
|
||||
option = parse_arg_option(option_tag)
|
||||
options.append(option)
|
||||
tool_object = db.Program(tool_name, tool_command, options)
|
||||
tools[tool_name] = tool_object
|
||||
blacklisted_tools = []
|
||||
blacklist = tools_path + "/" + "blacklisted"
|
||||
if os.path.exists(blacklist):
|
||||
with open(blacklist, 'r') as blacklist_fic:
|
||||
for line in blacklist_fic:
|
||||
line = line.strip()
|
||||
if line != "" and line[0] != "#":
|
||||
blacklisted_tools.append(line)
|
||||
|
||||
except Et.ParseError as msg:
|
||||
LOGGER.error("ERROR in syntax of XML file : '%s'. "
|
||||
"Original message : '%s'.", cp_file, msg)
|
||||
for file in os.listdir(tools_path):
|
||||
if file.endswith(".xml"):
|
||||
file_path = tools_path + "/" + file
|
||||
try:
|
||||
tree = Et.parse(file_path)
|
||||
tool_tag = tree.getroot()
|
||||
if tool_tag.tag == PROGRAM_REF:
|
||||
tool_name = tool_tag.get(NAME_REF)
|
||||
tool_command = tool_tag.get(COMMAND_REF)
|
||||
icon = tool_tag.get(ICON_REF)
|
||||
fav = tool_tag.get(FAVORITE_REF)
|
||||
favorite = fav if fav is None else (fav not in STRINGS_FALSE)
|
||||
|
||||
options = []
|
||||
for option_tag in tool_tag:
|
||||
option = parse_arg_option(option_tag)
|
||||
options.append(option)
|
||||
blacklisted = True if tool_name in blacklisted_tools else False
|
||||
tool_object = db.Program(tool_name, tool_command, options, icon, favorite=favorite, blacklisted=blacklisted)
|
||||
tools[tool_name] = tool_object
|
||||
|
||||
except Et.ParseError as msg:
|
||||
LOGGER.error("ERROR in syntax of XML file : '%s'. "
|
||||
"Original message : '%s'.", file, msg)
|
||||
return tools
|
||||
|
||||
|
||||
@@ -691,14 +720,15 @@ def parse_sessions(cp_file, tools):
|
||||
return sessions
|
||||
|
||||
|
||||
def load_sessions_and_programs(cp_file):
|
||||
def load_sessions_and_programs(cp_file, tools_path):
|
||||
"""
|
||||
:param cp_file:
|
||||
-> Parse the tools and sessions from the 'control_panel.xml' file.
|
||||
:param tools_path:
|
||||
-> Parse the tools and sessions from the 'tools:*xml' files.
|
||||
-> Add the default sessions 'simulation' & replay.
|
||||
-> Show the result of scan if DEBUG mode is on (main.py)
|
||||
"""
|
||||
tools = parse_tools(cp_file)
|
||||
tools = parse_tools(tools_path)
|
||||
sessions = parse_sessions(cp_file, tools)
|
||||
|
||||
sessions[SIMULATION_SESSION.name] = SIMULATION_SESSION
|
||||
@@ -764,6 +794,7 @@ class Data(object):
|
||||
self.conf_files = []
|
||||
self.devices_file = None
|
||||
self.cp_file = None
|
||||
self.tools_path = None
|
||||
|
||||
self.cache = {}
|
||||
self.configurations = {}
|
||||
@@ -796,7 +827,7 @@ class Data(object):
|
||||
|
||||
def load_conf_files(self):
|
||||
LOGGER.info("Scanning current directory...")
|
||||
self.conf_files, self.cp_file, self.devices_file, load_info = \
|
||||
self.conf_files, self.cp_file, self.tools_path, self.devices_file, load_info = \
|
||||
load_init_files(self.conf_path)
|
||||
LOGGER.debug(load_info)
|
||||
LOGGER.info("End of scan.\n")
|
||||
@@ -819,10 +850,10 @@ class Data(object):
|
||||
|
||||
def load_sessions_and_programs(self):
|
||||
LOGGER.info("Loading programs and sessions...")
|
||||
if self.cp_file is not None:
|
||||
if self.cp_file is not None and self.tools_path is not None:
|
||||
self.tools, self.sessions, \
|
||||
load_info = load_sessions_and_programs(self.cp_file)
|
||||
load_info = load_sessions_and_programs(self.cp_file, self.tools_path)
|
||||
LOGGER.debug(load_info)
|
||||
LOGGER.info("Programs and sessions loaded.\n")
|
||||
else:
|
||||
LOGGER.error("ERROR : control_panel.xml not found!")
|
||||
LOGGER.error("ERROR : control_panel.xml or tools.xml not found!")
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
ICON_SIZE = (60, 60)
|
||||
POPUP_SIZE = (1000, 400)
|
||||
POPUP_GRID_WIDTH = 4
|
||||
SC_MINIMUM_SIZE = (200, 130)
|
||||
ICON_NUMBER = 6
|
||||
|
||||
class ToolList(QtWidgets.QScrollArea):
|
||||
|
||||
def __init__(self):
|
||||
super(ToolList, self).__init__()
|
||||
self.frame = QtWidgets.QFrame()
|
||||
self.gridLayout = QtWidgets.QGridLayout()
|
||||
self.frame.setLayout(self.gridLayout)
|
||||
self.setWidget(self.frame)
|
||||
self.setWidgetResizable(True)
|
||||
|
||||
def add(self, button):
|
||||
count = self.gridLayout.count()
|
||||
row = count // POPUP_GRID_WIDTH
|
||||
col = count % POPUP_GRID_WIDTH
|
||||
self.gridLayout.addWidget(button, row, col)
|
||||
|
||||
def focusOutEvent(self, QFocusEvent):
|
||||
self.close()
|
||||
|
||||
|
||||
class ToolsMenu(QtWidgets.QFrame):
|
||||
def __init__(self, parent):
|
||||
super(ToolsMenu, self).__init__(parent)
|
||||
self.hlayout = QtWidgets.QHBoxLayout(self)
|
||||
self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||
|
||||
self.toolsFrame = QtWidgets.QFrame()
|
||||
self.toolsLayout = QtWidgets.QHBoxLayout(self.toolsFrame)
|
||||
self.scrollArea = QtWidgets.QScrollArea()
|
||||
self.scrollArea.setWidget(self.toolsFrame)
|
||||
self.hlayout.addWidget(self.scrollArea)
|
||||
self.scrollArea.setMinimumSize(*SC_MINIMUM_SIZE)
|
||||
self.setMinimumSize(SC_MINIMUM_SIZE[0] + 10, SC_MINIMUM_SIZE[1] + 100)
|
||||
|
||||
self.toolsLayout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
|
||||
|
||||
self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
|
||||
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||
self.scrollArea.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||
|
||||
self.button_more = None
|
||||
self.popup = ToolList()
|
||||
self.popup.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
||||
self.popup.setMinimumSize(*POPUP_SIZE)
|
||||
self.buttons = []
|
||||
self.toolsLayout.addStretch(0)
|
||||
|
||||
self._add_more_button()
|
||||
|
||||
def _add_more_button(self):
|
||||
if self.button_more is None:
|
||||
self.button_more = QtWidgets.QToolButton()
|
||||
more_icon = QtGui.QIcon("ui/icons/tools_more.svg")
|
||||
self.button_more.setIcon(more_icon)
|
||||
self.button_more.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
|
||||
self.hlayout.addWidget(self.button_more, QtCore.Qt.AlignRight)
|
||||
self.button_more.clicked.connect(self.open_popup)
|
||||
|
||||
def add_item(self, name, image_path, callback):
|
||||
button = QtWidgets.QToolButton()
|
||||
button.setText(name)
|
||||
button.setIcon(QtGui.QIcon(image_path))
|
||||
button.setIconSize(QtCore.QSize(*ICON_SIZE))
|
||||
button.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
|
||||
button.clicked.connect(callback)
|
||||
|
||||
self.buttons.append(button)
|
||||
|
||||
if self.toolsLayout.count() <= ICON_NUMBER:
|
||||
self.toolsLayout.insertWidget(self.toolsLayout.count() - 1, button, QtCore.Qt.AlignLeft)
|
||||
else:
|
||||
self.popup.add(button)
|
||||
button.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
|
||||
button.show()
|
||||
self.popup.adjustSize()
|
||||
|
||||
def open_popup(self):
|
||||
bottomLeft = self.mapToGlobal(self.hlayout.geometry().bottomLeft())
|
||||
self.popup.move(bottomLeft)
|
||||
self.popup.show()
|
||||
self.popup.setFocus(QtCore.Qt.PopupFocusReason)
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
viewBox="0 0 2.8811265 1.8181867"
|
||||
height="0.51313269mm"
|
||||
width="0.81311792mm">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-1.3678973,-0.7353429)"
|
||||
id="layer1">
|
||||
<path
|
||||
id="path3336"
|
||||
d="M 2.3833287,1.2353429 2.7779195,1.748311 3.1961858,1.2353429 Z"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -2,7 +2,7 @@
|
||||
|
||||
# Form implementation generated from reading ui file 'main_window.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.9.2
|
||||
# Created by: PyQt5 UI code generator 5.5.1
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(833, 481)
|
||||
MainWindow.resize(833, 568)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
@@ -226,7 +226,7 @@ class Ui_MainWindow(object):
|
||||
self.scrollArea_3.setWidgetResizable(True)
|
||||
self.scrollArea_3.setObjectName("scrollArea_3")
|
||||
self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 162, 622))
|
||||
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 162, 607))
|
||||
self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
|
||||
self.gridLayout_4 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_3)
|
||||
self.gridLayout_4.setObjectName("gridLayout_4")
|
||||
@@ -572,6 +572,9 @@ class Ui_MainWindow(object):
|
||||
self.sessions_tab.setObjectName("sessions_tab")
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout(self.sessions_tab)
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.label_7 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridLayout_2.addWidget(self.label_7, 5, 0, 1, 2)
|
||||
self.programs = QtWidgets.QListWidget(self.sessions_tab)
|
||||
self.programs.setMinimumSize(QtCore.QSize(0, 0))
|
||||
self.programs.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
@@ -579,29 +582,12 @@ class Ui_MainWindow(object):
|
||||
self.programs.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||
self.programs.setIconSize(QtCore.QSize(10, 10))
|
||||
self.programs.setObjectName("programs")
|
||||
self.gridLayout_2.addWidget(self.programs, 1, 2, 3, 1)
|
||||
self.gridLayout_2.addWidget(self.programs, 2, 2, 3, 1)
|
||||
self.label_8 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_8.setObjectName("label_8")
|
||||
self.gridLayout_2.addWidget(self.label_8, 1, 0, 1, 2)
|
||||
self.gridLayout_2.addWidget(self.label_8, 2, 0, 1, 2)
|
||||
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout_2.addItem(spacerItem4, 2, 3, 1, 1)
|
||||
self.play_stop_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.play_stop_program.sizePolicy().hasHeightForWidth())
|
||||
self.play_stop_program.setSizePolicy(sizePolicy)
|
||||
self.play_stop_program.setMinimumSize(QtCore.QSize(0, 50))
|
||||
self.play_stop_program.setMaximumSize(QtCore.QSize(16777215, 50))
|
||||
icon7 = QtGui.QIcon()
|
||||
icon7.addPixmap(QtGui.QPixmap("icons/media-playback-start.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.play_stop_program.setIcon(icon7)
|
||||
self.play_stop_program.setAutoDefault(False)
|
||||
self.play_stop_program.setObjectName("play_stop_program")
|
||||
self.gridLayout_2.addWidget(self.play_stop_program, 1, 3, 1, 1)
|
||||
self.label_7 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 2)
|
||||
self.gridLayout_2.addItem(spacerItem4, 3, 3, 1, 1)
|
||||
self.start_all_button = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -618,11 +604,50 @@ class Ui_MainWindow(object):
|
||||
font.setStrikeOut(False)
|
||||
font.setKerning(True)
|
||||
self.start_all_button.setFont(font)
|
||||
icon7 = QtGui.QIcon()
|
||||
icon7.addPixmap(QtGui.QPixmap("icons/media-playback-start.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.start_all_button.setIcon(icon7)
|
||||
self.start_all_button.setObjectName("start_all_button")
|
||||
self.gridLayout_2.addWidget(self.start_all_button, 4, 3, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.start_all_button, 5, 3, 1, 1)
|
||||
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout_2.addItem(spacerItem5, 6, 2, 1, 1)
|
||||
self.gridLayout_2.addItem(spacerItem5, 7, 2, 1, 1)
|
||||
self.play_stop_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.play_stop_program.sizePolicy().hasHeightForWidth())
|
||||
self.play_stop_program.setSizePolicy(sizePolicy)
|
||||
self.play_stop_program.setMinimumSize(QtCore.QSize(0, 50))
|
||||
self.play_stop_program.setMaximumSize(QtCore.QSize(16777215, 50))
|
||||
self.play_stop_program.setIcon(icon7)
|
||||
self.play_stop_program.setAutoDefault(False)
|
||||
self.play_stop_program.setObjectName("play_stop_program")
|
||||
self.gridLayout_2.addWidget(self.play_stop_program, 2, 3, 1, 1)
|
||||
self.options = QtWidgets.QListWidget(self.sessions_tab)
|
||||
self.options.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
self.options.setObjectName("options")
|
||||
self.gridLayout_2.addWidget(self.options, 5, 2, 2, 1)
|
||||
self.remove_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.remove_program.sizePolicy().hasHeightForWidth())
|
||||
self.remove_program.setSizePolicy(sizePolicy)
|
||||
self.remove_program.setMinimumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setMaximumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setText("")
|
||||
self.remove_program.setIcon(icon1)
|
||||
self.remove_program.setAutoDefault(False)
|
||||
self.remove_program.setObjectName("remove_program")
|
||||
self.gridLayout_2.addWidget(self.remove_program, 4, 0, 1, 1)
|
||||
self.session = QtWidgets.QComboBox(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.session.sizePolicy().hasHeightForWidth())
|
||||
self.session.setSizePolicy(sizePolicy)
|
||||
self.session.setObjectName("session")
|
||||
self.gridLayout_2.addWidget(self.session, 1, 2, 1, 1)
|
||||
self.kill_all_button = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -644,35 +669,10 @@ class Ui_MainWindow(object):
|
||||
icon8.addPixmap(QtGui.QPixmap("icons/process-stop.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.kill_all_button.setIcon(icon8)
|
||||
self.kill_all_button.setObjectName("kill_all_button")
|
||||
self.gridLayout_2.addWidget(self.kill_all_button, 3, 3, 1, 1)
|
||||
self.session = QtWidgets.QComboBox(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.session.sizePolicy().hasHeightForWidth())
|
||||
self.session.setSizePolicy(sizePolicy)
|
||||
self.session.setObjectName("session")
|
||||
self.gridLayout_2.addWidget(self.session, 0, 2, 1, 1)
|
||||
self.options = QtWidgets.QListWidget(self.sessions_tab)
|
||||
self.options.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
self.options.setObjectName("options")
|
||||
self.gridLayout_2.addWidget(self.options, 4, 2, 2, 1)
|
||||
self.gridLayout_2.addWidget(self.kill_all_button, 4, 3, 1, 1)
|
||||
self.label_4 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.gridLayout_2.addWidget(self.label_4, 0, 0, 1, 2)
|
||||
self.remove_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.remove_program.sizePolicy().hasHeightForWidth())
|
||||
self.remove_program.setSizePolicy(sizePolicy)
|
||||
self.remove_program.setMinimumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setMaximumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setText("")
|
||||
self.remove_program.setIcon(icon1)
|
||||
self.remove_program.setAutoDefault(False)
|
||||
self.remove_program.setObjectName("remove_program")
|
||||
self.gridLayout_2.addWidget(self.remove_program, 3, 0, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.label_4, 1, 0, 1, 2)
|
||||
self.add_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
self.add_program.setEnabled(False)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
@@ -686,7 +686,7 @@ class Ui_MainWindow(object):
|
||||
self.add_program.setIcon(icon3)
|
||||
self.add_program.setAutoDefault(False)
|
||||
self.add_program.setObjectName("add_program")
|
||||
self.gridLayout_2.addWidget(self.add_program, 3, 1, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.add_program, 4, 1, 1, 1)
|
||||
self.remove_option = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -699,7 +699,7 @@ class Ui_MainWindow(object):
|
||||
self.remove_option.setIcon(icon1)
|
||||
self.remove_option.setAutoDefault(False)
|
||||
self.remove_option.setObjectName("remove_option")
|
||||
self.gridLayout_2.addWidget(self.remove_option, 5, 0, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.remove_option, 6, 0, 1, 1)
|
||||
self.add_option = QtWidgets.QPushButton(self.sessions_tab)
|
||||
self.add_option.setEnabled(True)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
@@ -713,7 +713,14 @@ class Ui_MainWindow(object):
|
||||
self.add_option.setIcon(icon3)
|
||||
self.add_option.setAutoDefault(False)
|
||||
self.add_option.setObjectName("add_option")
|
||||
self.gridLayout_2.addWidget(self.add_option, 5, 1, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.add_option, 6, 1, 1, 1)
|
||||
self.tools_menu = ToolsMenu(self.sessions_tab)
|
||||
self.tools_menu.setMinimumSize(QtCore.QSize(0, 0))
|
||||
self.tools_menu.setBaseSize(QtCore.QSize(200, 140))
|
||||
self.tools_menu.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.tools_menu.setFrameShadow(QtWidgets.QFrame.Raised)
|
||||
self.tools_menu.setObjectName("tools_menu")
|
||||
self.gridLayout_2.addWidget(self.tools_menu, 0, 2, 1, 1)
|
||||
self.main_tab.addTab(self.sessions_tab, "")
|
||||
self.console_tab = QtWidgets.QWidget()
|
||||
self.console_tab.setObjectName("console_tab")
|
||||
@@ -953,8 +960,6 @@ class Ui_MainWindow(object):
|
||||
self.menuConfiguration.setObjectName("menuConfiguration")
|
||||
self.menuMenu = QtWidgets.QMenu(self.menubar)
|
||||
self.menuMenu.setObjectName("menuMenu")
|
||||
self.menuTools = QtWidgets.QMenu(self.menubar)
|
||||
self.menuTools.setObjectName("menuTools")
|
||||
self.menuView = QtWidgets.QMenu(self.menubar)
|
||||
self.menuView.setObjectName("menuView")
|
||||
self.menuHelp = QtWidgets.QMenu(self.menubar)
|
||||
@@ -1056,7 +1061,7 @@ class Ui_MainWindow(object):
|
||||
self.scrollArea.setWidgetResizable(True)
|
||||
self.scrollArea.setObjectName("scrollArea")
|
||||
self.scrollAreaWidgetContents = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 162, 598))
|
||||
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 151, 583))
|
||||
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
|
||||
self.gridLayout_13 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
|
||||
self.gridLayout_13.setObjectName("gridLayout_13")
|
||||
@@ -1209,7 +1214,7 @@ class Ui_MainWindow(object):
|
||||
self.scrollArea_2.setWidgetResizable(True)
|
||||
self.scrollArea_2.setObjectName("scrollArea_2")
|
||||
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 162, 598))
|
||||
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 151, 583))
|
||||
self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
|
||||
self.gridLayout_15 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_2)
|
||||
self.gridLayout_15.setObjectName("gridLayout_15")
|
||||
@@ -1503,12 +1508,11 @@ class Ui_MainWindow(object):
|
||||
self.menubar.addAction(self.menuSet.menuAction())
|
||||
self.menubar.addAction(self.menuConfiguration.menuAction())
|
||||
self.menubar.addAction(self.menuSession.menuAction())
|
||||
self.menubar.addAction(self.menuTools.menuAction())
|
||||
self.menubar.addAction(self.menuView.menuAction())
|
||||
self.menubar.addAction(self.menuHelp.menuAction())
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
self.main_tab.setCurrentIndex(3)
|
||||
self.main_tab.setCurrentIndex(2)
|
||||
self.stackedWidget.setCurrentIndex(0)
|
||||
self.main_tab.currentChanged['int'].connect(self.stackedWidget.setCurrentIndex)
|
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
@@ -1578,19 +1582,19 @@ class Ui_MainWindow(object):
|
||||
self.label_9.setText(_translate("MainWindow", "Result :"))
|
||||
self.main_tab.setTabText(self.main_tab.indexOf(self.build_flash_tab), _translate("MainWindow", "Build / Flash"))
|
||||
self.main_tab.setTabToolTip(self.main_tab.indexOf(self.build_flash_tab), _translate("MainWindow", "Tab to build and flash the current configuration"))
|
||||
self.label_7.setText(_translate("MainWindow", "Options :"))
|
||||
self.programs.setToolTip(_translate("MainWindow", "Programs running (green) and stopped (red)"))
|
||||
self.label_8.setText(_translate("MainWindow", "Programs :"))
|
||||
self.play_stop_program.setToolTip(_translate("MainWindow", "Start / stop the selected program"))
|
||||
self.play_stop_program.setText(_translate("MainWindow", "Start"))
|
||||
self.label_7.setText(_translate("MainWindow", "Options :"))
|
||||
self.start_all_button.setToolTip(_translate("MainWindow", "Kill & restart all programs"))
|
||||
self.start_all_button.setText(_translate("MainWindow", "Start all"))
|
||||
self.play_stop_program.setToolTip(_translate("MainWindow", "Start / stop the selected program"))
|
||||
self.play_stop_program.setText(_translate("MainWindow", "Start"))
|
||||
self.options.setToolTip(_translate("MainWindow", "Options of the selected program"))
|
||||
self.remove_program.setToolTip(_translate("MainWindow", "Remove a programs from the session"))
|
||||
self.session.setToolTip(_translate("MainWindow", "Current session"))
|
||||
self.kill_all_button.setToolTip(_translate("MainWindow", "Kill all running programs"))
|
||||
self.kill_all_button.setText(_translate("MainWindow", "Kill all"))
|
||||
self.session.setToolTip(_translate("MainWindow", "Current session"))
|
||||
self.options.setToolTip(_translate("MainWindow", "Options of the selected program"))
|
||||
self.label_4.setText(_translate("MainWindow", "Session :"))
|
||||
self.remove_program.setToolTip(_translate("MainWindow", "Remove a programs from the session"))
|
||||
self.add_program.setToolTip(_translate("MainWindow", "Add a programs to the session"))
|
||||
self.remove_option.setToolTip(_translate("MainWindow", "Remove the selected option"))
|
||||
self.add_option.setToolTip(_translate("MainWindow", "Add an option to the selected program"))
|
||||
@@ -1625,7 +1629,6 @@ class Ui_MainWindow(object):
|
||||
self.menuSet.setTitle(_translate("MainWindow", "Set"))
|
||||
self.menuConfiguration.setTitle(_translate("MainWindow", "Configuration"))
|
||||
self.menuMenu.setTitle(_translate("MainWindow", "Menu"))
|
||||
self.menuTools.setTitle(_translate("MainWindow", "Tools"))
|
||||
self.menuView.setTitle(_translate("MainWindow", "View"))
|
||||
self.menuHelp.setTitle(_translate("MainWindow", "Help"))
|
||||
self.menuSession.setTitle(_translate("MainWindow", "Session"))
|
||||
@@ -1709,3 +1712,4 @@ class Ui_MainWindow(object):
|
||||
self.actionRestore_default_state.setText(_translate("MainWindow", "Restore default app state"))
|
||||
self.actionHide_overviews.setText(_translate("MainWindow", "Hide overviews"))
|
||||
|
||||
from tools_menu import ToolsMenu
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>833</width>
|
||||
<height>481</height>
|
||||
<height>568</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@@ -278,7 +278,7 @@
|
||||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>3</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="elideMode">
|
||||
<enum>Qt::ElideNone</enum>
|
||||
@@ -579,7 +579,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>162</width>
|
||||
<height>622</height>
|
||||
<height>607</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
@@ -1537,7 +1537,14 @@
|
||||
<string>Tab to launch and customize the current session</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="1" column="2" rowspan="3">
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Options :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" rowspan="3">
|
||||
<widget class="QListWidget" name="programs">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
@@ -1568,14 +1575,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Programs :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<item row="3" column="3">
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@@ -1588,49 +1595,7 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="play_stop_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Start / stop the selected program</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/media-playback-start.svg</normaloff>icons/media-playback-start.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Options :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<item row="5" column="3">
|
||||
<widget class="QPushButton" name="start_all_button">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
@@ -1672,7 +1637,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<item row="7" column="2">
|
||||
<spacer name="verticalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@@ -1685,7 +1650,103 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<item row="2" column="3">
|
||||
<widget class="QPushButton" name="play_stop_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Start / stop the selected program</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/media-playback-start.svg</normaloff>icons/media-playback-start.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2" rowspan="2">
|
||||
<widget class="QListWidget" name="options">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Options of the selected program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QPushButton" name="remove_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove a programs from the session</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/list-remove.svg</normaloff>icons/list-remove.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QComboBox" name="session">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Current session</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QPushButton" name="kill_all_button">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
@@ -1730,75 +1791,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QComboBox" name="session">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Current session</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" rowspan="2">
|
||||
<widget class="QListWidget" name="options">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Options of the selected program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Session :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QPushButton" name="remove_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove a programs from the session</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/list-remove.svg</normaloff>icons/list-remove.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<item row="4" column="1">
|
||||
<widget class="QPushButton" name="add_program">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@@ -1836,7 +1836,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QPushButton" name="remove_option">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
@@ -1871,7 +1871,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QPushButton" name="add_option">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
@@ -1909,6 +1909,28 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="ToolsMenu" name="tools_menu">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>140</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="console_tab">
|
||||
@@ -2467,11 +2489,6 @@ p, li { white-space: pre-wrap; }
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionQuit_Paparazzi_UAV"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuTools">
|
||||
<property name="title">
|
||||
<string>Tools</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuView">
|
||||
<property name="title">
|
||||
<string>View</string>
|
||||
@@ -2499,7 +2516,6 @@ p, li { white-space: pre-wrap; }
|
||||
<addaction name="menuSet"/>
|
||||
<addaction name="menuConfiguration"/>
|
||||
<addaction name="menuSession"/>
|
||||
<addaction name="menuTools"/>
|
||||
<addaction name="menuView"/>
|
||||
<addaction name="menuHelp"/>
|
||||
</widget>
|
||||
@@ -2699,8 +2715,8 @@ p, li { white-space: pre-wrap; }
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>162</width>
|
||||
<height>598</height>
|
||||
<width>151</width>
|
||||
<height>583</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_13">
|
||||
@@ -3090,8 +3106,8 @@ p, li { white-space: pre-wrap; }
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>162</width>
|
||||
<height>598</height>
|
||||
<width>151</width>
|
||||
<height>583</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_15">
|
||||
@@ -3822,6 +3838,14 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ToolsMenu</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>tools_menu.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
||||
Reference in New Issue
Block a user