Viewing file: _pylab_helpers.py (2.65 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
""" Manage figures for pyplot interface. """
import sys, gc
def error_msg(msg): print >>sys.stderr, msgs
class Gcf(object): """ Manage a set of integer-numbered figures.
This class is never instantiated; it consists of two class attributes (a list and a dictionary), and a set of static methods that operate on those attributes, accessing them directly as class attributes.
Attributes:
*figs*: dictionary of the form {*num*: *manager*, ...}
*_activeQue*: list of *managers*, with active one at the end
""" _activeQue = [] figs = {}
@staticmethod def get_fig_manager(num): """ If figure manager *num* exists, make it the active figure and return the manager; otherwise return *None*. """ figManager = Gcf.figs.get(num, None) if figManager is not None: Gcf.set_active(figManager) return figManager
@staticmethod def destroy(num): """ Try to remove all traces of figure *num*.
In the interactive backends, this is bound to the window "destroy" and "delete" events. """ if not Gcf.has_fignum(num): return figManager = Gcf.figs[num]
# There must be a good reason for the following careful # rebuilding of the activeQue; what is it? oldQue = Gcf._activeQue[:] Gcf._activeQue = [] for f in oldQue: if f != figManager: Gcf._activeQue.append(f)
del Gcf.figs[num] #print len(Gcf.figs.keys()), len(Gcf._activeQue) figManager.destroy() gc.collect()
@staticmethod def has_fignum(num): """ Return *True* if figure *num* exists. """ return num in Gcf.figs
@staticmethod def get_all_fig_managers(): """ Return a list of figure managers. """ return Gcf.figs.values()
@staticmethod def get_num_fig_managers(): """ Return the number of figures being managed. """ return len(Gcf.figs.values())
@staticmethod def get_active(): """ Return the manager of the active figure, or *None*. """ if len(Gcf._activeQue)==0: return None else: return Gcf._activeQue[-1]
@staticmethod def set_active(manager): """ Make the figure corresponding to *manager* the active one. """ oldQue = Gcf._activeQue[:] Gcf._activeQue = [] for m in oldQue: if m != manager: Gcf._activeQue.append(m) Gcf._activeQue.append(manager) Gcf.figs[manager.num] = manager
|