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
00029 from Koo.Fields.AbstractFieldWidget import *
00030 from Koo.Fields.AbstractFieldDelegate import *
00031 from Koo.Common.Numeric import *
00032 from PyQt4.QtGui import *
00033 from PyQt4.QtCore import *
00034
00035 class IntegerFieldWidget(AbstractFieldWidget):
00036 def __init__(self, parent, model, attrs={}):
00037 AbstractFieldWidget.__init__(self, parent, model, attrs)
00038 self.widget = QLineEdit( self )
00039 self.widget.setSizePolicy( QSizePolicy.Preferred, QSizePolicy.Fixed )
00040 self.widget.setAlignment( Qt.AlignRight )
00041 layout = QHBoxLayout( self )
00042 layout.setContentsMargins( 0, 0, 0, 0 )
00043 layout.addWidget( self.widget )
00044 self.connect( self.widget, SIGNAL('editingFinished()'), self.calculate )
00045 self.installPopupMenu( self.widget )
00046
00047 def calculate(self):
00048 val = textToInteger( unicode(self.widget.text() ) )
00049 self.setText( integerToText(val) )
00050 self.modified()
00051
00052 def value(self):
00053 return textToInteger( unicode(self.widget.text()) )
00054
00055 def storeValue(self):
00056 self.record.setValue(self.name, self.value() )
00057
00058 def clear(self):
00059 self.setText('0')
00060
00061 def showValue(self):
00062 value = self.record.value( self.name )
00063 self.setText( str(value) )
00064
00065 def setReadOnly(self, value):
00066 AbstractFieldWidget.setReadOnly(self, value)
00067 self.widget.setReadOnly( value )
00068
00069 def colorWidget(self):
00070 return self.widget
00071
00072 def setText(self, text):
00073 self.widget.setCursorPosition( 0 )
00074 self.widget.setText( text )
00075 self.widget.setToolTip( text )
00076
00077 class IntegerFieldDelegate( AbstractFieldDelegate ):
00078 def setModelData(self, editor, model, index):
00079 value = textToInteger( unicode( editor.text() ) )
00080 model.setData( index, QVariant( value ), Qt.EditRole )
00081