Package pyjamas :: Module Factory
[hide private]
[frames] | no frames]

Source Code for Module pyjamas.Factory

 1  # Copyright (C) 2009 Luke Kenneth Casson Leighton <lkcl@lkcl.net> 
 2  # 
 3  # Pyjamas Widget Factory.  register widgets with this module, 
 4  # for dynamic use in applications.  please observe namespaces. 
 5  # 
 6  # * pyjamas.ui namespace is used for widgets in library/pyjamas/ui 
 7   
 8  #from __pyjamas__ import doc 
 9  from pyjamas import log 
10  from pyjamas import DOM 
11   
12  factory = {} 
13   
14 -def registerClass(name, kls):
15 global factory 16 factory[name] = kls
17
18 -def lookupClass(name):
19 return factory[name]
20
21 -def createWidgetOnElement(element):
22 fc = DOM.getAttribute(element, 'id') 23 lbr = fc.find("(") 24 klsname = fc[:lbr] 25 txtargs = fc[lbr+1:-1] 26 args = [] 27 kwargs = {} 28 for arg in txtargs.split(','): 29 findeq = arg.find('=') 30 if findeq == -1: 31 args.append(arg) 32 else: 33 k = arg[:findeq] 34 v = arg[findeq+1:] 35 if ((v[0] == "'" and v[-1] == "'") or 36 (v[0] == '"' and v[-1] == '"')): 37 # string - strip quotes 38 v = v[1:-1] 39 else: 40 # assume it's an int 41 v = int(v) 42 kwargs[k] = v 43 44 kwargs['Element'] = element 45 return lookupClass(klsname)(*args, **kwargs)
46
47 -def addPyjamasNameSpace():
48 doc().createElementNS("urn:schemas-pyjs-org:pyjs")
49 #try: 50 # ns = doc().namespaces.item("pyjs") 51 #except: 52 # doc().namespaces.add("pyjsinit", "urn:schemas-pyjs-org:pyjs") 53 #doc().createStyleSheet().cssText = "v\\:*{behavior:url(#default#VML);}" 54