def createScene(rootNode): sys.argv = ['./mysphinx.py', '-M', 'html', 'source', 'build'] backlist = ["PythonMainScriptController"] rootNode.createObject("MechanicalObject") for (name, desc) in Sofa.getAvailableComponents(): categories = ["Legacy"] args = {} if name not in backlist: try: print("Processing: " + name) obj = rootNode.createObject(name) #args = obj.getDataFields() args = obj.getListOfDataFields() categories = obj.getCategories() except Exception, e: print("UNable to get DOC") pass params = kv2params(args) params2 = kv2call(args) paramsmd = kv2doc(args) code = """ def %s(attachedTo %s, **kwargs): \"\"\"%s Args: %s \"\"\" return attachedTo.createObject(\"%s\" %s, **kwargs) """ % (name, params, desc, paramsmd, name, params2) targetpath = "sofacomponents/" if not os.path.exists(targetpath): os.mkdir(targetpath) pathname = targetpath + categories[0] + "/" if not os.path.exists(pathname): os.mkdir(pathname) outfile = open(pathname + name + ".py", "wt") outfile.write("# -*- coding: utf-8 -*-\n\n") outfile.write(""" \"\"\" Component %s .. autofunction:: %s Indices and tables ****************** * :ref:`genindex` * :ref:`modindex` * :ref:`search` \"\"\" """ % (name, name)) outfile.write(code)
def refreshComponentListFromFactory(): global sofaComponents, sofaAliases sofaComponents = [] sofaAliases = {} for (name, desc) in Sofa.getAvailableComponents(): sofaComponents.append(name) sofaHelp[name] = desc for alias in Sofa.getAliasesFor(name): sofaAliases[alias] = name
# -*- coding: utf-8 -*- """ All... """ import Sofa for (name,desc) in Sofa.getAvailableComponents(): code = """def %s(owner, **kwargs): \"\"\"%s\"\"\" if kwargs == None: kwargs = {} owner.createObject(\"%s\", **kwargs) """ % (name,desc,name) exec(code)
class psltemplate(object): def __init__(self, f): self.function = f if not "PSLExport" in f.func_globals: f.func_globals["PSLExport"] = [] f.func_globals["PSLExport"].append(self.function.func_name) def __call__(self, node, **kwargs): if not "name" in kwargs: kwargs["name"] = "undefined" templatenode = node.createChild(kwargs["name"]) self.function(templatenode, **kwargs) calledAs = self.function.func_name+"(" for k in kwargs: calledAs += str(k)+"="+repr(kwargs[k]) calledAs += ")" #templatenode.addNewData("psl_instanceof", "PSL", "", "s", "PythonDecoratorTemplate") #templatenode.addNewData("psl_templatename", "PSL", "", "s", calledAs) return templatenode for (name,desc) in Sofa.getAvailableComponents(): code = """def %s(owner, **kwargs): \"\"\"%s\"\"\" if kwargs == None: kwargs = {} owner.createObject(\"%s\", **kwargs) """ % (name,desc,name) exec(code)