diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 1a957b212e96..e0ec6f85852d 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2762,18 +2762,6 @@ def __init__(self, canvas): def set_message(self, s): """Display a message on toolbar or in status bar.""" - def back(self, *args): - """ - Move back up the view lim stack. - - For convenience of being directly connected as a GUI callback, which - often get passed additional parameters, this method accepts arbitrary - parameters, but does not use them. - """ - self._nav_stack.back() - self.set_history_buttons() - self._update_view() - def draw_rubberband(self, event, x0, y0, x1, y1): """ Draw a rectangle rubberband to indicate zoom limits. @@ -2784,27 +2772,39 @@ def draw_rubberband(self, event, x0, y0, x1, y1): def remove_rubberband(self): """Remove the rubberband.""" - def forward(self, *args): + def home(self, *args): """ - Move forward in the view lim stack. + Restore the original view. For convenience of being directly connected as a GUI callback, which often get passed additional parameters, this method accepts arbitrary parameters, but does not use them. """ - self._nav_stack.forward() + self._nav_stack.home() self.set_history_buttons() self._update_view() - def home(self, *args): + def back(self, *args): """ - Restore the original view. + Move back up the view lim stack. For convenience of being directly connected as a GUI callback, which often get passed additional parameters, this method accepts arbitrary parameters, but does not use them. """ - self._nav_stack.home() + self._nav_stack.back() + self.set_history_buttons() + self._update_view() + + def forward(self, *args): + """ + Move forward in the view lim stack. + + For convenience of being directly connected as a GUI callback, which + often get passed additional parameters, this method accepts arbitrary + parameters, but does not use them. + """ + self._nav_stack.forward() self.set_history_buttons() self._update_view() @@ -2908,6 +2908,14 @@ def _zoom_pan_handler(self, event): elif event.name == "button_release_event": self.release_zoom(event) + @cbook.deprecated("3.3") + def press(self, event): + """Called whenever a mouse button is pressed.""" + + @cbook.deprecated("3.3") + def release(self, event): + """Callback for mouse button release.""" + def pan(self, *args): """ Toggle the pan/zoom tool. @@ -2924,10 +2932,6 @@ def pan(self, *args): a.set_navigate_mode(self.mode) self.set_message(self.mode) - @cbook.deprecated("3.3") - def press(self, event): - """Called whenever a mouse button is pressed.""" - def press_pan(self, event): """Callback for mouse button press in pan/zoom mode.""" if event.button in [1, 3]: @@ -2955,6 +2959,49 @@ def press_pan(self, event): if press is not None: press(event) + def drag_pan(self, event): + """Callback for dragging in pan/zoom mode.""" + for a, ind in self._xypress: + #safer to use the recorded button at the press than current button: + #multiple button can get pressed during motion... + a.drag_pan(self._button_pressed, event.key, event.x, event.y) + self.canvas.draw_idle() + + def release_pan(self, event): + """Callback for mouse button release in pan/zoom mode.""" + + if self._button_pressed is None: + return + self.canvas.mpl_disconnect(self._id_drag) + self._id_drag = self.canvas.mpl_connect( + 'motion_notify_event', self.mouse_move) + for a, ind in self._xypress: + a.end_pan() + if not self._xypress: + return + self._xypress = [] + self._button_pressed = None + self.push_current() + release = cbook._deprecate_method_override( + __class__.press, self, since="3.3", message="Calling an " + "overridden release() at pan stop is deprecated since %(since)s " + "and will be removed %(removal)s; override release_pan() instead.") + if release is not None: + release(event) + self._draw() + + def zoom(self, *args): + """Toggle zoom to rect mode.""" + if self.mode == _Mode.ZOOM: + self.mode = _Mode.NONE + self.canvas.widgetlock.release(self) + else: + self.mode = _Mode.ZOOM + self.canvas.widgetlock(self) + for a in self.canvas.figure.get_axes(): + a.set_navigate_mode(self.mode) + self.set_message(self.mode) + def press_zoom(self, event): """Callback for mouse button press in zoom to rect mode.""" if event.button not in [1, 3]: @@ -2982,52 +3029,6 @@ def press_zoom(self, event): if press is not None: press(event) - def push_current(self): - """Push the current view limits and position onto the stack.""" - self._nav_stack.push( - WeakKeyDictionary( - {ax: (ax._get_view(), - # Store both the original and modified positions. - (ax.get_position(True).frozen(), - ax.get_position().frozen())) - for ax in self.canvas.figure.axes})) - self.set_history_buttons() - - @cbook.deprecated("3.3") - def release(self, event): - """Callback for mouse button release.""" - - def release_pan(self, event): - """Callback for mouse button release in pan/zoom mode.""" - - if self._button_pressed is None: - return - self.canvas.mpl_disconnect(self._id_drag) - self._id_drag = self.canvas.mpl_connect( - 'motion_notify_event', self.mouse_move) - for a, ind in self._xypress: - a.end_pan() - if not self._xypress: - return - self._xypress = [] - self._button_pressed = None - self.push_current() - release = cbook._deprecate_method_override( - __class__.press, self, since="3.3", message="Calling an " - "overridden release() at pan stop is deprecated since %(since)s " - "and will be removed %(removal)s; override release_pan() instead.") - if release is not None: - release(event) - self._draw() - - def drag_pan(self, event): - """Callback for dragging in pan/zoom mode.""" - for a, ind in self._xypress: - #safer to use the recorded button at the press than current button: - #multiple button can get pressed during motion... - a.drag_pan(self._button_pressed, event.key, event.x, event.y) - self.canvas.draw_idle() - def drag_zoom(self, event): """Callback for dragging in zoom mode.""" start_xy = self._zoom_info["start_xy"] @@ -3093,6 +3094,17 @@ def release_zoom(self, event): if release is not None: release(event) + def push_current(self): + """Push the current view limits and position onto the stack.""" + self._nav_stack.push( + WeakKeyDictionary( + {ax: (ax._get_view(), + # Store both the original and modified positions. + (ax.get_position(True).frozen(), + ax.get_position().frozen())) + for ax in self.canvas.figure.axes})) + self.set_history_buttons() + @cbook.deprecated("3.3", alternative="toolbar.canvas.draw_idle()") def draw(self): """Redraw the canvases, update the locators.""" @@ -3153,18 +3165,6 @@ def update(self): self._nav_stack.clear() self.set_history_buttons() - def zoom(self, *args): - """Toggle zoom to rect mode.""" - if self.mode == _Mode.ZOOM: - self.mode = _Mode.NONE - self.canvas.widgetlock.release(self) - else: - self.mode = _Mode.ZOOM - self.canvas.widgetlock(self) - for a in self.canvas.figure.get_axes(): - a.set_navigate_mode(self.mode) - self.set_message(self.mode) - def set_history_buttons(self): """Enable or disable the back/forward button."""