Changeset 1177 for SHX


Ignore:
Timestamp:
12.02.2016 13:15:23 (4 years ago)
Author:
klaus
Message:

more code to read dialog, still unfinished

Location:
SHX/trunk/SeismicHandler/modules
Files:
2 edited

Legend:

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

    r1176 r1177  
    1818from SeismicHandler.core import Traces, Overlays, traces_from_list 
    1919from SeismicHandler.basics.codes import NAME, VERSION 
    20 from SeismicHandler.basics.tools import get_default_attrib, timeit, timestore,\ 
    21     EventTextParser 
     20from SeismicHandler.basics.tools import get_default_attrib, timeit, timestore 
    2221from SeismicHandler.basics.analysispar import PhaseList, AnalysisPar 
    2322from obspy.core import read, UTCDateTime 
     
    20402039        self.flag_norm = False 
    20412040        self.flag_overlap = True 
    2042         self.pardialog = None 
     2041        self.parwindow = None 
    20432042        self.magnify = None 
    20442043        set_runtime( "wdwpos_main", position ) 
     
    20992098            'Read stations in circle area around epicener from FDSN webserver', 
    21002099            self.OnReadFdsnCircle ) 
    2101         #self.addEntry( fileMenu, 'Read Data ...', 
    2102         #    'Opens dialog box for data input', self.OnReadDialog ) 
     2100        self.addEntry( fileMenu, 'Read Data ...', 
     2101            'Opens dialog box for data input', self.OnReadDialog ) 
    21032102        fileMenu.AppendSeparator() 
    21042103        self.addEntry( fileMenu, 'Complete Metadata (FDSN)', 
     
    27362735    def OnOpenParams( self, e ): 
    27372736        "plotterWindow: control menu entry." 
    2738         self.pardialog = ParamDialog( self ) 
    2739         self.pardialog.Show() 
    2740         self.pardialog.Move( get_runtime("wdwpos_params") ) 
     2737        self.parwindow = ParamWindow( self ) 
     2738        self.parwindow.Show() 
     2739        self.parwindow.Move( get_runtime("wdwpos_params") ) 
    27412740     
    27422741    def OnOpenMagnify( self, e ): 
     
    27612760    def OnEventInfoParser( self, e ): 
    27622761        "plotterWindow: events menu entry." 
    2763         dlg = EventParseDialog( self ) 
     2762        dlg = wxdialog.EventParseDialog( self ) 
    27642763        dlg.ShowModal() 
    27652764        dlg.Destroy() 
     2765        result, msg = dlg.getResult() 
     2766        if result: 
     2767            refstat, origin, lat, lon = result 
     2768            cmd = "shx_util_eventinfo %s %s %g %g" % (refstat, 
     2769                fromUTCDateTime(origin),lat,lon) 
     2770            _sendShCommand( cmd ) 
     2771        elif msg: 
     2772            plotter.showMessage( msg, error=True ) 
     2773             
    27662774 
    27672775    def OnLocateEvent( self, e ): 
     
    29612969 
    29622970 
    2963 class ParamDialog(wx.Frame): 
     2971class ParamWindow(wx.Frame): 
    29642972 
    29652973    def __init__( self, parent ): 
    2966         "ParamDialog: init method." 
     2974        "ParamWindow: init method." 
    29672975        wx.Frame.__init__( self, parent, -1, title="Parameters", 
    29682976            style=wx.DEFAULT_FRAME_STYLE | wx.FULL_REPAINT_ON_RESIZE, 
     
    29702978        #self.Bind( wx.EVT_SIZE, self.OnSize ) 
    29712979        self.SetBackgroundColour( shxcolor1 ) 
    2972         self.scrpanel = ParamDialogPanel( self ) 
     2980        self.scrpanel = ParamWindowPanel( self ) 
    29732981        self.scrpanel.SetupScrolling() 
    29742982     
    29752983    #def OnSize( self, e ): 
    2976     #    print "dbg: Onsize ParamDialog" 
     2984    #    print "dbg: Onsize ParamWindow" 
    29772985    #    self.scrpanel.SetSize((350,850)) 
    29782986    #    self.scrpanel.SetupScrolling() 
    29792987    ##    self.scrpanel.draw() 
    29802988     
    2981 class ParamDialogPanel(SP.ScrolledPanel): 
     2989class ParamWindowPanel(SP.ScrolledPanel): 
    29822990 
    29832991    def __init__( self, parent ): 
     
    30303038     
    30313039    def OnButton( self, pname, e, *args ): 
    3032         "ParamDialog: button event." 
     3040        "ParamWindow: button event." 
    30333041        oldvalue = self.ap.getValueAsString( pname ) 
    30343042        ptype = self.ap.getType( pname ) 
     
    30603068     
    30613069    def updateVariables( self, *args ): 
    3062         "ParamDialog: update all values (strings) in dialog box." 
     3070        "ParamWindow: update all values (strings) in dialog box." 
    30633071        for pname in self.ap.sortedParams(): 
    30643072            pvalue = self.ap.getValueAsString( pname ) 
     
    30663074     
    30673075    def validate( self, result, ptype ): 
    3068         "ParamDialog: validate user input according to data type." 
     3076        "ParamWindow: validate user input according to data type." 
    30693077        if ptype == 'int': 
    30703078            try: 
     
    31393147         
    31403148 
    3141 class EventParseDialog(wx.Dialog): 
    3142  
    3143     def __init__( self, parent ): 
    3144         "EventParseDialog: init method." 
    3145         wx.Dialog.__init__( self, parent, -1, title="Event Info Parser", 
    3146             style=wx.SUNKEN_BORDER )         
    3147         self.SetBackgroundColour( shxcolor1 ) 
    3148         height = 26 
    3149         btnwidth = 70 
    3150         vspace = [(15,15), 0, wx.ALL, 1] 
    3151  
    3152         hbox = wx.BoxSizer( wx.HORIZONTAL ) 
    3153         okbtn = wx.Button( self, label='OK', pos=(50,70) ) 
    3154         self.Bind( wx.EVT_BUTTON, self.OnTextOk, okbtn ) 
    3155         hbox.Add( okbtn, 0, wx.ALL, 10 ) 
    3156         cbtn = wx.Button( self, label='Cancel', pos=(150,70) ) 
    3157         self.Bind( wx.EVT_BUTTON, self.OnTextCancel, cbtn ) 
    3158         hbox.Add( cbtn, 0, wx.ALL, 10 ) 
    3159  
    3160         vbox = wx.BoxSizer(wx.VERTICAL) 
    3161         vbox.Add( *vspace ) 
    3162         vbox.Add( wx.StaticText(self,label="Reference Station:"), 0, 
    3163             wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    3164         self.text_refstat = wx.TextCtrl( self, value='gr.gra1', size=(60,height) ) 
    3165         vbox.Add( self.text_refstat, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10 ) 
    3166         vbox.Add( *vspace ) 
    3167         vbox.Add( wx.StaticText(self,label="Event Info Text:"), 0, 
    3168             wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    3169         self.text_evinfo = wx.TextCtrl( self, value='', size=(400,height) ) 
    3170         vbox.Add( self.text_evinfo, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10 ) 
    3171         vbox.Add( *vspace ) 
    3172         vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    3173         vbox.Add( *vspace ) 
    3174         vbox.SetSizeHints(self) 
    3175         self.SetAutoLayout(True) 
    3176         self.SetSizer( vbox ) 
    3177         self.Layout() 
    3178      
    3179     def OnTextOk( self, e ): 
    3180         refstat = self.text_refstat.GetValue() 
    3181         evinfo = EventTextParser(self.text_evinfo.GetValue()).parse() 
    3182         if evinfo == None: 
    3183             plotter.showMessage( "Could not parse event line", error=True ) 
    3184             self.Destroy() 
    3185             return 
    3186         origin, lat, lon = evinfo 
    3187         self.Destroy() 
    3188         cmd = "shx_util_eventinfo %s %s %g %g" % (refstat, 
    3189             fromUTCDateTime(origin),lat,lon) 
    3190         _sendShCommand( cmd ) 
    3191          
    3192     def OnTextCancel( self, e ): 
    3193         self.Destroy() 
    3194      
    31953149 
    31963150def _absToRelTime( trc, abstime ): 
     
    33203274    """ 
    33213275    global plotter 
    3322     if plotter and plotter.pardialog != None: 
    3323         wx.CallAfter(plotter.pardialog.scrpanel.updateVariables, None) 
     3276    if plotter and plotter.parwindow != None: 
     3277        wx.CallAfter(plotter.parwindow.scrpanel.updateVariables, None) 
    33243278subscribe_ui_event(__updateparams, "updateparams") 
    33253279 
     
    33273281def __openparams(unused): 
    33283282    """ 
    3329     Open parameter dialog box. 
     3283    Open parameter window. 
    33303284    """ 
    33313285    global plotter 
    3332     if plotter and plotter.pardialog == None: 
     3286    if plotter and plotter.parwindow == None: 
    33333287        wx.CallAfter(plotter.OnOpenParams, None) 
    33343288subscribe_ui_event(__openparams, "openparams") 
  • SHX/trunk/SeismicHandler/modules/wxdialog.py

    r1176 r1177  
    77import wx 
    88from SeismicHandler.basics.analysispar import AnalysisPar 
     9from SeismicHandler.basics.tools import EventTextParser 
    910from obspy.core import UTCDateTime 
    1011 
     
    1213shxcolor1 = '#ddeeff' 
    1314shxcolor2 = '#bccdff' 
     15 
     16 
     17#------------------------------------------------------------------------------- 
    1418 
    1519 
     
    7680        timehbox.Add( vbox, 0, wx.ALL, 5 ) 
    7781 
     82        # Circular area 
     83        circhbox = wx.BoxSizer( wx.HORIZONTAL ) 
     84        # emulate SpinCtrl (for float number) 
     85        # Latitude 
     86        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     87        self.circlattext_ctrl = wx.TextCtrl(self,value='0.0',size=(60,eh)) 
     88        self.circlatspin_btn = wx.SpinButton(self,wx.SP_VERTICAL,size=(10,eh)) 
     89        self.circlat_fs = FloatSpinner( self.circlattext_ctrl, 
     90            self.circlatspin_btn, -90., 90., 0.1 ) 
     91        hbox.Add( self.circlattext_ctrl, 0, wx.ALL, 0 ) 
     92        hbox.Add( self.circlatspin_btn, 0, wx.ALL, 0 ) 
     93        vbox = wx.BoxSizer( wx.VERTICAL ) 
     94        vbox.Add( wx.StaticText(self,label='Latitude'), 0, 
     95            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 1 ) 
     96        vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 1 ) 
     97        circhbox.Add( vbox, 0, wx.ALL, 5 ) 
     98        # Longitude 
     99        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     100        self.circlontext_ctrl = wx.TextCtrl(self,value='0.0',size=(60,eh)) 
     101        self.circlonspin_btn = wx.SpinButton(self,wx.SP_VERTICAL,size=(10,eh)) 
     102        self.circlon_fs = FloatSpinner( self.circlontext_ctrl, 
     103            self.circlonspin_btn, -180., 180., 0.1 ) 
     104        hbox.Add( self.circlontext_ctrl, 0, wx.ALL, 0 ) 
     105        hbox.Add( self.circlonspin_btn, 0, wx.ALL, 0 ) 
     106        vbox = wx.BoxSizer( wx.VERTICAL ) 
     107        vbox.Add( wx.StaticText(self,label='Longitude'), 0, 
     108            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 1 ) 
     109        vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 1 ) 
     110        circhbox.Add( vbox, 0, wx.ALL, 5 ) 
     111        # Radius 
     112        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     113        self.circradtext_ctrl = wx.TextCtrl(self,value='0.0',size=(60,eh)) 
     114        self.circradspin_btn = wx.SpinButton(self,wx.SP_VERTICAL,size=(10,eh)) 
     115        self.circrad_fs = FloatSpinner( self.circradtext_ctrl, 
     116            self.circradspin_btn, 0., 90., 0.1 ) 
     117        hbox.Add( self.circradtext_ctrl, 0, wx.ALL, 0 ) 
     118        hbox.Add( self.circradspin_btn, 0, wx.ALL, 0 ) 
     119        vbox = wx.BoxSizer( wx.VERTICAL ) 
     120        vbox.Add( wx.StaticText(self,label='Radius'), 0, 
     121            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 1 ) 
     122        vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 1 ) 
     123        circhbox.Add( vbox, 0, wx.ALL, 5 ) 
     124 
    78125        # OK and Cancel buttons 
    79126        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     
    87134        vbox = wx.BoxSizer(wx.VERTICAL) 
    88135        vbox.Add( *vspace ) 
     136        vbox.Add( wx.StaticText(self,label='Circular Area'), 0, 
     137            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     138        vbox.Add( circhbox, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     139        vbox.Add( *vspace ) 
     140        vbox.Add( wx.StaticLine(self, size=(400,1)), 0, wx.ALL, 5 ) 
     141        vbox.Add( *vspace ) 
     142        vbox.Add( wx.StaticText(self,label='Read Time and Length'), 0, 
     143            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    89144        vbox.Add( timehbox, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     145        vbox.Add( *vspace ) 
     146        vbox.Add( wx.StaticLine(self, size=(400,1)), 0, wx.ALL, 5 ) 
    90147        vbox.Add( *vspace ) 
    91148        vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     
    102159            self.readminute_ctrl.GetValue(), self.readsecond_ctrl.GetValue() ) 
    103160        rdlth = self.readlength_ctrl.GetValue() 
    104         self.result = ("OK",rdtime,rdlth) 
     161        lat = self.circlat_fs.getValue() 
     162        lon = self.circlon_fs.getValue() 
     163        radius = self.circrad_fs.getValue() 
     164        self.result = ("OK",rdtime,rdlth,lat,lon,radius) 
    105165        self.Destroy() 
    106166 
     
    111171        return self.result 
    112172 
     173 
     174#------------------------------------------------------------------------------- 
     175 
     176 
     177class EventParseDialog(wx.Dialog): 
     178 
     179    def __init__( self, parent ): 
     180        "EventParseDialog: init method." 
     181        self.result = None 
     182        self.statusmsg = None 
     183        wx.Dialog.__init__( self, parent, -1, title="Event Info Parser", 
     184            style=wx.SUNKEN_BORDER )         
     185        self.SetBackgroundColour( shxcolor1 ) 
     186        height = 26 
     187        btnwidth = 70 
     188        vspace = [(15,15), 0, wx.ALL, 1] 
     189 
     190        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     191        okbtn = wx.Button( self, label='OK', pos=(50,70) ) 
     192        self.Bind( wx.EVT_BUTTON, self.OnTextOk, okbtn ) 
     193        hbox.Add( okbtn, 0, wx.ALL, 10 ) 
     194        cbtn = wx.Button( self, label='Cancel', pos=(150,70) ) 
     195        self.Bind( wx.EVT_BUTTON, self.OnTextCancel, cbtn ) 
     196        hbox.Add( cbtn, 0, wx.ALL, 10 ) 
     197 
     198        vbox = wx.BoxSizer(wx.VERTICAL) 
     199        vbox.Add( *vspace ) 
     200        vbox.Add( wx.StaticText(self,label="Reference Station:"), 0, 
     201            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     202        self.text_refstat = wx.TextCtrl( self, value='gr.gra1', size=(60,height) ) 
     203        vbox.Add( self.text_refstat, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10 ) 
     204        vbox.Add( *vspace ) 
     205        vbox.Add( wx.StaticText(self,label="Event Info Text:"), 0, 
     206            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     207        self.text_evinfo = wx.TextCtrl( self, value='', size=(400,height) ) 
     208        vbox.Add( self.text_evinfo, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10 ) 
     209        vbox.Add( *vspace ) 
     210        vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     211        vbox.Add( *vspace ) 
     212        vbox.SetSizeHints(self) 
     213        self.SetAutoLayout(True) 
     214        self.SetSizer( vbox ) 
     215        self.Layout() 
     216     
     217    def OnTextOk( self, e ): 
     218        refstat = self.text_refstat.GetValue() 
     219        evinfo = EventTextParser(self.text_evinfo.GetValue()).parse() 
     220        if evinfo == None: 
     221            self.statusmsg = "Could not parse event line" 
     222            self.Destroy() 
     223            return 
     224        origin, lat, lon = evinfo 
     225        self.Destroy() 
     226        self.result = (refstat,origin,lat,lon) 
     227         
     228    def OnTextCancel( self, e ): 
     229        self.Destroy() 
     230     
     231    def getResult( self ): 
     232        return (self.result,self.statusmsg) 
     233     
     234 
     235#------------------------------------------------------------------------------- 
     236 
     237 
     238class FloatSpinner: 
     239 
     240    def __init__( self, textctrl, spinbtn, minval, maxval, inc ): 
     241        self.textctrl = textctrl 
     242        self.spinbtn = spinbtn 
     243        self.minval = minval 
     244        self.maxval = maxval 
     245        self.inc = inc 
     246        self.internalBindings( self.spinbtn ) 
     247        maxnum = 10*int(maxval/inc) + 1 
     248        minnum = 10*int(minval/inc) - 1 
     249        self.spinbtn.SetRange( minnum, maxnum ) 
     250 
     251    def internalBindings(self, spin): 
     252        spin.Bind(wx.EVT_SPIN_UP, self.handlerSpinUp, spin) 
     253        spin.Bind(wx.EVT_SPIN_DOWN, self.handlerSpinDown, spin) 
     254 
     255    def handlerSpinUp( self, *args ): 
     256        next = float(self.textctrl.GetValue()) + self.inc 
     257        if next > self.maxval: 
     258            next = self.maxval 
     259        elif next < self.minval: 
     260            next = self.minval 
     261        newtext = "%3.1f" % next 
     262        self.textctrl.SetValue("{0:0.1f}".format(next)) 
     263        #self.spinbtn.SetValue( 50 ) # prevent to reach limit 
     264    def handlerSpinDown( self, *args ): 
     265        next = float(self.textctrl.GetValue()) - self.inc 
     266        if next > self.maxval: 
     267            next = self.maxval 
     268        elif next < self.minval: 
     269            next = self.minval 
     270        self.textctrl.SetValue("%3.1f" % next) 
     271        #self.spinbtn.SetValue( 50 ) 
     272     
     273    def getValue( self ): 
     274        return float(self.textctrl.GetValue()) 
     275 
     276#------------------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.