Changeset 1131


Ignore:
Timestamp:
20.01.2016 22:11:43 (4 years ago)
Author:
klaus
Message:

OnPaint? now make use of BufferedDC

Location:
SHX/trunk/SeismicHandler
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/commands/memdebug.py

    r1063 r1131  
    3131        }, 
    3232    ] 
     33    redraw = False 
    3334 
    3435    def __init__(self, *args, **kwargs): 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1130 r1131  
    1616from SeismicHandler.core import Traces, Overlays 
    1717from SeismicHandler.basics.codes import NAME, VERSION 
    18 from SeismicHandler.basics.tools import get_default_attrib, timeit 
     18from SeismicHandler.basics.tools import get_default_attrib, timeit, timestore 
    1919from SeismicHandler.basics.analysispar import PhaseList, AnalysisPar 
    2020from obspy.core import read, UTCDateTime 
     
    4646    #@timeit 
    4747    def __init__(self, parent, fnames=[]): 
    48         SP.ScrolledPanel.__init__(self, parent, style=wx.BORDER_SIMPLE) 
     48        SP.ScrolledPanel.__init__(self, parent, 
     49            style=wx.BORDER_SIMPLE|wx.NO_FULL_REPAINT_ON_RESIZE) 
    4950 
    5051        # class data 
     52        self._bitmap = None 
    5153        self.parent = parent 
    5254        self.traces = Traces 
     
    149151    # event processing 
    150152    def OnMouseWheel(self, evt): 
    151         maxwheelpos = 5 
     153        maxwheelpos = 10 
    152154        wheel = evt.GetWheelRotation() 
    153155        if wheel > 0: 
     
    383385    def OnIdle(self, evt): 
    384386        """ 
    385         Idle processing. Redraw is only triggered here not on PAINT 
    386         event. 
     387        Idle processing. Redraw is done here. 
    387388        """ 
    388389        if self.refresh: 
     
    420421     
    421422    def OnPaint( self, evt ): 
    422         self.refresh = True 
     423        #ks dc2 = wx.AutoBufferedPaintDCFactory(self) 
     424        #ks dc2.Clear() 
     425        #ks x, y = self.CalcUnscrolledPosition(0, 0) 
     426        #ks dc2.Blit(0, 0, width, height, canvas, x, y) 
     427        if self._bitmap: 
     428            dc = wx.BufferedPaintDC(self, self._bitmap) 
    423429 
    424430    # Usually called via message system. 
     
    431437        self.relativeAxis = orientation == 1 
    432438        if recent != self.relativeAxis: 
    433  
    434439            # BAD! 
    435440            self.OnSize(True, renewOverlay=True) 
     
    632637                shx_graphics.midpoint 
    633638            )) 
    634             # MARGINS[1] probably wrong 
    635             #x, y = self.CalcScrolledPosition(( 
    636             #    relpos + STATION_INFO + MARGINS[1] + MARGINS[3], 
    637             #    shx_graphics.midpoint 
    638             #)) 
    639639        # vertical 
    640640        elif self.traceOrder == 2: 
     
    646646        return x, y 
    647647     
    648     #@timeit 
    649     def load(self, fnames=[]): 
    650         """ 
    651         Load waveform file(s). 
    652         """ 
    653         testTrace = False 
    654         if not fnames: 
    655             fnames = [None] 
    656             testTrace = True 
    657  
    658         for fname in fnames: 
    659             self._debug("Loading %s..." % fname) 
    660  
    661             try: 
    662                 print time.time(), "reading '%s'..." % fname, 
    663                 s = time.time() 
    664                 st = read(fname) 
    665                 print "%.2f seconds" % (time.time() - s) 
    666                 trace = st[0] 
    667                 self.traces.add(trace) 
    668             except Exception, e: 
    669                 msg = e.message and e.message or "File not readable!" 
    670                 dlg = wx.MessageDialog(self, msg, "An error occured!", 
    671                                                          wx.OK | wx.ICON_ERROR) 
    672                 dlg.ShowModal() 
    673                 dlg.Destroy() 
    674  
    675                 self._debug(e.message) 
    676  
    677         try: 
    678             if testTrace: 
    679                 t = self.traces[0].copy() 
    680                 t.stats.network = "XX" 
    681                 t.stats.channel = "EHA" 
    682                 t.trim(t.stats.starttime + 4, t.stats.endtime - 10) 
    683                 self.traces.add(t) 
    684                 t = self.traces[0].copy() 
    685                 t.stats.network = "XX" 
    686                 t.stats.channel = "EHB" 
    687                 t.trim(t.stats.starttime + 10, t.stats.endtime - 3) 
    688                 self.traces.add(t) 
    689         except Exception, inst: 
    690             print inst 
    691             pass 
    692  
    693 #        msgs.sendMessage('notify.tracecount', count=len(self.traces)) 
    694648 
    695649    #@timeit 
     
    863817        self.traceheight = theight 
    864818 
    865         # canvas holding the final figure 
    866         bmap = wx.EmptyBitmap(width, height) 
    867         canvas = wx.MemoryDC(bmap) 
     819        # bitmap holding the final figure, canvas->DC drawing to this bitmap 
     820        self._bitmap = wx.EmptyBitmap(width, height) 
     821        canvas = wx.MemoryDC(self._bitmap) 
    868822        canvas.SetBrush(wx.TRANSPARENT_BRUSH) 
    869823        canvas.Clear() 
     
    915869                zheight = int( theight ) 
    916870                prepzoom = 0.9  # why not 1.? 
     871             
     872            # limit zheight to screen height 
     873            if zheight > self.height: 
     874                zheight = self.height 
    917875 
    918876            norm = globalnorm and self.maxAmplitude or self._normtype[1] 
     
    920878            t.prepare_image_data(pltwidth, zheight, 
    921879                timewindow, zoom=prepzoom, norm=norm) 
     880            #print "dbg: img data", pltwidth, zheight, timewindow, prepzoom, norm 
    922881             
    923882            shx_graphics = t.get_graphics() 
     
    11571116                     ) 
    11581117 
    1159         # make it visible 
    1160         dc2 = wx.AutoBufferedPaintDCFactory(self) 
    1161         dc2.Clear() 
    1162         x, y = self.CalcUnscrolledPosition(0, 0) 
    1163         dc2.Blit(0, 0, width, height, canvas, x, y) 
    11641118        if self.do_screenshot: 
    11651119            self.save_shot(canvas) 
    11661120            self.do_screenshot = False 
    11671121        # detach 
    1168         canvas.SelectObject(wx.NullBitmap) 
     1122        #ks canvas.SelectObject(wx.NullBitmap) 
     1123        del canvas 
     1124        self.Refresh() 
     1125        self.Update() 
    11691126 
    11701127    #@timeit 
     
    12871244class plotterWindow(wx.Frame): 
    12881245    """ 
    1289     Basic program frame. 
     1246    Basic program frame including menu. 
    12901247    """ 
    12911248    def __init__(self, parent, title, size=(640,280), position=(100,100)): 
     
    15121469            ap.getValueAsString( 'readws_server' ), 
    15131470        ) 
    1514         print "dbg: cmd", cmd 
    15151471        _sendShCommand( cmd )         
    15161472 
     
    15261482            ap.getValueAsString( 'readws_server' ), 
    15271483        ) 
    1528         print "dbg: cmd", cmd 
    15291484        _sendShCommand( cmd ) 
    15301485     
     
    16321587            "New value for '%s' (type %s):" % (pname,ptype), oldvalue ) 
    16331588        btn = dlg.ShowModal() 
    1634         print "dbg: btn", btn 
    16351589        result = dlg.getValue() 
    16361590        dlg.Destroy() 
     1591        if result == None: 
     1592            # Clicked on Cancel 
     1593            return 
    16371594        if self.validate( result, ptype ): 
    16381595            if result == "": 
     
    16921649        self.text = wx.TextCtrl( self, value=oldvalue, pos=(10,30), 
    16931650            size=(200,26) ) 
    1694         tbtn = wx.Button( self, label='OK', pos=(100,70) ) 
    1695         self.Bind( wx.EVT_BUTTON, self.OnText, tbtn ) 
     1651        tbtn = wx.Button( self, label='OK', pos=(50,70) ) 
     1652        self.Bind( wx.EVT_BUTTON, self.OnTextOk, tbtn ) 
     1653        cbtn = wx.Button( self, label='Cancel', pos=(150,70) ) 
     1654        self.Bind( wx.EVT_BUTTON, self.OnTextCancel, cbtn ) 
    16961655        self.result = None 
    16971656     
    1698     def OnText( self, e ): 
     1657    def OnTextOk( self, e ): 
    16991658        self.result = self.text.GetValue() 
     1659        self.Destroy() 
     1660     
     1661    def OnTextCancel( self, e ): 
     1662        self.result = None 
    17001663        self.Destroy() 
    17011664     
  • SHX/trunk/SeismicHandler/patches/obspy_.py

    r1119 r1131  
    207207    oldx, oldy = 0, -y[0] + offset 
    208208 
     209    timestore.timer_on()  #******************************************** 
    209210    for i in xrange(1, len(y)): 
    210211        newx = i * stretch 
     
    215216    shx_graphics.ImageData = lines 
    216217    shx_graphics.PlotPixels = pixel_width 
     218    timestore.timer_off() #******************************************** 
    217219 
    218220#@timeit 
     
    361363    else: 
    362364        # all other additional entries put inside stats.sh 
    363         if name in ('T-ORIGIN',): 
     365        if name in ('T-ORIGIN','ZOOM'): 
    364366            self.stats.sh[name] = float(value) 
    365367        elif name in ('METASTATUS',): 
Note: See TracChangeset for help on using the changeset viewer.