#! python
# -*- coding: utf-8 -*-
# (c) 2007 Juergen Riegel GPL
Usage = """dir2qrc - merging all files in a directory in a qrc file
Usage:
dir2qrc [Optionen]
Options:
-v, --verbose print out all files collected
-o --out-file=FILENAME use this file name for output, default resorces.qrc
-d, --directory=DIRNAME directory to search, default PWD
-h, --help print this help message
This program walks a directory (tree) and collects all supported files
and put them in a .qrc file, to compile in with the QT resource facility.
Examples:
dir2qrc -v -o resource.qrc -d "d:/Develop/Resources"
Autor:
(c) 2007 Juergen Riegel
juergen.riegel@web.de
Licence: GPL
Version:
0.1
"""
import os,sys,string,re,getopt,codecs
from os.path import join, getsize
# Globals
Verbose = False
Automatic = False
ExtraDist = False
Dir = '.'
Output = 'resources.qrc'
hhcHeader = """
"""
hhcFooter="""
"""
EndingList = ['.xpm','.svg','.qm','.png','.ui']
locations = [["../Gui/Language","translation.qrc"," prefix=\"/translations\""],
["../Gui/Icons","resource.qrc"," prefix=\"/icons\""],
["../Mod/Assembly/Gui/Resources","Assembly.qrc"],
["../Mod/Complete/Gui/Resources","Complete.qrc"],
["../Mod/Draft/Resources","Draft.qrc"],
["../Mod/Drawing/Gui/Resources","Drawing.qrc"],
["../Mod/Fem/Gui/Resources","Fem.qrc"],
["../Mod/Image/Gui/Resources","Image.qrc"],
["../Mod/Mesh/Gui/Resources","Mesh.qrc"],
["../Mod/MeshPart/Gui/Resources","MeshPart.qrc"],
["../Mod/Part/Gui/Resources","Part.qrc"],
["../Mod/PartDesign/Gui/Resources","PartDesign.qrc"],
["../Mod/Points/Gui/Resources","Points.qrc"],
["../Mod/Raytracing/Gui/Resources","Raytracing.qrc"],
["../Mod/ReverseEngineering/Gui/Resources","ReverseEngineering.qrc"],
["../Mod/Robot/Gui/Resources","Robot.qrc"],
["../Mod/Sketcher/Gui/Resources","Sketcher.qrc"]]
def main():
global Verbose,Automatic,ExtraDist,Dir,Output
try:
opts, args = getopt.getopt(sys.argv[1:], "hvd:o:", ["help", "verbose", "auto", "dist", "directory=","out-file="])
except getopt.GetoptError:
# print help information and exit:
sys.stderr.write(Usage)
sys.exit(2)
# checking on the options
for o, a in opts:
if o == "-v":
Verbose = True
if o in ("-h", "--help"):
sys.stderr.write(Usage)
sys.exit()
if o in ("-a", "--auto"):
Automatic = True
if o in ("--dist"):
ExtraDist = True
if o in ("-o", "--out-file"):
Output = a
if o in ("-d", "--directory"):
print "Using path: " + a +"\n"
Dir = a
if Automatic:
path = os.path.realpath(__file__)
path = os.path.dirname(path)
for i in locations:
qrcDir = os.path.realpath(join(path,i[0]))
if len(i) > 2:
updateResourceFile(qrcDir,i[1],i[2])
else:
updateResourceFile(qrcDir,i[1])
if ExtraDist:
makeTargetExtraDist(qrcDir)
else:
updateResourceFile(Dir, Output)
if ExtraDist:
makeTargetExtraDist(Dir)
def updateResourceFile(Dir, Output,prefix=""):
global Verbose
Output = join(Dir,Output)
file = open(Output,"w")
file.write(hhcHeader % (prefix))
DirPath = Dir + os.path.sep
for root, dirs, files in os.walk(Dir):
for name in files:
if ( (1 in [c in name for c in EndingList]) and not ('.svn' in root) ):
FilePathOrg = join(root,name)
FilePath = FilePathOrg.replace(DirPath,'')
FilePath = FilePath.replace('.\\','')
FilePath = FilePath.replace('\\','/')
if Verbose: print FilePathOrg + ' -> ' + FilePath
file.write(' ' + FilePath + '\n')
file.write(hhcFooter)
file.close()
def makeTargetExtraDist(Dir):
extensions = EndingList[:]
extensions.append(".qrc")
extensions.append(".bat")
extensions.append(".ts")
print ("EXTRA_DIST = \\")
DirPath = Dir + os.path.sep
for root, dirs, files in os.walk(Dir):
for name in files:
if ( (1 in [c in name for c in extensions]) and not ('.svn' in root) ):
FilePathOrg = join(root,name)
FilePath = FilePathOrg.replace(DirPath,'')
FilePath = FilePath.replace('.\\','')
FilePath = FilePath.replace('\\','/')
print ("\t\t%s \\" % (FilePath))
print
if __name__ == "__main__":
main()