コード例 #1
0
ファイル: file.py プロジェクト: redpola/g2ools
 def __init__(self, patch, fromname, index, name):
     self.patch = patch
     self.fromname = fromname
     self.index = index
     self.name = name
     self.modules = []
     self.cables = []
     self.netlist = NetList()
     self.free_indexes = range(1, MAX_MODULES + 1)
コード例 #2
0
    def parse(self):
        lines = self.lines
        line = lines.pop(0)
        fields = line.split()
        if len(fields) > 1:
            if len(fields) == 8:
                l = fields[0]
                line = ' '.join(fields[1:])
                lines.insert(0, line)
            sect = int(l)
        else:
            sect = int(line)
        if sect:
            area = self.patch.voice
        else:
            area = self.patch.fx
        area.cables = []
        area.netlist = NetList()
        area.cables = [None] * len(self.lines)
        for i in xrange(len(self.lines)):
            values = eval_fields(lines[i])
            c = Cable(area)
            c.color, dmod, dconn, ddir, smod, sconn, sdir = values
            dmodule = area.find_module(dmod)
            smodule = area.find_module(smod)
            if ddir:
                dest = dmodule.outputs[dconn]
            else:
                dest = dmodule.inputs[dconn]
            if sdir:
                source = smodule.outputs[sconn]
            else:
                source = smodule.inputs[sconn]

            # if dest is an output, make it the source
            if dest.direction:
                dest, source = source, dest

            area.cables[i] = c
            c.source, c.dest = source, dest

            source.cables.append(c)
            dest.cables.append(c)

            # update netlist with source and dest
            area.netlist.add(source, dest)