Server: Update user interface

This commit is contained in:
Arthur Golubtsov
2019-09-12 05:03:46 +03:00
parent efd9c41ce7
commit d3a8d11777
4 changed files with 199 additions and 54 deletions

View File

@@ -33,7 +33,7 @@ class CopterDataModel(QtCore.QAbstractTableModel):
def __init__(self, parent=None):
super(CopterDataModel, self).__init__(parent)
self.headers = ('copter ID', 'animation ID', 'battery V', 'battery %', 'sys status', 'calibration status', 'selfcheck', 'time delta')
self.headers = ('copter ID', 'animation ID', 'battery V', 'battery %', 'system status', 'calibration status', 'selfcheck', 'time delta')
self.data_contents = []
def insertRows(self, contents, position='last', parent=QtCore.QModelIndex()):
@@ -93,6 +93,9 @@ class CopterDataModel(QtCore.QAbstractTableModel):
elif role == Qt.CheckStateRole and col == 0:
return self.data_contents[row].checked
if role == QtCore.Qt.TextAlignmentRole and col != 0:
return QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter
def update_model(self, index=QtCore.QModelIndex()):
#self.modelReset.emit()
self.selected_ready_signal.emit(set(self.user_selected()).issubset(self.selfchecked_ready()))

View File

@@ -2,16 +2,17 @@
# Form implementation generated from reading ui file 'server_gui.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
# Created by: PyQt5 UI code generator 5.12.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1284, 740)
MainWindow.resize(1220, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setEnabled(True)
self.centralwidget.setObjectName("centralwidget")
@@ -26,18 +27,30 @@ class Ui_MainWindow(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth())
self.tableView.setSizePolicy(sizePolicy)
self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow)
self.tableView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems)
self.tableView.setTextElideMode(QtCore.Qt.ElideMiddle)
self.tableView.setSortingEnabled(True)
self.tableView.setWordWrap(True)
self.tableView.setObjectName("tableView")
self.tableView.horizontalHeader().setCascadingSectionResizes(False)
self.tableView.horizontalHeader().setDefaultSectionSize(125)
self.tableView.horizontalHeader().setMinimumSectionSize(100)
self.tableView.horizontalHeader().setStretchLastSection(True)
self.horizontalLayout.addWidget(self.tableView)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.verticalLayout.setObjectName("verticalLayout")
self.formLayout = QtWidgets.QFormLayout()
self.formLayout.setLabelAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.formLayout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
self.formLayout.setObjectName("formLayout")
self.check_button = QtWidgets.QPushButton(self.centralwidget)
self.check_button.setEnabled(True)
self.check_button.setObjectName("check_button")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.check_button)
self.start_text = QtWidgets.QLabel(self.centralwidget)
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)
@@ -54,9 +67,6 @@ class Ui_MainWindow(object):
self.stop_button = QtWidgets.QPushButton(self.centralwidget)
self.stop_button.setObjectName("stop_button")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.SpanningRole, self.stop_button)
self.emergency_button = QtWidgets.QPushButton(self.centralwidget)
self.emergency_button.setObjectName("emergency_button")
self.formLayout.setWidget(6, QtWidgets.QFormLayout.SpanningRole, self.emergency_button)
self.verticalLayout.addLayout(self.formLayout)
self.line = QtWidgets.QFrame(self.centralwidget)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
@@ -64,30 +74,62 @@ 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.setObjectName("formLayout_2")
self.disarm_button = QtWidgets.QPushButton(self.centralwidget)
self.disarm_button.setObjectName("disarm_button")
self.formLayout_2.setWidget(7, QtWidgets.QFormLayout.SpanningRole, self.disarm_button)
self.emergency_button = QtWidgets.QPushButton(self.centralwidget)
self.emergency_button.setObjectName("emergency_button")
self.formLayout_2.setWidget(6, QtWidgets.QFormLayout.SpanningRole, self.emergency_button)
self.verticalLayout.addLayout(self.formLayout_2)
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.setVerticalSpacing(6)
self.formLayout_3.setObjectName("formLayout_3")
self.leds_button = QtWidgets.QPushButton(self.centralwidget)
self.leds_button.setObjectName("leds_button")
self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.leds_button)
self.takeoff_button = QtWidgets.QPushButton(self.centralwidget)
self.takeoff_button.setEnabled(True)
self.takeoff_button.setObjectName("takeoff_button")
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.takeoff_button)
self.land_button = QtWidgets.QPushButton(self.centralwidget)
self.land_button.setObjectName("land_button")
self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.land_button)
self.disarm_button = QtWidgets.QPushButton(self.centralwidget)
self.disarm_button.setObjectName("disarm_button")
self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.SpanningRole, self.disarm_button)
self.leds_button = QtWidgets.QPushButton(self.centralwidget)
self.leds_button.setObjectName("leds_button")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.leds_button)
self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.takeoff_button)
self.flip_button = QtWidgets.QPushButton(self.centralwidget)
self.flip_button.setObjectName("flip_button")
self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.SpanningRole, self.flip_button)
self.verticalLayout.addLayout(self.formLayout_2)
self.formLayout_3.setWidget(2, QtWidgets.QFormLayout.SpanningRole, self.flip_button)
self.land_button = QtWidgets.QPushButton(self.centralwidget)
self.land_button.setObjectName("land_button")
self.formLayout_3.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.land_button)
self.verticalLayout.addLayout(self.formLayout_3)
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.verticalLayout.addWidget(self.line_3)
self.formLayout_4 = QtWidgets.QFormLayout()
self.formLayout_4.setFormAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft)
self.formLayout_4.setObjectName("formLayout_4")
self.reboot_fcu = QtWidgets.QPushButton(self.centralwidget)
self.reboot_fcu.setObjectName("reboot_fcu")
self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.reboot_fcu)
self.calibrate_gyro = QtWidgets.QPushButton(self.centralwidget)
self.calibrate_gyro.setObjectName("calibrate_gyro")
self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.calibrate_gyro)
self.calibrate_level = QtWidgets.QPushButton(self.centralwidget)
self.calibrate_level.setObjectName("calibrate_level")
self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.SpanningRole, self.calibrate_level)
self.verticalLayout.addLayout(self.formLayout_4)
self.horizontalLayout.addLayout(self.verticalLayout)
self.horizontalLayout.setStretch(0, 1)
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, 1284, 21))
self.menubar.setGeometry(QtCore.QRect(0, 0, 1220, 25))
self.menubar.setObjectName("menubar")
self.menuOptions = QtWidgets.QMenu(self.menubar)
self.menuOptions.setObjectName("menuOptions")
@@ -105,6 +147,12 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
MainWindow.setTabOrder(self.check_button, self.start_delay_spin)
MainWindow.setTabOrder(self.start_delay_spin, self.start_button)
MainWindow.setTabOrder(self.start_button, self.pause_button)
MainWindow.setTabOrder(self.pause_button, self.stop_button)
MainWindow.setTabOrder(self.stop_button, self.disarm_button)
MainWindow.setTabOrder(self.disarm_button, self.tableView)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
@@ -114,25 +162,19 @@ class Ui_MainWindow(object):
self.start_delay_spin.setSuffix(_translate("MainWindow", " seconds"))
self.start_button.setText(_translate("MainWindow", "Start animation"))
self.pause_button.setText(_translate("MainWindow", "Pause"))
self.stop_button.setText(_translate("MainWindow", "Stop"))
self.emergency_button.setText(_translate("MainWindow", "Emergency land"))
self.takeoff_button.setText(_translate("MainWindow", "Takeoff"))
self.land_button.setText(_translate("MainWindow", "Land"))
self.stop_button.setText(_translate("MainWindow", "Stop and land all"))
self.disarm_button.setText(_translate("MainWindow", "Disarm"))
self.emergency_button.setText(_translate("MainWindow", "Emergency land"))
self.leds_button.setText(_translate("MainWindow", "Test leds"))
self.takeoff_button.setText(_translate("MainWindow", "Takeoff"))
self.flip_button.setText(_translate("MainWindow", "Flip"))
self.land_button.setText(_translate("MainWindow", "Land"))
self.reboot_fcu.setText(_translate("MainWindow", "Reboot FCU"))
self.calibrate_gyro.setText(_translate("MainWindow", "Calibrate gyro"))
self.calibrate_level.setText(_translate("MainWindow", "Calibrate level"))
self.menuOptions.setTitle(_translate("MainWindow", "Actions"))
self.action_send_animations.setText(_translate("MainWindow", "Send Animations"))
self.action_send_configurations.setText(_translate("MainWindow", "Send Configurations"))
self.action_send_Aruco_map.setText(_translate("MainWindow", "Send Aruco map"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1284</width>
<height>740</height>
<width>1220</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
@@ -31,6 +31,33 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectItems</enum>
</property>
<property name="textElideMode">
<enum>Qt::ElideMiddle</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>125</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>100</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
</widget>
</item>
<item>
@@ -40,6 +67,12 @@
</property>
<item>
<layout class="QFormLayout" name="formLayout">
<property name="labelAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="check_button">
<property name="enabled">
@@ -55,6 +88,9 @@
<property name="text">
<string>Start after</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
@@ -87,14 +123,7 @@
<item row="5" column="0" colspan="2">
<widget class="QPushButton" name="stop_button">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QPushButton" name="emergency_button">
<property name="text">
<string>Emergency land</string>
<string>Stop and land all</string>
</property>
</widget>
</item>
@@ -109,6 +138,47 @@
</item>
<item>
<layout class="QFormLayout" name="formLayout_2">
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<item row="7" column="0" colspan="2">
<widget class="QPushButton" name="disarm_button">
<property name="text">
<string>Disarm</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QPushButton" name="emergency_button">
<property name="text">
<string>Emergency land</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout_3">
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QPushButton" name="leds_button">
<property name="text">
<string>Test leds</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="takeoff_button">
<property name="enabled">
@@ -119,6 +189,13 @@
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="flip_button">
<property name="text">
<string>Flip</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="land_button">
<property name="text">
@@ -126,24 +203,38 @@
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="disarm_button">
</layout>
</item>
<item>
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout_4">
<property name="formAlignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
<item row="0" column="0" colspan="2">
<widget class="QPushButton" name="reboot_fcu">
<property name="text">
<string>Disarm</string>
<string>Reboot FCU</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QPushButton" name="leds_button">
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="calibrate_gyro">
<property name="text">
<string>Test leds</string>
<string>Calibrate gyro</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="flip_button">
<widget class="QPushButton" name="calibrate_level">
<property name="text">
<string>Flip</string>
<string>Calibrate level</string>
</property>
</widget>
</item>
@@ -160,8 +251,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1284</width>
<height>21</height>
<width>1220</width>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuOptions">
@@ -190,6 +281,15 @@
</property>
</action>
</widget>
<tabstops>
<tabstop>check_button</tabstop>
<tabstop>start_delay_spin</tabstop>
<tabstop>start_button</tabstop>
<tabstop>pause_button</tabstop>
<tabstop>stop_button</tabstop>
<tabstop>disarm_button</tabstop>
<tabstop>tableView</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@@ -64,8 +64,8 @@ class MainWindow(QtWidgets.QMainWindow):
# Initiate table and table self.model
self.ui.tableView.setModel(self.proxy_model)
self.ui.tableView.horizontalHeader().setStretchLastSection(True)
self.ui.tableView.setSortingEnabled(True)
#self.ui.tableView.horizontalHeader().setStretchLastSection(True)
#self.ui.tableView.setSortingEnabled(True)
# Connect signals to manipulate model from threads
self.signals.update_data_signal.connect(self.model.update_item)