Server: Update interface

This commit is contained in:
Arthur Golubtsov
2019-10-09 18:43:30 +03:00
parent 2c17aa4929
commit 01287a766e
3 changed files with 99 additions and 53 deletions

View File

@@ -173,12 +173,12 @@ class Ui_MainWindow(object):
self.menuOptions.setObjectName("menuOptions")
self.menuDeveloper_mode = QtWidgets.QMenu(self.menuOptions)
self.menuDeveloper_mode.setObjectName("menuDeveloper_mode")
self.menuTable = QtWidgets.QMenu(self.menubar)
self.menuTable.setObjectName("menuTable")
self.menuAnimation = QtWidgets.QMenu(self.menubar)
self.menuAnimation.setObjectName("menuAnimation")
self.menuDrone = QtWidgets.QMenu(self.menubar)
self.menuDrone.setObjectName("menuDrone")
self.menuDeveloper_mode_2 = QtWidgets.QMenu(self.menuDrone)
self.menuDeveloper_mode_2.setObjectName("menuDeveloper_mode_2")
self.menuMusic = QtWidgets.QMenu(self.menubar)
self.menuMusic.setObjectName("menuMusic")
MainWindow.setMenuBar(self.menubar)
@@ -214,28 +214,40 @@ class Ui_MainWindow(object):
self.action_play_music.setObjectName("action_play_music")
self.action_test_music_after = QtWidgets.QAction(MainWindow)
self.action_test_music_after.setObjectName("action_test_music_after")
self.menuDeveloper_mode.addAction(self.action_send_launch_file)
self.menuDeveloper_mode.addAction(self.action_restart_clever)
self.menuDeveloper_mode.addAction(self.action_restart_clever_show)
self.menuDeveloper_mode.addAction(self.action_update_client_repo)
self.actionFill = QtWidgets.QAction(MainWindow)
self.actionFill.setObjectName("actionFill")
self.action_send_any_file = QtWidgets.QAction(MainWindow)
self.action_send_any_file.setObjectName("action_send_any_file")
self.actionSend_any_command = QtWidgets.QAction(MainWindow)
self.actionSend_any_command.setObjectName("actionSend_any_command")
self.action_stop_music = QtWidgets.QAction(MainWindow)
self.action_stop_music.setObjectName("action_stop_music")
self.menuDeveloper_mode.addAction(self.action_send_any_file)
self.menuDeveloper_mode.addAction(self.actionSend_any_command)
self.menuOptions.addAction(self.action_send_animations)
self.menuOptions.addAction(self.action_send_configurations)
self.menuOptions.addAction(self.action_send_Aruco_map)
self.menuOptions.addAction(self.action_send_launch_file)
self.menuOptions.addSeparator()
self.menuOptions.addAction(self.menuDeveloper_mode.menuAction())
self.menuTable.addAction(self.action_select_all_rows)
self.menuOptions.addSeparator()
self.menuOptions.addAction(self.action_select_all_rows)
self.menuAnimation.addAction(self.action_set_start_to_current_position)
self.menuAnimation.addAction(self.action_reset_start)
self.menuDeveloper_mode_2.addAction(self.action_restart_clever)
self.menuDeveloper_mode_2.addAction(self.action_restart_clever_show)
self.menuDeveloper_mode_2.addAction(self.action_update_client_repo)
self.menuDrone.addAction(self.action_set_z_offset_to_ground)
self.menuDrone.addAction(self.action_reset_z_offset)
self.menuDrone.addSeparator()
self.menuDrone.addAction(self.menuDeveloper_mode_2.menuAction())
self.menuMusic.addAction(self.action_select_music_file)
self.menuMusic.addAction(self.action_play_music)
self.menuMusic.addAction(self.action_test_music_after)
self.menuMusic.addAction(self.action_stop_music)
self.menubar.addAction(self.menuOptions.menuAction())
self.menubar.addAction(self.menuAnimation.menuAction())
self.menubar.addAction(self.menuDrone.menuAction())
self.menubar.addAction(self.menuAnimation.menuAction())
self.menubar.addAction(self.menuMusic.menuAction())
self.menubar.addAction(self.menuTable.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
@@ -243,7 +255,7 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Clever Drone Animation Player"))
MainWindow.setWindowTitle(_translate("MainWindow", "Clever Drone Show"))
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"))
@@ -263,21 +275,21 @@ class Ui_MainWindow(object):
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.menuOptions.setTitle(_translate("MainWindow", "Server"))
self.menuDeveloper_mode.setTitle(_translate("MainWindow", "Developer mode"))
self.menuTable.setTitle(_translate("MainWindow", "Table"))
self.menuAnimation.setTitle(_translate("MainWindow", "Animation"))
self.menuDrone.setTitle(_translate("MainWindow", "Drone"))
self.menuDeveloper_mode_2.setTitle(_translate("MainWindow", "Developer mode"))
self.menuMusic.setTitle(_translate("MainWindow", "Music"))
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"))
self.action_update_client_repo.setText(_translate("MainWindow", "Update client repo"))
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"))
self.action_update_client_repo.setText(_translate("MainWindow", "Update clever-show git"))
self.actionSend_launch_file_for_clever.setText(_translate("MainWindow", "Send launch file for clever"))
self.action_send_launch_file.setText(_translate("MainWindow", "Send .launch file to clever"))
self.action_send_launch_file.setText(_translate("MainWindow", "Send launch file to clever"))
self.action_restart_clever.setText(_translate("MainWindow", "Restart clever service"))
self.action_restart_clever_show.setText(_translate("MainWindow", "Restart clever-show service"))
self.action_select_all_rows.setText(_translate("MainWindow", "Select All"))
self.action_select_all_rows.setText(_translate("MainWindow", "Select all drones"))
self.action_select_all_rows.setShortcut(_translate("MainWindow", "Ctrl+A"))
self.action_set_start_to_current_position.setText(_translate("MainWindow", "Set start X Y to current position"))
self.action_reset_start.setText(_translate("MainWindow", "Reset start position"))
@@ -286,3 +298,7 @@ class Ui_MainWindow(object):
self.action_select_music_file.setText(_translate("MainWindow", "Select music file"))
self.action_play_music.setText(_translate("MainWindow", "Play music"))
self.action_test_music_after.setText(_translate("MainWindow", "Test music after"))
self.actionFill.setText(_translate("MainWindow", "fill"))
self.action_send_any_file.setText(_translate("MainWindow", "Send any file"))
self.actionSend_any_command.setText(_translate("MainWindow", "Send any command"))
self.action_stop_music.setText(_translate("MainWindow", "Stop music"))

View File

@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>Clever Drone Animation Player</string>
<string>Clever Drone Show</string>
</property>
<widget class="QWidget" name="centralwidget">
<property name="enabled">
@@ -333,27 +333,22 @@
</property>
<widget class="QMenu" name="menuOptions">
<property name="title">
<string>Actions</string>
<string>Server</string>
</property>
<widget class="QMenu" name="menuDeveloper_mode">
<property name="title">
<string>Developer mode</string>
</property>
<addaction name="action_send_launch_file"/>
<addaction name="action_restart_clever"/>
<addaction name="action_restart_clever_show"/>
<addaction name="action_update_client_repo"/>
<addaction name="action_send_any_file"/>
<addaction name="actionSend_any_command"/>
</widget>
<addaction name="action_send_animations"/>
<addaction name="action_send_configurations"/>
<addaction name="action_send_Aruco_map"/>
<addaction name="action_send_launch_file"/>
<addaction name="separator"/>
<addaction name="menuDeveloper_mode"/>
</widget>
<widget class="QMenu" name="menuTable">
<property name="title">
<string>Table</string>
</property>
<addaction name="separator"/>
<addaction name="action_select_all_rows"/>
</widget>
<widget class="QMenu" name="menuAnimation">
@@ -367,8 +362,18 @@
<property name="title">
<string>Drone</string>
</property>
<widget class="QMenu" name="menuDeveloper_mode_2">
<property name="title">
<string>Developer mode</string>
</property>
<addaction name="action_restart_clever"/>
<addaction name="action_restart_clever_show"/>
<addaction name="action_update_client_repo"/>
</widget>
<addaction name="action_set_z_offset_to_ground"/>
<addaction name="action_reset_z_offset"/>
<addaction name="separator"/>
<addaction name="menuDeveloper_mode_2"/>
</widget>
<widget class="QMenu" name="menuMusic">
<property name="title">
@@ -376,32 +381,31 @@
</property>
<addaction name="action_select_music_file"/>
<addaction name="action_play_music"/>
<addaction name="action_test_music_after"/>
<addaction name="action_stop_music"/>
</widget>
<addaction name="menuOptions"/>
<addaction name="menuAnimation"/>
<addaction name="menuDrone"/>
<addaction name="menuAnimation"/>
<addaction name="menuMusic"/>
<addaction name="menuTable"/>
</widget>
<action name="action_send_animations">
<property name="text">
<string>Send Animations</string>
<string>Send animations</string>
</property>
</action>
<action name="action_send_configurations">
<property name="text">
<string>Send Configurations</string>
<string>Send configurations</string>
</property>
</action>
<action name="action_send_Aruco_map">
<property name="text">
<string>Send Aruco map</string>
<string>Send aruco map</string>
</property>
</action>
<action name="action_update_client_repo">
<property name="text">
<string>Update client repo</string>
<string>Update clever-show git</string>
</property>
</action>
<action name="actionSend_launch_file_for_clever">
@@ -411,7 +415,7 @@
</action>
<action name="action_send_launch_file">
<property name="text">
<string>Send .launch file to clever</string>
<string>Send launch file to clever</string>
</property>
</action>
<action name="action_restart_clever">
@@ -426,7 +430,7 @@
</action>
<action name="action_select_all_rows">
<property name="text">
<string>Select All</string>
<string>Select all drones</string>
</property>
<property name="shortcut">
<string>Ctrl+A</string>
@@ -467,6 +471,26 @@
<string>Test music after</string>
</property>
</action>
<action name="actionFill">
<property name="text">
<string>fill</string>
</property>
</action>
<action name="action_send_any_file">
<property name="text">
<string>Send any file</string>
</property>
</action>
<action name="actionSend_any_command">
<property name="text">
<string>Send any command</string>
</property>
</action>
<action name="action_stop_music">
<property name="text">
<string>Stop music</string>
</property>
</action>
</widget>
<tabstops>
<tabstop>start_delay_spin</tabstop>

View File

@@ -143,7 +143,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.action_reset_z_offset.triggered.connect(self.reset_z_offset)
self.ui.action_select_music_file.triggered.connect(self.select_music_file)
self.ui.action_play_music.triggered.connect(self.play_music)
self.ui.action_test_music_after.triggered.connect(self.test_music_after)
self.ui.action_stop_music.triggered.connect(self.stop_music)
# Set most safety-important buttons disabled
self.ui.start_button.setEnabled(False)
@@ -390,47 +390,53 @@ class MainWindow(QtWidgets.QMainWindow):
@pyqtSlot()
def select_music_file(self):
path = QFileDialog.getOpenFileName(self, "Select music file", filter="Music files (*.mp3)")[0]
path = QFileDialog.getOpenFileName(self, "Select music file", filter="Music files (*.mp3 *.wav)")[0]
if path:
media = QUrl.fromLocalFile(path)
content = QtMultimedia.QMediaContent(media)
self.player.setMedia(content)
self.ui.action_select_music_file.setText(self.ui.action_select_music_file.text() + " (selected)")
@pyqtSlot()
def play_music(self):
if self.player.mediaStatus() == QtMultimedia.QMediaPlayer.InvalidMedia:
logger.info("Can't play media")
logging.info("Can't play media")
return
if self.player.mediaStatus() == QtMultimedia.QMediaPlayer.NoMedia:
logger.info("No media file")
logging.info("No media file")
return
if self.player.state() == QtMultimedia.QMediaPlayer.StoppedState or \
self.player.state() == QtMultimedia.QMediaPlayer.PausedState:
self.ui.action_play_music.setText("Pause music")
self.player.play()
else:
self.ui.action_play_music.setText("Play music")
self.player.pause()
@pyqtSlot()
def stop_music(self):
if self.player.mediaStatus() == QtMultimedia.QMediaPlayer.InvalidMedia:
logging.info("Can't stop media")
return
if self.player.mediaStatus() == QtMultimedia.QMediaPlayer.NoMedia:
logging.info("No media file")
return
self.player.stop()
@asyncio.coroutine
def play_music_at_time(self, t):
if self.player.mediaStatus() == QtMultimedia.QMediaPlayer.InvalidMedia:
logger.info("Can't play media")
logging.info("Can't play media")
return
if self.player.mediaStatus() == QtMultimedia.QMediaPlayer.NoMedia:
logger.info("No media file")
logging.info("No media file")
return
self.player.stop()
yield from asyncio.sleep(t - time.time())
#wait(t)
logging.info("Playing music")
self.player.play()
@pyqtSlot()
def test_music_after(self):
dt = self.ui.music_delay_spin.value()
asyncio.ensure_future(self.play_music_at_time(dt+time.time()), loop=loop)
logging.info('Wait {} seconds to play music'.format(dt))
@pyqtSlot()
def emergency(self):
client_row_min = 0