bin/rom.py
author hgs
Tue, 13 Jul 2010 20:12:19 +0300
changeset 9 a03989fb355a
parent 8 02a1dd166f2b
permissions -rw-r--r--
201027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
#!/usr/bin/env python
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
#
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
#  Name        : rom.py
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
#  Part of     : Hb
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
#  Description : Hb themes script for generating IBY files
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
#  Version     : %version: %
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
#
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
#  Copyright (c) 2008-2010 Nokia.  All rights reserved.
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
#  This material, including documentation and any related computer
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
#  programs, is protected by copyright controlled by Nokia.  All
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
#  rights are reserved.  Copying, including reproducing, storing,
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
#  adapting or translating, any or all of this material requires the
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
#  prior written consent of Nokia.  This material also contains
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
#  confidential information which may not be disclosed to others
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
#  without the prior written consent of Nokia.
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
import os
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
import sys
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
import fnmatch
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
import zipfile
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
import optparse
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
import posixpath
9
hgs
parents: 8
diff changeset
    26
import ConfigParser
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
# Globals
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
VERBOSE = False
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
INCLUDE = None
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
EXCLUDE = None
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
INPUT_DIR = os.getcwd()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
OUTPUT_DIR = os.getcwd()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
SOURCE_PREFIX = "ZRESOURCE/hb/themes"
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
TARGET_PREFIX = "RESOURCE_FILES_DIR/hb/themes"
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
EXIT_STATUS = 0
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
# OptionParser
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
class OptionParser(optparse.OptionParser):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
    def __init__(self):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
        optparse.OptionParser.__init__(self)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
        self.add_option("-v", "--verbose", action="store_true", dest="verbose",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
                        help="print verbose information about each step of the sync process")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
        self.add_option("-q", "--quiet", action="store_false", dest="verbose",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
                        help="do not print information about each step of the sync process")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
        group = optparse.OptionGroup(self, "Input/output options")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
        group.add_option("-i", "--input", dest="input", metavar="dir",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
                         help="specify the input <dir> (default %s)" % INPUT_DIR)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
        group.add_option("-o", "--output", dest="output", metavar="dir",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
                         help="specify the output <dir> (default %s)" % OUTPUT_DIR)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
        group.add_option("--include", dest="include", action="append", metavar="pattern",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
                         help="specify the include <pattern> (default %s)" % INCLUDE)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
        group.add_option("--exclude", dest="exclude", action="append", metavar="pattern",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
                         help="specify the exclude <pattern> (default %s)" % EXCLUDE)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
        self.add_option_group(group)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
        group = optparse.OptionGroup(self, "Prefix options")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
        group.add_option("--source-prefix", dest="sourceprefix", metavar="prefix",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
                         help="specify the source <prefix> (default %s)" % SOURCE_PREFIX)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
        group.add_option("--target-prefix", dest="targetprefix", metavar="prefix",
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
                         help="specify the target <prefix> (default %s)" % TARGET_PREFIX)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
        self.add_option_group(group)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
# Utils
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
if not hasattr(os.path, "relpath"):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
    def relpath(path, start=os.curdir):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
        abspath = os.path.abspath(path)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
        absstart = os.path.abspath(start)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
        if abspath == absstart:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
            return "."
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
        i = len(absstart)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
        if not absstart.endswith(os.path.sep):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
            i += len(os.path.sep)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
        if not abspath.startswith(absstart):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
            i = 0
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
        return abspath[i:]
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
    os.path.relpath = relpath
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
def zip_filelist(filepath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
    files = list()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
    archive = zipfile.ZipFile(filepath)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
    for entry in archive.namelist():
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
        if not entry.endswith("/"):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
            files.append(entry)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
    return files
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
class Theme:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
    def __init__(self, name):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
        self.name = name
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
        self.paths = []
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
        self.files = {}
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
        self.archives = {}
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
9
hgs
parents: 8
diff changeset
   101
    def add_file(self, filepath):
hgs
parents: 8
diff changeset
   102
        if self._include(filepath):
hgs
parents: 8
diff changeset
   103
            filepath = filepath.replace("\\", "/")
hgs
parents: 8
diff changeset
   104
            path = os.path.split(filepath)[0]
hgs
parents: 8
diff changeset
   105
            extension = os.path.splitext(filepath)[1]
hgs
parents: 8
diff changeset
   106
            if extension == ".zip":
hgs
parents: 8
diff changeset
   107
                if path not in self.archives:
hgs
parents: 8
diff changeset
   108
                    self.archives[path] = list()
hgs
parents: 8
diff changeset
   109
                if filepath not in self.archives[path]:
hgs
parents: 8
diff changeset
   110
                    self.archives[path].append(filepath)
hgs
parents: 8
diff changeset
   111
            else:
hgs
parents: 8
diff changeset
   112
                if path not in self.files:
hgs
parents: 8
diff changeset
   113
                    self.files[path] = list()
hgs
parents: 8
diff changeset
   114
                if filepath not in self.files[path]:
hgs
parents: 8
diff changeset
   115
                    self.files[path].append(filepath)
hgs
parents: 8
diff changeset
   116
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
    def initialize(self):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
        for path in self.paths:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
            for root, dirs, files in os.walk(path):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
                for file in files:
9
hgs
parents: 8
diff changeset
   121
                    self.add_file(os.path.join(root, file))
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
    def write_iby(self, ibypath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
        global SOURCE_PREFIX, TARGET_PREFIX, EXIT_STATUS
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
        outpath = os.path.dirname(ibypath)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
        if not os.path.exists(outpath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
            os.makedirs(outpath)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
        out = open(ibypath, "w")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
        out.write("#ifndef __%s_IBY__\n" % self.name.upper())
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
        out.write("#define __%s_IBY__\n" % self.name.upper())
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
        out.write("\n")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
        out.write("#include <bldvariant.hrh>\n")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
        out.write("\n")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
        out.write("data=%s/%s.themeindex\t%s/%s.themeindex\n" % (SOURCE_PREFIX, self.name, TARGET_PREFIX, self.name))
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
        written_entries = list()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
        for path, files in self.files.iteritems():
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
            relpath = os.path.relpath(path, INPUT_DIR).replace("\\", "/")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
            for filepath in files:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
                filename = os.path.basename(filepath)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
                entry = posixpath.join(relpath, filename)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
                if entry not in written_entries:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
                    written_entries.append(filepath)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
                    out.write("data=%s/%s\t%s/%s\n" % (SOURCE_PREFIX, entry, TARGET_PREFIX, entry))
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
                else:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
                    print "ERROR: %s duplicate entry %s" % (ibypath, entry)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
                    EXIT_STATUS = -1
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
        for path, archives in self.archives.iteritems():
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
            relpath = os.path.relpath(path, INPUT_DIR).replace("\\", "/")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
            for archive in archives:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
                files = zip_filelist(archive)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
                for filepath in files:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
                    entry = posixpath.join(relpath, filepath)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
                    if entry not in written_entries:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
                        written_entries.append(entry)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
                        out.write("data=%s/%s\t%s/%s\n" % (SOURCE_PREFIX, entry, TARGET_PREFIX, entry))
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
                    else:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
                        print "ERROR: %s duplicate entry %s" % (ibypath, entry)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
                        EXIT_STATUS = -1
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
        out.write("\n")
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
        out.write("#endif __%s_IBY__\n" % self.name.upper())
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
        out.close()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
9
hgs
parents: 8
diff changeset
   163
    def write_thx(self, thxpath):
hgs
parents: 8
diff changeset
   164
        global SOURCE_PREFIX, TARGET_PREFIX, EXIT_STATUS
hgs
parents: 8
diff changeset
   165
        outpath = os.path.dirname(thxpath)
hgs
parents: 8
diff changeset
   166
        if not os.path.exists(outpath):
hgs
parents: 8
diff changeset
   167
            os.makedirs(outpath)
hgs
parents: 8
diff changeset
   168
        archive = zipfile.ZipFile(thxpath, "w")
hgs
parents: 8
diff changeset
   169
        os.chdir(INPUT_DIR)
hgs
parents: 8
diff changeset
   170
        written_entries = list()
hgs
parents: 8
diff changeset
   171
        for path, files in self.files.iteritems():
hgs
parents: 8
diff changeset
   172
            relpath = os.path.relpath(path, INPUT_DIR).replace("\\", "/")
hgs
parents: 8
diff changeset
   173
            for filepath in files:
hgs
parents: 8
diff changeset
   174
                filename = os.path.basename(filepath)
hgs
parents: 8
diff changeset
   175
                entry = posixpath.join(relpath, filename)
hgs
parents: 8
diff changeset
   176
                if entry not in written_entries:
hgs
parents: 8
diff changeset
   177
                    written_entries.append(entry)
hgs
parents: 8
diff changeset
   178
                    archive.write(entry)
hgs
parents: 8
diff changeset
   179
                else:
hgs
parents: 8
diff changeset
   180
                    print "ERROR: %s duplicate entry %s" % (thxpath, entry)
hgs
parents: 8
diff changeset
   181
                    EXIT_STATUS = -1
hgs
parents: 8
diff changeset
   182
        archive.close()
hgs
parents: 8
diff changeset
   183
hgs
parents: 8
diff changeset
   184
    def hidden(self):
hgs
parents: 8
diff changeset
   185
        result = False
hgs
parents: 8
diff changeset
   186
        config = ConfigParser.ConfigParser()
hgs
parents: 8
diff changeset
   187
        indexthemepath = INPUT_DIR + '/icons/' + self.name + '/index.theme'
hgs
parents: 8
diff changeset
   188
        if os.path.exists(indexthemepath):
hgs
parents: 8
diff changeset
   189
            config.read(indexthemepath)
hgs
parents: 8
diff changeset
   190
            result = config.getboolean('Icon Theme', 'Hidden')
hgs
parents: 8
diff changeset
   191
        return result
hgs
parents: 8
diff changeset
   192
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
    def _include(self, filepath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
        result = True
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
        if INCLUDE != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
            for pattern in INCLUDE:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
                if not fnmatch.fnmatch(filepath, pattern):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
                    result = False
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
        if EXCLUDE != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
            for pattern in EXCLUDE:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
                if fnmatch.fnmatch(filepath, pattern):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
                    result = False
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
        return result
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
def lookup_themes(path):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
    themes = {}
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    if os.path.exists(path):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
        # base: effects, icons...
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
        for base in os.listdir(path):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
            basepath = posixpath.join(path, base)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
            if os.path.isdir(basepath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
                # theme: footheme, bartheme...
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
                for theme in os.listdir(basepath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
                    themepath = posixpath.join(basepath, theme)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
                    if os.path.isdir(themepath):
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
                        if theme not in themes:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
                            themes[theme] = Theme(theme)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
                        themes[theme].paths.append(themepath)
9
hgs
parents: 8
diff changeset
   219
                        # special case: themeindex
hgs
parents: 8
diff changeset
   220
                        themeindex = os.path.join(path, theme + ".themeindex")
hgs
parents: 8
diff changeset
   221
                        if os.path.exists(themeindex):
hgs
parents: 8
diff changeset
   222
                            themes[theme].add_file(themeindex)
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
    return themes
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
# main()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
# ============================================================================
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
def main():
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
    global VERBOSE, INPUT_DIR, OUTPUT_DIR, INCLUDE, EXCLUDE, SOURCE_PREFIX, TARGET_PREFIX
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
    parser = OptionParser()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
    (options, args) = parser.parse_args()
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
    if options.verbose != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
        VERBOSE = options.verbose
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
    if options.input != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
        INPUT_DIR = options.input
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    if options.output != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
        OUTPUT_DIR = options.output
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
    if options.include != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
        INCLUDE = options.include
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
    if options.exclude != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
        EXCLUDE = options.exclude
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
    if options.sourceprefix != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
        SOURCE_PREFIX = options.sourceprefix
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
    if options.targetprefix != None:
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
        TARGET_PREFIX = options.targetprefix
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
    themes = lookup_themes(INPUT_DIR)
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
    for name, theme in themes.iteritems():
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
        theme.initialize()
9
hgs
parents: 8
diff changeset
   252
        if theme.hidden():
hgs
parents: 8
diff changeset
   253
            print "Generating: %s.iby" % name
hgs
parents: 8
diff changeset
   254
            theme.write_iby(posixpath.join(OUTPUT_DIR, "%s.iby" % name))
hgs
parents: 8
diff changeset
   255
        else:
hgs
parents: 8
diff changeset
   256
            print "Generating: %s.thx" % name
hgs
parents: 8
diff changeset
   257
            theme.write_thx(posixpath.join(OUTPUT_DIR, "%s.thx" % name))
8
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
    return EXIT_STATUS
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
if __name__ == "__main__":
02a1dd166f2b Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
    sys.exit(main())