From: mtk Date: Sun, 25 Jul 2010 15:27:03 +0000 (+0000) Subject: imported Stefan's colored version of drawmodules... X-Git-Url: http://g0dil.de/git?p=senf.git;a=commitdiff_plain;h=62e4ecafd13729e2e303011a8b5d3c3c00e01600 imported Stefan's colored version of drawmodules... git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@1649 270642c3-0616-0410-b53a-bc976706d245 --- diff --git a/tools/drawmodules.py b/tools/drawmodules.py index 51c6aaa..05a27c0 100755 --- a/tools/drawmodules.py +++ b/tools/drawmodules.py @@ -2,6 +2,8 @@ import sys +COLOR_SCHEME = 'pastel19' # see http://www.graphviz.org/doc/info/colors.html + mode = "MODULE" sys.stdout.write(""" @@ -11,6 +13,11 @@ node [shape=Mrecord, fontsize=8, fontname="Helvetica"]; modules = {} connectors = {} +p = 0 + +for opt in sys.argv: + if opt in ("-p","--packet"): + p = 1 for line in sys.stdin: line = line.strip() @@ -25,39 +32,56 @@ for line in sys.stdin: else: connectorid, type = line.split(' ',1); connectorid = connectorid[1:] - elts = type.rsplit(' ',1); + + packet = type.rsplit('<',1)[1]; + packet = packet.rsplit('::',1)[-1]; + packet = packet.split('>',1)[0]; + + elts = type.rsplit(' ',1); if elts[-1].startswith('0x'): type, peerid = elts peerid = peerid[1:] else: peerid = None - modules[moduleid][1].append((connectorid, type, peerid)) + modules[moduleid][1].append((connectorid, type, peerid, packet)) connectors[connectorid] = moduleid for moduleid, (module, cs) in modules.iteritems(): module = module.split('<',1)[0] + if "senf" not in module.split('::',1)[0]: + color = 6 + elif "senf::ppi::module::ActiveSocketSource" in module: + color = 1 + elif "senf::ppi::module::PassiveSocketSink" in module: + color = 1 + else: + color = 3 module = module.rsplit('::',1)[-1] inputs = [] outputs = [] - for connectorid, type, peerid in cs: + for connectorid, type, peerid,packet in cs: if 'Input' in type: inputs.append("<%s>%s" % (connectorid,connectorid)) else: outputs.append("<%s>%s" % (connectorid,connectorid)) rows = [] if inputs: rows.append("{%s}" % "|".join(inputs)) rows.append("%s (%s)" % (module, moduleid)) if outputs: rows.append("{%s}" % "|".join(outputs)) - sys.stdout.write('%s [label="{%s}"]\n' % (moduleid, "|".join(rows) )) + sys.stdout.write('%s [label="{%s}" style="filled" fillcolor="/%s/%s" ]\n' % (moduleid, "|".join(rows), COLOR_SCHEME, color )) anonid = 0 for moduleid, (type, cs) in modules.iteritems(): - for connectorid, type, peerid in cs: + for connectorid, type, peerid, packet in cs: opts = [] if "Passive" in type: opts.append("arrowtail=odot"); opts = ",".join(opts) if opts: opts = " [%s]" % opts if "Output" in type and peerid is not None: - sys.stdout.write('%s:%s -> %s:%s%s\n' + if "Packet" in packet and p is 1: + sys.stdout.write('%s:%s -> %s:%s%s [label=" %s", fontsize=8, fontname="Helvetica"]\n' + % (moduleid, connectorid, connectors[peerid], peerid, opts,packet)) + else: + sys.stdout.write('%s:%s -> %s:%s%s\n' % (moduleid, connectorid, connectors[peerid], peerid, opts)) elif peerid is None: sys.stdout.write('anon%d [label="", shape=point, height=.05];\n' % anonid)