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.Model.KooModel import *
00029 from Koo.View.AbstractParser import *
00030 from Calendar import *
00031 
00032 from PyQt4.QtCore import *
00033 from PyQt4.QtGui import *
00034 
00035 
00036 class CalendarParser( AbstractParser ):
00037 
00038         def create(self, viewId, parent, model, rootNode, fields):
00039                 self.screen = parent
00040                 view = CalendarView( parent )
00041                 view.id = viewId
00042 
00043                 attrs = Common.nodeAttributes(rootNode)
00044                 view.setOnWriteFunction( attrs.get('on_write', '') )
00045 
00046                 if not view.title:
00047                         view.title = attrs.get('string', _('Unknown'))
00048 
00049                 startDate = attrs.get('date_start')
00050                 stopDate = attrs.get('date_stop')
00051                 dateDelay = attrs.get('date_delay')
00052                 color = attrs.get('color')
00053 
00054                 header = []
00055                 header.append( startDate )
00056                 if dateDelay:
00057                         header.append( dateDelay )
00058                 if color:
00059                         header.append( color )
00060                 for node in rootNode.childNodes:
00061                         node_attrs = Common.nodeAttributes(node)
00062                         if node.localName == 'field':
00063                                 header.append( node_attrs['name'] )
00064 
00065                 
00066                 
00067                 
00068                 
00069 
00070                 model = KooModel( view )
00071                 model.setMode( KooModel.ListMode )
00072                 model.setRecordGroup( self.screen.group )
00073                 model.setFields( fields )
00074                 model.setFieldsOrder( header )
00075                 model.setReadOnly( not attrs.get('editable', False) )
00076                 model.setShowBackgroundColor( True )
00077 
00078                 view.setReadOnly( not attrs.get('editable', False) )
00079                 view.setModel( model )
00080                 view.setModelDateColumn( 0 )
00081                 column = 1
00082                 if dateDelay:
00083                         view.setModelDurationColumn( column )
00084                         column += 1
00085                 if color:
00086                         view.setModelColorColumn( column )
00087                         column += 1
00088                 view.setModelTitleColumn( column )
00089 
00090                 return view
00091 
00092 
00093