Changeset 354


Ignore:
Timestamp:
03/30/11 18:18:48 (8 years ago)
Author:
marcus
Message:

Some experiments.

File:
1 edited

Legend:

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

    r351 r354  
    22 
    33import wx 
     4import wx.lib.scrolledpanel as SP 
     5import sys 
    46from bufferedcanvas import * 
    57 
     
    79 
    810class TestCanvas(BufferedCanvas): 
    9     def __init__(self, parent, ID=-1): 
    10         self.data = -read("../SeismicHandler/tests/data/mseed/2010.284.GR.GRA1..BHN")[0].data 
     11    def __init__(self, parent, ID=-1, pos=wx.DefaultPosition, size=wx.DefaultSize): 
     12        try: 
     13            fname = sys.argv[1] 
     14        except IndexError: 
     15            fname = "../SeismicHandler/tests/data/mseed/2010.284.GR.GRA1..BHN" 
     16        self.trace = read(fname)[0] 
     17 
    1118        # demean 
    12         self.data = self.data-self.data.mean() 
    13         min, max = self.data.min(), self.data.max() 
    14         self.base = abs(max) > abs(min) and abs(max) or abs(min) 
    15         self.npts = len(self.data) 
     19        self.trace.data = self.trace.data-self.trace.data.mean() 
     20 
     21        min, max = self.trace.data.min(), self.trace.data.max() 
     22        self.base = abs(self.trace.max()) 
     23        self.npts = self.trace.stats.npts 
    1624 
    1725        self.overlay = wx.Overlay() 
    1826 
    19         BufferedCanvas.__init__(self,parent,ID) 
     27        BufferedCanvas.__init__(self, parent, ID, size=size) 
    2028 
    2129        self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) 
    2230        self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) 
    2331        self.Bind(wx.EVT_MOTION, self.OnMouseMove) 
     32 
     33        try: 
     34            parent.Bind(wx.EVT_SCROLLWIN_CHANGED, self.OnScrollDone) 
     35        except: 
     36            parent.Bind(wx.EVT_SCROLLWIN, self.OnScrollDone) 
     37 
     38        parent.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) 
     39 
     40    def OnMouseWheel(self, evt): 
     41        if evt.ControlDown(): 
     42            print "wheel CTRL event" 
     43        else: 
     44            evt.Skip() 
     45 
     46    def OnScrollDone(self, evt): 
     47        print "scrolling finished" 
     48#        self.overlay.Reset() 
     49        dc = wx.ClientDC(self) 
     50        odc = wx.DCOverlay(self.overlay, dc) 
     51        odc.Clear() 
     52        del odc 
     53        evt.Skip() 
    2454 
    2555    def OnRightDown(self, evt): 
     
    77107 
    78108        w, h = self.buffer.Width-20, self.buffer.Height 
     109        spp = self.npts // w 
     110        tail = self.npts % w 
     111 
     112        print "samples per pixel: %u remains: %u" % (spp, tail) 
     113 
     114        # resample 
     115        if spp > 2: 
     116            pass 
     117 
    79118        zoomx = float(w)/self.npts 
    80119        zoomy = float(h)/self.base/2.1 
    81  
    82120         
    83121        dc.SetBackground(wx.Brush("White")) 
     
    88126        lines = [] 
    89127        offsetx, offsety = 10, int(h / 2.) 
    90         print "zoom: x=%.2f y=%.2f offset: x=%i y=%i" % (zoomx, zoomy, offsetx, offsety) 
     128        print "x: %u y: %u zoom: x=%.2f y=%.2f offset: x=%i y=%i" % (w, h, zoomx, zoomy, offsetx, offsety) 
    91129 
    92         for n, i in enumerate(self.data): 
    93             lines.append([n*zoomx, i*zoomy]) 
     130        oldx, oldy = offsetx, offsety 
     131        for n, i in enumerate(self.trace.data): 
     132            newx = n*zoomx+offsetx 
     133            newy = -i*zoomy+offsety 
     134            lines.append([oldx, oldy, newx, newy]) 
     135            oldx, oldy = newx, newy 
    94136 
    95137        dc.SetPen(wx.Pen('Grey', 1, wx.LONG_DASH)) 
     
    101143#        pen.SetCap(wx.CAP_ROUND) 
    102144        dc.SetPen(pen) 
    103         dc.DrawLines(lines, xoffset=offsetx, yoffset=offsety) 
     145        dc.DrawLineList(lines) 
    104146 
    105147class TestFrame(wx.Frame): 
     
    113155 
    114156        wx.Frame.__init__(self, parent, ID, title, pos, size, style) 
    115         self.canvas = TestCanvas(self) 
     157 
     158        panel = SP.ScrolledPanel( 
     159            parent=self, 
     160            pos=pos, 
     161            size=(1, 1), 
     162            style=wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER, 
     163            name="panel" 
     164        ) 
     165 
     166        self.canvas = TestCanvas(panel, size=[500,200]) 
     167 
     168        sizer  = wx.BoxSizer() 
     169        sizer.Add(self.canvas, proportion=2) 
     170 
     171        panel.SetSizer(sizer) 
     172        panel.SetupScrolling() 
     173 
    116174        self.Bind(wx.EVT_CLOSE, self.onClose) 
    117175 
     
    122180def main(): 
    123181    app = wx.PySimpleApp() 
    124     frame = TestFrame(size=[600,200]) 
     182    frame = TestFrame(size=[700,200]) 
    125183    frame.Show(True) 
    126184    app.MainLoop() 
Note: See TracChangeset for help on using the changeset viewer.