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

Skip to content

Commit 49a1be6

Browse files
committed
Make FigureManagerWx more consistent with other backends.
1 parent a3fbf18 commit 49a1be6

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Changes to the wx backend
2+
`````````````````````````
3+
4+
- `FigureFrameWx` no longer attaches a `FigureManagerWx`
5+
to the figure. Instead, the `FigureManagerWx` is
6+
now created by `backend_wx.new_figure_manager` or
7+
`backend_wx.new_figure_manager_given_figure`, consistently with the
8+
other backends. Accordingly, the ``FigureFrameWx.figmgr`` attribute
9+
and ``FigureFrameWx.get_figure_manager`` method are deprecated (use the
10+
cross-backend ``figure.canvas.manager`` instead).
11+
- The *frame* argument and attribute of `FigureManagerWx` are deprecated, for
12+
consistency with other backends. The :attr:`FigureManagerWx.window`
13+
attribute is now always set to the canvas' parent.

lib/matplotlib/backends/backend_wx.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,16 @@ def _get_toolbar(self):
921921
def get_canvas(self, fig):
922922
return FigureCanvasWx(self, -1, fig)
923923

924+
@cbook.deprecated("3.5", alternative="frame.canvas.manager or "
925+
"FigureManagerWx(frame.canvas, num)")
926+
@property
927+
def figmgr(self):
928+
if self.canvas.manager is None:
929+
FigureManagerWx(self.canvas, self.num, self) # Sets canvas.manager
930+
return self.canvas.manager
931+
932+
@cbook.deprecated("3.5", alternative="frame.canvas.manager or "
933+
"FigureManagerWx(frame.canvas, num)")
924934
def get_figure_manager(self):
925935
_log.debug("%s - get_figure_manager()", type(self))
926936
return self.figmgr
@@ -966,22 +976,21 @@ class FigureManagerWx(FigureManagerBase):
966976
967977
Attributes
968978
----------
969-
canvas : `FigureCanvas`
970-
a FigureCanvasWx(wx.Panel) instance
979+
canvas : FigureCanvasWx
971980
window : wxFrame
972-
a wxFrame instance - wxpython.org/Phoenix/docs/html/Frame.html
973981
"""
974982

975-
def __init__(self, canvas, num, frame):
983+
@_api.delete_parameter("3.5", "frame")
984+
def __init__(self, canvas, num, frame=None):
976985
_log.debug("%s - __init__()", type(self))
977-
self.frame = self.window = frame
986+
self.frame = self.window = canvas.GetParent()
978987
self._initializing = True
979988
super().__init__(canvas, num)
980989
self._initializing = False
981990

982991
@property
983992
def toolbar(self):
984-
return self.frame.GetToolBar()
993+
return self.window.GetToolBar()
985994

986995
@toolbar.setter
987996
def toolbar(self, value):
@@ -992,23 +1001,23 @@ def toolbar(self, value):
9921001

9931002
def show(self):
9941003
# docstring inherited
995-
self.frame.Show()
1004+
self.window.Show()
9961005
self.canvas.draw()
9971006
if mpl.rcParams['figure.raise_window']:
998-
self.frame.Raise()
1007+
self.window.Raise()
9991008

10001009
def destroy(self, *args):
10011010
# docstring inherited
10021011
_log.debug("%s - destroy()", type(self))
1003-
frame = self.frame
1012+
frame = self.window
10041013
if frame: # Else, may have been already deleted, e.g. when closing.
10051014
# As this can be called from non-GUI thread from plt.close use
10061015
# wx.CallAfter to ensure thread safety.
10071016
wx.CallAfter(frame.Close)
10081017

10091018
def full_screen_toggle(self):
10101019
# docstring inherited
1011-
self.frame.ShowFullScreen(not self.frame.IsFullScreen())
1020+
self.window.ShowFullScreen(not self.window.IsFullScreen())
10121021

10131022
def get_window_title(self):
10141023
# docstring inherited
@@ -1388,11 +1397,11 @@ def new_figure_manager(cls, num, *args, **kwargs):
13881397
@classmethod
13891398
def new_figure_manager_given_figure(cls, num, figure):
13901399
frame = cls._frame_class(num, figure)
1391-
figmgr = frame.get_figure_manager()
1400+
manager = FigureManagerWx(figure.canvas, num)
13921401
if mpl.is_interactive():
1393-
figmgr.frame.Show()
1402+
frame.Show()
13941403
figure.canvas.draw_idle()
1395-
return figmgr
1404+
return manager
13961405

13971406
@staticmethod
13981407
def mainloop():

0 commit comments

Comments
 (0)