Changeset 419


Ignore:
Timestamp:
21.07.2011 15:45:31 (8 years ago)
Author:
marcus
Message:
  • more pubsub messaging system
  • removed cross dependencies between frame and canvas
  • general debug method
Location:
SHX/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/patches/ObsPy.py

    r417 r419  
    2929import numpy as np 
    3030import math 
    31 import time 
    3231from obspy.core import Stream, Trace 
    3332from obspy.core.util import AttribDict 
     33from SeismicHandler.utils.pubsub import pub as msgs 
    3434#from obspy.core import UTCDateTime 
    3535 
     
    7777    norm : norm method: "window", "total" or value (effects y extension) 
    7878    """ 
     79    msgs.sendMessage('log.debug.patches', 
     80                                message=["Preparing plotting data...", self.id]) 
     81 
    7982    if not timescale: 
    8083        # use trace's total dimensions 
     
    113116        self.shx.PlotData = pt.data.copy() 
    114117    else: 
    115         print time.time(), "using cachedX data for", CacheTraceID[:3] 
     118        msgs.sendMessage('log.devel.patches', message=["using cachedX data for", 
     119                                                              CacheTraceID[:3]]) 
    116120 
    117121    # use minmax approach if more than 4 data points per pixel 
     
    138142            joined = np.append(joined, [remaining.min(), remaining.max()]) 
    139143 
    140         print time.time(), "pixel_width", pixel_width, "minmax", "npts", npts, "dpp", dpp, "dimx", dimx, \ 
    141               "covered", covered, "len_rest", len(remaining), "data_len", \ 
    142               len(data), "joined", len(joined), "width", width 
     144        msgs.sendMessage( 
     145            'log.devel.patches', 
     146            message=[ 
     147                 "pixel_width", pixel_width, "minmax", "npts", npts, "dpp", 
     148                 dpp, "dimx", dimx, "covered", covered, "len_rest", 
     149                 len(remaining), "data_len", len(data), "joined", len(joined), 
     150                 "width", width 
     151                ] 
     152        ) 
    143153 
    144154        # At this stage the x-transformed data can be cached! If pixel_width 
     
    146156        self.shx.PlotData = joined 
    147157 
    148     print time.time(), width, height, norm, type(self.shx.PlotData) 
     158    msgs.sendMessage('log.devel.patches', 
     159                         message=[width, height, norm, type(self.shx.PlotData)]) 
    149160 
    150161    if cachedY: 
    151         print time.time(), "using cachedY data for", CacheTraceID[3:] 
     162        msgs.sendMessage('log.devel.patches', 
     163                           message=["using cachedY data for", CacheTraceID[3:]]) 
    152164        return 
    153165     
  • SHX/trunk/sandbox/traceplotter.py

    r418 r419  
    1111from obspy.core.util import AttribDict 
    1212from SeismicHandler.core import read 
    13 from SeismicHandler.utils.pubsub import pub 
     13from SeismicHandler.utils.pubsub import pub as msgs 
    1414from obspy.sh.core import fromUTCDateTime 
    1515 
     
    9595 
    9696        # messaging system 
    97         pub.subscribe(self.OnNotifyHeight, 'ui.change.displayheight') 
     97        msgs.subscribe(self.OnNotifyHeight, 'ui.change.displayheight') 
     98        msgs.subscribe(self.OnNotifyPhaseName, 'ui.change.phasename') 
     99        msgs.subscribe(self.OnNotifyTraceOrder, 'ui.change.traceorder') 
     100        msgs.subscribe(self.OnNotifyTimeAxis, 'ui.change.timeaxis') 
    98101 
    99102    # event processing 
     
    254257        # if window was resized, renew overlay buffers 
    255258        if evt and (renewOverlay or evt.GetEventType() == wx.EVT_SIZE.typeId): 
     259            self._setup() 
    256260            self.overlay_picks.Reset() 
    257261            self.overlay_drag.Reset() 
     
    260264        self.refresh = True 
    261265 
    262     def OnTimeAxisChange(self, evt): 
     266    # Usually called via message system. 
     267    def OnNotifyTimeAxis(self, orientation): 
    263268        """ 
    264269        Handle changes of time axis mode (absolute vs. relative time axis). 
    265270        """ 
    266271        recent = self.relativeAxis 
    267         self.relativeAxis = evt.GetString() == "relative" 
     272        self.relativeAxis = orientation == 1 
    268273        if recent != self.relativeAxis: 
    269274 
    270             self.OnPaint(evt, renewOverlay=True) 
    271  
    272     def OnTraceOrderChange(self, evt): 
     275            # BAD! 
     276            self.OnPaint(True, renewOverlay=True) 
     277 
     278    def OnNotifyTraceOrder(self, order): 
    273279        """ 
    274280        Handle changes of trace plotting mode (horizontal vs. vertical modes). 
    275281        """ 
    276282        recent = self.traceOrder 
    277         self.traceOrder = evt.GetSelection() 
     283        self.traceOrder = order 
    278284        if recent != self.traceOrder: 
    279285            # reset display height 
    280             pub.sendMessage('notify.tracecount', count=len(self.traces), reset=True) 
    281             pub.sendMessage('ui.change.displayheight', height=len(self.traces)) 
     286            msgs.sendMessage('notify.tracecount', count=len(self.traces), reset=True) 
     287            msgs.sendMessage('ui.change.displayheight', height=len(self.traces)) 
    282288            self._setup() 
    283             self.OnPaint(evt, renewOverlay=True) 
     289            # BAD: setting evt=True 
     290            self.OnPaint(True, renewOverlay=True) 
    284291 
    285292    def OnNotifyHeight(self, height): 
     
    298305        self.OnPaint(None) 
    299306 
    300     def OnPhaseNameChange(self, evt): 
    301         """ 
    302         ... 
    303         """ 
    304         self.phasename = evt.GetString() 
     307    def OnNotifyPhaseName(self, name): 
     308        self.phasename = name 
    305309 
    306310    # helper functions 
     
    445449            pass 
    446450        self._resetTimeRange() 
    447         pub.sendMessage('notify.tracecount', count=len(self.traces)) 
     451        msgs.sendMessage('notify.tracecount', count=len(self.traces)) 
    448452 
    449453    def _setup(self): 
     
    580584                end = start + self.maxlength 
    581585 
    582             self._debug("Preparing plotting data...", t.id) 
    583586            t._shxPrepareImageData(pltwidth, theight, (start, end), zoom=0.9) 
    584587 
     
    604607                portion = plotStartSec / (end - start) 
    605608                plotoffset = portion * pltwidth 
    606 #                self._debug(portion, plotoffset) 
    607609            t.shx.plotoffset = plotoffset 
    608610 
     
    684686 
    685687    def _debug(self, *args): 
    686         print time.time(), " ".join([str(i) for i in args]) 
     688        msgs.sendMessage('log.debug', message=" ".join([str(i) for i in args])) 
    687689 
    688690    def _resetTimeRange(self): 
     
    745747            fname = None 
    746748 
    747         self.canvas = traceCanvas(self, files) 
    748         self.CreateStatusBar() 
    749         self.SetStatusText("Seimic Handler wxWidgets version") 
    750  
    751749        # menu 
    752750        menuBar = wx.MenuBar() 
     
    791789                                                       ["absolute", "relative"]) 
    792790        tb.AddControl(timeaxis) 
    793         self.Bind(wx.EVT_CHOICE, self.canvas.OnTimeAxisChange, timeaxis) 
     791        self.Bind(wx.EVT_CHOICE, self.OnTimeAxisChange, timeaxis) 
    794792 
    795793        msg = ' trace order/direction ' 
     
    800798        ) 
    801799        tb.AddControl(traceorder) 
    802         self.Bind(wx.EVT_CHOICE, self.canvas.OnTraceOrderChange, traceorder) 
     800        self.Bind(wx.EVT_CHOICE, self.OnTraceOrderChange, traceorder) 
    803801 
    804802        msg = ' phase ' 
     
    806804        phase = wx.TextCtrl(tb, wx.NewId(), 'P') 
    807805        tb.AddControl(phase) 
    808         self.Bind(wx.EVT_TEXT, self.canvas.OnPhaseNameChange, phase) 
     806        self.Bind(wx.EVT_TEXT, self.OnPhaseNameChange, phase) 
    809807 
    810808        msg = ' height ' 
     
    815813        self.Bind(wx.EVT_SCROLL_CHANGED, self.OnHeightChange, height) 
    816814 
     815        tb.Realize() 
     816 
    817817        # messaging system 
    818         pub.subscribe(self.OnNofityHeight, 'notify.tracecount') 
    819         # manual update 
    820         self.OnNofityHeight(len(self.canvas.traces)) 
    821  
    822         tb.Realize() 
     818        msgs.subscribe(self.OnNofityHeight, 'notify.tracecount') 
     819 
     820        # init canvas 
     821        self.canvas = traceCanvas(self, files) 
     822        self.CreateStatusBar() 
     823        self.SetStatusText("Seimic Handler wxWidgets version") 
    823824 
    824825        self.Show() 
    825826 
    826827    # event processing 
     828    def OnPhaseNameChange(self, evt): 
     829        msgs.sendMessage('ui.change.phasename', name=evt.GetString()) 
     830 
     831    def OnTraceOrderChange(self, evt): 
     832        msgs.sendMessage('ui.change.traceorder', order=evt.GetSelection()) 
     833 
     834    def OnTimeAxisChange(self, evt): 
     835        msgs.sendMessage('ui.change.timeaxis', orientation=evt.GetSelection()) 
     836 
    827837    def OnKeyDown(self, evt): 
    828838        kc = evt.GetKeyCode() 
     
    830840            self.onRead(evt) 
    831841        else: 
    832             print self._debug("key code", kc) 
     842            print msgs.sendMessage('log.debug', message=("key code %d" % kc)) 
    833843 
    834844    def OnQuit(self, evt): 
     
    863873 
    864874    def OnHeightChange(self, evt): 
    865         pub.sendMessage('ui.change.displayheight', height=evt.GetPosition()) 
     875        msgs.sendMessage('ui.change.displayheight', height=evt.GetPosition()) 
    866876 
    867877    def OnNofityHeight(self, count, reset=False): 
     878        """ 
     879        Alter style of control in respect to number of traces. 
     880        """ 
    868881        if count < 2: 
    869882            self.height.Disable() 
     
    882895            self.height.SetValue(pos) 
    883896 
    884 def pubmaster(*args, **kwargs): 
    885     print time.time(), "_pubmaster_", args, kwargs 
    886 pub.subscribe(pubmaster, pub.ALL_TOPICS) 
     897def __pubmaster(topic=msgs.AUTO_TOPIC, **kwargs): 
     898    print "%.2f" % time.time(), "_pubmaster_", topic.getName(), kwargs 
     899#msgs.subscribe(__pubmaster, msgs.ALL_TOPICS) 
     900 
     901def __debug(message, topic=msgs.AUTO_TOPIC): 
     902    if type(message) == list: 
     903        message = " ".join(map(str, message)) 
     904 
     905    print "%.2f" % time.time(), "[%s]" % topic.getName(), message 
     906msgs.subscribe(__debug, 'log.debug') 
    887907 
    888908def main(): 
Note: See TracChangeset for help on using the changeset viewer.