Merge branch 'master' into qt-gui-update

This commit is contained in:
Artem30801
2019-12-30 21:57:21 +03:00
43 changed files with 1378 additions and 619 deletions

View File

@@ -101,6 +101,95 @@ def check_start_pos_status(item):
def check_time_delta(item):
return abs(item) < ModelChecks.time_delta_max
battery_min = config.getfloat('CHECKS', 'battery_percentage_min')
start_pos_delta_max = config.getfloat('CHECKS', 'start_pos_delta_max')
time_delta_max = config.getfloat('CHECKS', 'time_delta_max')
class ModelChecks:
checks_dict = {}
takeoff_checklist = (3, 4, 6, 7, 8)
@classmethod
def col_check(cls, col):
def inner(f):
def wrapper(item):
if item is not None:
return f(item)
return None
cls.checks_dict[col] = wrapper
return wrapper
return inner
@classmethod
def all_checks(cls, copter_item):
for col, check in cls.checks_dict.items():
if not check(copter_item[col]):
return False
return True
@classmethod
def takeoff_checks(cls, copter_item):
for col in cls.takeoff_checklist:
if not cls.checks_dict[col](copter_item[col]):
return False
return True
@ModelChecks.col_check(1)
def check_ver(item):
return True # TODO git version!
@ModelChecks.col_check(2)
def check_anim(item):
return str(item) != 'No animation'
@ModelChecks.col_check(3)
def check_bat(item):
if item == "NO_INFO":
return False
return item[1]*100 > battery_min
@ModelChecks.col_check(4)
def check_sys_status(item):
return item == "STANDBY"
@ModelChecks.col_check(5)
def check_cal_status(item):
return item == "OK"
@ModelChecks.col_check(6)
def check_mode(item):
return (item != "NO_FCU") and not ("CMODE" in item)
@ModelChecks.col_check(7)
def check_selfcheck(item):
return item == "OK"
@ModelChecks.col_check(8)
def check_pos_status(item):
if item == 'NO_POS':
return False
return not math.isnan(item[0])
@ModelChecks.col_check(9)
def check_start_pos_status(item):
return item != 'NO_POS'
@ModelChecks.col_check(10)
def check_time_delta(item):
return abs(item) < time_delta_max
class CopterData:
class_basic_attrs = indexed.IndexedOrderedDict([('copter_id', None), ('git_ver', None), ('anim_id', None),

View File

@@ -174,6 +174,7 @@ class Server(messaging.Singleton):
if not any([client_addr == addr[0] for client_addr in Client.clients.keys()]):
client = Client(addr[0])
client.buffer_size = self.BUFFER_SIZE
logging.info("New client")
else:
client = Client.clients[addr[0]]
@@ -332,7 +333,7 @@ class Client(messaging.ConnectionManager):
@requires_connect
def _send(self, data):
super()._send(data)
logging.debug("Queued data to send: {}".format(data))
logging.debug("Queued data to send (first 256 bytes): {}".format(data[:256]))
def send_config_options(self, *options: ConfigOption, reload_config=True):
logging.info("Sending config options: {} to {}".format(options, self.addr))

View File

@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'server_gui.ui'
#
# Created by: PyQt5 UI code generator 5.13.1
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
@@ -44,9 +44,17 @@ class Ui_MainWindow(object):
self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.verticalLayout.setObjectName("verticalLayout")
self.formLayout = QtWidgets.QFormLayout()
self.formLayout.setLabelAlignment(QtCore.Qt.AlignCenter)
self.formLayout.setFormAlignment(QtCore.Qt.AlignCenter)
self.formLayout.setLabelAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
self.formLayout.setFormAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
self.formLayout.setObjectName("formLayout")
self.start_text = QtWidgets.QLabel(self.centralwidget)
self.start_text.setLayoutDirection(QtCore.Qt.RightToLeft)
self.start_text.setAlignment(QtCore.Qt.AlignCenter)
self.start_text.setObjectName("start_text")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.start_text)
self.start_delay_spin = QtWidgets.QSpinBox(self.centralwidget)
self.start_delay_spin.setObjectName("start_delay_spin")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.start_delay_spin)
self.music_text = QtWidgets.QLabel(self.centralwidget)
self.music_text.setLayoutDirection(QtCore.Qt.RightToLeft)
self.music_text.setObjectName("music_text")
@@ -56,6 +64,10 @@ class Ui_MainWindow(object):
self.music_delay_spin.setMaximum(1000.0)
self.music_delay_spin.setObjectName("music_delay_spin")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.music_delay_spin)
self.music_play_text = QtWidgets.QLabel(self.centralwidget)
self.music_play_text.setLayoutDirection(QtCore.Qt.RightToLeft)
self.music_play_text.setObjectName("music_play_text")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.music_play_text)
self.music_checkbox = QtWidgets.QCheckBox(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -70,18 +82,6 @@ class Ui_MainWindow(object):
self.music_checkbox.setChecked(False)
self.music_checkbox.setObjectName("music_checkbox")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.music_checkbox)
self.music_play_text = QtWidgets.QLabel(self.centralwidget)
self.music_play_text.setLayoutDirection(QtCore.Qt.RightToLeft)
self.music_play_text.setObjectName("music_play_text")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.music_play_text)
self.start_delay_spin = QtWidgets.QSpinBox(self.centralwidget)
self.start_delay_spin.setObjectName("start_delay_spin")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.start_delay_spin)
self.start_text = QtWidgets.QLabel(self.centralwidget)
self.start_text.setLayoutDirection(QtCore.Qt.RightToLeft)
self.start_text.setAlignment(QtCore.Qt.AlignCenter)
self.start_text.setObjectName("start_text")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.start_text)
self.verticalLayout.addLayout(self.formLayout)
self.line = QtWidgets.QFrame(self.centralwidget)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
@@ -89,42 +89,71 @@ class Ui_MainWindow(object):
self.line.setObjectName("line")
self.verticalLayout.addWidget(self.line)
self.formLayout_2 = QtWidgets.QFormLayout()
self.formLayout_2.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.formLayout_2.setLabelAlignment(QtCore.Qt.AlignCenter)
self.formLayout_2.setFormAlignment(QtCore.Qt.AlignCenter)
self.formLayout_2.setObjectName("formLayout_2")
self.stop_button = QtWidgets.QPushButton(self.centralwidget)
self.stop_button.setObjectName("stop_button")
self.formLayout_2.setWidget(10, QtWidgets.QFormLayout.FieldRole, self.stop_button)
self.pause_button = QtWidgets.QPushButton(self.centralwidget)
self.pause_button.setObjectName("pause_button")
self.formLayout_2.setWidget(9, QtWidgets.QFormLayout.FieldRole, self.pause_button)
self.check_button = QtWidgets.QPushButton(self.centralwidget)
self.check_button.setEnabled(True)
self.check_button.setObjectName("check_button")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.check_button)
self.start_button = QtWidgets.QPushButton(self.centralwidget)
self.start_button.setEnabled(True)
self.start_button.setFlat(False)
self.start_button.setObjectName("start_button")
self.formLayout_2.setWidget(8, QtWidgets.QFormLayout.FieldRole, self.start_button)
self.check_button = QtWidgets.QPushButton(self.centralwidget)
self.check_button.setEnabled(True)
self.check_button.setObjectName("check_button")
self.formLayout_2.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.check_button)
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.start_button)
self.pause_button = QtWidgets.QPushButton(self.centralwidget)
self.pause_button.setObjectName("pause_button")
self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.pause_button)
self.verticalLayout.addLayout(self.formLayout_2)
self.line_5 = QtWidgets.QFrame(self.centralwidget)
self.line_5.setFrameShape(QtWidgets.QFrame.HLine)
self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_5.setObjectName("line_5")
self.verticalLayout.addWidget(self.line_5)
self.formLayout_5 = QtWidgets.QFormLayout()
self.formLayout_5.setLabelAlignment(QtCore.Qt.AlignCenter)
self.formLayout_5.setFormAlignment(QtCore.Qt.AlignCenter)
self.formLayout_5.setContentsMargins(-1, 0, -1, -1)
self.formLayout_5.setObjectName("formLayout_5")
self.land_selected_button = QtWidgets.QPushButton(self.centralwidget)
self.land_selected_button.setObjectName("land_selected_button")
self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.land_selected_button)
self.land_all_button = QtWidgets.QPushButton(self.centralwidget)
self.land_all_button.setObjectName("land_all_button")
self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.land_all_button)
self.verticalLayout.addLayout(self.formLayout_5)
self.line_6 = QtWidgets.QFrame(self.centralwidget)
self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_6.setObjectName("line_6")
self.verticalLayout.addWidget(self.line_6)
self.formLayout_7 = QtWidgets.QFormLayout()
self.formLayout_7.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.formLayout_7.setContentsMargins(-1, 0, -1, -1)
self.formLayout_7.setObjectName("formLayout_7")
self.visual_land_button = QtWidgets.QPushButton(self.centralwidget)
self.visual_land_button.setObjectName("visual_land_button")
self.formLayout_7.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.visual_land_button)
self.emergency_land_button = QtWidgets.QPushButton(self.centralwidget)
self.emergency_land_button.setObjectName("emergency_land_button")
self.formLayout_7.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.emergency_land_button)
self.verticalLayout.addLayout(self.formLayout_7)
self.line_2 = QtWidgets.QFrame(self.centralwidget)
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.verticalLayout.addWidget(self.line_2)
self.formLayout_3 = QtWidgets.QFormLayout()
self.formLayout_3.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.formLayout_3.setLabelAlignment(QtCore.Qt.AlignCenter)
self.formLayout_3.setFormAlignment(QtCore.Qt.AlignCenter)
self.formLayout_3.setVerticalSpacing(6)
self.formLayout_3.setObjectName("formLayout_3")
self.disarm_all_button = QtWidgets.QPushButton(self.centralwidget)
self.disarm_all_button.setObjectName("disarm_all_button")
self.formLayout_3.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.disarm_all_button)
self.disarm_button = QtWidgets.QPushButton(self.centralwidget)
self.disarm_button.setObjectName("disarm_button")
self.formLayout_3.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.disarm_button)
self.emergency_button = QtWidgets.QPushButton(self.centralwidget)
self.emergency_button.setObjectName("emergency_button")
self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.emergency_button)
self.disarm_selected_button = QtWidgets.QPushButton(self.centralwidget)
self.disarm_selected_button.setObjectName("disarm_selected_button")
self.formLayout_3.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.disarm_selected_button)
self.verticalLayout.addLayout(self.formLayout_3)
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
@@ -132,11 +161,9 @@ class Ui_MainWindow(object):
self.line_3.setObjectName("line_3")
self.verticalLayout.addWidget(self.line_3)
self.formLayout_4 = QtWidgets.QFormLayout()
self.formLayout_4.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.formLayout_4.setLabelAlignment(QtCore.Qt.AlignCenter)
self.formLayout_4.setFormAlignment(QtCore.Qt.AlignCenter)
self.formLayout_4.setObjectName("formLayout_4")
self.land_button = QtWidgets.QPushButton(self.centralwidget)
self.land_button.setObjectName("land_button")
self.formLayout_4.setWidget(8, QtWidgets.QFormLayout.FieldRole, self.land_button)
self.flip_button = QtWidgets.QPushButton(self.centralwidget)
self.flip_button.setObjectName("flip_button")
self.formLayout_4.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.flip_button)
@@ -170,7 +197,8 @@ class Ui_MainWindow(object):
self.line_4.setObjectName("line_4")
self.verticalLayout.addWidget(self.line_4)
self.formLayout_6 = QtWidgets.QFormLayout()
self.formLayout_6.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.formLayout_6.setLabelAlignment(QtCore.Qt.AlignCenter)
self.formLayout_6.setFormAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)
self.formLayout_6.setObjectName("formLayout_6")
self.reboot_fcu = QtWidgets.QPushButton(self.centralwidget)
self.reboot_fcu.setObjectName("reboot_fcu")
@@ -187,7 +215,7 @@ class Ui_MainWindow(object):
self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1360, 25))
self.menubar.setGeometry(QtCore.QRect(0, 0, 1360, 22))
self.menubar.setObjectName("menubar")
self.menuOptions = QtWidgets.QMenu(self.menubar)
self.menuOptions.setObjectName("menuOptions")
@@ -292,19 +320,20 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Clever Drone Show"))
self.start_text.setText(_translate("MainWindow", " Start after"))
self.start_delay_spin.setSuffix(_translate("MainWindow", " s"))
self.music_text.setText(_translate("MainWindow", " Music after"))
self.music_delay_spin.setSuffix(_translate("MainWindow", " s"))
self.music_play_text.setText(_translate("MainWindow", " Play music"))
self.start_delay_spin.setSuffix(_translate("MainWindow", " s"))
self.start_text.setText(_translate("MainWindow", " Start after"))
self.stop_button.setText(_translate("MainWindow", "Stop and land all"))
self.pause_button.setText(_translate("MainWindow", "Pause"))
self.start_button.setText(_translate("MainWindow", "Start animation"))
self.check_button.setText(_translate("MainWindow", "Preflight check"))
self.start_button.setText(_translate("MainWindow", "Start animation"))
self.pause_button.setText(_translate("MainWindow", "Pause"))
self.land_selected_button.setText(_translate("MainWindow", "Land selected"))
self.land_all_button.setText(_translate("MainWindow", "Land ALL"))
self.visual_land_button.setText(_translate("MainWindow", "Visual land"))
self.emergency_land_button.setText(_translate("MainWindow", "Emergency land"))
self.disarm_all_button.setText(_translate("MainWindow", "Disarm ALL"))
self.disarm_button.setText(_translate("MainWindow", "Disarm selected"))
self.emergency_button.setText(_translate("MainWindow", "Emergency land"))
self.land_button.setText(_translate("MainWindow", "Land"))
self.disarm_selected_button.setText(_translate("MainWindow", "Disarm selected"))
self.flip_button.setText(_translate("MainWindow", "Flip"))
self.takeoff_button.setText(_translate("MainWindow", "Takeoff"))
self.leds_button.setText(_translate("MainWindow", "Test leds"))

View File

@@ -71,11 +71,31 @@
<item>
<layout class="QFormLayout" name="formLayout">
<property name="labelAlignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="formAlignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<item row="2" column="0">
<widget class="QLabel" name="start_text">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string> Start after</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="start_delay_spin">
<property name="suffix">
<string> s</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="music_text">
<property name="layoutDirection">
@@ -99,6 +119,16 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="music_play_text">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string> Play music</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="music_checkbox">
<property name="sizePolicy">
@@ -127,36 +157,6 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="music_play_text">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string> Play music</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="start_delay_spin">
<property name="suffix">
<string> s</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="start_text">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string> Start after</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
@@ -168,24 +168,23 @@
</item>
<item>
<layout class="QFormLayout" name="formLayout_2">
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<property name="labelAlignment">
<set>Qt::AlignCenter</set>
</property>
<item row="10" column="1">
<widget class="QPushButton" name="stop_button">
<property name="formAlignment">
<set>Qt::AlignCenter</set>
</property>
<item row="0" column="1">
<widget class="QPushButton" name="check_button">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Stop and land all</string>
<string>Preflight check</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QPushButton" name="pause_button">
<property name="text">
<string>Pause</string>
</property>
</widget>
</item>
<item row="8" column="1">
<item row="1" column="1">
<widget class="QPushButton" name="start_button">
<property name="enabled">
<bool>true</bool>
@@ -198,13 +197,75 @@
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="check_button">
<property name="enabled">
<bool>true</bool>
</property>
<item row="2" column="1">
<widget class="QPushButton" name="pause_button">
<property name="text">
<string>Preflight check</string>
<string>Pause</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout_5">
<property name="labelAlignment">
<set>Qt::AlignCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignCenter</set>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item row="1" column="1">
<widget class="QPushButton" name="land_selected_button">
<property name="text">
<string>Land selected</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="land_all_button">
<property name="text">
<string>Land ALL</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout_7">
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item row="1" column="1">
<widget class="QPushButton" name="visual_land_button">
<property name="text">
<string>Visual land</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="emergency_land_button">
<property name="text">
<string>Emergency land</string>
</property>
</widget>
</item>
@@ -219,8 +280,11 @@
</item>
<item>
<layout class="QFormLayout" name="formLayout_3">
<property name="labelAlignment">
<set>Qt::AlignCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<set>Qt::AlignCenter</set>
</property>
<property name="verticalSpacing">
<number>6</number>
@@ -233,19 +297,12 @@
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="disarm_button">
<widget class="QPushButton" name="disarm_selected_button">
<property name="text">
<string>Disarm selected</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="emergency_button">
<property name="text">
<string>Emergency land</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@@ -257,16 +314,12 @@
</item>
<item>
<layout class="QFormLayout" name="formLayout_4">
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<property name="labelAlignment">
<set>Qt::AlignCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignCenter</set>
</property>
<item row="8" column="1">
<widget class="QPushButton" name="land_button">
<property name="text">
<string>Land</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="flip_button">
<property name="text">
@@ -341,8 +394,11 @@
</item>
<item>
<layout class="QFormLayout" name="formLayout_6">
<property name="labelAlignment">
<set>Qt::AlignCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
<item row="0" column="1">
<widget class="QPushButton" name="reboot_fcu">
@@ -379,7 +435,7 @@
<x>0</x>
<y>0</y>
<width>1360</width>
<height>25</height>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menuOptions">

View File

@@ -98,7 +98,6 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.check_button.clicked.connect(self.selfcheck_selected)
self.ui.start_button.clicked.connect(self.send_start_time_selected)
self.ui.pause_button.clicked.connect(self.pause_resume_selected)
self.ui.stop_button.clicked.connect(self.land_all)
self.ui.emergency_button.clicked.connect(self.emergency)
self.ui.disarm_button.clicked.connect(partial(self.send_to_selected, "disarm"))
@@ -273,6 +272,12 @@ class MainWindow(QtWidgets.QMainWindow):
self.send_to_selected("resume", {"time": server.time_now() + time_gap})
self.ui.pause_button.setText('Pause')
@pyqtSlot()
def land_selected(self):
for copter in self.model.user_selected():
copter.client.send_message("land")
@pyqtSlot()
def land_all(self):
Client.broadcast_message("land")
@@ -281,6 +286,12 @@ class MainWindow(QtWidgets.QMainWindow):
def disarm_all(self):
Client.broadcast_message("disarm")
@pyqtSlot()
def test_leds_selected(self):
for copter in self.model.user_selected():
copter.client.send_message("led_test")
@pyqtSlot()
@confirmation_required("This operation will takeoff copters immediately. Proceed?")
def takeoff_selected(self):

View File

@@ -1,36 +1,20 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'emergency.ui'
# Form implementation generated from reading ui file 'visual_land.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
import os
import glob
from PyQt5 import QtWidgets
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import Qt, pyqtSlot, pyqtSignal, QObject
from PyQt5.QtWidgets import QDialog
# Importing gui form
from server_qt import *
from server import *
class Ui_Dialog(object):
def __init__(self):
self.Dialog = None
def setupUi(self, Dialog):
self.Dialog = Dialog
Dialog.setObjectName("Dialog")
Dialog.resize(746, 620)
Dialog.setStyleSheet("QDialog{\n"
"background-color: #fffdd0;\n"
"}")
Dialog.setStyleSheet("")
self.two_button = QtWidgets.QPushButton(Dialog)
self.two_button.setGeometry(QtCore.QRect(420, 120, 231, 171))
self.two_button.setSizeIncrement(QtCore.QSize(16, 16))
@@ -42,10 +26,12 @@ class Ui_Dialog(object):
"}")
self.two_button.setObjectName("two_button")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(90, 30, 561, 51))
self.label.setGeometry(QtCore.QRect(60, 30, 631, 51))
font = QtGui.QFont()
font.setPointSize(16)
font.setPointSize(20)
self.label.setFont(font)
self.label.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.one_button = QtWidgets.QPushButton(Dialog)
self.one_button.setGeometry(QtCore.QRect(90, 120, 231, 171))
@@ -54,7 +40,7 @@ class Ui_Dialog(object):
"color: white;\n"
"font-weight: 600;\n"
"font-size: 25pt;\n"
"background-color: RGB(118, 255, 122);\n"
"background-color: green;\n"
"}")
self.one_button.setObjectName("one_button")
self.land_emergency_button = QtWidgets.QPushButton(Dialog)
@@ -73,39 +59,15 @@ class Ui_Dialog(object):
"background-color: white;\n"
"}")
self.disarm_emergency_button.setObjectName("disarm_emergency_button")
self.one_button.clicked.connect(self.one_button_click)
self.two_button.clicked.connect(self.two_button_click)
self.land_emergency_button.clicked.connect(self.land_emergency_click)
self.disarm_emergency_button.clicked.connect(self.disarm_emergency_click)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
Dialog.setWindowTitle(_translate("Dialog", "Visual land"))
self.two_button.setText(_translate("Dialog", "2"))
self.label.setText(_translate("Dialog", "\n"
"Select a group in which the drone does not work correctly"))
self.label.setText(_translate("Dialog", "Select the group with the defective copter"))
self.one_button.setText(_translate("Dialog", "1"))
self.land_emergency_button.setText(_translate("Dialog", "Land"))
self.disarm_emergency_button.setText(_translate("Dialog", "Disarm"))
def one_button_click(self):
self.Dialog.done(1)
def two_button_click(self):
self.Dialog.done(2)
def land_emergency_click(self):
self.Dialog.done(3)
def disarm_emergency_click(self):
self.Dialog.done(4)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
self.disarm_emergency_button.setText(_translate("Dialog", "Disarm"))

View File

@@ -11,12 +11,10 @@
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
<string>Visual land</string>
</property>
<property name="styleSheet">
<string notr="true">QDialog{
background-color: #fffdd0;
}</string>
<string notr="true"/>
</property>
<widget class="QPushButton" name="two_button">
<property name="geometry">
@@ -48,20 +46,25 @@ background-color: red;
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>90</x>
<x>60</x>
<y>30</y>
<width>561</width>
<width>631</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
<pointsize>20</pointsize>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>
Select a group in which the drone does not work correctly</string>
<string>Select the group with the defective copter</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="one_button">
@@ -84,7 +87,7 @@ Select a group in which the drone does not work correctly</string>
color: white;
font-weight: 600;
font-size: 25pt;
background-color: RGB(118, 255, 122);
background-color: green;
}</string>
</property>
<property name="text">