|
From: <ef...@us...> - 2010-06-06 22:44:24
|
Revision: 8390
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8390&view=rev
Author: efiring
Date: 2010-06-06 22:44:18 +0000 (Sun, 06 Jun 2010)
Log Message:
-----------
[2841525] wx backend: fix classic toolbar; Figure.clf: add kwarg to keep axobservers
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/backends/backend_wx.py
trunk/matplotlib/lib/matplotlib/figure.py
Modified: trunk/matplotlib/lib/matplotlib/backends/backend_wx.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_wx.py 2010-06-06 20:52:36 UTC (rev 8389)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_wx.py 2010-06-06 22:44:18 UTC (rev 8390)
@@ -861,7 +861,7 @@
simply asks for image width and margin for printing. """
dmsg = """Width of output figure in inches.
-The current aspect ration will be kept."""
+The current aspect ratio will be kept."""
dlg = wx.Dialog(self, -1, 'Page Setup for Printing' , (-1,-1))
df = dlg.GetFont()
@@ -1546,8 +1546,11 @@
return self.toolbar
def Destroy(self, *args, **kwargs):
- self.canvas.mpl_disconnect(self.toolbar._idDrag)
- # Rationale for line above: see issue 2941338.
+ try:
+ self.canvas.mpl_disconnect(self.toolbar._idDrag)
+ # Rationale for line above: see issue 2941338.
+ except AttributeError:
+ pass # classic toolbar lacks the attribute
wx.Frame.Destroy(self, *args, **kwargs)
if self.toolbar is not None:
self.toolbar.Destroy()
@@ -1707,6 +1710,8 @@
else:
new = True
self._menu.Check(evt.GetId(), new)
+ # Lines above would be deleted based on svn tracker ID 2841525;
+ # not clear whether this matters or not.
self._toolbar.set_active(self.getActiveAxes())
evt.Skip()
@@ -1720,7 +1725,11 @@
self._menu.Append(menuId, "Axis %d" % i, "Select axis %d" % i, True)
self._menu.Check(menuId, True)
bind(self, wx.EVT_MENU, self._onMenuItemSelected, id=menuId)
- self._toolbar.set_active(range(len(self._axisId)))
+ elif maxAxis < len(self._axisId):
+ for menuId in self._axisId[maxAxis:]:
+ self._menu.Delete(menuId)
+ self._axisId = self._axisId[:maxAxis]
+ self._toolbar.set_active(range(maxAxis))
def getActiveAxes(self):
"""Return a list of the selected axes."""
@@ -2080,7 +2089,8 @@
def update(self):
"""
- Update the toolbar menu - called when (e.g.) a new subplot or axes are added
+ Update the toolbar menu - called when (e.g.) a new subplot
+ or axes are added
"""
DEBUG_MSG("update()", 1, self)
self._axes = self.canvas.figure.get_axes()
Modified: trunk/matplotlib/lib/matplotlib/figure.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/figure.py 2010-06-06 20:52:36 UTC (rev 8389)
+++ trunk/matplotlib/lib/matplotlib/figure.py 2010-06-06 22:44:18 UTC (rev 8390)
@@ -691,9 +691,12 @@
self.sca(a)
return a
- def clf(self):
+ def clf(self, keep_observers=False):
"""
- Clear the figure
+ Clear the figure.
+
+ Set *keep_observers* to True if, for example,
+ a gui widget is tracking the axes in the figure.
"""
self.suppressComposite = None
self.callbacks = cbook.CallbackRegistry(('dpi_changed', ))
@@ -713,7 +716,8 @@
self.texts=[]
self.images = []
self.legends = []
- self._axobservers = []
+ if not keep_observers:
+ self._axobservers = []
def clear(self):
"""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|