8000 add .guiEvent attribute to mpl events to hold native GUI events · matplotlib/matplotlib@4212b59 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4212b59

Browse files
committed
add .guiEvent attribute to mpl events to hold native GUI events
svn path=/trunk/matplotlib/; revision=978
1 parent 89ae6cd commit 4212b59

File tree

3 files changed

+31
-29
lines changed

3 files changed

+31
-29
lines changed

lib/matplotlib/backend_bases.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -549,9 +549,10 @@ class Event:
549549
canvas # the FigureCanvas instance generating the event
550550
551551
"""
552-
def __init__(self, name, canvas):
552+
def __init__(self, name, canvas,guiEvent=None):
553553
self.name = name
554554
self.canvas = canvas
555+
self.guiEvent = guiEvent
555556

556557
class LocationEvent(Event):
557558
"""
@@ -574,12 +575,12 @@ class LocationEvent(Event):
574575
xdata = None # x coord of mouse in data coords
575576
ydata = None # y coord of mouse in data coords
576577

577-
def __init__(self, name, canvas, x, y):
578+
def __init__(self, name, canvas, x, y,guiEvent=None):
578579
"""
579580
x, y in figure coords, 0,0 = bottom, left
580581
button pressed None, 1, 2, 3
581582
"""
582-
Event.__init__(self, name, canvas)
583+
Event.__init__(self, name, canvas,guiEvent=guiEvent)
583584
self.x = x
584585
self.y = y
585586

@@ -627,12 +628,13 @@ class MouseEvent(LocationEvent):
627628
xdata = None # x coord of mouse in data coords
628629
ydata = None # y coord of mouse in data coords
629630

630-
def __init__(self, name, canvas, x, y, button=None, key=None):
631+
def __init__(self, name, canvas, x, y, button=None, key=None,
632+
guiEvent=None):
631633
"""
632634
x, y in figure coords, 0,0 = bottom, left
633635
button pressed None, 1, 2, 3
634636
"""
635-
LocationEvent.__init__(self, name, canvas, x, y)
637+
LocationEvent.__init__(self, name, canvas, x, y, guiEvent=guiEvent)
636638
self.button = button
637639
self.key = key
638640

@@ -656,8 +658,8 @@ class KeyEvent(LocationEvent):
656658
This interface may change slightly when better support for
657659
modifier keys is included
658660
"""
659-
def __init__(self, name, canvas, key, x=0, y=0):
660-
LocationEvent.__init__(self, name, canvas, x, y)
661+
def __init__(self, name, canvas, key, x=0, y=0, guiEvent=None):
662+
LocationEvent.__init__(self, name, canvas, x, y, guiEvent=guiEvent)
661663
self.key = key
662664

663665
class FigureCanvasBase:
@@ -688,49 +690,49 @@ def __init__(self, figure):
688690
self._key = None # the key pressed
689691
self._lastx, self._lasty = None, None
690692

691-
def key_press_event(self, key):
693+
def key_press_event(self, key, guiEvent=None):
692694
self._key = key
693-
event = KeyEvent('key_press_event', self, key, self._lastx, self._lasty)
695+
event = KeyEvent('key_press_event', self, key, self._lastx, self._lasty, guiEvent=guiEvent)
694696
for cid, func in self.callbacks.get('key_press_event', {}).items():
695697
func(event)
696698

697-
def key_release_event(self, key):
698-
event = KeyEvent('key_release_event', self, key, self._lastx, self._lasty)
699+
def key_release_event(self, key, guiEvent=None):
700+
event = KeyEvent('key_release_event', self, key, self._lastx, self._lasty, guiEvent=guiEvent)
699701
for cid, func in self.callbacks.get('key_release_event', {}).items():
700702
func(event)
701703
self._key = None
702704

703-
def button_press_event(self, x, y, button):
705+
def button_press_event(self, x, y, button, guiEvent=None):
704706
"""
705707
Backend derived classes should call this function on any mouse
706708
button press. x,y are the canvas coords: 0,0 is lower, left.
707709
button and key are as defined in MouseEvent
708710
"""
709711
self._button = button
710-
event = MouseEvent('button_press_event', self, x, y, button, self._key)
712+
event = MouseEvent('button_press_event', self, x, y, button, self._key, guiEvent=guiEvent)
711713
for cid, func in self.callbacks.get('button_press_event', {}).items():
712714
func(event)
713715

714-
def button_release_event(self, x, y, button):
716+
def button_release_event(self, x, y, button, guiEvent=None):
715717
"""
716718
Backend derived classes should call this function on any mouse
717719
button release. x,y are the canvas coords: 0,0 is lower, left.
718720
button and key are as defined in MouseEvent
719721
"""
720722

721-
event = MouseEvent('button_release_event', self, x, y, button, self._key)
723+
event = MouseEvent('button_release_event', self, x, y, button, self._key, guiEvent=guiEvent)
722724
for cid, func in self.callbacks.get('button_release_event', {}).items():
723725
func(event)
724726
self._button = None
725727

726-
def motion_notify_event(self, x, y):
728+
def motion_notify_event(self, x, y, guiEvent=None):
727729
"""
728730
Backend derived classes should call this function on any mouse
729731
button release. x,y are the canvas coords: 0,0 is lower, left.
730732
button and key are as defined in MouseEvent
731733
"""
732734
self._lastx, self._lasty = x, y
733-
event = MouseEvent('motion_notify_event', self, x, y, self._button, self._key)
735+
event = MouseEvent('motion_notify_event', self, x, y, self._button, self._key, guiEvent=guiEvent)
734736
for cid, func in self.callbacks.get('motion_notify_event', {}).items():
735737
func(event)
736738

lib/matplotlib/backends/backend_tkagg.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ def motion_notify_event(self, event):
165165
x = event.x
166166
# flipy so y=0 is bottom of canvas
167167
y = self.figure.bbox.height() - event.y
168-
FigureCanvasBase.motion_notify_event(self, x, y)
168+
FigureCanvasBase.motion_notify_event(self, x, y, guiEvent=event)
169169

170170
def button_press_event(self, event):
171171
x = event.x
@@ -179,7 +179,7 @@ def button_press_event(self, event):
179179
if num==2: num=3
180180
elif num==3: num=2
181181

182-
FigureCanvasBase.button_press_event(self, x, y, num)
182+
FigureCanvasBase.button_press_event(self, x, y, num, guiEvent=event)
183183

184184
def button_release_event(self, event):
185185
x = event.x
@@ -194,7 +194,7 @@ def button_release_event(self, event):
194194
if num==2: num=3
195195
elif num==3: num=2
196196

197-
FigureCanvasBase.button_release_event(self, x, y, num)
197+
FigureCanvasBase.button_release_event(self, x, y, num, guiEvent=event)
198198

199199
def _get_key(self, event):
200200
val = event.keysym_num
@@ -209,11 +209,11 @@ def _get_key(self, event):
209209

210210
def key_press(self, event):
211211
key = self._get_key(event)
212-
FigureCanvasBase.key_press_event(self, key)
212+
FigureCanvasBase.key_press_event(self, key, guiEvent=event)
213213

214214
def key_release(self, event):
215215
key = self._get_key(event)
216-
FigureCanvasBase.key_release_event(self, key)
216+
FigureCanvasBase.key_release_event(self, key, guiEvent=event)
217217

218218

219219

lib/matplotlib/backends/backend_wx.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,44 +1060,44 @@ def _onKeyDown(self, evt):
10601060
"""Capture key press."""
10611061
key = self._get_key(evt)
10621062
evt.Skip()
1063-
FigureCanvasBase.key_press_event(self, key)
1063+
FigureCanvasBase.key_press_event(self, key, guiEvent=evt)
10641064

10651065
def _onKeyUp(self, evt):
10661066
"""Release key."""
10671067
key = self._get_key(evt)
10681068
#print 'release key', key
10691069
evt.Skip()
1070-
FigureCanvasBase.key_release_event(self, key)
1070+
FigureCanvasBase.key_release_event(self, key, guiEvent=evt)
10711071

10721072
def _onRightButtonDown(self, evt):
10731073
"""Start measuring on an axis."""
10741074
x = evt.GetX()
10751075
y = self.figure.bbox.height() - evt.GetY()
10761076
evt.Skip()
1077-
FigureCanvasBase.button_press_event(self, x, y, 3)
1077+
FigureCanvasBase.button_press_event(self, x, y, 3, guiEvent=evt)
10781078

10791079

10801080
def _onRightButtonUp(self, evt):
10811081
"""End measuring on an axis."""
10821082
x = evt.GetX()
10831083
y = self.figure.bbox.height() - evt.GetY()
10841084
evt.Skip()
1085-
FigureCanvasBase.button_release_event(self, x, y, 3)
1085+
FigureCanvasBase.button_release_event(self, x, y, 3, guiEvent=evt)
10861086

10871087
def _onLeftButtonDown(self, evt):
10881088
"""Start measuring on an axis."""
10891089
x = evt.GetX()
10901090
y = self.figure.bbox.height() - evt.GetY()
10911091
evt.Skip()
1092-
FigureCanvasBase.button_press_event(self, x, y, 1)
1092+
FigureCanvasBase.button_press_event(self, x, y, 1, guiEvent=evt)
10931093

10941094
def _onLeftButtonUp(self, evt):
10951095
"""End measuring on an axis."""
10961096
x = evt.GetX()
10971097
y = self.figure.bbox.height() - evt.GetY()
10981098
#print 'release button', 1
10991099
evt.Skip()
1100-
FigureCanvasBase.button_release_event(self, x, y, 1)
1100+
FigureCanvasBase.button_release_event(self, x, y, 1, guiEvent=evt)
11011101

11021102
def _onMouseWheel(self, evt):
11031103
# TODO: implement mouse wheel handler
@@ -1109,7 +1109,7 @@ def _onMotion(self, evt):
11091109
x = evt.GetX()
11101110
y = self.figure.bbox.height() - evt.GetY()
11111111
evt.Skip()
1112-
FigureCanvasBase.motion_notify_event(self, x, y)
1112+
FigureCanvasBase.motion_notify_event(self, x, y, guiEvent=evt)
11131113

11141114

11151115
########################################################################

0 commit comments

Comments
 (0)
0