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
00034
00035 from __future__ import print_function
00036
00037 import logging
00038 import sys
00039 import subprocess
00040 from optparse import OptionParser
00041
00042 import rxgraph.impl
00043 import rosgraph.roslogging
00044
00045 def rxgraph_main():
00046 parser = OptionParser(usage="usage: rxgraph [options]")
00047 parser.add_option("-o", "--dot",
00048 dest="output_file", default=None,
00049 help="ouput graph as graphviz dot file", metavar="DOTFILE")
00050 parser.add_option("--nodens",
00051 dest="node_ns", default=None,
00052 help="only show nodes in specified namespace")
00053 parser.add_option("--topicns",
00054 dest="topic_ns", default=None,
00055 help="only show topics in specified namespace")
00056
00057 options, args = parser.parse_args()
00058 if args:
00059 parser.error("invalid arguments")
00060
00061 graphviz_found = False
00062 try:
00063 p = subprocess.Popen(['dot', '-V'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
00064 p.communicate()
00065 if p.returncode == 0:
00066 graphviz_found = True
00067 except:
00068 pass
00069
00070 if not graphviz_found:
00071 print("Graphviz does not appear to be installed on your system. Please run:\n\n\trosdep install rxgraph\n\nto install the necessary dependencies on your system",file=sys.stderr)
00072 sys.exit(1)
00073
00074
00075
00076 rosgraph.roslogging.configure_logging('rxgraph', logging.INFO)
00077 try:
00078 import wx
00079 app = wx.App()
00080
00081 frame = rxgraph.impl.init_frame()
00082 updater = rxgraph.impl.init_updater(frame, node_ns=options.node_ns, topic_ns=options.topic_ns, output_file=options.output_file)
00083 updater.start()
00084
00085 frame.Show()
00086 app.MainLoop()
00087
00088 except KeyboardInterrupt:
00089 pass
00090 finally:
00091 rxgraph.impl.set_shutdown(True)
00092
00093
00094 if __name__ == '__main__':
00095 rxgraph_main()