bin/svg2nvg.py
changeset 8 02a1dd166f2b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/svg2nvg.py	Tue Jul 06 14:53:09 2010 +0300
@@ -0,0 +1,142 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# ============================================================================
+#  Name        : svg2nvg.py
+#  Part of     : Hb
+#  Description : Hb themes script for converting SVG to NVG
+#  Version     : %version: %
+#
+#  Copyright (c) 2008-2010 Nokia.  All rights reserved.
+#  This material, including documentation and any related computer
+#  programs, is protected by copyright controlled by Nokia.  All
+#  rights are reserved.  Copying, including reproducing, storing,
+#  adapting or translating, any or all of this material requires the
+#  prior written consent of Nokia.  This material also contains
+#  confidential information which may not be disclosed to others
+#  without the prior written consent of Nokia.
+# ============================================================================
+
+import os
+import sys
+import optparse
+
+# ============================================================================
+# Globals
+# ============================================================================
+VERBOSE = False
+ENCODER = "svgtbinencode"
+INPUT_DIR = os.getcwd()
+
+# ============================================================================
+# OptionParser
+# ============================================================================
+class OptionParser(optparse.OptionParser):
+    def __init__(self):
+        optparse.OptionParser.__init__(self)
+        self.add_option("-v", "--verbose", action="store_true", dest="verbose",
+                        help="print verbose information about each step of the sync process")
+        self.add_option("-q", "--quiet", action="store_false", dest="verbose",
+                        help="do not print information about each step of the sync process")
+        self.add_option("-e", "--encoder", dest="encoder", metavar="encoder",
+                        help="specify the encoder (default %s)" % ENCODER)
+        self.add_option("-i", "--input", dest="input", metavar="dir",
+                        help="specify the input <dir> (default %s)" % INPUT_DIR)
+
+# ============================================================================
+# Functions
+# ============================================================================
+if not hasattr(os.path, "relpath"):
+    def relpath(path, start=os.curdir):
+        abspath = os.path.abspath(path)
+        absstart = os.path.abspath(start)
+        if abspath == absstart:
+            return "."
+        i = len(absstart)
+        if not absstart.endswith(os.path.sep):
+            i += len(os.path.sep)
+        if not abspath.startswith(absstart):
+            i = 0
+        return abspath[i:]
+    os.path.relpath = relpath
+
+def _print_summary(succeed, failed, omitted):
+    print "        ==> %s file(s) successfully converted" % succeed
+    print "        ==> %s file(s) failed to convert" % failed
+    print "        ==> %s file(s) omitted" % omitted
+
+def encode(path):
+    global VERBOSE, INPUT_DIR, ENCODER
+
+    failed = 0
+    succeed = 0
+    omitted = 0
+    workpath = None
+    newline = False
+
+    for root, dirs, files in os.walk(path):
+        i = 0
+        for file in files:
+            filepath = os.path.join(root, file)
+            basepath, extension = os.path.splitext(filepath)
+
+            if extension == ".svg":
+                tmppath = os.path.split(filepath)[0]
+                if tmppath != workpath:
+                    if workpath != None:
+                        newline = True
+                        sys.stdout.write("\n")
+                        _print_summary(succeed, failed, omitted)
+                    failed = 0
+                    succeed = 0
+                    omitted = 0
+                    workpath = tmppath
+                    sys.stdout.write("Converting: %s" % os.path.relpath(workpath, INPUT_DIR).replace("\\", "/"))
+                else:
+                    i += 1
+                    if i % 10 == 0:
+                        sys.stdout.write(".")
+
+                command = "%s -v 6 -e .nvg %s" % (ENCODER, filepath)
+                os.system(command)
+                exists = os.path.exists(basepath + ".nvg")
+                if exists:
+                    # cleanup conversion source (.svg)
+                    os.remove(filepath)
+                    succeed += 1
+                else:
+                    failed += 1
+                if VERBOSE:
+                    print "            %s: %s" % (file, exists)
+            elif extension == ".nvg":
+                # cleanup, from previous conversion
+                os.remove(filepath)
+            else:
+                omitted += 1
+
+    if newline:
+        sys.stdout.write("\n")
+    _print_summary(succeed, failed, omitted)
+
+# ============================================================================
+# main()
+# ============================================================================
+def main():
+    global VERBOSE, ENCODER, INPUT_DIR
+
+    parser = OptionParser()
+    (options, args) = parser.parse_args()
+
+    if options.verbose != None:
+        VERBOSE = options.verbose
+    if options.encoder != None:
+        ENCODER = options.encoder
+    if options.input != None:
+        INPUT_DIR = options.input
+
+    encode(INPUT_DIR)
+
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main())