00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 from Koo.View.AbstractView import *
00029 from PyQt4.QtGui import *
00030 from PyQt4.QtCore import *
00031 from PyQt4.QtSvg import *
00032 
00033 class SvgView( AbstractView ):
00034         def __init__(self, parent=None):
00035                 AbstractView.__init__( self, parent )
00036                 self.scene = QGraphicsScene( self )
00037                 self.view = QGraphicsView( self )
00038                 self.view.setScene( self.scene )
00039                 self.view.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing | QPainter.SmoothPixmapTransform);
00040                 self.view.setHorizontalScrollBarPolicy( Qt.ScrollBarAlwaysOff )
00041                 self.view.setVerticalScrollBarPolicy( Qt.ScrollBarAlwaysOff )
00042                 self.svg = None
00043                 self.widgets = {}
00044                 self.fields = {}
00045                 self.record = None
00046 
00047                 layout = QVBoxLayout(self)
00048                 layout.addWidget( self.view )
00049 
00050         def viewType(self):
00051                 return 'gantt'
00052 
00053         def showsMultipleRecords(self):
00054                 return False
00055 
00056         def setSvg( self, file ):
00057                 
00058                 
00059                 
00060 
00061                 self.svg = QGraphicsSvgItem( file )
00062                 self.scene.addItem( self.svg )
00063 
00064                 for name in self.widgets.keys():
00065                         if not self.svg.renderer().elementExists( name ):
00066                                 continue
00067                         r = self.svg.renderer().boundsOnElement( name )
00068                         
00069                         widget = self.widgets[name]
00070                         widget.resize( r.size().width(), r.size().height() )
00071                         proxy = self.scene.addWidget( widget )
00072                         proxy.resize( r.size() )
00073                         
00074                         proxy.moveBy( r.x(), r.y() )
00075                         proxy.setZValue( 1 )
00076 
00077                 
00078 
00079         def display(self, currentRecord, records):
00080                 
00081                 
00082                 
00083                 
00084                 
00085                 
00086                 
00087                 
00088                 if self.record:
00089                         self.disconnect(self.record,SIGNAL('recordChanged(PyQt_PyObject)'),self.updateDisplay)
00090                 self.record = currentRecord
00091                 if self.record:
00092                         self.connect(self.record, SIGNAL('recordChanged(PyQt_PyObject)'),self.updateDisplay)
00093                 self.updateDisplay(self.record)
00094 
00095         def updateDisplay(self, record):
00096                 
00097                 for name in self.widgets:
00098                         if self.record:
00099                                 self.widgets[name].load(self.record)
00100                         else:
00101                                 self.widgets[name].load(None)