August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)

Cookbook Example

How can I...?

Example 6: How to build a network controllable graph viewer. Components used:TopologyViewerServer

#!/usr/bin/python

from Kamaelia.Visualisation.PhysicsGraph.TopologyViewerServer import TopologyViewerServer

def parseArgs(argv, extraShortArgs="", extraLongArgs=[]):
    import getopt

    shortargs = "fh" + extraShortArgs
    longargs  = list("help","fullscreen","resolution=","port=") + extraLongArgs

    optlist, remargs = getopt.getopt(argv, shortargs, longargs)

    dictArgs = {}
    for o,a in optlist:
        if o in ("-h","--help"):
            dictArgs['help'] = "Arguments:\n" + \
                               "   -h, --help\n" + \
                               "      This help message\n\n" + \
                               "   -f, --fullscreen\n" + \
                               "      Full screen mode\n\n" + \
                               "   --resolution=WxH\n" + \
                               "      Set window size to W by H pixels\n\n" + \
                               "   --port=N\n" + \
                               "      Listen on port N (default is 1500)\n\n"

        elif o in ("-f","--fullscreen"):
            dictArgs['fullscreen'] = True

        elif o in ("--resolution"):
            match = re.match(r"^(\d+)[x,-](\d+)$", a)
            x=int(match.group(1))
            y=int(match.group(2))
            dictArgs['screensize'] = (x,y)

        elif o in ("--port"):
            dictArgs['serverPort'] = int(a)

    return dictArgs, optlist, remargs

if __name__=="__main__":
    import sys
    dictArgs, remargs, junk = parseArgs(sys.argv[1:])

    if "help" in dictArgs:
        print dictArgs["help"]
    else:
        TopologyViewerServer(**dictArgs).run()

Source: Examples/example6/TopologyVisualiser.py