# runs all the GUIedit charts in this directory -
# makes a PDF sample for eaxh existing chart type
import sys
import glob
import string
import inspect
import types

def moduleClasses(mod):
    def P(obj, m=mod.__name__, CT=types.ClassType):
        return (type(obj)==CT and obj.__module__==m)
    try:
        return inspect.getmembers(mod, P)[0][1]
    except:
        return None

def getclass(f):
    return moduleClasses(__import__(f))

def run(format, VERBOSE=0):
    formats = string.split(format, ',')
    for i in range(0, len(formats)):
        formats[i] == string.lower(string.strip(formats[i]))
    allfiles = glob.glob('*.py')
    allfiles.sort()
    for fn in allfiles:
        f = string.split(fn, '.')[0]
        c = getclass(f)
        if c != None:
            print c.__name__
            try:
                for fmt in formats:
                    if fmt:
                        c().save(formats=[fmt],outDir='.',fnRoot=c.__name__)
                        if VERBOSE:
                            print "  %s.%s" % (c.__name__, fmt)
            except:
                print "  COULDN'T CREATE '%s.%s'!" % (c.__name__, format)

if __name__ == "__main__":
    if len(sys.argv) == 1:
        run('pdf,pict,png')
    else:
        try:
            if sys.argv[1] == "-h":
                print 'usage: runall.py [FORMAT] [-h]'
                print '   if format is supplied is should be one or more of pdf,gif,eps,png etc'
                print '   if format is missing the following formats are assumed: pdf,pict,png'
                print '   -h prints this message'
            else:
                t = sys.argv[1:]
                for f in t:
                    run(f)
        except:
            print 'usage: runall.py [FORMAT][-h]'
            print '   if format is supplied is should be one or more of pdf,gif,eps,png etc'
            print '   if format is missing the following formats are assumed: pdf,pict,png'
            print '   -h prints this message'
            raise
