00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 from PyQt4.QtCore import *
00020 from KeyboardWidget import *
00021 from KeypadWidget import *
00022
00023
00024
00025
00026
00027
00028 class PosEventFilter(QObject):
00029
00030 def __init__(self, parent=None):
00031 QObject.__init__(self, parent)
00032 self.currentWidget = None
00033 self.keyboard = None
00034
00035
00036
00037 def eventFilter(self, obj, event):
00038 if event.type() == QEvent.MouseButtonPress:
00039 if obj != self.currentWidget:
00040 if obj.inherits( 'QLineEdit' ) or obj.inherits( 'QTextEdit' ):
00041 self.currentWidget = obj
00042 self.openKeyboard( obj )
00043 elif event.type() == QEvent.FocusOut:
00044 if obj and obj == self.currentWidget and self.keyboard:
00045 self.keyboard.hide()
00046 self.keyboard = None
00047 self.currentWidget = None
00048 return QObject.eventFilter( self, obj, event )
00049
00050 def tabKeyPressed(self):
00051 widget = QApplication.focusWidget()
00052 if widget and ( widget.inherits( 'QLineEdit' ) or widget.inherits( 'QTextEdit' ) ):
00053 self.openKeyboard( widget )
00054 else:
00055 self.closeKeyboard()
00056
00057 def openKeyboard(self, obj):
00058 self.closeKeyboard()
00059 if obj.parent() and ( obj.parent().inherits( 'FloatFieldWidget' ) or obj.parent().inherits( 'IntegerFieldWidget' ) ):
00060 self.keyboard = KeypadWidget( obj )
00061 else:
00062 self.keyboard = KeyboardWidget( obj )
00063 self.connect( self.keyboard, SIGNAL( 'tabKeyPressed' ), self.tabKeyPressed )
00064
00065 def closeKeyboard(self):
00066 if self.keyboard:
00067 try:
00068 self.keyboard.setParent(None)
00069 del self.keyboard
00070 except:
00071 pass
00072 self.keyboard = None
00073