#!/usr/bin/env python3

import inkex
from lxml import etree

class DrawBBoxes(inkex.Effect):
    def __init__(self):
        inkex.Effect.__init__(self)

    def effect(self):
        if len(self.svg.selected) > 0:
            bboxes = [(id, node, node.bounding_box()) for id, node in self.svg.selected.items()]
            for id, node, bbox in bboxes:
                attribs = {
                    'style'     : str(inkex.Style({'stroke':'#ff0000','stroke-width'  : '1','fill':'none'})),
                    'x'         : str(bbox.left),
                    'y'         : str(bbox.top),
                    'width'     : str(bbox.width),
                    'height'    : str(bbox.height),
                }
                etree.SubElement(self.svg.get_current_layer(), inkex.addNS('rect','svg'), attribs )

DrawBBoxes().run()
