Changeset 404
- Timestamp:
- 06/09/2011 05:43:13 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
SHX/trunk/sandbox/traceplotter.py
r403 r404 42 42 43 43 class MyPanel(SP.ScrolledPanel): 44 def __init__(self, parent, fname =None):44 def __init__(self, parent, fnames=[]): 45 45 self.traces = Traces() 46 46 … … 55 55 self.refresh = False 56 56 self.relativeAxis = False 57 self.traceOrder = " tb"58 self.load(fname )57 self.traceOrder = "bottom-top" 58 self.load(fnames) 59 59 self.OnPaint(None) 60 60 self.SetFocus() … … 64 64 65 65 def getTraceUnderCursor(self, y): 66 idx = int(float(y)/self.heigth*len(self.traces)) 67 if self.traceOrder == "bottom-top": 68 idx = -idx-1 69 66 70 try: 67 return self.traces[i nt(float(y)/self.heigth*len(self.traces))]71 return self.traces[idx] 68 72 except IndexError: 69 73 return self.traces[-1] … … 92 96 evt.Skip() 93 97 94 def load(self, fname=None): 95 self._debug("Loading %s..." % fname) 96 try: 97 st = read(fname) 98 trace = st[0] 99 self.traces.add(trace) 100 self.resetTimeRange() 101 except Exception, e: 102 msg = e.message and e.message or "File not readable!" 103 dlg = wx.MessageDialog(self, msg, "An error occured!", wx.OK | wx.ICON_ERROR) 104 dlg.ShowModal() 105 dlg.Destroy() 106 107 self._debug(e.message) 98 def load(self, fnames=[]): 99 if not fnames: 100 fnames = [None] 101 102 for fname in fnames: 103 self._debug("Loading %s..." % fname) 104 105 try: 106 st = read(fname) 107 trace = st[0] 108 self.traces.add(trace) 109 except Exception, e: 110 msg = e.message and e.message or "File not readable!" 111 dlg = wx.MessageDialog(self, msg, "An error occured!", wx.OK | wx.ICON_ERROR) 112 dlg.ShowModal() 113 dlg.Destroy() 114 115 self._debug(e.message) 116 117 self.resetTimeRange() 108 118 109 119 def resetTimeRange(self): … … 149 159 canvas.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL)) 150 160 151 for i, t in enumerate(self.traces): 161 if self.traceOrder == "top-bottom": 162 trcs = self.traces 163 elif self.traceOrder == "bottom-top": 164 trcs = self.traces[::-1] 165 166 for i, t in enumerate(trcs): 152 167 if not self.relativeAxis: 153 168 start = self.start … … 186 201 # copy data 187 202 canvas.Blit(offsetX+STATION_INFO, i*theight, width, height, buffer, 0, 0, wx.AND) 188 txt = "%d: %s %s" % (i+1, t.stats.station, t.stats.channel[-1]) 203 if self.traceOrder == "top-bottom": 204 idx = i+1 205 elif self.traceOrder == "bottom-top": 206 idx = -i+len(self.traces) 207 txt = "%d: %s %s" % (idx, t.stats.station, t.stats.channel[-1]) 208 189 209 _, h, _, _ = canvas.GetFullTextExtent(txt) 190 210 canvas.DrawText(txt, 5, i*theight+theight//2-h//2) … … 201 221 self.OnPaint(evt) 202 222 223 def onTraceOrder(self, evt): 224 recent = self.traceOrder 225 self.traceOrder = evt.GetString() 226 if recent != self.traceOrder: 227 self.OnPaint(evt) 228 229 # print [i for i in dir(self.parent.toolbar) if "id" in i.lower()] 230 # print dir(evt), evt.GetId() 231 # self.parent.toolbar.EnableTool(evt.GetId(), False) 232 203 233 class MyFrame(wx.Frame): 204 234 def __init__(self, parent, title, size=(640,280)): 205 235 wx.Frame.__init__(self, parent, title=title, size=size, style=wx.DEFAULT_FRAME_STYLE | wx.FULL_REPAINT_ON_RESIZE) 236 237 files = [] 238 for fname in sys.argv[1:]: 239 files.append(fname) 240 206 241 try: 207 fname = sys.argv[1] 208 self.dirname, self.filename = os.path.split(fname) 242 self.dirname, self.filename = os.path.split(files[-1]) 209 243 except IndexError: 210 244 fname = None 211 245 212 self.canvas = MyPanel(self, f name)246 self.canvas = MyPanel(self, files) 213 247 self.CreateStatusBar() 214 248 self.SetStatusText("Seimic Handler wxWidgets version") … … 248 282 timeaxis = wx.Choice(tb, wx.NewId(), (-1, -1), (-1, -1), ["absolute", "relative"]) 249 283 tb.AddControl(timeaxis) 284 self.Bind(wx.EVT_CHOICE, self.canvas.onTimeAxis, timeaxis) 285 msg = ' trace order ' 286 tb.AddControl(wx.StaticText(tb, -1, msg)) 287 traceorder = wx.Choice(tb, wx.NewId(), (-1, -1), (-1, -1), ["bottom-top", "top-bottom"]) 288 tb.AddControl(traceorder) 289 print "xxx", traceorder.GetId() 290 self.Bind(wx.EVT_CHOICE, self.canvas.onTraceOrder, traceorder) 250 291 tb.Realize() 251 self.Bind(wx.EVT_CHOICE, self.canvas.onTimeAxis, timeaxis)252 292 253 293 self.Show() … … 267 307 self.dirname = getattr(self, "dirname", "") 268 308 self.filename = getattr(self, "filename", "") 269 fqpn_recent = os.path.join(self.dirname, self.filename) 270 271 dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.OPEN) 309 310 dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.OPEN | wx.FD_MULTIPLE) 311 312 files = [] 272 313 if dlg.ShowModal() == wx.ID_OK: 314 files = dlg.GetFilenames() 273 315 self.filename = dlg.GetFilename() 274 316 self.dirname = dlg.GetDirectory() 275 317 dlg.Destroy() 276 318 277 fqpn = os.path.join(self.dirname, self.filename) 278 279 # only update if new file 280 if fqpn != fqpn_recent: 319 for fname in files: 320 fqpn = os.path.join(self.dirname, fname) 321 281 322 self.SetStatusText(fqpn) 282 self.canvas.load( fqpn)323 self.canvas.load([fqpn]) 283 324 284 325 def onReadDb(self, evt):
Note: See TracChangeset
for help on using the changeset viewer.