1 from distutils.version
import LooseVersion
5 from threading
import Lock
7 import python_qt_binding
8 import python_qt_binding.QtCore
as QtCore
9 from python_qt_binding.QtCore
import QEvent
10 from python_qt_binding.QtCore
import QSize
11 from python_qt_binding.QtCore
import Qt
12 from python_qt_binding.QtCore
import QTimer
13 from python_qt_binding.QtCore
import qWarning
14 from python_qt_binding.QtCore
import Slot
15 import python_qt_binding.QtGui
as QtGui
16 from python_qt_binding.QtGui
import QBrush
17 from python_qt_binding.QtGui
import QColor
18 from python_qt_binding.QtGui
import QFont
19 from python_qt_binding.QtGui
import QIcon
20 from python_qt_binding.QtGui
import QPainter
21 from python_qt_binding.QtGui
import QPen
24 from resource_retriever
import get_filename
29 from std_msgs.msg
import Bool
30 from std_msgs.msg
import Time
31 from std_msgs.msg
import String
33 from .util
import get_slot_type_field_names
34 from .hist
import ROSData
35 from .button_general
import LineEditDialog
37 if LooseVersion(python_qt_binding.QT_BINDING_VERSION).version[0] >= 5:
38 from python_qt_binding.QtWidgets
import QAction
39 from python_qt_binding.QtWidgets
import QComboBox
40 from python_qt_binding.QtWidgets
import QLabel
41 from python_qt_binding.QtWidgets
import QMenu
42 from python_qt_binding.QtWidgets
import QMessageBox
43 from python_qt_binding.QtWidgets
import QSizePolicy
44 from python_qt_binding.QtWidgets
import QVBoxLayout
45 from python_qt_binding.QtWidgets
import QWidget
48 from python_qt_binding.QtGui
import QAction
49 from python_qt_binding.QtGui
import QComboBox
50 from python_qt_binding.QtGui
import QLabel
51 from python_qt_binding.QtGui
import QMenu
52 from python_qt_binding.QtGui
import QMessageBox
53 from python_qt_binding.QtGui
import QSizePolicy
54 from python_qt_binding.QtGui
import QVBoxLayout
55 from python_qt_binding.QtGui
import QWidget
60 rqt plugin to provide simple label 63 super(StringLabel, self).
__init__(context)
64 self.setObjectName(
"StringLabel")
66 context.add_widget(self.
_widget)
69 self._widget.save_settings(plugin_settings, instance_settings)
72 self._widget.restore_settings(plugin_settings, instance_settings)
75 self._widget.trigger_configuration()
80 super(StringLabelWidget, self).
__init__()
82 vbox = QVBoxLayout(self)
84 self.label.setAlignment(Qt.AlignLeft)
85 self.label.setSizePolicy(
86 QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored))
87 font = QFont(
"Helvetica", 14)
88 self.label.setFont(font)
89 self.label.setWordWrap(
True)
90 vbox.addWidget(self.
label)
94 self._update_topic_timer.timeout.connect(self.
updateTopics)
95 self._update_topic_timer.start(1000)
102 self._update_label_timer.timeout.connect(self.
updateLabel)
103 self._update_label_timer.start(40)
113 _, data_y = self._rosdata.next()
121 if type(latest) == String:
126 self.label.setText(self.
string)
127 except TypeError
as e:
131 need_to_update =
False 132 for (topic, topic_type)
in rospy.get_published_topics():
133 msg = roslib.message.get_message_class(topic_type)
135 for field
in field_names:
136 string_topic = topic + field
138 self._string_topics.append(string_topic)
139 need_to_update =
True 142 self._dialog.combo_box.clear()
144 self._dialog.combo_box.addItem(topic)
149 self._dialog.combo_box.setCurrentIndex(
157 self._rosdata.close()
160 rospy.logwarn(
"%s is already subscribed", topic)
168 instance_settings.set_value(
"active_topic", self.
_active_topic)
171 if instance_settings.value(
"active_topic"):
172 topic = instance_settings.value(
"active_topic")
173 self._dialog.combo_box.addItem(topic)
def save_settings(self, plugin_settings, instance_settings)
def restore_settings(self, plugin_settings, instance_settings)
def get_slot_type_field_names(msg, slot_type, field_name=None, found=None)
def trigger_configuration(self)
def __init__(self, context)