Server : Apache System : Linux indy02.toastserver.com 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64 User : palandch ( 1163) PHP Version : 7.1.33 Disable Function : NONE Directory : /opt/alt/python27/lib64/python2.7/site-packages/matplotlib/ |
""" Manage figures for pyplot interface. """ import sys, gc import atexit import traceback def error_msg(msg): print >>sys.stderr, msg 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*. """ manager = Gcf.figs.get(num, None) if manager is not None: Gcf.set_active(manager) return manager @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 manager = Gcf.figs[num] manager.canvas.mpl_disconnect(manager._cidgcf) # 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 != manager: Gcf._activeQue.append(f) del Gcf.figs[num] #print len(Gcf.figs.keys()), len(Gcf._activeQue) manager.destroy() gc.collect() @staticmethod def destroy_fig(fig): "*fig* is a Figure instance" for manager in Gcf.figs.values(): if manager.canvas.figure == fig: Gcf.destroy(manager.num) @staticmethod def destroy_all(): for manager in Gcf.figs.values(): Gcf.destroy(manager.num) @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 atexit.register(Gcf.destroy_all)