12 from xml.parsers import expat
22 def end_element_handler(tag):
28 def start_element_handler(tag, attr):
40 fname = find_file(fbase)
42 if fname != None and key != None:
44 pb = gtk.gdk.pixbuf_new_from_file(fname)
45 val["colorspace"] = pb.get_colorspace()
46 val["alpha"] = pb.get_has_alpha()
47 val["bps"] = pb.get_bits_per_sample()
48 val["width"] = pb.get_width()
49 val["height"] = pb.get_height()
50 val["rowstride"] = pb.get_rowstride()
51 val["data"] = plistlib.Data(pb.get_pixels())
53 print >> sys.stderr, ( "Error: No such icon file %s" % fbase )
57 fname = find_file(fbase)
59 if fname != None and key != None:
60 val = plistlib.readPlist(fname)
62 print >> sys.stderr, ( "Error: No such plist file %s" % fbase )
66 fname = find_file(fbase)
68 if fname != None and key != None:
72 except Exception, err:
73 print >> sys.stderr, ( "Error: %s" % str(err) )
76 print >> sys.stderr, ( "Error: No such string file %s" % fbase )
80 if type(current) == types.DictType:
82 elif type(current) == types.TupleType:
86 def cdata_handler(str):
89 def resource_parse_file(infile):
90 parser = expat.ParserCreate()
91 parser.StartElementHandler = start_element_handler
92 parser.EndElementHandler = end_element_handler
93 parser.CharacterDataHandler = cdata_handler
94 parser.ParseFile(infile)
97 print >> sys.stderr, (
98 "Usage: %s [-I <inc path>] <resource list> [resource plist]\n"
100 " Creates a resource plist from a resource list\n\n"
102 " I - Include path to search for files\n"
103 " <resource list> Input resources file\n"
104 " <resource plist> Output resources plist file\n"
113 for inc_dir in inc_list:
114 inc = "%s/%s" % (inc_dir, name)
115 if os.path.isfile(inc):
118 if os.path.isfile(name):
128 opts, args = getopt.gnu_getopt(sys.argv[1:], OPTS)
129 except getopt.GetoptError, err:
130 print >> sys.stderr, str(err)
136 # add to include list
139 assert False, "unhandled option"
141 if len(args) > 2 or len(args) < 1:
146 infile = open(args[0])
147 except Exception, err:
148 print >> sys.stderr, ( "Error: %s" % str(err) )
153 outfile = open(args[1], "w")
154 except Exception, err:
155 print >> sys.stderr, ( "Error: %s" % str(err))
160 resource_parse_file(infile)
161 plistlib.writePlist(pl, outfile)