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 import roslib
00034 roslib.load_manifest('rqt_publisher')
00035
00036 from python_qt_binding.QtCore import Signal, Slot
00037 from python_qt_binding.QtGui import QAction, QIcon
00038
00039 from .publisher_tree_model import PublisherTreeModel
00040 from rqt_py_common.message_tree_widget import MessageTreeWidget
00041 from rqt_py_common.item_delegates import SpinBoxDelegate
00042
00043
00044 class PublisherTreeWidget(MessageTreeWidget):
00045 remove_publisher = Signal(int)
00046 publish_once = Signal(int)
00047
00048 def __init__(self, parent=None):
00049 super(PublisherTreeWidget, self).__init__(parent)
00050 self.setModel(PublisherTreeModel(self))
00051 self._action_remove_publisher = QAction(QIcon.fromTheme('remove'), 'Remove Selected', self)
00052 self._action_remove_publisher.triggered[bool].connect(self._handle_action_remove_publisher)
00053 self._action_publish_once = QAction(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'], SpinBoxDelegate(min_value=0, max_value=1000000, decimals=2))
00056
00057 @Slot()
00058 def remove_selected_publishers(self):
00059 publisher_ids = self.model().get_publisher_ids(self.selectedIndexes())
00060 for publisher_id in publisher_ids:
00061 self.remove_publisher.emit(publisher_id)
00062 self.model().remove_items_with_parents(self.selectedIndexes())
00063
00064 def _context_menu_add_actions(self, menu, pos):
00065 if self.selectionModel().hasSelection():
00066 menu.addAction(self._action_remove_publisher)
00067 menu.addAction(self._action_publish_once)
00068
00069 super(PublisherTreeWidget, self)._context_menu_add_actions(menu, pos)
00070
00071 def _handle_action_remove_publisher(self, checked):
00072 self.remove_selected_publishers()
00073
00074 def _handle_action_publish_once(self, checked):
00075 for publisher_id in self.model().get_publisher_ids(self.selectedIndexes()):
00076 self.publish_once.emit(publisher_id)