source: trunk/python/asaplotgui.py@ 2468

Last change on this file since 2468 was 2468, checked in by Kana Sugimoto, 14 years ago

New Development: No

JIRA Issue: No (an ugly workaround commit)

Ready for Test: Yes

Interface Changes: No

What Interface Changed:

Test Programs: don't do anything!

Put in Release Notes: No

Module(s):

Description: This is an ugly workaround commit to generate a base revision

to merge the next commit to stable.


  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1"""
2ASAP plotting class based on matplotlib.
3"""
4
5from asap.asaplotbase import *
6import Tkinter as Tk
7import matplotlib
8from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, \
9 FigureManagerTkAgg
10# Force use of the newfangled toolbar.
11matplotlib.rcParams['toolbar'] = 'toolbar2'
12from matplotlib import _pylab_helpers
13from asap.logging import asaplog, asaplog_post_dec
14
15class asaplotgui(asaplotbase):
16 """
17 ASAP plotting class based on matplotlib.
18 """
19
20 def __init__(self, rows=1, cols=0, title='', size=None, buffering=False):
21 """
22 Create a new instance of the ASAPlot plotting class.
23
24 If rows < 1 then a separate call to set_panels() is required to define
25 the panel layout; refer to the doctext for set_panels().
26 """
27 v = vars()
28 del v['self']
29
30 asaplotbase.__init__(self, **v)
31 #matplotlib.rcParams["interactive"] = True
32
33 self.window = Tk.Tk()
34 self.window.protocol("WM_DELETE_WINDOW", self.quit)
35 self.canvas = FigureCanvasTkAgg(self.figure, master=self.window)
36 self.canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
37 # Simply instantiating this is enough to get a working toolbar.
38 self.figmgr = FigureManagerTkAgg(self.canvas, 0, self.window)
39 # Register this plot to matplotlib without activating it
40 #_pylab_helpers.Gcf.set_active(self.figmgr)
41 _pylab_helpers.Gcf.figs[self.figmgr.num] = self.figmgr
42 self._set_window_title('ASAP Plotter - Tk')
43 self.canvas.show()
44
45
46 def map(self):
47 """
48 Reveal the ASAPlot graphics window and bring it to the top of the
49 window stack.
50 """
51 if self.is_dead:
52 raise RuntimeError( "No plotter to show. Not yet plotted or plotter is closed." )
53 self.window.wm_deiconify()
54 self.window.lift()
55
56 def quit(self):
57 """
58 Destroy the ASAPlot graphics window.
59 """
60 self.is_dead = True
61 if not self.figmgr:
62 return
63 #self.window.destroy()
64 _pylab_helpers.Gcf.destroy(self.figmgr.num)
65 del self.window, self.canvas, self.figmgr
66 self.window = None
67 self.canvas = None
68 self.figmgr = None
69
70 def show(self, hardrefresh=True):
71 """
72 Show graphics dependent on the current buffering state.
73 """
74 if self.is_dead:
75 raise RuntimeError( "No plotter to show (not yet plotted or closed)." )
76 if not self.buffering:
77 if hardrefresh:
78 asaplotbase.show(self)
79 self.window.wm_deiconify()
80 self.canvas.show()
81
82 def terminate(self):
83 """
84 Clear the figure.
85 """
86 if not self.window:
87 asaplog.push( "No plotter window to terminate." )
88 asaplog.post( "WARN" )
89 return
90 self.window.destroy()
91
92 def unmap(self):
93 """
94 Hide the ASAPlot graphics window.
95 """
96 if not self.window:
97 asaplog.push( "No plotter window to unmap." )
98 asaplog.post( "WARN" )
99 return
100 self.window.wm_withdraw()
101
102 def _set_window_title(self,title):
103 # Set title to main window title bar
104 self.window.wm_title(title)
Note: See TracBrowser for help on using the repository browser.