Fix ResourceForDirectory to work in subdirectories
Stefan Bund [Sat, 16 Oct 2010 13:10:53 +0000 (15:10 +0200)]
qt4.py

diff --git a/qt4.py b/qt4.py
index 2e02775..bd60ba1 100644 (file)
--- a/qt4.py
+++ b/qt4.py
@@ -199,8 +199,9 @@ AutomocStatic = _Automoc('StaticObject')
 
 def _detect(env):
     """Not really safe, but fast method to detect the QT library"""
-    try: return env['QTDIR']
+    try: env['QTDIR']
     except KeyError: pass
+    else: return env.Dir(env.subst('$QTDIR')).abspath
 
     try: return os.environ['QTDIR']
     except KeyError: pass
@@ -547,7 +548,7 @@ def qt4glob(env):
                 if not f.name.startswith("qrc_") and not f.name.startswith("moc_") ]
     return sources + resources
 
-def scanResourceDirectory(directory, prefix="", exclude=[]):
+def scanResourceDirectory(directory, root, prefix="", exclude=[]):
     rv = [
         '<!DOCTYPE RCC>',
         # '<?xml version="1.0" encoding="utf-8"?>',
@@ -556,14 +557,16 @@ def scanResourceDirectory(directory, prefix="", exclude=[]):
         rv.append('<qresource prefix="%s">' % os.path.join(prefix, base[len(str(directory)):]))
         for f in files:
             if not [True for pattern in exclude if fnmatch.fnmatch(f,pattern)]:
-                rv.append('<file alias="%s">%s</file>' % (f, os.path.join(base, f)))
+                rv.append('<file alias="%s">%s</file>'
+                          % (f, directory.fs.File(os.path.join(base, f)).get_path(root)))
         rv.append("'</qresource>'")
     rv.append('</RCC>\n')
     return '\n'.join(rv)
 
 def resourceDirectory(env, target, source):
     file(str(target[0]), 'w').write(scanResourceDirectory(
-            source[0], prefix=env.get('RESOURCE_PREFIX', ''), exclude=env.get('EXCLUDE', [])))
+            source[0], root=target[0].dir,
+            prefix=env.get('RESOURCE_PREFIX', ''), exclude=env.get('EXCLUDE', [])))
 
 def exists(env):
     return _detect(env)