Changeset 416


Ignore:
Timestamp:
20.07.2011 17:32:05 (8 years ago)
Author:
marcus
Message:

Scrolling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/sandbox/traceplotter.py

    r415 r416  
    5959        self.traces = Traces() 
    6060        self.ZoomWindow = None 
     61        self.Scrolled = 0 
    6162        self.refresh = False 
    6263        self.AllowDoubleClick = True 
     
    7172        self.traceOrder = 0 
    7273        self.phasename = "P" 
     74        self.space = 1000 
     75 
     76        self._setup() 
    7377 
    7478        # init 
     
    8791        self.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown) 
    8892        self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown) 
     93        self.Bind(wx.EVT_SCROLLWIN, self.OnScroll) 
    8994 
    9095    # event processing 
     
    147152                if self.traceOrder in [0, 1]: 
    148153                    dc.DrawLine( 
    149                         x, mmth2, \ 
    150                         x, mpth2 
     154                        x, mmth2 - self.Scrolled, \ 
     155                        x, mpth2 - self.Scrolled 
    151156                    ) 
    152157                elif self.traceOrder in [2, 3]: 
    153158                    dc.DrawLine( 
    154                         mmth2, y, 
    155                         mpth2, y 
     159                        mmth2 - self.Scrolled, y, 
     160                        mpth2 - self.Scrolled, y 
    156161                    ) 
    157162            del odc 
     
    214219        self._drawPicksAndZoom() 
    215220 
     221    def OnScroll(self, evt): 
     222        """ 
     223        Update scroll offset. 
     224        """ 
     225        if self.traceOrder in [0, 1]: 
     226            self.Scrolled = self.GetScrollPos(wx.VERTICAL) * \ 
     227                                                self.GetScrollPixelsPerUnit()[1] 
     228        elif self.traceOrder in [2, 3]: 
     229            self.Scrolled = self.GetScrollPos(wx.HORIZONTAL) * \ 
     230                                                self.GetScrollPixelsPerUnit()[0] 
     231        self.OnPaint(evt, renewOverlay=True) 
     232        evt.Skip() 
     233 
    216234    def OnIdle(self, evt): 
    217235        """ 
     
    233251        if evt and (renewOverlay or evt.GetEventType() == wx.EVT_SIZE.typeId): 
    234252            self.overlay_picks.Reset() 
     253            self.overlay_drag.Reset() 
    235254 
    236255        # painting is only done in idle state 
     
    244263        self.relativeAxis = evt.GetString() == "relative" 
    245264        if recent != self.relativeAxis: 
     265 
    246266            self.OnPaint(evt, renewOverlay=True) 
    247267 
     
    253273        self.traceOrder = evt.GetSelection() 
    254274        if recent != self.traceOrder: 
     275            self._setup() 
    255276            self.OnPaint(evt, renewOverlay=True) 
    256277 
     
    267288        graphical panel. 
    268289        """ 
     290        x, y = self.CalcUnscrolledPosition((x,y)) 
    269291        # horizontal display 
    270292        if self.traceOrder in [0, 1]: 
     
    353375        # horizontal 
    354376        if self.traceOrder in [0, 1]: 
    355             return relpos + STATION_INFO, trace.shx.midpoint 
     377            x, y = self.CalcScrolledPosition((relpos + STATION_INFO, trace.shx.midpoint)) 
    356378        # vertical 
    357379        elif self.traceOrder == 2: 
    358             return trace.shx.midpoint, self.height - relpos - STATION_INFO 
     380            x, y = self.CalcScrolledPosition((trace.shx.midpoint, self.height - relpos - STATION_INFO)) 
    359381        elif self.traceOrder == 3: 
    360             return trace.shx.midpoint, relpos + STATION_INFO 
     382            x, y = self.CalcScrolledPosition((trace.shx.midpoint, relpos + STATION_INFO)) 
     383        return x, y 
    361384 
    362385    def load(self, fnames=[]): 
     
    401424        self._resetTimeRange() 
    402425 
     426    def _setup(self): 
     427        if self.traceOrder in [0, 1]: 
     428            self.SetVirtualSizeWH(self.GetClientSize()[0], self.space) 
     429            self.SetScrollRate(0, 20) 
     430        elif self.traceOrder in [2, 3]: 
     431            self.SetVirtualSizeWH(self.space, self.GetClientSize()[1]) 
     432            self.SetScrollRate(20, 0) 
     433 
    403434    def _captureMouse(self, evt): 
    404435        self._debug("_captureMouse") 
     
    461492                    pick[2][0], pick[2][1] + th2 
    462493                ) 
    463                 dc.DrawText(pick[1], pick[2][0] + 2, pick[2][1] - th2 +2 ) 
     494                dc.DrawText(pick[1], pick[2][0] + 2, pick[2][1] - th2 + 2) 
    464495            elif self.traceOrder in [2, 3]: 
    465496                dc.DrawLine( 
     
    484515        Do the real plotting of waveforms including station text and time scale. 
    485516        """ 
    486         width, height = self.GetClientSize() 
     517#        width, height = self.GetClientSize() 
     518        width, height = self.GetVirtualSize() 
    487519        numTraces = len(self.traces) 
    488520 
     
    621653        dc2 = wx.AutoBufferedPaintDCFactory(self) 
    622654        dc2.Clear() 
    623         dc2.Blit(0, 0, width, height, canvas, 0, 0) 
     655        x, y = self.CalcUnscrolledPosition(0, 0) 
     656        dc2.Blit(0, 0, width, height, canvas, x, y) 
    624657 
    625658    def _debug(self, *args): 
     
    658691        mf2 = (1-marginfactor)*2 
    659692        th2 = self.traceheight / 2 
    660         offset = midpoint - th2 
     693        offset = midpoint - th2 - self.Scrolled 
    661694 
    662695        dc.SetPen(wx.Pen(color, size)) 
Note: See TracChangeset for help on using the changeset viewer.