def __init__(self, context, icon_paths=None, minimal=True): ok_icon = ['bg-green.svg', 'ic-console.svg'] warn_icon = ['bg-yellow.svg', 'ic-console.svg', 'ol-warn-badge.svg'] err_icon = ['bg-red.svg', 'ic-console.svg', 'ol-err-badge.svg'] stale_icon = ['bg-grey.svg', 'ic-console.svg', 'ol-stale-badge.svg'] icons = [ok_icon, warn_icon, err_icon, stale_icon] super(ConsoleDashWidget, self).__init__('Console Widget', icons, icon_paths=icon_paths) self.minimal = minimal self.setFixedSize(self._icons[0].actualSize(QSize(50, 30))) self._datamodel = MessageDataModel() self._proxymodel = MessageProxyModel() self._proxymodel.setSourceModel(self._datamodel) self._mutex = QMutex() self._subscriber = ConsoleSubscriber(self._message_cb) self._console = None self.context = context self.clicked.connect(self._show_console) self.update_state(0) self._timer = QTimer() self._timer.timeout.connect(self._insert_messages) self._timer.start(100) if self._console is None: self._console = ConsoleWidget(self._proxymodel, self.minimal) self._console.destroyed.connect(self._console_destroyed) self._console_shown = False self.setToolTip("Rosout")
def onCreate(self, param): layout = QGridLayout(self) layout.setContentsMargins(2, 2, 2, 2) self._rospack = rospkg.RosPack() self._model = MessageDataModel() self._proxy_model = MessageProxyModel() self._proxy_model.setSourceModel(self._model) self.__widget = ConsoleWidget(self._proxy_model, self._rospack) layout.addWidget(self.__widget, 0, 0, 0, 0) # queue to store incoming data which get flushed periodically to the model # required since QSortProxyModel can not handle a high insert rate self._message_queue = [] self._mutex = QMutex() self._timer = QTimer() self._timer.timeout.connect(self.insert_messages) self._timer.start(100) self._subscriber = None self._topic = '/rosout_agg' self._subscribe(self._topic)
def __init__(self, context): """ :param context: plugin context hook to enable adding widgets as a ROS_GUI pane, ''PluginContext'' """ super(Console, self).__init__(context) self.setObjectName('Console') self._context = context self._model = MessageDataModel() self._proxy_model = MessageProxyModel() self._proxy_model.setSourceModel(self._model) self._widget = ConsoleWidget(self._proxy_model) if context.serial_number() > 1: self._widget.setWindowTitle( self._widget.windowTitle() + (' (%d)' % context.serial_number())) context.add_widget(self._widget) # queue to store incoming data which get flushed periodically to the model # required since QSortProxyModel can not handle a high insert rate self._message_queue = [] self._mutex = QMutex() self._timer = QTimer() self._timer.timeout.connect(self.insert_messages) self._timer.start(100) self._subscriber = None self._topic = '/rosout' self._subscribe(self._topic)