Skip to content

Reorder NavigationToolbar2 methods. #17416

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 17, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 80 additions & 80 deletions lib/matplotlib/backend_bases.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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()

Expand Down Expand Up @@ -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.
Expand All @@ -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]:
Expand Down Expand Up @@ -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]:
Expand Down Expand Up @@ -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"]
Expand Down Expand Up @@ -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."""
Expand Down Expand Up @@ -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."""

Expand Down