import sys
from PySide import QtGui, QtCore,QtSvg
from lxml import etree

class Rect(QtGui.QWidget):
    
    def __init__(self):
        super(Rect, self).__init__()
        
        self.initUI()
        
    def initUI(self):      
        
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Rect')
        
        self.gridlayout = QtGui.QGridLayout(self)
        self.svg = QtSvg.QSvgWidget(self)
        self.gridlayout.addWidget(self.svg, 1, 1, QtCore.Qt.AlignLeft)
        
        byteA = self.parseSvgFile()
        self.svg.load(byteA)
        self.svg.move(0,0)
        
    def parseSvgFile(self):
        self.tree = etree.parse("rect.svg")
        self.elements = self.getSvgElements("rect")
#        self.elements['gate'].set("x","100")
#        self.elements['gate'].set("y","100")
        text = etree.tostring(self.tree)
        print text
        byteA = QtCore.QByteArray(text)
        return byteA
    
    def getSvgElements(self,tag):
        root = self.tree.getroot()
        dict = {"root":root}
        for element in root.iter(tag):
            dict[element.get("id")] = element
            print "tag: %s, id: %s" %(element.tag,element.get("id"))
        return dict
            


class MainWindow(QtGui.QMainWindow):
       
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        
        self.initUI()
        
    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Rect')
        self.dockOptions()
        
        centralwidget = Rect()
        self.setCentralWidget(centralwidget)
        
        
                
        self.show()
    
    
    def keyPressEvent(self, e):
        
        if e.key() == QtCore.Qt.Key_Escape:
            self.close()
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = MainWindow()
    #ex = Rect()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()