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 
00030 from Koo.Common.Numeric import *
00031 from Koo.Search.AbstractSearchWidget import * 
00032 from PyQt4.QtGui import *
00033 from PyQt4.QtCore import *
00034 from PyQt4.uic import *
00035 
00036 class FloatSearchWidget(AbstractSearchWidget):
00037         def __init__(self, name, parent, attrs={}):
00038                 AbstractSearchWidget.__init__(self, name, parent, attrs)
00039                 layout = QHBoxLayout( self )
00040                 layout.setSpacing( 0 )
00041                 layout.setContentsMargins( 0, 0, 0, 0 )
00042                 self.uiStart = QLineEdit( self )
00043                 label = QLabel( '-', self )
00044                 self.uiEnd = QLineEdit( self )
00045                 layout.addWidget( self.uiStart )
00046                 layout.addWidget( label )
00047                 layout.addWidget( self.uiEnd )
00048 
00049                 
00050                 self.uiStart.installEventFilter( self )
00051                 self.uiEnd.installEventFilter( self )
00052 
00053                 self.connect( self.uiStart, SIGNAL('returnPressed()'), self.calculate )
00054                 self.connect( self.uiEnd, SIGNAL('returnPressed()'), self.calculate )
00055 
00056                 self.focusWidget = self.uiStart
00057 
00058         def calculate(self):
00059                 widget = self.sender()
00060                 val = textToFloat( str(widget.text() ) )
00061                 if val:
00062                         widget.setText( str(val) )
00063                 else:
00064                         widget.setText('')
00065 
00066         def value(self):
00067                 res = []
00068                 start = textToFloat( str(self.uiStart.text()) )
00069                 end = textToFloat( str(self.uiEnd.text()) )
00070                 if start and not end:
00071                         res.append((self.name, '=', start))
00072                         return res
00073                 if start:
00074                         res.append((self.name, '>=', start))
00075                 if end:
00076                         res.append((self.name, '<=', end))
00077                 return res
00078 
00079         def clear(self):
00080                 self.uiStart.clear()
00081                 self.uiEnd.clear()
00082 
00083         def setValue(self, value):
00084                 if value:
00085                         self.uiStart.setText( str(value) )
00086                         self.uiEnd.setText( str(value) )
00087                 else:
00088                         self.uiStart.clear()
00089                         self.uiEnd.clear()
00090