Ignore:
Timestamp:
03/30/12 19:58:59 (12 years ago)
Author:
Kana Sugimoto
Message:

New Development: No

JIRA Issue: Yes (CAS-3749)

Ready for Test: Yes

Interface Changes: No

What Interface Changed:

Test Programs: unit tests of sdplot

Put in Release Notes: No

Module(s): sdplot, sdfit, sdstat, sdflag, sdcal, sdreduce

Description:

Made asapplotter not to generate plotter window at start-up, but the window is
only generated at the first invokation of plotting operation.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/asaplotgui_gtk.py

    r1819 r2451  
    1212matplotlib.rcParams['toolbar'] = 'toolbar2'
    1313from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationToolbar
     14from matplotlib import _pylab_helpers
    1415
    1516class asaplotgui(asaplotbase):
     
    2930
    3031        asaplotbase.__init__(self, **v)
     32        matplotlib.rcParams['interactive'] = True
    3133        matplotlib.interactive = True
     34
     35        _pylab_helpers.Gcf.destroy(0)
    3236        self.canvas = FigureCanvas(self.figure)
    3337        # Simply instantiating this is enough to get a working toolbar.
     
    3943        self.window.connect("destroy", dest_callback )
    4044        self.window.set_title('ASAP Plotter - GTK')
    41         self.events = {'button_press':None,
    42                        'button_release':None,
    43                        'motion_notify':None}
    44 
    45         self.buffering = buffering
    46         matplotlib.rcParams['interactive'] = True
    4745        #self.canvas.set_size_request(800,600)
     46        _pylab_helpers.Gcf.figs[self.figmgr.num] = self.figmgr
    4847
    4948        #self.canvas.show()
     
    5453        window stack.
    5554        """
     55        if self.is_dead:
     56            raise RuntimeError( "No plotter to show. Not yet plotted or plotter is closed." )
    5657        self.window.deiconify()
    5758        #self.window.lift()
    58 
    59 #     def position(self):
    60 #         """
    61 #         Use the mouse to get a position from a graph.
    62 #         """
    63 
    64 #         def position_disable(event):
    65 #             self.register('button_press', None)
    66 #             print '%.4f, %.4f' % (event.xdata, event.ydata)
    67 
    68 #         print 'Press any mouse button...'
    69 #         self.register('button_press', position_disable)
    70 
    7159
    7260    def quit(self):
     
    7462        Destroy the ASAPlot graphics window.
    7563        """
    76         self.window.destroy()
    77 
    78 
    79 #     def region(self):
    80 #         """
    81 #         Use the mouse to get a rectangular region from a plot.
    82 
    83 #         The return value is [x0, y0, x1, y1] in world coordinates.
    84 #         """
    85 
    86 #         def region_start(event):
    87 #             height = self.canvas.figure.bbox.height()
    88 #             self.rect = {'fig': None, 'height': height,
    89 #                          'x': event.x, 'y': height - event.y,
    90 #                          'world': [event.xdata, event.ydata,
    91 #                                    event.xdata, event.ydata]}
    92 #             self.register('button_press', None)
    93 #             self.register('motion_notify', region_draw)
    94 #             self.register('button_release', region_disable)
    95 
    96 #         def region_draw(event):
    97 #             self.canvas._tkcanvas.delete(self.rect['fig'])
    98 #             self.rect['fig'] = self.canvas._tkcanvas.create_rectangle(
    99 #                                 self.rect['x'], self.rect['y'],
    100 #                                 event.x, self.rect['height'] - event.y)
    101 
    102 #         def region_disable(event):
    103 #             self.register('motion_notify', None)
    104 #             self.register('button_release', None)
    105 
    106 #             self.canvas._tkcanvas.delete(self.rect['fig'])
    107 
    108 #             self.rect['world'][2:4] = [event.xdata, event.ydata]
    109 #             print '(%.2f, %.2f)  (%.2f, %.2f)' % (self.rect['world'][0],
    110 #                 self.rect['world'][1], self.rect['world'][2],
    111 #                 self.rect['world'][3])
    112 
    113 #         self.register('button_press', region_start)
    114 
    115 #         # This has to be modified to block and return the result (currently
    116 #         # printed by region_disable) when that becomes possible in matplotlib.
    117 
    118 #         return [0.0, 0.0, 0.0, 0.0]
    119 
    120 
    121 #     def register(self, type=None, func=None):
    122 #         """
    123 #         Register, reregister, or deregister events of type 'button_press',
    124 #         'button_release', or 'motion_notify'.
    125 
    126 #         The specified callback function should have the following signature:
    127 
    128 #             def func(event)
    129 
    130 #         where event is an MplEvent instance containing the following data:
    131 
    132 #             name                # Event name.
    133 #             canvas              # FigureCanvas instance generating the event.
    134 #             x      = None       # x position - pixels from left of canvas.
    135 #             y      = None       # y position - pixels from bottom of canvas.
    136 #             button = None       # Button pressed: None, 1, 2, 3.
    137 #             key    = None       # Key pressed: None, chr(range(255)), shift,
    138 #                                   win, or control
    139 #             inaxes = None       # Axes instance if cursor within axes.
    140 #             xdata  = None       # x world coordinate.
    141 #             ydata  = None       # y world coordinate.
    142 
    143 #         For example:
    144 
    145 #             def mouse_move(event):
    146 #                 print event.xdata, event.ydata
    147 
    148 #             a = asaplot()
    149 #             a.register('motion_notify', mouse_move)
    150 
    151 #         If func is None, the event is deregistered.
    152 
    153 #         Note that in TkAgg keyboard button presses don't generate an event.
    154 #         """
    155 
    156 #         if not self.events.has_key(type): return
    157 
    158 #         if func is None:
    159 #             if self.events[type] is not None:
    160 #                 # It's not clear that this does anything.
    161 #                 self.canvas.mpl_disconnect(self.events[type])
    162 #                 self.events[type] = None
    163 
    164 #                 # It seems to be necessary to return events to the toolbar.
    165 #                 if type == 'motion_notify':
    166 #                     self.canvas.mpl_connect(type + '_event',
    167 #                         self.figmgr.toolbar.mouse_move)
    168 #                 elif type == 'button_press':
    169 #                     self.canvas.mpl_connect(type + '_event',
    170 #                         self.figmgr.toolbar.press)
    171 #                 elif type == 'button_release':
    172 #                     self.canvas.mpl_connect(type + '_event',
    173 #                         self.figmgr.toolbar.release)
    174 
    175 #         else:
    176 #             self.events[type] = self.canvas.mpl_connect(type + '_event', func)
    177 
     64        self.is_dead = True
     65        if not self.figmgr:
     66            return
     67        #self.window.destroy()
     68        _pylab_helpers.Gcf.destroy(self.figmgr.num)
     69        del self.window, self.canvas, self.figmgr
     70        self.window = None
     71        self.canvas = None
     72        self.figmgr = None
    17873
    17974    def show(self, hardrefresh=True):
     
    18176        Show graphics dependent on the current buffering state.
    18277        """
     78        if self.is_dead:
     79            raise RuntimeError( "No plotter to show (not yet plotted or closed)." )
    18380        if not self.buffering:
    18481            if hardrefresh:
     
    19289        Clear the figure.
    19390        """
     91        if not self.window:
     92            asaplog.push( "No plotter window to terminate." )
     93            asaplog.post( "WARN" )
     94            return
    19495        self.window.destroy()
    19596
     
    19899        Hide the ASAPlot graphics window.
    199100        """
     101        if not self.window:
     102            asaplog.push( "No plotter window to unmap." )
     103            asaplog.post( "WARN" )
     104            return
    200105        self.window.wm_withdraw()
Note: See TracChangeset for help on using the changeset viewer.