普通文本  |  79行  |  1.64 KB

#!/usr/bin/python
#
# a python script used to generate the "default-skin.h' header file
# from a given skin directory
#
# usage:
#    progname skin-directory-path > default-skin.h
#
import sys, os, string, re

header = """\
/* automatically generated, do not touch */

"""


footer = """\

static const FileEntry  _file_entries[] =
{
"""

footer2 = """\
    { NULL, NULL, 0 }
};
"""


entries = []

def process_files( basepath, files ):
    for file in files:
        fp = open(basepath + "/" + file, "rb")
        data = fp.read()
        data_len  = len(data)
        data_add  = 0
        data_name = "_data_" + string.replace(file,".","_")

        entries.append( (file, data_name, len(data)) )
        print "static const unsigned char %s[%d] = {" % (data_name, data_len + data_add)
        comma = "    "
        do_line = 0
        do_comma = 0
        count = 0
        line  = "    "
        for b in data:
            d = ord(b)

            if do_comma:
                line = line + ","
                do_comma = 0

            if do_line:
                print line
                line = "    "
                do_line = 0

            line = line + "%3d" % d
            do_comma = 1
            count += 1
            if count == 16:
                count = 0
                do_line = 1

        if len(line) > 0:
            print line
        print "};\n"

if len(sys.argv) != 2:
    print "usage: progname  skindirpath > default-skin.h"
else:
    print header
    skindir = sys.argv[1]
    process_files( skindir, os.listdir(skindir) )
    print footer
    for e in entries:
        print "    { \"%s\", %s, %d }," % (e[0], e[1], e[2])
    print footer2