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