Changeset f193585 in sasview for guitools/canvas.py


Ignore:
Timestamp:
Apr 28, 2008 5:48:59 PM (16 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
6ed101a
Parents:
9e8dc22
Message:

some changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • guitools/canvas.py

    r2bf92f2 rf193585  
    22from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg, _convert_agg_to_wx_bitmap 
    33from matplotlib.backends.backend_agg import FigureCanvasAgg 
     4from matplotlib.backend_bases import MouseEvent 
    45 
    56class FigureCanvas(FigureCanvasWxAgg): 
     
    1920        # doesn't behave as nicely. 
    2021        self.idletimer = wx.CallLater(1,self._onDrawIdle) 
     22        # Support for mouse wheel 
     23        self.Bind(wx.EVT_MOUSEWHEEL, self._onMouseWheel) 
     24 
    2125 
    2226    def draw_idle(self, *args, **kwargs): 
     
    4650        else: 
    4751            self._isRendered = False 
     52    def _onMouseWheel(self, evt): 
     53        """Translate mouse wheel events into matplotlib events""" 
     54        # Determine mouse location 
     55        x = evt.GetX() 
     56        y = self.figure.bbox.height - evt.GetY() 
     57 
     58        # Convert delta/rotation/rate into a floating point step size 
     59        delta = evt.GetWheelDelta() 
     60        rotation = evt.GetWheelRotation() 
     61        rate = evt.GetLinesPerAction() 
     62        #print "delta,rotation,rate",delta,rotation,rate 
     63        step = rate*float(rotation)/delta 
     64 
     65        # Convert to mpl event 
     66        evt.Skip() 
     67        self.scroll_event(x, y, step, guiEvent=evt) 
     68 
     69    def scroll_event(self, x, y, step=1, guiEvent=None): 
     70        """ 
     71        Backend derived classes should call this function on any 
     72        scroll wheel event.  x,y are the canvas coords: 0,0 is lower, 
     73        left.  button and key are as defined in MouseEvent 
     74        """ 
     75        button = 'up' if step >= 0 else 'down' 
     76        self._button = button 
     77        s = 'scroll_event' 
     78        event = MouseEvent(s, self, x, y, button, self._key, guiEvent=guiEvent) 
     79        setattr(event,'step',step) 
     80        self.callbacks.process(s, event) 
     81 
    4882 
    4983    def _onPaint(self, evt): 
     
    6498 
    6599        evt.Skip() 
    66  
     100    
Note: See TracChangeset for help on using the changeset viewer.