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