diff --git a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py index 9639959..0342777 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -10,6 +10,8 @@ class WaypointsCoordinator(QtCore.QThread): def __init__(self, shared_objects): super(WaypointsCoordinator, self).__init__() self.run_thread_flag = True + self.navigation_table_cur_click = None + self.landmark_table_cur_click = None self.shared_objects = shared_objects self.left_screen = self.shared_objects["screens"]["left_screen"] @@ -26,14 +28,14 @@ class WaypointsCoordinator(QtCore.QThread): manual_waypoint_decimal_longitude_spin_box) # Nav Table Buttons - self.nav_set_label = (self.left_screen. - navigation_waypoints_set_button) - self.nav_add_manual_label = (self.left_screen. - navigation_waypoints_add_manual_button) - self.nav_add_gps_label = (self.left_screen. - navigation_waypoints_add_gps_button) - self.nav_delete_label = (self.left_screen. - navigation_waypoints_delete_button) + self.nav_set_button_label = (self.left_screen. + navigation_waypoints_set_button) + self.nav_add_manual_button_label = ( + self.left_screen.navigation_waypoints_add_manual_button) + self.nav_add_gps_button_label = (self.left_screen. + navigation_waypoints_add_gps_button) + self.nav_delete_button_label = (self.left_screen. + navigation_waypoints_delete_button) self.settings = QtCore.QSettings() @@ -47,7 +49,10 @@ class WaypointsCoordinator(QtCore.QThread): self.new_manual_waypoint_entry.connect(self.update_manual_entry) # setting up signals to save for Navigation Table - self.nav_add_gps_label.clicked.connect(self._nav_add_gps) + self.nav_add_gps_button_label.clicked.connect(self._nav_add_gps) + self.nav_delete_button_label.clicked.connect(self._nav_del) + self.nav_add_manual_button_label.clicked.connect(self._nav_add_manual) + self.nav_set_button_label.clicked.connect(self._nav_save) self.navigation_label.cellClicked.connect(self._on_nav_clicked) self.landmark_label.cellClicked.connect(self._on_land_clicked) @@ -56,9 +61,14 @@ class WaypointsCoordinator(QtCore.QThread): count = table.rowCount() table.insertRow(count) table.setItem(count, 0, QtWidgets.QTableWidgetItem(name)) - table.setItem(count, 1, QtWidgets.QTableWidgetItem(str(lat))) - table.setItem(count, 2, QtWidgets.QTableWidgetItem(str(lng))) - table.setItem(count, 3, QtWidgets.QTableWidgetItem(str(dist))) + table.setItem(count, 1, QtWidgets.QTableWidgetItem(lat)) + table.setItem(count, 2, QtWidgets.QTableWidgetItem(lng)) + table.setItem(count, 3, QtWidgets.QTableWidgetItem(dist)) + + def _clear_inputs(self): + self.name_edit_label.clear() + self.latitude_label.clear() + self.longitude_label.clear() def _nav_add_gps(self): # request GPS data @@ -66,7 +76,43 @@ class WaypointsCoordinator(QtCore.QThread): lat = 44.567200 lng = -123.27860 distance = 200 - self._add_to_table(str(name), lat, lng, distance, self.navigation_label) + self._add_to_table(str(name), str(lat), + str(lng), str(distance), + self.navigation_label) + self._clear_inputs() + + def _nav_save(self): + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + self.navigation_label.setItem(self.navigation_table_cur_click, + 1, + QtWidgets.QTableWidgetItem(lat)) + self.navigation_label.setItem(self.navigation_label, + 2, + QtWidgets.QTableWidgetItem(lng)) + self._clear_inputs() + + def _nav_add_manual(self): + # request GPS data + name = self.navigation_label.rowCount() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + distance = 200 + self._add_to_table(str(name), lat, + lng, str(distance), + self.navigation_label) + self._clear_inputs + + def _nav_del(self): + if self.navigation_table_cur_click is not None: + self.navigation_label.removeRow(self.navigation_table_cur_click) + count = self.navigation_label.rowCount() + for x in range(self.navigation_table_cur_click, count): + self.navigation_label.setItem(x, + 0, + QtWidgets. + QTableWidgetItem(str(x))) + self._clear_inputs def setup_signals(self, start_signal, signals_and_slots_signal, kill_signal): @@ -78,13 +124,14 @@ class WaypointsCoordinator(QtCore.QThread): self.run_thread_flag = False def update_manual_entry(self, name, lat, lng, table): - print name, lat, lng, table self.name_edit_label.setEnabled(bool(table)) self.name_edit_label.setText(name) self.latitude_label.setValue(lat) self.longitude_label.setValue(lng) def _on_nav_clicked(self, row, col): + self.navigation_table_cur_click = row + self.landmark_table_cur_click = None self.new_manual_waypoint_entry.emit( self.navigation_label.item(row, 0).text(), float(self.navigation_label.item(row, 1).text()), @@ -93,6 +140,8 @@ class WaypointsCoordinator(QtCore.QThread): ) def _on_land_clicked(self, row, col): + self.landmark_table_cur_click = row + self.navigation_table_cur_click = None self.new_manual_waypoint_entry.emit( self.landmark_label.item(row, 0).text(), float(self.landmark_label.item(row, 1).text()),