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 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 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 ''