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 PyQt4.QtCore import *
00029 from PyQt4.QtGui import *
00030 from PyQt4.uic import *
00031 
00032 from Koo.Common import Api
00033 from Koo.Common import Common
00034 from Koo import Rpc
00035 
00036 from Koo.Screen.Screen import Screen
00037 from Koo.Model.Group import RecordGroup
00038 from Koo.Fields.AbstractFieldWidget import *
00039 from Koo.Fields.AbstractFieldDelegate import *
00040 from Koo.Dialogs.SearchDialog import SearchDialog
00041 
00042 (ManyToOnePosFieldWidgetUi, ManyToOnePosFieldWidgetBase ) = loadUiType( Common.uiPath('many2one_pos.ui') ) 
00043 
00044 class ManyToOnePosFieldWidget(AbstractFieldWidget, ManyToOnePosFieldWidgetUi):
00045         def __init__(self, parent, model, attrs={}):
00046                 AbstractFieldWidget.__init__(self, parent, model, attrs)
00047                 ManyToOnePosFieldWidgetUi.__init__(self)
00048                 self.setupUi(self)
00049 
00050                 self.setSizePolicy( QSizePolicy.Preferred, QSizePolicy.Preferred )
00051 
00052                 self.connect( self.screen, SIGNAL('currentChanged()'), self.selected )
00053 
00054                 self.installPopupMenu( self.screen )
00055                 self.old = None
00056                 self.latestMatch = None
00057                 self.searching = True
00058 
00059         def colorWidget(self):
00060                 view = self.screen.currentView()
00061                 if view:
00062                         return view.widget
00063                 return self.screen
00064 
00065         def initGui(self):
00066                 group = RecordGroup( self.attrs['relation'] )
00067                 group.setDomainForEmptyGroup()
00068 
00069 
00070                 self.screen.setRecordGroup( group )
00071                 self.screen.setEmbedded( True )
00072                 
00073                 
00074                 
00075                 if 'views' in self.attrs and 'tree' in self.attrs['views']:
00076                         arch = self.attrs['views']['tree']['arch']
00077                         fields = self.attrs['views']['tree']['fields']
00078                         self.screen.addView(arch, fields, display=True)
00079                 else:
00080                         self.screen.addViewByType('tree', display=True)
00081                 treeView = self.screen.currentView().widget
00082                 treeView.setHeaderHidden( True )
00083 
00084         def selected(self):
00085                 id = self.screen.currentId()
00086                 self.record.setValue(self.name, id)
00087 
00088         def setReadOnly(self, value):
00089                 AbstractFieldWidget.setReadOnly(self, value)
00090 
00091         def clear(self):
00092                 self.screen.setCurrentRecord( None )
00093                 
00094 
00095         def showValue(self):
00096                 group = self.screen.group 
00097                 group.setContext( self.record.fieldContext( self.name ) )
00098                 domain = self.record.domain( self.name )
00099                 if group.domain() != domain:
00100                         group.setDomain( self.record.domain( self.name ) )
00101 
00102                 id = self.record.value(self.name)
00103                 if id:
00104                         record = group.modelById( id )
00105                 else:
00106                         record = None
00107                 self.screen.setCurrentRecord( record )
00108                 self.screen.display()
00109                 
00110                 treeView = self.screen.currentView().widget
00111                 for column in xrange(0, treeView.model().columnCount()):
00112                         treeView.resizeColumnToContents( column )
00113 
00114         
00115         
00116         
00117         def storeValue(self):
00118                 pass
00119 
00120         def saveState(self):
00121                 self.screen.storeViewSettings()
00122                 return AbstractFieldWidget.saveState(self)
00123