|
16 | 16 | import matplotlib |
17 | 17 | from matplotlib.backend_bases import ( |
18 | 18 | _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) |
22 | 21 |
|
23 | 22 | from matplotlib import cbook, rcParams, backend_tools |
24 | 23 | from matplotlib._pylab_helpers import Gcf |
@@ -607,20 +606,19 @@ def __init__(self, parent, id, figure): |
607 | 606 | self.Bind(wx.EVT_PAINT, self._onPaint) |
608 | 607 | self.Bind(wx.EVT_KEY_DOWN, self._onKeyDown) |
609 | 608 | 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) |
613 | 618 | 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) |
617 | 619 | self.Bind(wx.EVT_MOTION, self._onMotion) |
618 | 620 | self.Bind(wx.EVT_LEAVE_WINDOW, self._onLeave) |
619 | 621 | 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) |
624 | 622 |
|
625 | 623 | self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, self._onCaptureLost) |
626 | 624 | self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self._onCaptureLost) |
@@ -841,81 +839,25 @@ def _onCaptureLost(self, evt): |
841 | 839 | """Capture changed or lost""" |
842 | 840 | self._set_capture(False) |
843 | 841 |
|
844 | | - def _onRightButtonDown(self, evt): |
| 842 | + def _onMouseButton(self, evt): |
845 | 843 | """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() |
899 | 844 | 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) |
919 | 861 |
|
920 | 862 | def _onMouseWheel(self, evt): |
921 | 863 | """Translate mouse wheel events into matplotlib events""" |
|
0 commit comments