From: Kevin A. <ka...@us...> - 2004-05-03 02:56:42
|
Update of /cvsroot/pythoncard/PythonCard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5567 Modified Files: event.py widget.py Log Message: changed to use decorate and translation of event types Index: widget.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/widget.py,v retrieving revision 1.123 retrieving revision 1.124 diff -C2 -d -r1.123 -r1.124 *** widget.py 3 May 2004 00:03:46 -0000 1.123 --- widget.py 3 May 2004 02:56:33 -0000 1.124 *************** *** 349,440 **** def _dispatch(self, aWxEvent): eventType = aWxEvent.GetEventType() ! eventName = None ! if eventType == wx.wxEVT_TIMER: ! aWxEvent.interval = aWxEvent.GetInterval() ! # wxPython 2.5.1.5 workaround ! # for some reason wx.TimerEvent does not contain the event target ! # so we have to set it ourselves ! aWxEvent.target = aWxEvent.eventObject = self else: ! try: ! # all events should have GetEventObject() ! # except of course for wx.TimerEvent above ! # KEA 2004-04-25 ! # should we remove this redundant identifier? ! aWxEvent.target = aWxEvent.eventObject = self ! except: ! pass ! # Each of these could check the event class like ! # wxListEvent and wxTreeEvent above. ! try: ! # mouse and key events ! aWxEvent.position = tuple(aWxEvent.GetPosition()) ! aWxEvent.x = aWxEvent.GetX() ! aWxEvent.y = aWxEvent.GetY() ! aWxEvent.altDown = aWxEvent.AltDown() ! aWxEvent.controlDown = aWxEvent.ControlDown() ! aWxEvent.shiftDown = aWxEvent.ShiftDown() ! except: ! pass ! try: ! # key events ! aWxEvent.keyCode = aWxEvent.GetKeyCode() ! except: ! pass ! if issubclass(self.wxEventIdMap[eventType], event.CommandTypeEvent): ! # could be command, so need to report the name ! # for the handler if it exists ! if self.command: ! eventName = 'command' ! elif eventType == event.MouseMoveEvent.id: ! # check to see if this is a mouseDrag ! if aWxEvent.Dragging(): ! eventType = event.MouseDragEvent.id ! # don't need this if all event types have unique ids ! #eventName = event.MouseDragEvent.name ! ! # the component-specific helper attributes below ! # should be handled in the relevant component _dispatch ! # not the generic one ! """ ! if eventType in [wx.wxEVT_COMMAND_LIST_KEY_DOWN, ! wx.wxEVT_COMMAND_TREE_KEY_DOWN]: ! try: ! # key events are different for wxTreeCtrl and wxListCtrl ! aWxEvent.keyCode = aWxEvent.GetCode() ! except: ! pass ! try: ! # wxListEvent doesn't have GetKeyEvent for some reason ! keyEvent = aWxEvent.GetKeyEvent() ! aWxEvent.altDown = keyEvent.AltDown() ! aWxEvent.controlDown = keyEvent.ControlDown() ! aWxEvent.shiftDown = keyEvent.ShiftDown() ! except: ! pass ! elif eventType in [wx.wxEVT_COMMAND_TREE_BEGIN_DRAG, \ ! wx.wxEVT_COMMAND_TREE_BEGIN_RDRAG, \ ! wx.wxEVT_COMMAND_TREE_END_DRAG, \ ! wx.wxEVT_COMMAND_LIST_BEGIN_DRAG, \ ! wx.wxEVT_COMMAND_LIST_BEGIN_RDRAG, \ ! wx.wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, \ ! wx.wxEVT_COMMAND_LIST_COL_DRAGGING, \ ! wx.wxEVT_COMMAND_LIST_COL_END_DRAG]: ! try: ! # The mouse position during a drag event ! # there doesn't appear to be a way of getting the ! # state of the shift, alt, and control keys ! # during a mouse drag. ! aWxEvent.position = tuple(aWxEvent.GetPoint()) ! aWxEvent.x = aWxEvent.position[0] ! aWxEvent.y = aWxEvent.position[1] ! except: ! pass ! """ ! ! if not eventName: eventName = self.wxEventIdMap[eventType].name # it shouldn't be possible to be in _dispatch for an event --- 349,371 ---- def _dispatch(self, aWxEvent): eventType = aWxEvent.GetEventType() + eventClass = self.wxEventIdMap[eventType] ! eventClassInstance = eventClass(self) ! # decorate will add the relevant event attributes ! aWxEvent = eventClassInstance.decorate(aWxEvent, self) ! if self.command and isinstance(eventClassInstance, event.CommandTypeEvent): ! # need to report the name for the handler if it exists ! eventName = 'command' else: ! if isinstance(eventClassInstance, event.InsteadOfTypeEvent): ! # changes eventType if needed ! # e.g. mouseDrag instead of mouseMove ! eventType = eventClassInstance.translateEventType(aWxEvent) eventName = self.wxEventIdMap[eventType].name + + # cleanup + eventClass = None + eventClassInstance = None # it shouldn't be possible to be in _dispatch for an event Index: event.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/event.py,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** event.py 2 May 2004 22:09:29 -0000 1.64 --- event.py 3 May 2004 02:56:33 -0000 1.65 *************** *** 261,264 **** --- 261,268 ---- def skip( self ) : self.getNativeEvent().Skip() + + def decorate(self, aWxEvent, source): + aWxEvent.target = aWxEvent.eventObject = source + return aWxEvent *************** *** 411,414 **** --- 415,446 ---- pass + class MouseEvent(Event): + def decorate(self, aWxEvent, source): + aWxEvent = Event.decorate(self, aWxEvent, source) + + aWxEvent.position = tuple(aWxEvent.GetPosition()) + aWxEvent.x = aWxEvent.GetX() + aWxEvent.y = aWxEvent.GetY() + aWxEvent.altDown = aWxEvent.AltDown() + aWxEvent.controlDown = aWxEvent.ControlDown() + aWxEvent.shiftDown = aWxEvent.ShiftDown() + return aWxEvent + + class KeyEvent(Event): + def decorate(self, aWxEvent, source): + aWxEvent = Event.decorate(self, aWxEvent, source) + + # this is basically the same block as MouseEvent.decorate + # but it seems wrong to have KeyEvent be a subclass of MouseEvent + aWxEvent.position = tuple(aWxEvent.GetPosition()) + aWxEvent.x = aWxEvent.GetX() + aWxEvent.y = aWxEvent.GetY() + aWxEvent.altDown = aWxEvent.AltDown() + aWxEvent.controlDown = aWxEvent.ControlDown() + aWxEvent.shiftDown = aWxEvent.ShiftDown() + + aWxEvent.keyCode = aWxEvent.GetKeyCode() + return aWxEvent + class GainFocusEvent(Event): *************** *** 424,428 **** ! class KeyPressEvent( Event ) : name = 'keyPress' binding = wx.EVT_CHAR --- 456,460 ---- ! class KeyPressEvent(KeyEvent): name = 'keyPress' binding = wx.EVT_CHAR *************** *** 430,434 **** ! class KeyDownEvent( Event ) : name = 'keyDown' binding = wx.EVT_KEY_DOWN --- 462,466 ---- ! class KeyDownEvent(KeyEvent): name = 'keyDown' binding = wx.EVT_KEY_DOWN *************** *** 436,440 **** ! class KeyUpEvent( Event ) : name = 'keyUp' binding = wx.EVT_KEY_UP --- 468,472 ---- ! class KeyUpEvent(KeyEvent): name = 'keyUp' binding = wx.EVT_KEY_UP *************** *** 511,514 **** --- 543,550 ---- id = wx.wxEVT_TIMER + def decorate(self, aWxEvent, source): + aWxEvent = Event.decorate(self, aWxEvent, source) + aWxEvent.interval = aWxEvent.GetInterval() + return aWxEvent class MouseClickEvent(Event, CommandTypeEvent): *************** *** 523,527 **** command = True ! class MouseDoubleClickEvent(Event): name = 'mouseDoubleClick' binding = wx.EVT_LEFT_DCLICK --- 559,563 ---- command = True ! class MouseDoubleClickEvent(MouseEvent): name = 'mouseDoubleClick' binding = wx.EVT_LEFT_DCLICK *************** *** 529,538 **** ! class MouseDownEvent(Event): name = 'mouseDown' binding = wx.EVT_LEFT_DOWN id = wx.wxEVT_LEFT_DOWN ! class MouseUpEvent(Event): name = 'mouseUp' binding = wx.EVT_LEFT_UP --- 565,574 ---- ! class MouseDownEvent(MouseEvent): name = 'mouseDown' binding = wx.EVT_LEFT_DOWN id = wx.wxEVT_LEFT_DOWN ! class MouseUpEvent(MouseEvent): name = 'mouseUp' binding = wx.EVT_LEFT_UP *************** *** 540,544 **** ! class MouseMiddleDownEvent(Event): name = 'mouseMiddleDown' binding = wx.EVT_MIDDLE_DOWN --- 576,580 ---- ! class MouseMiddleDownEvent(MouseEvent): name = 'mouseMiddleDown' binding = wx.EVT_MIDDLE_DOWN *************** *** 546,550 **** ! class MouseMiddleUpEvent(Event): name = 'mouseMiddleUp' binding = wx.EVT_MIDDLE_UP --- 582,586 ---- ! class MouseMiddleUpEvent(MouseEvent): name = 'mouseMiddleUp' binding = wx.EVT_MIDDLE_UP *************** *** 552,556 **** ! class MouseMiddleDoubleClickEvent(Event): name = 'mouseMiddleDoubleClick' binding = wx.EVT_MIDDLE_DCLICK --- 588,592 ---- ! class MouseMiddleDoubleClickEvent(MouseEvent): name = 'mouseMiddleDoubleClick' binding = wx.EVT_MIDDLE_DCLICK *************** *** 558,562 **** ! class MouseContextDownEvent(Event): name = 'mouseContextDown' binding = wx.EVT_RIGHT_DOWN --- 594,598 ---- ! class MouseContextDownEvent(MouseEvent): name = 'mouseContextDown' binding = wx.EVT_RIGHT_DOWN *************** *** 564,568 **** ! class MouseContextUpEvent(Event): name = 'mouseContextUp' binding = wx.EVT_RIGHT_UP --- 600,604 ---- ! class MouseContextUpEvent(MouseEvent): name = 'mouseContextUp' binding = wx.EVT_RIGHT_UP *************** *** 574,583 **** ! class MouseContextDoubleClickEvent(Event): name = 'mouseContextDoubleClick' binding = wx.EVT_RIGHT_DCLICK id = wx.wxEVT_RIGHT_DCLICK ! class MouseEnterEvent(Event): name = 'mouseEnter' binding = wx.EVT_ENTER_WINDOW --- 610,619 ---- ! class MouseContextDoubleClickEvent(MouseEvent): name = 'mouseContextDoubleClick' binding = wx.EVT_RIGHT_DCLICK id = wx.wxEVT_RIGHT_DCLICK ! class MouseEnterEvent(MouseEvent): name = 'mouseEnter' binding = wx.EVT_ENTER_WINDOW *************** *** 585,589 **** ! class MouseLeaveEvent(Event): name = 'mouseLeave' binding = wx.EVT_LEAVE_WINDOW --- 621,625 ---- ! class MouseLeaveEvent(MouseEvent): name = 'mouseLeave' binding = wx.EVT_LEAVE_WINDOW *************** *** 591,601 **** ! class MouseMoveEvent(Event): name = 'mouseMove' binding = wx.EVT_MOTION id = wx.wxEVT_MOTION ! class MouseDragEvent(Event, InsteadOfTypeEvent): name = 'mouseDrag' binding = wx.EVT_MOTION --- 627,642 ---- ! class MouseMoveEvent(MouseEvent, InsteadOfTypeEvent): name = 'mouseMove' binding = wx.EVT_MOTION id = wx.wxEVT_MOTION + def translateEventType(self, aWxEvent): + if aWxEvent.Dragging(): + return MouseDragEvent.id + else: + return self.id ! class MouseDragEvent(MouseEvent, InsteadOfTypeEvent): name = 'mouseDrag' binding = wx.EVT_MOTION |