Exemplo n.º 1
0
 def test(self):
     pdir = r"Y:\code\procodile\checkout\blockworld\misc\karthik\models"
     gid = r"forest.Forest"
     _class = get_class(pdir, gid)
     rc = RecipeConfig()
     rc.generator = ("root", pdir, gid)
     self.add_document(rc)
Exemplo n.º 2
0
    def load_generator(self, start_dir=None):
        loader = Loader()
        old_loader = set_loader(loader)

        try:
            g_info = get_generator_info(self.frame, self)
            if not g_info:
                return
            is_remote, name, package_dir, repo_uri, generator_id, ver = g_info

            if is_remote:
                rc = RecipeConfig()
                rc.generator = (generator_id, repo_uri, generator_id, ver)

            else:
                _class = get_class(package_dir, generator_id)

                if RecipeBasedGenerator in _class.__bases__:
                    rc = _class.get_recipe_config()

                else:
                    rc = RecipeConfig()
                    rc.generator = (generator_id, package_dir, generator_id)

            doc = self.add_document(rc, loader)

        finally:
            set_loader(old_loader)

        self.run_document(doc)
Exemplo n.º 3
0
    def fill(self):
        self.root = self.widget.AddRoot('Generators')
        gens = self.recipe.generators

        for gen in gens:
            name, uri, _id, version = gen
            self.generators.append(name)
            gnode = self.widget.AppendItem(self.root, name)
            self._set_node_image(gnode, 'generator')
            self.widget.SetPyData(gnode, gen)

        root_name, root_uri, root_id, root_version = self.recipe.generator
        root_class = get_class(root_uri, root_id, root_version)

        children = get_children(root_class, root_id)

        for name, child in children.iteritems():
            ident = child.IDENT
            
            if name in self.generators:
                continue

            self.generators.append(name)
            gnode = self.widget.AppendItem(self.root, name)
            self._set_node_image(gnode, 'generator')

            gen_data = (name, ident.location, ident.id, ident.version)
            self.recipe.add_generator(*gen_data)
            self.widget.SetPyData(gnode, gen_data)
Exemplo n.º 4
0
    def _get_class(self, location, _id, version=None):
        old_loader = set_loader(self.loader)

        try:
            _class = get_class(location, _id, version)
        finally:
            set_loader(old_loader)

        return _class
Exemplo n.º 5
0
#! /usr/bin/python

import math
from procodile.procedural import BaseGenerator, Material as M
import procodile.draw as draw
from procodile.loader import get_class

bus = get_class(r'c:\code\procodile\misc\vikraman', 'bus.Bus')

class Divider(BaseGenerator):

    CONFIG = (
                 'length', (100, 500),
                 'width', (1, 4),
                 'height', (0.4, 1.5)
             )

    SUB_GENERATORS = {
                     }

    def generate(self, config):
        C = config
        divider = draw.makeBox(C.width, C.length, C.height)
        self.add_geom(divider)

class Junction(BaseGenerator):

    CONFIG = (
                 'length', (50, 100),
                 'width', (2, 10),
             )
Exemplo n.º 6
0
 def _load_generator(self, location, _id, version):
     location = location or self.package_dir
     generator = get_class(location, _id, version)
     return generator