def read_blocks(self, parent):
        block_header = self._read_block_header()
        if block_header == '':
            return None
        obj = KicadObject.Instance(block_header)
        parent.AddNode(obj)

        attr = self._read_field()
        while attr != None:
            obj.AddAttribute(attr)
            attr = self._read_field()

        node = self.read_blocks(obj)
        while node:
            node = self.read_blocks(obj)

        self._skip_spaces()
        c = self.observe(1)
        if c == ')':
            self.read(1)

        return obj
 def __init__(self):
     super(KicadThickness, self).__init__('thickness')
     KicadObject._register(self.header, KicadThickness)
 def __init__(self):
     super(KicadFont, self).__init__('font')
     KicadObject._register(self.header, KicadFont)
 def __init__(self):
     super(KicadDrill, self).__init__('drill')
     KicadObject._register(self.header, KicadDrill)
 def __init__(self):
     super(KicadSize, self).__init__('size')
     KicadObject._register(self.header, KicadSize)
 def __init__(self):
     super(KicadWidth, self).__init__('width')
     KicadObject._register(self.header, KicadWidth)
 def __init__(self):
     super(KicadLayers, self).__init__('layers')
     KicadObject._register(self.header, KicadLayers)
 def __init__(self):
     super(KicadModule, self).__init__('module')
     KicadObject._register(self.header, KicadModule)
 def __init__(self):
     super(KicadStart, self).__init__('start')
     KicadObject._register(self.header, KicadStart)
 def __init__(self):
     super(KicadAt, self).__init__('at')
     KicadObject._register(self.header, KicadAt)
 def __init__(self):
     super(KicadFPCircle, self).__init__('fp_circle')
     KicadObject._register(self.header, KicadFPCircle)
 def __init__(self):
     super(KicadFPText, self).__init__('fp_text')
     KicadObject._register(self.header, KicadFPText)
 def __init__(self):
     super(KicadPad, self).__init__('pad')
     KicadObject._register(self.header, KicadPad)
 def __init__(self):
     super(KicadFPLine, self).__init__('fp_line')
     KicadObject._register(self.header, KicadFPLine)
 def __init__(self):
     super(KicadCenter, self).__init__('center')
     KicadObject._register(self.header, KicadCenter)
 def __init__(self):
     super(KicadEnd, self).__init__('end')
     KicadObject._register(self.header, KicadEnd)
 def __init__(self):
     self.filename = None
     self.onChanged = None
     self.parent = KicadObject('')