--- a/qtecomplugins/supplements/xqecom/xqecom.py Tue Aug 31 16:02:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
-#!/usr/bin/env python
-"""
-This is part of qtextensions/qtecomplugins extension. It pregenerates few files needed during compilation of ecom plugins.
-Those includes:
- * registration resource file
- * stubs
- * pkg file
- * iby file
-"""
-
-import logging
-import datetime
-import sys
-from optparse import OptionParser
-
-class Generator(object):
- def __init__(self, args):
- if len(args)==5:
- if args[2]=="":
- interfaceValue = args[0]+".dll"
- else:
- interfaceValue = args[2]
- self.args = {
- 'target': args[0],
- 'uid3': args[1],
- 'interface': interfaceValue,
- 'configuration': args[3],
- 'configurationFile': args[4],
- 'timestamp': datetime.datetime.now()
- }
- else:
- logging.fatal("illegal number of arguments: %d" % len(args))
- sys.exit(1)
- def generate(self):
- logging.warning("%s is not generating anything useful" % self.__class__.__name__)
- def strip(self, s):
- l = len(s) - len(s.lstrip())
- def stripOrNot(x):
- x = x + '\n'
- if l>=len(x):
- return x
- else:
- return x[l:]
- return ''.join(map(stripOrNot, s.splitlines(False)))
-
-class RssGenerator(Generator):
- """
- RSS generator.
- """
- def __init__(self, args):
- super(self.__class__, self).__init__(args)
- def generate(self):
- fileName = self.args['target'] + ".rss"
- dllName = self.args['target'] + ".dll"
-
- if self.args['interface'] == "":
- self.args['interface'] = dllName
-
- if self.args['configurationFile'] != "":
- opaqueDataFile = file(self.args['configurationFile'])
- self.args['opaqueData'] = ((''.join(opaqueDataFile.readlines())).replace('\n', '').replace('"', '\\"'))[:255];
- else:
- self.args['opaqueData'] = self.args['configuration']
-
- output = file(fileName, "w")
- header = """\
- // ==============================================================================
- // Generated by xqecom on %(timestamp)s
- // This file is generated by xqecom and should not be modified by the user.
- // Name : %(target)s.rss
- // Part of :
- // Description : Fixes common plugin symbols to known ordinals
- // Version :
- // ==============================================================================
-
-
- #include <registryinfov2.rh>
-
- #include <xqtecom.hrh>
-
- #include <ecomstub_%(uid3)s.hrh>
-
- RESOURCE REGISTRY_INFO theInfo
- {
- resource_format_version = RESOURCE_FORMAT_VERSION_2;
- dll_uid = %(uid3)s;
- interfaces =
- {
- INTERFACE_INFO
- {
- interface_uid = KQtEcomPluginInterfaceUID;
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = KQtEcomPluginImplementationUid;
- version_no = 1;
- display_name = "%(target)s.dll";
- // SERVICE.INTERFACE_NAME
- default_data = "%(interface)s";
- // SERVICE.CONFIGURATION
- opaque_data = "%(opaqueData)s";
- }
- };
- }
- };
- }"""
-
- output.write(self.strip(header) % self.args )
-
-
-class PkgGenerator(Generator):
- """
- PKG generator.
- """
- def __init__(self, args):
- super(self.__class__, self).__init__(args)
- def generate(self):
- content='''\
- // ============================================================================
- // Generated by xqecom on %(timestamp)s
- // This file is generated by xqecom and should not be modified by the user.
- // ============================================================================
-
- ; Language
- &EN
-
- ; SIS header: name, uid, version
- #{%(target)s},(%(uid3)s),1,0,0
-
- ; Localised Vendor name
- %%{"Nokia, Qt Software"}
-
- ; Unique Vendor name
- :"Nokia, Qt Software"
-
- ; Dependencies
- [0x101F7961],0,0,0,{"S60ProductID"}
- [0x102032BE],0,0,0,{"S60ProductID"}
- [0x102752AE],0,0,0,{"S60ProductID"}
- [0x1028315F],0,0,0,{"S60ProductID"}
- (0x2001E61C), 4, 5, 0, {"QtLibs pre-release"}
-
- ;files
- "\\epoc32\\release\\armv5\\urel\\%(target)s.dll" - "!:\\sys\\bin\\%(target)s.dll"
- "\\epoc32\\data\\Z\\resource\\plugins\\%(target)s.rsc" - "!:\\resource\\plugins\\%(target)s.rsc"'''
-
- fileName = self.args['target'] + ".pkg"
- output = file(fileName, "w")
- output.write(self.strip(content) % self.args)
-
-
-class IbyGenerator(Generator):
- """
- IBY generator.
- """
- def __init__(self, args):
- super(self.__class__, self).__init__(args)
- def generate(self):
- self.args['TARGET']=self.args['target'].upper()
- content="""\
- // ============================================================================
- // Generated by xqecom on %(timestamp)s
- // This file is generated by xqecom and should not be modified by the user.
- // ============================================================================
-
- #ifndef %(TARGET)s_IBY
- #define %(TARGET)s_IBY
-
- #include <bldvariant.hrh>
-
- ECOM_PLUGIN( %(target)s.dll, %(target)s.rsc )
-
- #endif //%(TARGET)s_IBY"""
-
- fileName = self.args['target'] + ".iby"
- output = file(fileName, "w")
- output.write(self.strip(content) % self.args)
-
-class StubsGenerator(Generator):
- """
- Stubs generator.
- """
- def __init__(self, args):
- super(self.__class__, self).__init__(args)
- def generate(self):
- contentHrh="""\
- // ============================================================================
- // Generated by xqecom on %(timestamp)s
- // This file is generated by xqecom and should not be modified by the user.
- // ============================================================================
-
- #ifndef ECOMSTUB_%(uid3)s_HRH
- #define ECOMSTUB_%(uid3)s_HRH
- #define KQtEcomPluginImplementationUid %(uid3)s
- #endif //ECOMSTUB_%(uid3)s_HRH"""
-
- fileName = "ecomstub_" + self.args['uid3'] + ".hrh"
- output = file(fileName, "w")
- output.write(self.strip(contentHrh) % self.args)
-
- contentCpp="""\
- // ============================================================================
- // Generated by xqecom on %(timestamp)s
- // This file is generated by xqecom and should not be modified by the user.
- // ============================================================================
-
- #include <xqplugin.h>
- #include <ecomstub_%(uid3)s.hrh>
- #include <ecom/implementationproxy.h>
- XQ_PLUGIN_ECOM_HEADER(%(target)s)
- const TImplementationProxy implementationTable[] =
- {
- IMPLEMENTATION_PROXY_ENTRY(%(uid3)s, C%(target)sFactory::NewL)
- };
-
- EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
- {
- aTableCount = sizeof( implementationTable ) / sizeof( TImplementationProxy );
- return implementationTable;
- }"""
-
- fileName = "ecomstub_" + self.args['uid3'] + ".cpp"
- output = file(fileName, "w")
- output.write(self.strip(contentCpp) % self.args)
-
-
-def runGenerators(generators, args):
- for g in generators:
- logging.debug("about to run generator: %s" % g.__name__)
- try:
- instance = g(args)
- instance.generate()
- except Exception, ex:
- logging.error("Exception in %s: '%s'" % (g.__name__, ex))
- logging.error("Exception in %s: '%s'" % (g.__name__, ex))
- raise
-
-if (__name__=="__main__"):
- arguments = sys.argv[1:]
-
- op = OptionParser()
- op.usage="%prog [options] [<target> <uid3> <interface> <configuration> <configurationFile>]"
-
-# op.add_option("-t", "--target", help="plugin target name")
-# op.add_option("-u", "--uid3", help="plugin uid3")
-# op.add_option("-i", "--interface", help="interface name")
-# op.add_option("-c", "--configuration", help="configuration")
-# op.add_option("-f", "--configuration-file", help="configuration file")
-
- (options, args) = op.parse_args(arguments)
-
- generators = [RssGenerator, PkgGenerator, IbyGenerator, StubsGenerator]
- runGenerators(generators, args)
-