From fa3209e58009f7b969c5e129744e4fd786d436fc Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sat, 17 Feb 2018 18:51:28 +0100 Subject: [PATCH 1/4] make NavigationToolbar2 consistent, adjust examples to this and navigation_toolbar.html example --- examples/user_interfaces/embedding_in_wx2_sgskip.py | 4 ++-- examples/user_interfaces/embedding_in_wx3_sgskip.py | 7 ++++--- examples/user_interfaces/embedding_in_wx4_sgskip.py | 6 +++--- examples/user_interfaces/embedding_in_wx5_sgskip.py | 8 ++++---- examples/user_interfaces/fourier_demo_wx_sgskip.py | 4 ++-- lib/matplotlib/backends/backend_wxagg.py | 11 ++--------- lib/matplotlib/backends/backend_wxcairo.py | 4 ++-- 7 files changed, 19 insertions(+), 25 deletions(-) diff --git a/examples/user_interfaces/embedding_in_wx2_sgskip.py b/examples/user_interfaces/embedding_in_wx2_sgskip.py index f83f2ec6e598..895627733f43 100644 --- a/examples/user_interfaces/embedding_in_wx2_sgskip.py +++ b/examples/user_interfaces/embedding_in_wx2_sgskip.py @@ -8,7 +8,7 @@ """ from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas -from matplotlib.backends.backend_wx import NavigationToolbar2Wx +from matplotlib.backends.backend_wx import NavigationToolbar2Wx as NavigationToolbar from matplotlib.figure import Figure import numpy as np @@ -38,7 +38,7 @@ def __init__(self): self.add_toolbar() # comment this out for no toolbar def add_toolbar(self): - self.toolbar = NavigationToolbar2Wx(self.canvas) + self.toolbar = NavigationToolbar(self.canvas) self.toolbar.Realize() # By adding toolbar in sizer, we are able to put it at the bottom # of the frame - so appearance is closer to GTK version. diff --git a/examples/user_interfaces/embedding_in_wx3_sgskip.py b/examples/user_interfaces/embedding_in_wx3_sgskip.py index f8074a488e95..e27c3bb2e633 100644 --- a/examples/user_interfaces/embedding_in_wx3_sgskip.py +++ b/examples/user_interfaces/embedding_in_wx3_sgskip.py @@ -30,7 +30,8 @@ import matplotlib import matplotlib.cm as cm import matplotlib.cbook as cbook -from matplotlib.backends.backend_wxagg import Toolbar, FigureCanvasWxAgg +from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas +from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar from matplotlib.figure import Figure import numpy as np @@ -48,8 +49,8 @@ def __init__(self, parent): wx.Panel.__init__(self, parent, -1) self.fig = Figure((5, 4), 75) - self.canvas = FigureCanvasWxAgg(self, -1, self.fig) - self.toolbar = Toolbar(self.canvas) # matplotlib toolbar + self.canvas = FigureCanvas(self, -1, self.fig) + self.toolbar = NavigationToolbar(self.canvas) # matplotlib toolbar self.toolbar.Realize() # self.toolbar.set_active([0,1]) diff --git a/examples/user_interfaces/embedding_in_wx4_sgskip.py b/examples/user_interfaces/embedding_in_wx4_sgskip.py index 25b0fdbfea81..a6b81f97681d 100644 --- a/examples/user_interfaces/embedding_in_wx4_sgskip.py +++ b/examples/user_interfaces/embedding_in_wx4_sgskip.py @@ -7,7 +7,7 @@ """ from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas -from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg +from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar from matplotlib.backends.backend_wx import _load_bitmap from matplotlib.figure import Figure @@ -16,14 +16,14 @@ import wx -class MyNavigationToolbar(NavigationToolbar2WxAgg): +class MyNavigationToolbar(NavigationToolbar): """ Extend the default wx toolbar with your own event handlers """ ON_CUSTOM = wx.NewId() def __init__(self, canvas, cankill): - NavigationToolbar2WxAgg.__init__(self, canvas) + NavigationToolbar.__init__(self, canvas) # for simplicity I'm going to reuse a bitmap from wx, you'll # probably want to add your own. diff --git a/examples/user_interfaces/embedding_in_wx5_sgskip.py b/examples/user_interfaces/embedding_in_wx5_sgskip.py index 6d3fb156cbac..61261cd1297d 100644 --- a/examples/user_interfaces/embedding_in_wx5_sgskip.py +++ b/examples/user_interfaces/embedding_in_wx5_sgskip.py @@ -14,16 +14,16 @@ import wx.aui as aui import matplotlib as mpl -from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas -from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx as Toolbar +from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas +from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar class Plot(wx.Panel): def __init__(self, parent, id=-1, dpi=None, **kwargs): wx.Panel.__init__(self, parent, id=id, **kwargs) self.figure = mpl.figure.Figure(dpi=dpi, figsize=(2, 2)) - self.canvas = Canvas(self, -1, self.figure) - self.toolbar = Toolbar(self.canvas) + self.canvas = FigureCanvas(self, -1, self.figure) + self.toolbar = NavigationToolbar(self.canvas) self.toolbar.Realize() sizer = wx.BoxSizer(wx.VERTICAL) diff --git a/examples/user_interfaces/fourier_demo_wx_sgskip.py b/examples/user_interfaces/fourier_demo_wx_sgskip.py index 5a76d237b9e3..2a943f253a82 100644 --- a/examples/user_interfaces/fourier_demo_wx_sgskip.py +++ b/examples/user_interfaces/fourier_demo_wx_sgskip.py @@ -8,7 +8,7 @@ import numpy as np import wx -from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg +from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas from matplotlib.figure import Figure @@ -123,7 +123,7 @@ def __init__(self, *args, **kwargs): def createCanvas(self, parent): self.lines = [] self.figure = Figure() - self.canvas = FigureCanvasWxAgg(parent, -1, self.figure) + self.canvas = FigureCanvas(parent, -1, self.figure) self.canvas.callbacks.connect('button_press_event', self.mouseDown) self.canvas.callbacks.connect('motion_notify_event', self.mouseMotion) self.canvas.callbacks.connect('button_release_event', self.mouseUp) diff --git a/lib/matplotlib/backends/backend_wxagg.py b/lib/matplotlib/backends/backend_wxagg.py index 14864b1e47c1..da4aa1ef776b 100644 --- a/lib/matplotlib/backends/backend_wxagg.py +++ b/lib/matplotlib/backends/backend_wxagg.py @@ -9,8 +9,8 @@ from .. import cbook from . import wx_compat as wxc from .backend_agg import FigureCanvasAgg -from .backend_wx import ( - _BackendWx, _FigureCanvasWxBase, FigureFrameWx, NavigationToolbar2Wx) +from .backend_wx import _BackendWx, _FigureCanvasWxBase, FigureFrameWx +from .backend_wx import NavigationToolbar2Wx as NavigationToolbar2WxAgg class FigureFrameWxAgg(FigureFrameWx): @@ -71,15 +71,8 @@ def blit(self, bbox=None): filetypes = FigureCanvasAgg.filetypes -@cbook.deprecated("2.2") -class NavigationToolbar2WxAgg(NavigationToolbar2Wx): - def get_canvas(self, frame, fig): - return FigureCanvasWxAgg(frame, -1, fig) - - # agg/wxPython image conversion functions (wxPython >= 2.8) - def _convert_agg_to_wx_image(agg, bbox): """ Convert the region of the agg buffer bounded by bbox to a wx.Image. If diff --git a/lib/matplotlib/backends/backend_wxcairo.py b/lib/matplotlib/backends/backend_wxcairo.py index bd61fa03780a..e937d0b49aae 100644 --- a/lib/matplotlib/backends/backend_wxcairo.py +++ b/lib/matplotlib/backends/backend_wxcairo.py @@ -6,8 +6,8 @@ import wx from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo -from .backend_wx import ( - _BackendWx, _FigureCanvasWxBase, FigureFrameWx, NavigationToolbar2Wx) +from .backend_wx import _BackendWx, _FigureCanvasWxBase, FigureFrameWx +from .backend_wx import NavigationToolbar2Wx as NavigationToolbar2WxCairo from . import wx_compat as wxc From 015db3e826ee7116a217a98fc5d2c23c0d625ba0 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sat, 17 Feb 2018 18:52:23 +0100 Subject: [PATCH 2/4] remove unused and undocumented SubplotToolWX --- lib/matplotlib/backends/backend_wx.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 4f0e6638334b..1dab33ccfa63 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -1474,25 +1474,6 @@ def updateButtonText(self, lst): } -class SubplotToolWX(wx.Frame): - def __init__(self, targetfig): - wx.Frame.__init__(self, None, -1, "Configure subplots") - - toolfig = Figure((6, 3)) - canvas = FigureCanvasWx(self, -1, toolfig) - - # Create a figure manager to manage things - figmgr = FigureManager(canvas, 1, self) - - # Now put all into a sizer - sizer = wx.BoxSizer(wx.VERTICAL) - # This way of adding to sizer allows resizing - sizer.Add(canvas, 1, wx.LEFT | wx.TOP | wx.GROW) - self.SetSizer(sizer) - self.Fit() - tool = SubplotTool(targetfig, toolfig) - - class NavigationToolbar2Wx(NavigationToolbar2, wx.ToolBar): def __init__(self, canvas): wx.ToolBar.__init__(self, canvas.GetParent(), -1) From 3a50249916c13b1ea3c2e45fe1e10073fa77560a Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sat, 17 Feb 2018 23:32:42 +0100 Subject: [PATCH 3/4] update from review feedback: SubplotToolWX w. deprecation; combine import statements --- lib/matplotlib/backends/backend_wx.py | 22 +++++++++++++++++++++- lib/matplotlib/backends/backend_wxagg.py | 6 +++--- lib/matplotlib/backends/backend_wxcairo.py | 5 +++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 1dab33ccfa63..9bf08beb0d20 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -34,7 +34,7 @@ from matplotlib.backend_bases import _has_pil from matplotlib._pylab_helpers import Gcf -from matplotlib.cbook import is_writable_file_like, warn_deprecated +from matplotlib.cbook import is_writable_file_like, warn_deprecated, deprecated from matplotlib.figure import Figure from matplotlib.path import Path from matplotlib.transforms import Affine2D @@ -1474,6 +1474,26 @@ def updateButtonText(self, lst): } +@deprecated("2.2") +class SubplotToolWX(wx.Frame): + def __init__(self, targetfig): + wx.Frame.__init__(self, None, -1, "Configure subplots") + + toolfig = Figure((6, 3)) + canvas = FigureCanvasWx(self, -1, toolfig) + + # Create a figure manager to manage things + figmgr = FigureManager(canvas, 1, self) + + # Now put all into a sizer + sizer = wx.BoxSizer(wx.VERTICAL) + # This way of adding to sizer allows resizing + sizer.Add(canvas, 1, wx.LEFT | wx.TOP | wx.GROW) + self.SetSizer(sizer) + self.Fit() + tool = SubplotTool(targetfig, toolfig) + + class NavigationToolbar2Wx(NavigationToolbar2, wx.ToolBar): def __init__(self, canvas): wx.ToolBar.__init__(self, canvas.GetParent(), -1) diff --git a/lib/matplotlib/backends/backend_wxagg.py b/lib/matplotlib/backends/backend_wxagg.py index da4aa1ef776b..ee628fc0dc9b 100644 --- a/lib/matplotlib/backends/backend_wxagg.py +++ b/lib/matplotlib/backends/backend_wxagg.py @@ -6,11 +6,11 @@ import wx import matplotlib -from .. import cbook from . import wx_compat as wxc from .backend_agg import FigureCanvasAgg -from .backend_wx import _BackendWx, _FigureCanvasWxBase, FigureFrameWx -from .backend_wx import NavigationToolbar2Wx as NavigationToolbar2WxAgg +from .backend_wx import ( + _BackendWx, _FigureCanvasWxBase, FigureFrameWx, + NavigationToolbar2Wx as NavigationToolbar2WxAgg) class FigureFrameWxAgg(FigureFrameWx): diff --git a/lib/matplotlib/backends/backend_wxcairo.py b/lib/matplotlib/backends/backend_wxcairo.py index e937d0b49aae..d06b08c9a431 100644 --- a/lib/matplotlib/backends/backend_wxcairo.py +++ b/lib/matplotlib/backends/backend_wxcairo.py @@ -6,8 +6,9 @@ import wx from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo -from .backend_wx import _BackendWx, _FigureCanvasWxBase, FigureFrameWx -from .backend_wx import NavigationToolbar2Wx as NavigationToolbar2WxCairo +from .backend_wx import ( + _BackendWx, _FigureCanvasWxBase, FigureFrameWx, + NavigationToolbar2Wx as NavigationToolbar2WxCairo) from . import wx_compat as wxc From deeeeb6cea80534d381169fc2a6afa5b0087d4ab Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sun, 18 Feb 2018 00:12:20 +0100 Subject: [PATCH 4/4] ensure Toolbar alias, but with deprecation warning --- lib/matplotlib/backends/backend_wx.py | 18 +++++++----------- lib/matplotlib/backends/backend_wxagg.py | 6 ++++++ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 9bf08beb0d20..44f325389f7d 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -34,7 +34,7 @@ from matplotlib.backend_bases import _has_pil from matplotlib._pylab_helpers import Gcf -from matplotlib.cbook import is_writable_file_like, warn_deprecated, deprecated +from matplotlib.cbook import is_writable_file_like, warn_deprecated from matplotlib.figure import Figure from matplotlib.path import Path from matplotlib.transforms import Affine2D @@ -1474,7 +1474,7 @@ def updateButtonText(self, lst): } -@deprecated("2.2") +@cbook.deprecated("2.2") class SubplotToolWX(wx.Frame): def __init__(self, targetfig): wx.Frame.__init__(self, None, -1, "Configure subplots") @@ -1700,6 +1700,11 @@ def set_history_buttons(self): self.EnableTool(self.wx_ids['Forward'], can_forward) +@cbook.deprecated("2.2", alternative="NavigationToolbar2Wx") +class Toolbar(NavigationToolbar2Wx): + pass + + class StatusBarWx(wx.StatusBar): """ A status bar is added to _FigureFrame to allow measurements and the @@ -1957,15 +1962,6 @@ def OnPrintPage(self, page): return True # > -######################################################################## -# -# Now just provide the standard names that backend.__init__ is expecting -# -######################################################################## - - -Toolbar = NavigationToolbar2Wx - @_Backend.export class _BackendWx(_Backend): diff --git a/lib/matplotlib/backends/backend_wxagg.py b/lib/matplotlib/backends/backend_wxagg.py index ee628fc0dc9b..041f274a78b1 100644 --- a/lib/matplotlib/backends/backend_wxagg.py +++ b/lib/matplotlib/backends/backend_wxagg.py @@ -6,6 +6,7 @@ import wx import matplotlib +from matplotlib import cbook from . import wx_compat as wxc from .backend_agg import FigureCanvasAgg from .backend_wx import ( @@ -71,6 +72,11 @@ def blit(self, bbox=None): filetypes = FigureCanvasAgg.filetypes +@cbook.deprecated("2.2", alternative="NavigationToolbar2WxAgg") +class Toolbar(NavigationToolbar2WxAgg): + pass + + # agg/wxPython image conversion functions (wxPython >= 2.8) def _convert_agg_to_wx_image(agg, bbox):