예제 #1
0
    def __init__(self, ns, name, component, prototype=False):
        self.ns = ns
        self.name = name
        self.component = component
        self.aliases = {}
        self.declared_properties = {}
        self.lazy_properties = {}
        self.const_properties = {}
        self.properties = []
        self.enums = {}
        self.assignments = {}
        self.animations = {}
        self.package = get_package(name)
        self.base_type = None
        self.children = []
        self.methods = {}
        self.signals = set()
        self.elements = []
        self.generators = []
        self.id = None
        self.prototype = prototype
        self.ctor = ''
        self.prototype_ctor = ''

        for child in component.children:
            self.add_child(child)
예제 #2
0
    def generate_prologue(self):
        for name in self.imports.keys():
            self.used_packages.add(get_package(name))

        r = []
        packages = {}
        for package in sorted(self.used_packages):
            path = package.split(".")
            ns = packages
            for p in path:
                if p not in ns:
                    ns[p] = {}
                ns = ns[p]

        path = "_globals"

        def check(path, packages):
            for ns in packages.keys():
                if not ns:
                    raise Exception('internal bug, empty name in packages')
                package = escape_package(path + "." + ns)
                r.append("if (!%s) /** @const */ %s = {}" % (package, package))
                r.append("var %s = %s" % (mangle_package(package), package))
                check(package, packages[ns])

        check(path, packages)

        if 'core.core' in self.imports:
            r.append(
                self.generate_import('core.core', self.imports['core.core']))
        return '\n'.join(r)
예제 #3
0
 def mangled_name(self):
     return mangle_package(get_package(self.name)) + '.' + self.class_name