Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 023ce77

Browse files
authored
Merge pull request #14730 from anntzer/wxeventhandlers
Factor out common parts of wx event handlers.
2 parents 4728e70 + 424cf93 commit 023ce77

1 file changed

Lines changed: 28 additions & 86 deletions

File tree

lib/matplotlib/backends/backend_wx.py

Lines changed: 28 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@
1616
import matplotlib
1717
from matplotlib.backend_bases import (
1818
_Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase,
19-
NavigationToolbar2, RendererBase, TimerBase, cursors, ToolContainerBase,
20-
StatusbarBase)
21-
from matplotlib.backend_bases import _has_pil
19+
MouseButton, NavigationToolbar2, RendererBase, StatusbarBase, TimerBase,
20+
ToolContainerBase, _has_pil, cursors)
2221

2322
from matplotlib import cbook, rcParams, backend_tools
2423
from matplotlib._pylab_helpers import Gcf
@@ -607,20 +606,19 @@ def __init__(self, parent, id, figure):
607606
self.Bind(wx.EVT_PAINT, self._onPaint)
608607
self.Bind(wx.EVT_KEY_DOWN, self._onKeyDown)
609608
self.Bind(wx.EVT_KEY_UP, self._onKeyUp)
610-
self.Bind(wx.EVT_RIGHT_DOWN, self._onRightButtonDown)
611-
self.Bind(wx.EVT_RIGHT_DCLICK, self._onRightButtonDClick)
612-
self.Bind(wx.EVT_RIGHT_UP, self._onRightButtonUp)
609+
self.Bind(wx.EVT_LEFT_DOWN, self._onMouseButton)
610+
self.Bind(wx.EVT_LEFT_DCLICK, self._onMouseButton)
611+
self.Bind(wx.EVT_LEFT_UP, self._onMouseButton)
612+
self.Bind(wx.EVT_MIDDLE_DOWN, self._onMouseButton)
613+
self.Bind(wx.EVT_MIDDLE_DCLICK, self._onMouseButton)
614+
self.Bind(wx.EVT_MIDDLE_UP, self._onMouseButton)
615+
self.Bind(wx.EVT_RIGHT_DOWN, self._onMouseButton)
616+
self.Bind(wx.EVT_RIGHT_DCLICK, self._onMouseButton)
617+
self.Bind(wx.EVT_RIGHT_UP, self._onMouseButton)
613618
self.Bind(wx.EVT_MOUSEWHEEL, self._onMouseWheel)
614-
self.Bind(wx.EVT_LEFT_DOWN, self._onLeftButtonDown)
615-
self.Bind(wx.EVT_LEFT_DCLICK, self._onLeftButtonDClick)
616-
self.Bind(wx.EVT_LEFT_UP, self._onLeftButtonUp)
617619
self.Bind(wx.EVT_MOTION, self._onMotion)
618620
self.Bind(wx.EVT_LEAVE_WINDOW, self._onLeave)
619621
self.Bind(wx.EVT_ENTER_WINDOW, self._onEnter)
620-
# Add middle button events
621-
self.Bind(wx.EVT_MIDDLE_DOWN, self._onMiddleButtonDown)
622-
self.Bind(wx.EVT_MIDDLE_DCLICK, self._onMiddleButtonDClick)
623-
self.Bind(wx.EVT_MIDDLE_UP, self._onMiddleButtonUp)
624622

625623
self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, self._onCaptureLost)
626624
self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self._onCaptureLost)
@@ -841,81 +839,25 @@ def _onCaptureLost(self, evt):
841839
"""Capture changed or lost"""
842840
self._set_capture(False)
843841

844-
def _onRightButtonDown(self, evt):
842+
def _onMouseButton(self, evt):
845843
"""Start measuring on an axis."""
846-
x = evt.GetX()
847-
y = self.figure.bbox.height - evt.GetY()
848-
evt.Skip()
849-
self._set_capture(True)
850-
FigureCanvasBase.button_press_event(self, x, y, 3, guiEvent=evt)
851-
852-
def _onRightButtonDClick(self, evt):
853-
"""Start measuring on an axis."""
854-
x = evt.GetX()
855-
y = self.figure.bbox.height - evt.GetY()
856-
evt.Skip()
857-
self._set_capture(True)
858-
FigureCanvasBase.button_press_event(self, x, y, 3,
859-
dblclick=True, guiEvent=evt)
860-
861-
def _onRightButtonUp(self, evt):
862-
"""End measuring on an axis."""
863-
x = evt.GetX()
864-
y = self.figure.bbox.height - evt.GetY()
865-
evt.Skip()
866-
self._set_capture(False)
867-
FigureCanvasBase.button_release_event(self, x, y, 3, guiEvent=evt)
868-
869-
def _onLeftButtonDown(self, evt):
870-
"""Start measuring on an axis."""
871-
x = evt.GetX()
872-
y = self.figure.bbox.height - evt.GetY()
873-
evt.Skip()
874-
self._set_capture(True)
875-
FigureCanvasBase.button_press_event(self, x, y, 1, guiEvent=evt)
876-
877-
def _onLeftButtonDClick(self, evt):
878-
"""Start measuring on an axis."""
879-
x = evt.GetX()
880-
y = self.figure.bbox.height - evt.GetY()
881-
evt.Skip()
882-
self._set_capture(True)
883-
FigureCanvasBase.button_press_event(self, x, y, 1,
884-
dblclick=True, guiEvent=evt)
885-
886-
def _onLeftButtonUp(self, evt):
887-
"""End measuring on an axis."""
888-
x = evt.GetX()
889-
y = self.figure.bbox.height - evt.GetY()
890-
evt.Skip()
891-
self._set_capture(False)
892-
FigureCanvasBase.button_release_event(self, x, y, 1, guiEvent=evt)
893-
894-
# Add middle button events
895-
def _onMiddleButtonDown(self, evt):
896-
"""Start measuring on an axis."""
897-
x = evt.GetX()
898-
y = self.figure.bbox.height - evt.GetY()
899844
evt.Skip()
900-
self._set_capture(True)
901-
FigureCanvasBase.button_press_event(self, x, y, 2, guiEvent=evt)
902-
903-
def _onMiddleButtonDClick(self, evt):
904-
"""Start measuring on an axis."""
905-
x = evt.GetX()
906-
y = self.figure.bbox.height - evt.GetY()
907-
evt.Skip()
908-
self._set_capture(True)
909-
FigureCanvasBase.button_press_event(self, x, y, 2,
910-
dblclick=True, guiEvent=evt)
911-
912-
def _onMiddleButtonUp(self, evt):
913-
"""End measuring on an axis."""
914-
x = evt.GetX()
915-
y = self.figure.bbox.height - evt.GetY()
916-
evt.Skip()
917-
self._set_capture(False)
918-
FigureCanvasBase.button_release_event(self, x, y, 2, guiEvent=evt)
845+
self._set_capture(evt.ButtonDown() or evt.ButtonDClick())
846+
x = evt.X
847+
y = self.figure.bbox.height - evt.Y
848+
button_map = {
849+
wx.MOUSE_BTN_LEFT: MouseButton.LEFT,
850+
wx.MOUSE_BTN_MIDDLE: MouseButton.MIDDLE,
851+
wx.MOUSE_BTN_RIGHT: MouseButton.RIGHT,
852+
}
853+
button = evt.GetButton()
854+
button = button_map.get(button, button)
855+
if evt.ButtonDown():
856+
self.button_press_event(x, y, button, guiEvent=evt)
857+
elif evt.ButtonDClick():
858+
self.button_press_event(x, y, button, dblclick=True, guiEvent=evt)
859+
elif evt.ButtonUp():
860+
self.button_release_event(x, y, button, guiEvent=evt)
919861

920862
def _onMouseWheel(self, evt):
921863
"""Translate mouse wheel events into matplotlib events"""

0 commit comments

Comments
 (0)