Skip to content

Commit 41bb167

Browse files
committed
Deprecate backend_tools.SetCursorBase.set_cursor.
Which is now replaced by `FigureCanvasBase.set_cursor`.
1 parent 6e3f43f commit 41bb167

File tree

7 files changed

+37
-10
lines changed

7 files changed

+37
-10
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1-
``NavigationToolbar2.set_cursor``
2-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1+
``NavigationToolbar2.set_cursor`` and ``backend_tools.SetCursorBase.set_cursor``
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33
Instead, use the `.FigureCanvasBase.set_cursor` method on the canvas (available
44
as the ``canvas`` attribute on the toolbar or the Figure.)
5+
6+
``backend_tools.SetCursorBase`` and subclasses
7+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8+
``backend_tools.SetCursorBase`` was subclassed to provide backend-specific
9+
implementations of ``set_cursor``. As that is now deprecated, the subclassing
10+
is no longer necessary. Consequently, the following subclasses are also
11+
deprecated:
12+
13+
- ``matplotlib.backends.backend_gtk3.SetCursorGTK3``
14+
- ``matplotlib.backends.backend_qt5.SetCursorQt``
15+
- ``matplotlib.backends._backend_tk.SetCursorTk``
16+
- ``matplotlib.backends.backend_wx.SetCursorWx``
17+
18+
Instead, use the `.backend_tools.ToolSetCursor` class.

lib/matplotlib/backend_managers.py

+10
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,16 @@ def add_tool(self, name, tool, *args, **kwargs):
254254
'exists, not added')
255255
return self._tools[name]
256256

257+
if name == 'cursor' and tool_cls != tools.SetCursorBase:
258+
_api.warn_deprecated("3.5",
259+
message="Overriding ToolSetCursor with "
260+
f"{tool_cls.__qualname__} was only "
261+
"necessary to provide the .set_cursor() "
262+
"method, which is deprecated since "
263+
"%(since)s and will be removed "
264+
"%(removal)s. Please report this to the "
265+
f"{tool_cls.__module__} author.")
266+
257267
tool_obj = tool_cls(self, name, *args, **kwargs)
258268
self._tools[name] = tool_obj
259269

lib/matplotlib/backend_tools.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import matplotlib as mpl
2424
from matplotlib._pylab_helpers import Gcf
25-
from matplotlib import cbook
25+
from matplotlib import _api, cbook
2626

2727

2828
class Cursors(enum.IntEnum): # Must subclass int for the macOS backend.
@@ -277,13 +277,16 @@ def _set_cursor_cbk(self, event):
277277
self.canvas.set_cursor(self._default_cursor)
278278
self._last_cursor = self._default_cursor
279279

280+
@_api.deprecated("3.5", alternative="figure.canvas.set_cursor")
280281
def set_cursor(self, cursor):
281282
"""
282283
Set the cursor.
283-
284-
This method has to be implemented per backend.
285284
"""
286-
raise NotImplementedError
285+
self.canvas.set_cursor(cursor)
286+
287+
288+
# This exists solely for deprecation warnings.
289+
ToolSetCursor = SetCursorBase
287290

288291

289292
class ToolCursorPosition(ToolBase):

lib/matplotlib/backends/_backend_tk.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,7 @@ def remove_rubberband(self):
794794
del self.lastrect
795795

796796

797+
@_api.deprecated("3.5", alternative="ToolSetCursor")
797798
class SetCursorTk(backend_tools.SetCursorBase):
798799
def set_cursor(self, cursor):
799800
NavigationToolbar2Tk.set_cursor(
@@ -907,7 +908,6 @@ def trigger(self, *args):
907908

908909
backend_tools.ToolSaveFigure = SaveFigureTk
909910
backend_tools.ToolConfigureSubplots = ConfigureSubplotsTk
910-
backend_tools.ToolSetCursor = SetCursorTk
911911
backend_tools.ToolRubberband = RubberbandTk
912912
backend_tools.ToolHelp = HelpTk
913913
backend_tools.ToolCopyToClipboard = backend_tools.ToolCopyToClipboardBase

lib/matplotlib/backends/backend_gtk3.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,7 @@ class PseudoToolbar:
717717
return NavigationToolbar2GTK3.save_figure(PseudoToolbar())
718718

719719

720+
@_api.deprecated("3.5", alternative="ToolSetCursor")
720721
class SetCursorGTK3(backend_tools.SetCursorBase):
721722
def set_cursor(self, cursor):
722723
NavigationToolbar2GTK3.set_cursor(
@@ -850,7 +851,6 @@ def error_msg_gtk(msg, parent=None):
850851

851852
backend_tools.ToolSaveFigure = SaveFigureGTK3
852853
backend_tools.ToolConfigureSubplots = ConfigureSubplotsGTK3
853-
backend_tools.ToolSetCursor = SetCursorGTK3
854854
backend_tools.ToolRubberband = RubberbandGTK3
855855
backend_tools.ToolHelp = HelpGTK3
856856
backend_tools.ToolCopyToClipboard = ToolCopyToClipboardGTK3

lib/matplotlib/backends/backend_qt5.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -932,6 +932,7 @@ def trigger(self, *args):
932932
self._make_classic_style_pseudo_toolbar())
933933

934934

935+
@_api.deprecated("3.5", alternative="ToolSetCursor")
935936
class SetCursorQt(backend_tools.SetCursorBase):
936937
def set_cursor(self, cursor):
937938
NavigationToolbar2QT.set_cursor(
@@ -961,7 +962,6 @@ def trigger(self, *args, **kwargs):
961962

962963
backend_tools.ToolSaveFigure = SaveFigureQt
963964
backend_tools.ToolConfigureSubplots = ConfigureSubplotsQt
964-
backend_tools.ToolSetCursor = SetCursorQt
965965
backend_tools.ToolRubberband = RubberbandQt
966966
backend_tools.ToolHelp = HelpQt
967967
backend_tools.ToolCopyToClipboard = ToolCopyToClipboardQT

lib/matplotlib/backends/backend_wx.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1282,6 +1282,7 @@ def trigger(self, *args):
12821282
self._make_classic_style_pseudo_toolbar())
12831283

12841284

1285+
@_api.deprecated("3.5", alternative="ToolSetCursor")
12851286
class SetCursorWx(backend_tools.SetCursorBase):
12861287
def set_cursor(self, cursor):
12871288
NavigationToolbar2Wx.set_cursor(
@@ -1363,7 +1364,6 @@ def trigger(self, *args, **kwargs):
13631364

13641365
backend_tools.ToolSaveFigure = SaveFigureWx
13651366
backend_tools.ToolConfigureSubplots = ConfigureSubplotsWx
1366-
backend_tools.ToolSetCursor = SetCursorWx
13671367
backend_tools.ToolRubberband = RubberbandWx
13681368
backend_tools.ToolHelp = HelpWx
13691369
backend_tools.ToolCopyToClipboard = ToolCopyToClipboardWx

0 commit comments

Comments
 (0)