Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/asaplotgui_gtk.py

    r2451 r1819  
    1212matplotlib.rcParams['toolbar'] = 'toolbar2'
    1313from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationToolbar
    14 from matplotlib import _pylab_helpers
    1514
    1615class asaplotgui(asaplotbase):
     
    3029
    3130        asaplotbase.__init__(self, **v)
    32         matplotlib.rcParams['interactive'] = True
    3331        matplotlib.interactive = True
    34 
    35         _pylab_helpers.Gcf.destroy(0)
    3632        self.canvas = FigureCanvas(self.figure)
    3733        # Simply instantiating this is enough to get a working toolbar.
     
    4339        self.window.connect("destroy", dest_callback )
    4440        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
    4547        #self.canvas.set_size_request(800,600)
    46         _pylab_helpers.Gcf.figs[self.figmgr.num] = self.figmgr
    4748
    4849        #self.canvas.show()
     
    5354        window stack.
    5455        """
    55         if self.is_dead:
    56             raise RuntimeError( "No plotter to show. Not yet plotted or plotter is closed." )
    5756        self.window.deiconify()
    5857        #self.window.lift()
    5958
     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
     71
    6072    def quit(self):
    6173        """
    6274        Destroy the ASAPlot graphics window.
    6375        """
    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
     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
    73178
    74179    def show(self, hardrefresh=True):
     
    76181        Show graphics dependent on the current buffering state.
    77182        """
    78         if self.is_dead:
    79             raise RuntimeError( "No plotter to show (not yet plotted or closed)." )
    80183        if not self.buffering:
    81184            if hardrefresh:
     
    89192        Clear the figure.
    90193        """
    91         if not self.window:
    92             asaplog.push( "No plotter window to terminate." )
    93             asaplog.post( "WARN" )
    94             return
    95194        self.window.destroy()
    96195
     
    99198        Hide the ASAPlot graphics window.
    100199        """
    101         if not self.window:
    102             asaplog.push( "No plotter window to unmap." )
    103             asaplog.post( "WARN" )
    104             return
    105200        self.window.wm_withdraw()
Note: See TracChangeset for help on using the changeset viewer.