Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 from python_qt_binding.QtCore import Signal, Slot
00034 from python_qt_binding.QtGui import QIcon
00035 from python_qt_binding.QtWidgets import QAction
00036
00037 from .publisher_tree_model import PublisherTreeModel
00038 from rqt_py_common.message_tree_widget import MessageTreeWidget
00039 from rqt_py_common.item_delegates import SpinBoxDelegate
00040
00041
00042 class PublisherTreeWidget(MessageTreeWidget):
00043 remove_publisher = Signal(int)
00044 publish_once = Signal(int)
00045
00046 def __init__(self, parent=None):
00047 super(PublisherTreeWidget, self).__init__(parent)
00048 self.setModel(PublisherTreeModel(self))
00049 self._action_remove_publisher = QAction(
00050 QIcon.fromTheme('list-remove'), 'Remove Selected', self)
00051 self._action_remove_publisher.triggered[bool].connect(self._handle_action_remove_publisher)
00052 self._action_publish_once = QAction(
00053 QIcon.fromTheme('media-playback-start'), 'Publish Selected Once', self)
00054 self._action_publish_once.triggered[bool].connect(self._handle_action_publish_once)
00055 self.setItemDelegateForColumn(self.model()._column_index['rate'],
00056 SpinBoxDelegate(min_value=0, max_value=1000000, decimals=2))
00057
00058 @Slot()
00059 def remove_selected_publishers(self):
00060 publisher_ids = self.model().get_publisher_ids(self.selectedIndexes())
00061 for publisher_id in publisher_ids:
00062 self.remove_publisher.emit(publisher_id)
00063 self.model().remove_items_with_parents(self.selectedIndexes())
00064
00065 def _context_menu_add_actions(self, menu, pos):
00066 if self.selectionModel().hasSelection():
00067 menu.addAction(self._action_remove_publisher)
00068 menu.addAction(self._action_publish_once)
00069
00070 super(PublisherTreeWidget, self)._context_menu_add_actions(menu, pos)
00071
00072 def _handle_action_remove_publisher(self, checked):
00073 self.remove_selected_publishers()
00074
00075 def _handle_action_publish_once(self, checked):
00076 for publisher_id in self.model().get_publisher_ids(self.selectedIndexes()):
00077 self.publish_once.emit(publisher_id)