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_py_common')
00035 import rospy
00036
00037 from python_qt_binding.QtCore import qWarning
00038
00039 from .message_tree_model import MessageTreeModel
00040 from .tree_model_completer import TreeModelCompleter
00041
00042
00043 class TopicCompleter(TreeModelCompleter):
00044
00045 def __init__(self, parent=None):
00046 super(TopicCompleter, self).__init__(parent)
00047 self.setModel(MessageTreeModel())
00048
00049 def update_topics(self):
00050 self.model().clear()
00051 topic_list = rospy.get_published_topics()
00052 for topic_path, topic_type in topic_list:
00053 topic_name = topic_path.strip('/')
00054 message_class = roslib.message.get_message_class(topic_type)
00055 if message_class is None:
00056 qWarning('TopicCompleter.update_topics(): could not get message class for topic type "%s" on topic "%s"' % (topic_type, topic_path))
00057 continue
00058 message_instance = message_class()
00059 self.model().add_message(message_instance, topic_name, topic_type, topic_path)
00060
00061
00062 if __name__ == '__main__':
00063 import sys
00064 from python_qt_binding.QtGui import QApplication, QComboBox, QLineEdit, QMainWindow, QTreeView, QVBoxLayout, QWidget
00065 app = QApplication(sys.argv)
00066 mw = QMainWindow()
00067 widget = QWidget(mw)
00068 layout = QVBoxLayout(widget)
00069
00070 edit = QLineEdit()
00071 edit_completer = TopicCompleter(edit)
00072
00073 edit.setCompleter(edit_completer)
00074
00075 combo = QComboBox()
00076 combo.setEditable(True)
00077 combo_completer = TopicCompleter(combo)
00078
00079 combo.lineEdit().setCompleter(combo_completer)
00080
00081 model_tree = QTreeView()
00082 model_tree.setModel(combo_completer.model())
00083 model_tree.expandAll()
00084 for column in range(combo_completer.model().columnCount()):
00085 model_tree.resizeColumnToContents(column)
00086
00087 completion_tree = QTreeView()
00088 completion_tree.setModel(combo_completer.completionModel())
00089 completion_tree.expandAll()
00090 for column in range(combo_completer.completionModel().columnCount()):
00091 completion_tree.resizeColumnToContents(column)
00092
00093 layout.addWidget(model_tree)
00094 layout.addWidget(completion_tree)
00095 layout.addWidget(edit)
00096 layout.addWidget(combo)
00097 layout.setStretchFactor(model_tree, 1)
00098 widget.setLayout(layout)
00099 mw.setCentralWidget(widget)
00100
00101 mw.move(300, 0)
00102 mw.resize(800, 900)
00103 mw.show()
00104 app.exec_()