From: Kevin A. <ka...@us...> - 2004-05-03 16:12:31
|
Update of /cvsroot/pythoncard/PythonCard/components In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29382/components Modified Files: codeeditor.py Log Message: switched to new style event binding and dispatch Index: codeeditor.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/components/codeeditor.py,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** codeeditor.py 1 May 2004 18:47:48 -0000 1.34 --- codeeditor.py 3 May 2004 16:12:23 -0000 1.35 *************** *** 123,128 **** self._setEditable(False) ! adapter = CodeEditorEventBinding(self) ! adapter.bindEvents() # POB 2002-05-04 --- 123,129 ---- self._setEditable(False) ! #adapter = CodeEditorEventBinding(self) ! #adapter.bindEvents() ! self._bindEvents(event.WIDGET_EVENTS + (event.KeyPressEvent, event.KeyDownEvent, event.KeyUpEvent)) # POB 2002-05-04 *************** *** 369,455 **** - # this is a copy of TextFieldEventBinding - # not all the events below are valid, but key presses do seem to - # be working - class CodeEditorEventBinding( event.DefaultEventBinding ) : - """ - Bind the Events supported by event.TextField to wxPython. - """ - def __init__( self, aComponent ) : - - event.DefaultEventBinding.__init__( self, aComponent ) - - def bindEvent( self, aEventClass ) : - - parent = self._component._parent - - # KEA 2001-10-05 - # I don't think this event is used in TextField ?! - #if aEventClass is TextEnterEvent : - # EVT_TEXT_ENTER( parent, self._component.GetId(), self._dispatch ) - - if aEventClass is event.KeyDownEvent : - wx.EVT_KEY_DOWN( self._component, self._dispatch ) - - if aEventClass is event.KeyUpEvent : - wx.EVT_KEY_UP( self._component, self._dispatch ) - - if aEventClass is event.KeyPressEvent : - wx.EVT_CHAR( self._component, self._dispatch ) - - def _dispatch(self, aWxEvent): - # Call our superclass to dispatch the standard mouse - # events that every widget should get. - if event.DefaultEventBinding._dispatch(self, aWxEvent): - return - - evt = None - - if aWxEvent.GetEventType() == event.wxEVT_CLOSE_FIELD: - #print 'handling closeField' - evt = self._createEvent(event.CloseFieldEvent, aWxEvent) - - if aWxEvent.GetEventType() == wx.wxEVT_COMMAND_TEXT_UPDATED : - evt = self._createEvent( event.TextUpdateEvent, aWxEvent ) - - #if aWxEvent.GetEventType() == wxEVT_COMMAND_TEXT_ENTER : - # event = self._createEvent( TextEnterEvent, aWxEvent ) - # this should be associated with losing focus, not textEnter - #self._component.notifyEventListeners( CloseField( self._component ) ) - - if aWxEvent.GetEventType() == wx.wxEVT_KEY_DOWN : - #print '_dispatch wxEVT_KEY_DOWN' - #evt = KeyDownEvent( self._component ) - evt = self._createEvent( event.KeyDownEvent, aWxEvent ) - - if aWxEvent.GetEventType() == wx.wxEVT_KEY_UP : - #print '_dispatch wxEVT_KEY_UP' - #evt = KeyUpEvent( self._component ) - evt = self._createEvent( event.KeyUpEvent, aWxEvent ) - - if aWxEvent.GetEventType() == wx.wxEVT_CHAR : - #print '_dispatch wxEVT_CHAR' - #evt = KeyPressEvent( self._component ) - evt = self._createEvent( event.KeyPressEvent, aWxEvent ) - - if evt is not None : - #print '_dispatch evt is not None' - self._component.notifyEventListeners( evt ) - #print "after notify" - - # KEA 2001-10-05 - # there needs to be an Event.Skip() somewhere if the event was not handled - # by user code - # however, skip should normally only be called if the user code didn't process - # the event, which will allow the user code to "eat" the event, suppressing - # and/or changing the actions of certain keys - # need to make a complete list of which events can be eaten and which can't - if not evt.getUsed(): - aWxEvent.Skip() - # KEA 2001-10-26 - # if textEnter wasn't handled then focus should move to the next - # control in the panel, just like pressing tab - - import sys from PythonCard import registry --- 370,373 ---- |