def processBox(self, rules, row, col, matrix, action="rows"):

        startcol = col
        startrow = row
        endcol = col
        endrow = row
        headingrow = row
        self.addToLayout(startrow, startcol, andThenPostpone = True)
        if "heading" in rules:
            row += 1
        if "data" in rules:
            self.boxOpen = True
            value = rules["data"]
            (endrow, endcol) = self.processList(value, row, col, matrix, action)
            self.boxOpen = False
        if "heading" in rules:
            value = rules["heading"]
            (row, endcol) = self.addLabel(value, headingrow, col, endcol - col, 1)
        self.matrix.boxRange(startrow, startcol, endrow, endcol - 1)
        self.addToLayout(startrow, startcol, endPostpone = True)
        return (endrow, endcol)

    # -------------------------------------------------------------------------
@todo: docstring
dataset/ETHPy150Open sahana/eden/modules/s3db/survey.py/survey_DataMatrixBuilder.processBox