Changeset 1091


Ignore:
Timestamp:
09.01.2016 16:35:09 (4 years ago)
Author:
klaus
Message:

now zoom drag window similar to SHM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1088 r1091  
    4949        self.traces = Traces 
    5050        self.ZoomWindow = None 
     51        self.zoomwdwwidth = 0 
    5152        self.Scrolled = 0 
    5253        self.mousedouble = 0 
     
    5455        self.AllowDoubleClick = True 
    5556        self.do_screenshot = False 
     57        self.pixel_duration = None 
    5658 
    5759        # temporary layer for mouse motion 
     
    7880        self.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp) 
    7981        self.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDouble) 
     82        self.Bind(wx.EVT_RIGHT_DCLICK, self.OnMouseRightDouble) 
    8083        self.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp) 
    8184        self.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown) 
     
    135138        if trace: 
    136139            self.mousedouble = True 
    137  
     140        evt.Skip() 
     141 
     142    def OnMouseRightDouble(self, evt): 
     143        self.zoomwdwwidth = 0. 
    138144        evt.Skip() 
    139145 
     
    144150    def OnMouseRightDown(self, evt): 
    145151        self._captureMouse(evt) 
     152        if self.zoomwdwwidth: 
     153            pass 
     154        elif self.ZoomWindow: 
     155            trace, start, end = self.ZoomWindow 
     156            start = self.TraceAndTimeToScreen(trace, start) 
     157            end = self.TraceAndTimeToScreen(trace, end) 
     158            self.zoomwdwwidth = end[0] - start[0] 
     159        else: 
     160            self.zoomwdwwidth = 0 
     161        self._debug( "dbg: zoomwdwwidth %f" % self.zoomwdwwidth ) 
    146162 
    147163    def OnMouseMotion(self, evt): 
     
    157173 
    158174        try: 
    159             id = trace.id 
     175            tid = trace.id 
    160176        except AttributeError: 
    161             id = "*" 
     177            tid = "*" 
    162178         
    163179        reltimestr = "%g" % self.ScreenToRelativeTime( x, y ) 
    164180 
    165         self.parent.SetStatusText( 
    166             "%s - %s - %s" % (fromUTCDateTime(timestamp), reltimestr, id) 
    167         ) 
    168  
     181        dragwidth = None 
    169182        if evt.Dragging() and trace: 
    170183            # new overlay for live display 
     
    185198            if evt.RightIsDown(): 
    186199                self.ZoomWindow = None 
    187                 self.__zoombox(dc, self.dragStart, (x, y), 
    188                                                     shx_graphics.midpoint, size=2) 
     200                if self.zoomwdwwidth == 0.: 
     201                    self.__zoombox( dc, self.dragStart, (x, y), 
     202                        shx_graphics.midpoint, size=2 ) 
     203                    dragwidth = x - self.dragStart[0] 
     204                else: 
     205                    _start = [x-self.zoomwdwwidth/2,y] 
     206                    _end = [x+self.zoomwdwwidth/2,y] 
     207                    self.__zoombox( dc, _start, _end, 
     208                        shx_graphics.midpoint, size=2 ) 
     209                    dragwidth = _end[0] - _start[0] 
    189210            # draw position line 
    190211            elif evt.LeftIsDown(): 
     
    202223            del odc 
    203224 
     225        stext = "%s - %s - %s" % (fromUTCDateTime(timestamp), reltimestr, tid) 
     226        if self.ZoomWindow: 
     227            stext += " - Z:%3.1f" % (self.ZoomWindow[2]-self.ZoomWindow[1]) 
     228        elif dragwidth and self.pixel_duration: 
     229            stext += " - Z:%3.1f" % (dragwidth*self.pixel_duration) 
     230        self.parent.SetStatusText( stext ) 
     231 
    204232        # let the event propagate 
    205233        evt.Skip() 
     
    213241            x, y = evt.GetPositionTuple() 
    214242 
    215             trace, end = self.ScreenToTraceAndTime(x, y) 
    216             if self.traceOrder in [0, 1]: 
    217                 _, start = self.ScreenToTraceAndTime(self.dragStart[0], y) 
    218             elif self.traceOrder in [2, 3]: 
    219                 _, start = self.ScreenToTraceAndTime(x, self.dragStart[1]) 
     243            if self.zoomwdwwidth == 0: 
     244                trace, end = self.ScreenToTraceAndTime(x, y) 
     245                if self.traceOrder in [0, 1]: 
     246                    _, start = self.ScreenToTraceAndTime(self.dragStart[0], y) 
     247                elif self.traceOrder in [2, 3]: 
     248                    _, start = self.ScreenToTraceAndTime(x, self.dragStart[1]) 
     249            else: 
     250                if self.traceOrder in [0, 1]: 
     251                    trace, start = \ 
     252                        self.ScreenToTraceAndTime(x-self.zoomwdwwidth/2, y) 
     253                    trace, end = \ 
     254                        self.ScreenToTraceAndTime(x+self.zoomwdwwidth/2, y) 
     255                elif self.traceOrder in [2, 3]: 
     256                    trace, start = \ 
     257                        self.ScreenToTraceAndTime(x, y-self.zoomwdwwidth/2) 
     258                    trace, end = \ 
     259                        self.ScreenToTraceAndTime(x, y+self.zoomwdwwidth/2) 
    220260 
    221261            if start > end: 
    222262                end, start = start, end 
    223263 
    224             self.ZoomWindow = [trace, start, end,] 
     264            self.ZoomWindow = [trace, start, end] 
    225265            self.dragStart = None 
    226266            self._drawPicksAndZoom() 
     
    484524        # by one pixel. 
    485525        pixel_duration = duration/pixel_width 
     526        self.pixel_duration = pixel_duration 
    486527        if trace and (trace.stats.starttime > timestamp + pixel_duration or \ 
    487528                             trace.stats.endtime + pixel_duration < timestamp): 
     
    497538        if trace is None: 
    498539            return 
    499         shx_grahics = trace.get_graphics() 
     540        shx_graphics = trace.get_graphics() 
    500541        if shx_graphics == None: 
    501542            return 
     
    654695        dc = wx.ClientDC(self) 
    655696        # odc disables redraw 
    656         #odc = wx.DCOverlay(self.overlay_picks, dc) 
    657         #odc.Clear() 
     697        odc = wx.DCOverlay(self.overlay_picks, dc) 
     698        odc.Clear() 
    658699        dc.SetBrush(wx.TRANSPARENT_BRUSH) 
    659700 
     
    688729                end = self.TraceAndTimeToScreen(trace, end) 
    689730                self._debug("draw zoom window") 
    690                 self.__zoombox(dc, start, end, shx_graphics.midpoint, color="Blue") 
    691  
    692         #del odc 
     731                self.__zoombox(dc, start, end, shx_graphics.midpoint, 
     732                    color="Blue") 
     733            else: 
     734                self.zoomwdwwidth = 0 
     735                self.ZoomWindow = None 
     736 
     737        del odc 
    693738 
    694739    #@timeit 
     
    10621107    def _debug(*args): 
    10631108        log_message('debug.wx', " ".join([str(i) for i in args])) 
     1109        #print "dbg:", " ".join([str(i) for i in args]) 
    10641110 
    10651111    #@timeit 
Note: See TracChangeset for help on using the changeset viewer.