diff --git a/Server/server_gui.py b/Server/server_gui.py
index 0826274..a64c38b 100644
--- a/Server/server_gui.py
+++ b/Server/server_gui.py
@@ -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"))
diff --git a/Server/server_gui.ui b/Server/server_gui.ui
index abeb6af..b734dd4 100644
--- a/Server/server_gui.ui
+++ b/Server/server_gui.ui
@@ -11,7 +11,7 @@
- Clever Drone Animation Player
+ Clever Drone Show
@@ -333,27 +333,22 @@
-
-
+
-
- Send Animations
+ Send animations
- Send Configurations
+ Send configurations
- Send Aruco map
+ Send aruco map
- Update client repo
+ Update clever-show git
@@ -411,7 +415,7 @@
- Send .launch file to clever
+ Send launch file to clever
@@ -426,7 +430,7 @@
- Select All
+ Select all drones
Ctrl+A
@@ -467,6 +471,26 @@
Test music after
+
+
+ fill
+
+
+
+
+ Send any file
+
+
+
+
+ Send any command
+
+
+
+
+ Stop music
+
+
start_delay_spin
diff --git a/Server/server_qt.py b/Server/server_qt.py
index da30b9e..328d843 100644
--- a/Server/server_qt.py
+++ b/Server/server_qt.py
@@ -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