bin/svg2nvg.py
author hgs
Fri, 06 Aug 2010 13:41:12 +0300
changeset 11 83e593299ea6
parent 8 02a1dd166f2b
permissions -rw-r--r--
201031

#!/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())