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