def colorListCode(colorlist = None, referencedir = None, indentation = '\t'): init_txt = '' if not colorlist is None and len(colorlist) > 0: defaultlist = PglTurtle().getColorList() nbdefault = len(defaultlist) nbcurrent = len(colorlist) firstcol = True defaultmat = Material('default') printer = PyStrPrinter() printer.pglnamespace = 'pgl' printer.indentation = indentation printer.indentation_increment = '\t' printer.line_between_object = 0 if referencedir: printer.reference_dir = referencedir for i in range(nbcurrent): cmat = colorlist[i] if ( (i >= nbdefault) or (cmat.isTexture()) or (not cmat.isSimilar(defaultlist[i])) or (cmat.name != defaultlist[i].name)): if cmat.isTexture() or not cmat.isSimilar(defaultmat): if firstcol : init_txt += indentation+"import openalea.plantgl.all as pgl\n" firstcol = False cmat.name = 'Color_'+str(i) cmat.apply(printer) init_txt += printer.str() printer.clear() init_txt += indentation+'context.turtle.setMaterial('+repr(i)+','+str(cmat.name)+')\n' return init_txt
def _generate_colors_py_code(self, indentation = '\t', reference_dir = None, version = default_lpycode_version): from openalea.plantgl.all import Material, PglTurtle, PyStrPrinter if self.color_list is None: return '' init_txt = '' nbcurrent = len(self.color_list) printer = PyStrPrinter() printer.pglnamespace = 'pgl' printer.indentation = indentation printer.indentation_increment = '\t' printer.line_between_object = 0 if reference_dir and len(reference_dir) > 0: printer.reference_dir = os.path.abspath(reference_dir) firstcol = True for i, cmat in self.color_list.items(): if not isSimilarToDefaultTurtleMat(cmat, i): if firstcol : init_txt += indentation+"import openalea.plantgl.all as pgl\n" firstcol = False if cmat.name == '': cmat.name = 'Color_'+str(i) cmat.apply(printer) init_txt += printer.str() printer.clear() init_txt += indentation+'context.turtle.setMaterial('+repr(i)+','+str(cmat.name)+')\n' return init_txt
def writeObject(self,obj,indentation): printer = PyStrPrinter() printer.pglnamespace = 'pgl' printer.indentation = indentation printer.line_between_object = 0 obj.apply(printer) return printer.str()
def colorListCode(colorlist = None, referencedir = None, indentation = '\t'): init_txt = '' if not colorlist is None and len(colorlist) > 0: defaultlist = PglTurtle().getColorList() nbdefault = len(defaultlist) nbcurrent = len(colorlist) firstcol = True defaultmat = Material('default') printer = PyStrPrinter() printer.pglnamespace = 'pgl' printer.indentation = indentation printer.indentation_increment = '\t' printer.line_between_object = 0 if referencedir: printer.reference_dir = referencedir for i in xrange(nbcurrent): cmat = colorlist[i] if ( (i >= nbdefault) or (cmat.isTexture()) or (not cmat.isSimilar(defaultlist[i])) or (cmat.name != defaultlist[i].name)): if cmat.isTexture() or not cmat.isSimilar(defaultmat): if firstcol : init_txt += indentation+"import openalea.plantgl.all as pgl\n" firstcol = False cmat.name = 'Color_'+str(i) cmat.apply(printer) init_txt += printer.str() printer.clear() init_txt += indentation+'context.turtle.setMaterial('+repr(i)+','+str(cmat.name)+')\n' return init_txt
def writeObject(self, obj, indentation): printer = PyStrPrinter() printer.pglnamespace = 'pgl' printer.indentation = indentation printer.line_between_object = 0 obj.apply(printer) return printer.str()
def initialisationFunction(self, withall=True): header = "def " + LsysContext.InitialisationFunctionName + "(context):\n" init_txt = "" if withall: defaultlist = PglTurtle().getColorList() currentlist = self.lsystem.context().turtle.getColorList() nbdefault = len(defaultlist) nbcurrent = len(currentlist) firstcol = True defaultmat = Material("default") printer = PyStrPrinter() printer.pglnamespace = "pgl" printer.indentation = "\t" printer.indentation_increment = "\t" printer.line_between_object = 0 if self.fname and len(self.fname) > 0: printer.reference_dir = os.path.abspath(os.path.dirname(self.getStrFname())) # print printer.reference_dir for i in xrange(nbcurrent): cmat = currentlist[i] if ( (i >= nbdefault) or (cmat.isTexture()) or (not cmat.isSimilar(defaultlist[i])) or (cmat.name != defaultlist[i].name) ): if cmat.isTexture() or not cmat.isSimilar(defaultmat): if firstcol: init_txt += "\timport openalea.plantgl.all as pgl\n" firstcol = False cmat.name = "Color_" + str(i) cmat.apply(printer) init_txt += printer.str() printer.clear() init_txt += "\tcontext.turtle.setMaterial(" + repr(i) + "," + str(cmat.name) + ")\n" if not self.lsystem.context().is_animation_timestep_to_default(): init_txt += "\tcontext.animation_timestep = " + str(self.getTimeStep()) + "\n" options = self.lsystem.context().options for i in xrange(len(options)): if not options[i].isToDefault(): init_txt += ( "\tcontext.options.setSelection(" + repr(options[i].name) + "," + str(options[i].selection) + ")\n" ) if len(self.scalars): init_txt += "\tscalars = " + str([i.tostr() for i in self.scalars]) + "\n" init_txt += '\tcontext["__scalars__"] = scalars\n' init_txt += '\tfor s in scalars:\n\t\tif not s[1] == "Category" : context[s[0]] = s[2]\n' def emptyparameterset(params): for panel, data in params: if len(data) > 0: return False return True if not emptyparameterset(self.visualparameters): intialized_managers = {} panelid = 0 for panelinfo, objects in self.visualparameters: if panelinfo.get("active", True) or withall: for manager, obj in objects: if not intialized_managers.has_key(manager): intialized_managers[manager] = True init_txt += manager.initWriting("\t") init_txt += manager.writeObject(obj, "\t") init_txt += ( "\tpanel_" + str(panelid) + " = (" + repr(panelinfo) + ",[" + ",".join( [ "(" + repr(manager.typename) + "," + manager.getName(obj) + ")" for manager, obj in objects ] ) + "])\n" ) panelid += 1 init_txt += "\tparameterset = [" panelid = 0 for panelinfo, objects in self.visualparameters: if panelinfo.get("active", True) or withall: init_txt += "panel_" + str(panelid) + "," panelid += 1 init_txt += "]\n" if withall and self.keepCode_1_0_Compatibility: init_txt += '\tcontext["__functions__"] = [' for panelinfo, objects in self.visualparameters: if panelinfo.get("active", True): for manager, obj in objects: if manager.typename == "Function": init_txt += "(" + repr(manager.getName(obj)) + "," + manager.getName(obj) + ")," init_txt += "]\n" init_txt += '\tcontext["__curves__"] = [' for panelinfo, objects in self.visualparameters: if panelinfo.get("active", True): for manager, obj in objects: if manager.typename == "Curve2D": init_txt += "(" + repr(manager.getName(obj)) + "," + manager.getName(obj) + ")," init_txt += "]\n" init_txt += '\tcontext["__parameterset__"] = parameterset\n' for panelinfo, objects in self.visualparameters: if panelinfo.get("active", True): for manager, obj in objects: init_txt += ( '\tcontext["' + manager.getName(obj) + '"] = ' + manager.writeObjectToLsysContext(obj) + "\n" ) if len(init_txt) > 0: return header + init_txt else: return ""
def initialisationFunction(self,withall=True): header = "def "+LsysContext.InitialisationFunctionName+"(context):\n" init_txt = '' if withall: defaultlist = PglTurtle().getColorList() currentlist = self.lsystem.context().turtle.getColorList() nbdefault = len(defaultlist) nbcurrent = len(currentlist) firstcol = True defaultmat = Material('default') printer = PyStrPrinter() printer.pglnamespace = 'pgl' printer.indentation = '\t' printer.indentation_increment = '\t' printer.line_between_object = 0 if self.fname and len(self.fname) > 0: printer.reference_dir = os.path.abspath(os.path.dirname(self.getStrFname())) #print printer.reference_dir for i in xrange(nbcurrent): cmat = currentlist[i] if ( (i >= nbdefault) or (cmat.isTexture()) or (not cmat.isSimilar(defaultlist[i])) or (cmat.name != defaultlist[i].name)): if cmat.isTexture() or not cmat.isSimilar(defaultmat): if firstcol : init_txt += "\timport openalea.plantgl.all as pgl\n" firstcol = False cmat.name = 'Color_'+str(i) cmat.apply(printer) init_txt += printer.str() printer.clear() init_txt += '\tcontext.turtle.setMaterial('+repr(i)+','+str(cmat.name)+')\n' if not self.lsystem.context().is_animation_timestep_to_default(): init_txt += '\tcontext.animation_timestep = '+str(self.getTimeStep())+'\n' options = self.lsystem.context().options for i in xrange(len(options)): if not options[i].isToDefault(): init_txt += '\tcontext.options.setSelection('+repr(options[i].name)+','+str(options[i].selection)+')\n' if len(self.scalars): init_txt += '\tscalars = '+str([i.tostr() for i in self.scalars])+'\n' init_txt += '\tcontext["__scalars__"] = scalars\n' init_txt += '\tfor s in scalars:\n\t\tif not s[1] == "Category" : context[s[0]] = s[2]\n' def emptyparameterset(params): for panel,data in params: if len(data) > 0: return False return True if not emptyparameterset(self.visualparameters) : intialized_managers = {} panelid = 0 for panelinfo,objects in self.visualparameters: if panelinfo.get('active',True) or withall: for manager,obj in objects: if not intialized_managers.has_key(manager): intialized_managers[manager] = True init_txt += manager.initWriting('\t') init_txt += manager.writeObject(obj,'\t') init_txt += '\tpanel_'+str(panelid)+' = ('+repr(panelinfo)+',['+','.join(['('+repr(manager.typename)+','+manager.getName(obj)+')' for manager,obj in objects])+'])\n' panelid += 1 init_txt += '\tparameterset = [' panelid = 0 for panelinfo,objects in self.visualparameters: if panelinfo.get('active',True) or withall: init_txt += 'panel_'+str(panelid)+',' panelid += 1 init_txt += ']\n' if withall and self.keepCode_1_0_Compatibility: init_txt += '\tcontext["__functions__"] = [' for panelinfo,objects in self.visualparameters: if panelinfo.get('active',True): for manager,obj in objects: if manager.typename == 'Function': init_txt += '('+repr(manager.getName(obj))+','+manager.getName(obj)+'),' init_txt += ']\n' init_txt += '\tcontext["__curves__"] = [' for panelinfo,objects in self.visualparameters: if panelinfo.get('active',True): for manager,obj in objects: if manager.typename == 'Curve2D': init_txt += '('+repr(manager.getName(obj))+','+manager.getName(obj)+'),' init_txt += ']\n' init_txt += '\tcontext["__parameterset__"] = parameterset\n' for panelinfo,objects in self.visualparameters: if panelinfo.get('active',True): for manager,obj in objects: init_txt += '\tcontext["'+manager.getName(obj)+'"] = '+manager.writeObjectToLsysContext(obj) + '\n' if len(init_txt) > 0: return header+init_txt else: return ''