#!/usr/bin/python # list files in directory import os import uuid directory_ids = {} file_ids = {} def indent(level): indentstring = '' for i in range(level): indentstring += ' ' return indentstring def directory(root, breadcrumb, level, exclude=[]): """ list all files and directory recursivly create the file_ids dictionary to be used in ComponentGroup references """ global file_ids global directory_ids # first list files within directory files = [ f for f in os.listdir(root) if os.path.isfile(os.path.join(root,f)) and f not in exclude] for file in files: file_key = os.path.join(root, file) _id = '_%06d' % (len(file_ids.keys()) + 1) file_ids[file_key] = 'component' + _id wxs.write(indent(level)+ "\n") if file == 'inkscape.exe': # we refenrence inkscape.exe in inkscape.wxs _id = '_inkscape_exe' wxs.write(indent(level + 1)+ "\n") wxs.write(indent(level)+ "\n") # then all directories dirs = [ f for f in os.listdir(root) if os.path.isdir(os.path.join(root,f)) ] for dir in dirs: directory_key = breadcrumb + '__' + dir if not directory_key in directory_ids.keys(): directory_ids[directory_key] = 'dir_%06d' % (len(directory_ids.keys()) + 1) wxs.write(indent(level) + "\n") directory(os.path.join(root, dir), directory_key, level + 1) wxs.write(indent(level) + "\n") def ComponentGroup(name, condition, level): """ add componentgroup that contain all items from file_ids that match condition remove the matched elements from file_ids """ global file_ids keys = [k for k in file_ids.keys() if condition in k] wxs.write(indent(level) + "\n") for component in keys: wxs.write(indent(level + 1) + "\n") wxs.write(indent(level) + "\n") for key in keys: del file_ids[key] with open('files.wxs', 'w') as wxs: wxs.write("\n") wxs.write("\n") wxs.write(indent(1) + "\n") wxs.write(indent(2) + "\n") wxs.write(indent(2) + "\n") wxs.write(indent(3) + "\n") wxs.write(indent(4) + "\n") print "start parsing ..\..\inkscape" directory('..\..\inkscape', 'inkscape', 5, ['inkscape.dbg', 'inkview.dbg', 'gdb.exe']) print "found %d files" % len(file_ids.keys()) wxs.write(indent(4) + "\n") wxs.write(indent(3) + "\n") # link to ProgrmMenu wxs.write(indent(3) + "\n") wxs.write(indent(4) + "\n") wxs.write(indent(3) + "\n") wxs.write(indent(3) + "\n") wxs.write(indent(2) + "\n") ComponentGroup("Examples", 'inkscape\\share\\examples', 2) ComponentGroup("Tutorials", 'inkscape\\share\\tutorials\\', 2) ComponentGroup("Translations", '\\locale\\', 2) ComponentGroup("AllOther", '', 2) wxs.write(indent(1) + "\n") wxs.write("\n")