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 os
00034 import argparse
00035 import threading
00036
00037 from qt_gui.plugin import Plugin
00038
00039 from .bag_widget import BagWidget
00040
00041
00042 class Bag(Plugin):
00043
00044 """
00045 Subclass of Plugin to provide interactive bag visualization, playing(publishing) and recording
00046 """
00047
00048 def __init__(self, context):
00049 """
00050 :param context: plugin context hook to enable adding widgets as a ROS_GUI pane, ''PluginContext''
00051 """
00052 super(Bag, self).__init__(context)
00053 self.setObjectName('Bag')
00054
00055 args = self._parse_args(context.argv())
00056
00057 self._widget = BagWidget(context, args.clock)
00058 if context.serial_number() > 1:
00059 self._widget.setWindowTitle(
00060 self._widget.windowTitle() + (' (%d)' % context.serial_number()))
00061 context.add_widget(self._widget)
00062
00063 def load_bags():
00064 for bagfile in args.bagfiles:
00065 self._widget.load_bag(bagfile)
00066
00067 load_thread = threading.Thread(target=load_bags)
00068 load_thread.start()
00069
00070 def _parse_args(self, argv):
00071 parser = argparse.ArgumentParser(prog='rqt_bag', add_help=False)
00072 Bag.add_arguments(parser)
00073 return parser.parse_args(argv)
00074
00075 @staticmethod
00076 def _isfile(parser, arg):
00077 if os.path.isfile(arg):
00078 return arg
00079 else:
00080 parser.error("Bag file %s does not exist" % (arg))
00081
00082 @staticmethod
00083 def add_arguments(parser):
00084 group = parser.add_argument_group('Options for rqt_bag plugin')
00085 group.add_argument('--clock', action='store_true', help='publish the clock time')
00086 group.add_argument('bagfiles', type=lambda x: Bag._isfile(parser, x),
00087 nargs='*', default=[], help='Bagfiles to load')
00088
00089 def shutdown_plugin(self):
00090 self._widget.shutdown_all()
00091
00092 def save_settings(self, plugin_settings, instance_settings):
00093
00094
00095 pass
00096
00097 def restore_settings(self, plugin_settings, instance_settings):
00098
00099
00100 pass
00101
00102
00103