Example #1
0
 def writeObject(self, obj, indentation):
     printer = PyStrPrinter()
     printer.pglnamespace = 'pgl'
     printer.indentation = indentation
     printer.line_between_object = 0
     obj.apply(printer)
     return printer.str()
Example #2
0
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
Example #3
0
    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
Example #4
0
 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 ''