Changeset 2569


Ignore:
Timestamp:
Dec 9, 2016 3:17:43 PM (5 years ago)
Author:
vondreele
Message:

add 'f' or 'g' to maxdigits in FormatValue? in G2py3 - should be revised some more
do a lot of TextCtrl? --> ValidatedTextCtrl? replacements
note that ValidatedTextCtrl? only checks val <= max & not val < max
added tc.event to ValidatedTextCtrl? as some things needed that
G2imgGui - mostly done
G2restrGUI - done
G2pwdGUI - started

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r2563 r2569  
    26792679                name = wx.TextCtrl(panel,-1,item[1],size=wx.Size(300,20))
    26802680                name.SetEditable(False)
     2681#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    26812682                scale = wx.TextCtrl(panel,id,'%.3f'%(item[0]),style=wx.TE_PROCESS_ENTER)
    26822683                scale.Bind(wx.EVT_TEXT_ENTER,self.OnScaleChange)
     
    26932694                self.dataGridSizer.Add(wx.StaticText(panel,label='All scales value: '),0,  \
    26942695                    wx.LEFT|wx.TOP|wx.ALIGN_CENTER_VERTICAL,10)
     2696#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    26952697                allScale = wx.TextCtrl(panel,value='',style=wx.TE_PROCESS_ENTER)
    26962698                allScale.Bind(wx.EVT_TEXT_ENTER,self.OnAllScale)
  • trunk/GSASIIctrls.py

    r2546 r2569  
    287287    :param number min: minimum allowed valid value. If None (default) the
    288288      lower limit is unbounded.
     289      NB: test in NumberValidator is val >= min not val > min
    289290
    290291    :param number max: maximum allowed valid value. If None (default) the
    291292      upper limit is unbounded
     293      NB: test in NumberValidator is val <= max not val < max
    292294
    293295    :param function OKcontrol: specifies a function or method that will be
     
    306308         * invalid: (*bool*) True if the value for the TextCtrl is invalid
    307309         * value:   (*int/float/str*)  the value contained in the TextCtrl
    308          * tc:      (*wx.TextCtrl*)  the TextCtrl name
     310         * tc:      (*wx.TextCtrl*)  the TextCtrl object
    309311
    310312      The number of keyword arguments may be increased in the future should needs arise,
     
    559561            return
    560562        self._setValue(self.result[self.key],show=False) # save value quietly
    561         if self.OnLeave: self.OnLeave(invalid=self.invalid,
    562                                       value=self.result[self.key],
    563                                       tc=self,
    564                                       **self.OnLeaveArgs)
     563        if self.OnLeave:
     564            self.event = event
     565            self.OnLeave(invalid=self.invalid,value=self.result[self.key],
     566                tc=self,**self.OnLeaveArgs)
    565567        if event: event.Skip()
    566568           
     
    580582            if not self.invalid: # don't update an invalid expression
    581583                self._setValue(self.result[self.key])
    582         if self.OnLeave: self.OnLeave(invalid=self.invalid,
    583                                       value=self.result[self.key],
    584                                       tc=self,
    585                                       **self.OnLeaveArgs)
     584        if self.OnLeave:
     585            self.event = event
     586            self.OnLeave(invalid=self.invalid,value=self.result[self.key],
     587                tc=self,**self.OnLeaveArgs)
    586588
    587589################################################################################
     
    699701        #     if val < self.min:
    700702        #         tc.invalid = True  # invalid
     703        #TODO: this needs test on val > self.max & val < self.max via a control
    701704        if self.max != None:
    702705            if val > self.max:
  • trunk/GSASIIddataGUI.py

    r2546 r2569  
    142142        scaleRef.Bind(wx.EVT_CHECKBOX, OnScaleRef)
    143143        scaleSizer.Add(scaleRef,0,WACV|wx.LEFT,5)
     144#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    144145        scaleVal = wx.TextCtrl(DData,wx.ID_ANY,
    145146            '%.4f'%(UseList[G2frame.hist]['Scale'][0]),style=wx.TE_PROCESS_ENTER)
     
    373374        lgmixRef.Bind(wx.EVT_CHECKBOX, OnRef)
    374375        lgmixSizer.Add(lgmixRef,0,WACV|wx.LEFT,5)
     376#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    375377        lgmixVal = wx.TextCtrl(DData,wx.ID_ANY,
    376378            '%.4f'%(UseList[G2frame.hist][name][1][2]),style=wx.TE_PROCESS_ENTER)
     
    399401        sizeRef.Bind(wx.EVT_CHECKBOX, OnRef)
    400402        isoSizer.Add(sizeRef,0,WACV|wx.LEFT,5)
     403#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    401404        sizeVal = wx.TextCtrl(DData,wx.ID_ANY,
    402405            fmt%(UseList[G2frame.hist][parm][1][0]),style=wx.TE_PROCESS_ENTER)
     
    428431            sizeRef.Bind(wx.EVT_CHECKBOX, OnRef)
    429432            dataSizer.Add(sizeRef,0,WACV|wx.LEFT,5)
     433#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    430434            sizeVal = wx.TextCtrl(DData,wx.ID_ANY,fmt%(val),style=wx.TE_PROCESS_ENTER)
    431435            Indx[sizeVal.GetId()] = [G2frame.hist,id]
     
    446450            sizeRef.Bind(wx.EVT_CHECKBOX, OnSizeRef)
    447451            dataSizer.Add(sizeRef,0,WACV)
     452#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    448453            sizeVal = wx.TextCtrl(DData,wx.ID_ANY,'%.3f'%(val),style=wx.TE_PROCESS_ENTER)
    449454            Indx[sizeVal.GetId()] = [G2frame.hist,id]
     
    468473            strainRef.Bind(wx.EVT_CHECKBOX, OnStrainRef)
    469474            dataSizer.Add(strainRef,0,WACV)
     475#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    470476            strainVal = wx.TextCtrl(DData,wx.ID_ANY,'%.5f'%(val),style=wx.TE_PROCESS_ENTER)
    471477            Indx[strainVal.GetId()] = [G2frame.hist,id]
     
    486492            hstrainRef.Bind(wx.EVT_CHECKBOX, OnHstrainRef)
    487493            hstrainSizer.Add(hstrainRef,0,WACV|wx.LEFT,5)
     494#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    488495            hstrainVal = wx.TextCtrl(DData,wx.ID_ANY,'%.3g'%(val),style=wx.TE_PROCESS_ENTER)
    489496            Indx[hstrainVal.GetId()] = [G2frame.hist,id]
     
    520527        poRef.Bind(wx.EVT_CHECKBOX,OnPORef)
    521528        poSizer.Add(poRef,0,WACV|wx.LEFT,5)
     529#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    522530        poVal = wx.TextCtrl(DData,wx.ID_ANY,
    523531            '%.3f'%(POData[1]),style=wx.TE_PROCESS_ENTER)
     
    553561        for odf in ODFkeys:
    554562            ODFSizer.Add(wx.StaticText(DData,wx.ID_ANY,odf),0,WACV)
     563#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    555564            ODFval = wx.TextCtrl(DData,wx.ID_ANY,'%8.3f'%(POData[5][odf]),style=wx.TE_PROCESS_ENTER)
    556565            ODFIndx[ODFval.GetId()] = odf
     
    576585            wx.CallLater(100,RepaintHistogramInfo,DData.GetScrollPos(wx.VERTICAL))
    577586           
    578         def OnshToler(event):
    579             event.Skip()
    580             try:
    581                 value = float(shToler.GetValue())
    582                 POData[7] = value
    583             except ValueError:
    584                 pass
    585             shToler.SetValue('%.2f'%(POData[7]))
    586        
    587587        A = G2lat.cell2A(generalData['Cell'][1:7])
    588588        hkls = G2lat.GenPfHKLs(10,SGData,A)   
     
    595595        shPenalty.Add(hklList,0,WACV)
    596596        shPenalty.Add(wx.StaticText(DData,wx.ID_ANY,' Zero MRD tolerance: '),0,WACV)
    597         shToler = wx.TextCtrl(DData,wx.ID_ANY,'%.2f'%(POData[7]),style=wx.TE_PROCESS_ENTER)
    598         shToler.Bind(wx.EVT_TEXT_ENTER,OnshToler)
    599         shToler.Bind(wx.EVT_KILL_FOCUS,OnshToler)
     597        shToler = G2G.ValidatedTxtCtrl(DData,POData,7,nDig=(10,2),typeHint=float)
    600598        shPenalty.Add(shToler,0,WACV)
    601599        return shPenalty   
     
    609607            wx.CallLater(100,RepaintHistogramInfo,DData.GetScrollPos(wx.VERTICAL))
    610608               
    611         def OnTbarVal(event):
    612             event.Skip()
    613             Obj = event.GetEventObject()
    614             try:
    615                 tbar = float(Obj.GetValue())
    616                 if tbar > 0:
    617                     UseList[G2frame.hist]['Extinction'][2]['Tbar'] = tbar
    618             except ValueError:
    619                 pass
    620             Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Extinction'][2]['Tbar']))
    621    
    622         def OnCos2TM(event):
    623             event.Skip()
    624             Obj = event.GetEventObject()
    625             try:
    626                 val = float(Obj.GetValue())
    627                 if 0. < val <= 1.:
    628                     UseList[G2frame.hist]['Extinction'][2]['Cos2TM'] = val
    629             except ValueError:
    630                 pass
    631             Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Extinction'][2]['Cos2TM']))
    632        
    633         def OnEval(event):
    634             event.Skip()
    635             Obj = event.GetEventObject()
    636             item = Indx[Obj.GetId()]
    637             try:
    638                 val = float(Obj.GetValue())
    639                 if val > 0:
    640                     UseList[item[0]]['Extinction'][2][item[1]][0] = val
    641             except ValueError:
    642                 pass
    643             Obj.SetValue("%10.3e"%(UseList[item[0]]['Extinction'][2][item[1]][0]))
    644        
    645609        def OnEref(event):
    646610            Obj = event.GetEventObject()
     
    652616            UseList[G2frame.hist]['Extinction'][1] = Obj.GetValue()
    653617           
    654         def OnExtVal(event):
    655             event.Skip()
    656             Obj = event.GetEventObject()
    657             try:
    658                 ext = float(Obj.GetValue())
    659                 if ext >= 0:
    660                     UseList[G2frame.hist]['Extinction'][0] = ext
    661             except ValueError:
    662                 pass
    663             Obj.SetValue("%.2f"%(UseList[G2frame.hist]['Extinction'][0]))
    664 
    665618        if Type == 'HKLF':
    666619            extSizer = wx.BoxSizer(wx.VERTICAL)
     
    687640                    valSizer =wx.BoxSizer(wx.HORIZONTAL)
    688641                    valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Tbar(mm):'),0,WACV)
    689                     tbarVal = wx.TextCtrl(DData,wx.ID_ANY,
    690                         '%.3f'%(UseList[G2frame.hist]['Extinction'][2]['Tbar']),style=wx.TE_PROCESS_ENTER)
    691                     tbarVal.Bind(wx.EVT_TEXT_ENTER,OnTbarVal)
    692                     tbarVal.Bind(wx.EVT_KILL_FOCUS,OnTbarVal)
     642                    tbarVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'][2],'Tbar',
     643                        min=0.,nDig=(10,3),typeHint=float)
    693644                    valSizer.Add(tbarVal,0,WACV)
    694645                    valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' cos(2ThM):'),0,WACV)
    695                     cos2tm = wx.TextCtrl(DData,wx.ID_ANY,
    696                         '%.3f'%(UseList[G2frame.hist]['Extinction'][2]['Cos2TM']),style=wx.TE_PROCESS_ENTER)
    697                     cos2tm.Bind(wx.EVT_TEXT_ENTER,OnCos2TM)
    698                     cos2tm.Bind(wx.EVT_KILL_FOCUS,OnCos2TM)
     646                    cos2tm = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'][2],'Cos2TM',
     647                        min=0.,max=1.,nDig=(10,3),typeHint=float)
    699648                    valSizer.Add(cos2tm,0,WACV)
    700649                    extSizer.Add(valSizer,0,WACV)
     
    714663                    Eref.Bind(wx.EVT_CHECKBOX, OnEref)
    715664                    val2Sizer.Add(Eref,0,WACV|wx.LEFT,5)
    716                     Eval = wx.TextCtrl(DData,wx.ID_ANY,
    717                         '%10.3e'%(UseList[G2frame.hist]['Extinction'][2][ekey][0]),style=wx.TE_PROCESS_ENTER)
    718                     Indx[Eval.GetId()] = [G2frame.hist,ekey]
    719                     Eval.Bind(wx.EVT_TEXT_ENTER,OnEval)
    720                     Eval.Bind(wx.EVT_KILL_FOCUS,OnEval)
     665                    Eval = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'][2][ekey],0,
     666                        min=0.,nDig=(10,3),typeHint=float)
    721667                    val2Sizer.Add(Eval,0,WACV)
    722668                extSizer.Add(val2Sizer,0,WACV)
     
    727673            extRef.Bind(wx.EVT_CHECKBOX, OnExtRef)
    728674            extSizer.Add(extRef,0,WACV|wx.LEFT,5)
    729             extVal = wx.TextCtrl(DData,wx.ID_ANY,
    730                 '%.2f'%(UseList[G2frame.hist]['Extinction'][0]),style=wx.TE_PROCESS_ENTER)
    731             extVal.Bind(wx.EVT_TEXT_ENTER,OnExtVal)
    732             extVal.Bind(wx.EVT_KILL_FOCUS,OnExtVal)
     675            extVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'],0,
     676                min=0.,nDig=(10,2),typeHint=float)
    733677            extSizer.Add(extVal,0,WACV)
    734678
     
    736680       
    737681    def BabSizer():
    738        
    739         def OnBabVal(event):
    740             event.Skip()
    741             Obj = event.GetEventObject()
    742             item,bab = Indx[Obj.GetId()]
    743             try:
    744                 val = float(Obj.GetValue())
    745                 if val >= 0:
    746                     UseList[item]['Babinet']['Bab'+bab][0] = val
    747             except ValueError:
    748                 pass
    749             Obj.SetValue("%.3f"%(UseList[item]['Babinet']['Bab'+bab][0]))
    750682       
    751683        def OnBabRef(event):
     
    761693            babRef.Bind(wx.EVT_CHECKBOX, OnBabRef)
    762694            babSizer.Add(babRef,0,WACV|wx.LEFT,5)
    763             babVal = wx.TextCtrl(DData,wx.ID_ANY,
    764                 '%.3f'%(UseList[G2frame.hist]['Babinet']['Bab'+bab][0]),style=wx.TE_PROCESS_ENTER)
    765             Indx[babVal.GetId()] = [G2frame.hist,bab]
    766             babVal.Bind(wx.EVT_TEXT_ENTER,OnBabVal)
    767             babVal.Bind(wx.EVT_KILL_FOCUS,OnBabVal)
     695            babVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Babinet']['Bab'+bab],0,
     696                nDig=(10,3),min=0.,typeHint=float)
    768697            babSizer.Add(babVal,0,WACV)
    769698        return babSizer
     
    771700    def FlackSizer():
    772701       
    773         def OnFlackVal(event):
    774             event.Skip()
    775             Obj = event.GetEventObject()
    776             try:
    777                 flack = float(Obj.GetValue())
    778                 UseList[G2frame.hist]['Flack'][0] = flack
    779             except ValueError:
    780                 pass
    781             Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Flack'][0]))
    782 
    783702        def OnFlackRef(event):
    784703            Obj = event.GetEventObject()
     
    790709        flackRef.Bind(wx.EVT_CHECKBOX, OnFlackRef)
    791710        flackSizer.Add(flackRef,0,WACV|wx.LEFT,5)
    792         flackVal = wx.TextCtrl(DData,wx.ID_ANY,
    793             '%.3f'%(UseList[G2frame.hist]['Flack'][0]),style=wx.TE_PROCESS_ENTER)
    794         flackVal.Bind(wx.EVT_TEXT_ENTER,OnFlackVal)
    795         flackVal.Bind(wx.EVT_KILL_FOCUS,OnFlackVal)
     711        flackVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Flack'],0,nDig=(10,3),typeHint=float)
    796712        flackSizer.Add(flackVal,0,WACV)
    797713        return flackSizer
     
    908824                valSizer = wx.BoxSizer(wx.HORIZONTAL)
    909825                valSizer.Add(wx.StaticText(DData,-1,label=' Twin element fraction:'),0,WACV)
     826#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    910827                twinval = wx.TextCtrl(DData,-1,'%.3f'%(TwVal),style=Style)
    911828                if it:
  • trunk/GSASIIexprGUI.py

    r2546 r2569  
    220220        #self.exCtrl = wx.TextCtrl(self,  wx.ID_ANY, size=(150,-1),style=wx.TE_PROCESS_ENTER)
    221221        self.exCtrl = wx.ComboBox(self, wx.ID_ANY, "", (90, 50), (160, -1),
    222                                   defaultExpressions,
    223                                   wx.CB_DROPDOWN| wx.TE_PROCESS_ENTER
    224                          )
     222            defaultExpressions,wx.CB_DROPDOWN| wx.TE_PROCESS_ENTER)
    225223        self.exCtrl.Bind(wx.EVT_CHAR, self.OnChar)
    226224        self.exCtrl.Bind(wx.EVT_COMBOBOX, self.OnValidate)
  • trunk/GSASIIimgGUI.py

    r2566 r2569  
    109109def UpdateImageData(G2frame,data):
    110110   
    111     def OnPixVal(event):
    112         event.Skip()
    113         Obj = event.GetEventObject()
    114         id = Indx[Obj.GetId()]
    115         try:
    116             data['pixelSize'][id] = min(500,max(10,float(Obj.GetValue())))
    117         except ValueError:
    118             pass
    119         Obj.SetValue('%.3f'%(data['pixelSize'][id]))
    120         G2plt.PlotExposedImage(G2frame,newPlot=True,event=event)
     111    def OnPixVal(invalid,value,tc):
     112        G2plt.PlotExposedImage(G2frame,newPlot=True,event=tc.event)
    121113       
    122114    if G2frame.dataDisplay:
     
    132124    pixSize = wx.FlexGridSizer(0,4,5,5)
    133125    pixLabels = [u' Pixel X-dimension (\xb5m)',u' Pixel Y-dimension (\xb5m)']
    134     Indx = {}
    135126    for i,[pixLabel,pix] in enumerate(zip(pixLabels,data['pixelSize'])):
    136127        pixSize.Add(wx.StaticText(G2frame.dataDisplay,label=pixLabel),0,WACV)
    137         pixVal = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(pix),style=wx.TE_PROCESS_ENTER)
    138         Indx[pixVal.GetId()] = i
    139         pixVal.Bind(wx.EVT_TEXT_ENTER,OnPixVal)
    140         pixVal.Bind(wx.EVT_KILL_FOCUS,OnPixVal)
     128        pixVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['pixelSize'],i,nDig=(10,3),
     129            typeHint=float,OnLeave=OnPixVal)
    141130        pixSize.Add(pixVal,0,WACV)
    142131    mainSizer.Add(pixSize,0)
     
    219208        data['range'] = [(0,Imax),[Imin,Imax]]
    220209        masks['Thresholds'] = [(0,Imax),[Imin,Imax]]
    221         MaxSizer.GetChildren()[2].Window.SetValue(str(int(Imax)))   #tricky
    222         MaxSizer.GetChildren()[5].Window.SetValue(str(int(Imin)))   #tricky
     210        MaxSizer.GetChildren()[2].Window.SetValue(Imax)   #tricky
     211        MaxSizer.GetChildren()[5].Window.SetValue(Imin)   #tricky
    223212         
    224213    def OnIntegrate(event):
     
    501490            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    502491       
    503         def OnAzmthOff(event):
    504             event.Skip()
    505             try:
    506                 azmthoff = float(azmthOff.GetValue())
    507                 data['azmthOff'] = azmthoff
    508             except ValueError:
    509                 pass
    510             azmthOff.SetValue("%.2f"%(data['azmthOff']))          #reset in case of error 
    511             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
     492        def OnAzmthOff(invalid,value,tc):
     493            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event)
    512494       
    513495        comboSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    524506        comboSizer.Add(colSel,0,WACV)
    525507        comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Azimuth offset '),0,WACV)
    526         azmthOff = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.2f" % (data['azmthOff'])),
    527             style=wx.TE_PROCESS_ENTER)
    528         azmthOff.Bind(wx.EVT_TEXT_ENTER,OnAzmthOff)
    529         azmthOff.Bind(wx.EVT_KILL_FOCUS,OnAzmthOff)
     508        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),
     509            typeHint=float,OnLeave=OnAzmthOff)
    530510        comboSizer.Add(azmthOff,0,WACV)
    531511        return comboSizer
     
    533513    def MaxSizer():
    534514               
    535         def OnMaxVal(event):
    536             event.Skip()
    537             try:
    538                 value = min(data['range'][0][1],int(maxVal.GetValue()))
    539                 if value < data['range'][1][0]+1:
    540                     raise ValueError
    541                 data['range'][1][1] = value
    542             except ValueError:
    543                 pass
    544             maxVal.SetValue('%.0f'%(data['range'][1][1]))
     515        def OnMaxVal(invalid,value,tc):
    545516            DeltOne = data['range'][1][1]-max(0.0,data['range'][0][0])
    546517            sqrtDeltOne = math.sqrt(DeltOne)
    547518            maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero))
    548519            minSel.SetValue(int(100*(data['range'][1][0]/DeltOne)))
    549             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
     520            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event)
    550521           
    551         def OnMinVal(event):
    552             event.Skip()
    553             try:
    554                 value = int(minVal.GetValue())
    555                 if value > data['range'][1][1]-1:
    556                     raise ValueError
    557                 data['range'][1][0] = value
    558             except ValueError:
    559                 pass
    560             minVal.SetValue('%.0f'%(data['range'][1][0]))
     522        def OnMinVal(invalid,value,tc):
    561523            minSel.SetValue(int(100*(data['range'][1][0]-max(0.0,data['range'][0][0]))/DeltOne))
    562             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
     524            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event)
    563525           
    564526        def OnMaxSlider(event):
     
    569531            DeltOne = max(1.0,data['range'][1][1]-data['range'][1][0])
    570532            minSel.SetValue(int(100*(data['range'][1][0]/DeltOne)))
    571             maxVal.SetValue('%.0f'%(data['range'][1][1]))
     533            maxVal.SetValue(int(data['range'][1][1]))
    572534            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    573535           
     
    576538            imin = int(minSel.GetValue())*DeltOne/100.
    577539            data['range'][1][0] = max(0.0,min(data['range'][1][1]-1,imin))
    578             minVal.SetValue('%.0f'%(data['range'][1][0]))
     540            minVal.SetValue(int(data['range'][1][0]))
    579541            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    580542           
     
    590552        maxSizer.Add(maxSel,1,wx.EXPAND)
    591553        maxSel.Bind(wx.EVT_SLIDER, OnMaxSlider)
    592         maxVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.0f'%(data['range'][1][1]))
    593         maxVal.Bind(wx.EVT_TEXT_ENTER,OnMaxVal)   
    594         maxVal.Bind(wx.EVT_KILL_FOCUS,OnMaxVal)
     554        maxVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['range'][1],1,min=data['range'][1][0]+1,
     555            max=data['range'][1][1]-1,typeHint=int,OnLeave=OnMaxVal)
    595556        maxSizer.Add(maxVal,0,WACV)   
    596557        maxSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min intensity'),0,WACV)
     
    599560        maxSizer.Add(minSel,1,wx.EXPAND)
    600561        minSel.Bind(wx.EVT_SLIDER, OnMinSlider)
    601         minVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.0f'%(data['range'][1][0]))
    602         minVal.Bind(wx.EVT_TEXT_ENTER,OnMinVal)   
    603         minVal.Bind(wx.EVT_KILL_FOCUS,OnMinVal)
     562        minVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['range'][1],0,
     563            max=data['range'][0][1],typeHint=int,OnLeave=OnMinVal)
    604564        maxSizer.Add(minVal,0,WACV)
    605565        return maxSizer
     
    611571            name = Indx[Obj]
    612572            data['varyList'][name] = Obj.GetValue()
    613            
    614         def OnCalVal(event):
    615             event.Skip()
    616             Obj = event.GetEventObject()
    617             name = Indx[Obj]
    618             try:
    619                 value = float(Obj.GetValue())
    620                 if name == 'wave' and value < 0.01:
    621                     raise ValueError
    622             except ValueError:
    623                 value = Parms[name][2]
    624             if name == 'dist':
    625                 data['distance'] = value
    626             elif name == 'det-X':
    627                 data['center'][0] = value
    628             elif name == 'det-Y':
    629                 data['center'][1] = value
    630             elif name == 'tilt':
    631                 data['tilt'] = value
    632             elif name == 'phi':
    633                 data['rotation'] = value
    634             elif name == 'wave':
    635                 data['wavelength'] = value
    636             elif name == 'dep':
    637                 data['DetDepth'] = value                               
    638             Parms[name][2] = value
    639             Obj.SetValue(Parms[name][1]%(value))
    640573           
    641574        calibSizer = wx.FlexGridSizer(0,2,5,5)
     
    646579        if 'PWDR' in data['type']:
    647580            Names.append('dep')
    648         Parms = {'dist':['Distance','%.3f',data['distance']],'det-X':['Beam center X','%.3f',data['center'][0]],
    649             'det-Y':['Beam center Y','%.3f',data['center'][1]],'tilt':['Tilt angle','%.3f',data['tilt']],
    650             'phi':['Tilt rotation','%.2f',data['rotation']],'dep':['Penetration','%.2f',data['DetDepth']],
    651             'wave':['Wavelength','%.6f',data['wavelength']]}
    652 #        Indx = {}
     581        Parms = {'dist':['Distance',(10,3),data,'distance'],'det-X':['Beam center X',(10,3),data['center'],0],
     582            'det-Y':['Beam center Y',(10,3),data['center'],1],'tilt':['Tilt angle',(10,3),data,'tilt'],
     583            'phi':['Tilt rotation',(10,2),data,'rotation'],'dep':['Penetration',(10,2),data,'DetDepth'],
     584            'wave':['Wavelength',(10,6),data,'wavelength']}
    653585        for name in Names:
    654586            calSel = wx.CheckBox(parent=G2frame.dataDisplay,label=Parms[name][0])
     
    657589            calSel.SetValue(data['varyList'][name])
    658590            Indx[calSel] = name
    659             calVal = wx.TextCtrl(G2frame.dataDisplay,value=(Parms[name][1]%(Parms[name][2])),style=wx.TE_PROCESS_ENTER)
    660             calVal.Bind(wx.EVT_TEXT_ENTER,OnCalVal)
    661             calVal.Bind(wx.EVT_KILL_FOCUS,OnCalVal)
    662             Indx[calVal] = name
     591            if name == 'wave':
     592                calVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,Parms[name][2],
     593                    Parms[name][3],min=0.01,max=10.,nDig=Parms[name][1],typeHint=float)
     594            else:
     595                calVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,Parms[name][2],
     596                    Parms[name][3],nDig=Parms[name][1],typeHint=float)
    663597            calibSizer.Add(calVal,0,WACV)
    664598        return calibSizer
     
    696630            data['LRazimuth'] = [Lazm,Razm]
    697631            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    698        
    699         def OnNumOutChans(event):
    700             event.Skip()
    701             try:
    702                 numChans = int(outChan.GetValue())
    703                 if numChans < 10:
    704                     raise ValueError
    705                 data['outChannels'] = numChans
    706             except ValueError:
    707                 pass
    708             outChan.SetValue('%d'%(data['outChannels']))          #reset in case of error       
    709        
    710         def OnNumOutAzms(event):
    711             event.Skip()
    712             try:
    713                 numAzms = int(outAzim.GetValue())
    714                 if numAzms < 1:
    715                     raise ValueError
    716                 data['outAzimuths'] = numAzms           
    717             except ValueError:
    718                 pass
    719             outAzim.SetValue('%d'%(data['outAzimuths']))          #reset in case of error       
    720             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
     632               
     633        def OnNumOutAzms(invalid,value,tc):
     634            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event)
    721635       
    722636        def OnOblique(event):
    723637            data['Oblique'][1] = not data['Oblique'][1]
    724638               
    725         def OnObliqVal(event):
    726             event.Skip()
    727             try:
    728                 value = float(obliqVal.GetValue())
    729                 if 0.01 <= value <= 0.99:
    730                     data['Oblique'][0] = value
    731                 else:
    732                     raise ValueError
    733             except ValueError:
    734                 pass
    735             obliqVal.SetValue('%.3f'%(data['Oblique'][0]))
    736            
    737639        def OnSampleShape(event):
    738640            data['SampleShape'] = samShape.GetValue()
     
    746648            data['SampleAbs'][1] = not data['SampleAbs'][1]
    747649                           
    748         def OnSamAbsVal(event):
    749             event.Skip()
    750             try:
    751                 value = float(samabsVal.GetValue())
    752                 minmax = [0.,2.]
    753                 if 'Fixed' in data['SampleShape']:
    754                     minmax = [.05,1.0]
    755                 if minmax[0] <= value <= minmax[1]:
    756                     data['SampleAbs'][0] = value
    757                 else:
    758                     raise ValueError
    759             except ValueError:
    760                 pass
    761             samabsVal.SetValue('%.3f'%(data['SampleAbs'][0]))
    762                            
    763650        def OnShowLines(event):
    764651            data['showLines'] = not data['showLines']
     
    791678            data['PolaVal'][1] = not data['PolaVal'][1]
    792679               
    793         def OnPolaVal(event):
    794             event.Skip()
    795             try:
    796                 value = float(polaVal.GetValue())
    797                 if 0.001 <= value <= 0.999:
    798                     data['PolaVal'][0] = value
    799                 else:
    800                     raise ValueError
    801             except ValueError:
    802                 pass
    803             polaVal.SetValue('%.3f'%(data['PolaVal'][0]))
    804                            
    805680        dataSizer = wx.FlexGridSizer(0,2,5,3)
    806681        dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Integration coefficients'),0,WACV)   
     
    824699            IOtth = [4.*math.pi*sind(IOtth[0]/2.)/wave,4.*math.pi*sind(IOtth[1]/2.)/wave]
    825700        littleSizer = wx.BoxSizer(wx.HORIZONTAL)
     701#        ratVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,insVal,key,nDig=(10,4),typeHint=float,OnLeave=AfterChange)
    826702        G2frame.InnerTth = wx.TextCtrl(parent=G2frame.dataDisplay,
    827703            value=("%8.3f" % (IOtth[0])),style=wx.TE_PROCESS_ENTER)
     
    829705        G2frame.InnerTth.Bind(wx.EVT_KILL_FOCUS,OnIOtth)
    830706        littleSizer.Add(G2frame.InnerTth,0,WACV)
     707#        ratVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,insVal,key,nDig=(10,4),typeHint=float,OnLeave=AfterChange)
    831708        G2frame.OuterTth = wx.TextCtrl(parent=G2frame.dataDisplay,
    832709            value=("%8.2f" % (IOtth[1])),style=wx.TE_PROCESS_ENTER)
     
    838715        LRazim = data['LRazimuth']
    839716        littleSizer = wx.BoxSizer(wx.HORIZONTAL)
     717#        ratVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,insVal,key,nDig=(10,4),typeHint=float,OnLeave=AfterChange)
    840718        G2frame.Lazim = wx.TextCtrl(parent=G2frame.dataDisplay,
    841719            value=("%6.1f" % (LRazim[0])),style=wx.TE_PROCESS_ENTER)
     
    843721        G2frame.Lazim.Bind(wx.EVT_KILL_FOCUS,OnLRazim)
    844722        littleSizer.Add(G2frame.Lazim,0,WACV)
     723#        ratVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,insVal,key,nDig=(10,4),typeHint=float,OnLeave=AfterChange)
    845724        G2frame.Razim = wx.TextCtrl(parent=G2frame.dataDisplay,
    846725            value=("%6.1f" % (LRazim[1])),style=wx.TE_PROCESS_ENTER)
     
    855734        dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' No. 2-theta/azimuth bins'),0,WACV)
    856735        littleSizer = wx.BoxSizer(wx.HORIZONTAL)
    857         outChan = wx.TextCtrl(parent=G2frame.dataDisplay,value='%d'%(data['outChannels']),style=wx.TE_PROCESS_ENTER)
    858         outChan.Bind(wx.EVT_TEXT_ENTER,OnNumOutChans)
    859         outChan.Bind(wx.EVT_KILL_FOCUS,OnNumOutChans)
     736        outChan = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'outChannels',typeHint=int,min=10)
    860737        littleSizer.Add(outChan,0,WACV)
    861         outAzim = wx.TextCtrl(parent=G2frame.dataDisplay,value='%d'%(data['outAzimuths']),style=wx.TE_PROCESS_ENTER)
    862         outAzim.Bind(wx.EVT_TEXT_ENTER,OnNumOutAzms)
    863         outAzim.Bind(wx.EVT_KILL_FOCUS,OnNumOutAzms)
     738        outAzim = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'outAzimuths',nDig=(10,4),min=1,typeHint=int,OnLeave=OnNumOutAzms)
    864739        littleSizer.Add(outAzim,0,WACV)
    865740        dataSizer.Add(littleSizer,0,)
     
    876751        samabs.Bind(wx.EVT_CHECKBOX, OnSamAbs)
    877752        samabs.SetValue(data['SampleAbs'][1])
     753        minmax = [0.,2.]
    878754        if 'Cylind' in data['SampleShape']: #cylinder mu*R; flat plate transmission
    879755            littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label='mu*R (0.00-2.0) '),0,WACV)
    880756        elif 'Fixed' in data['SampleShape']:
    881757            littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label='transmission '),0,WACV) #for flat plate
    882         samabsVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.3f'%(data['SampleAbs'][0]),style=wx.TE_PROCESS_ENTER)           
    883         samabsVal.Bind(wx.EVT_TEXT_ENTER,OnSamAbsVal)
    884         samabsVal.Bind(wx.EVT_KILL_FOCUS,OnSamAbsVal)
     758            minmax = [.05,1.0]
     759        samabsVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['SampleAbs'],0,nDig=(10,3),
     760            typeHint=float,min=minmax[0],max=minmax[1])
    885761        littleSizer.Add(samabsVal,0,WACV)
    886762        dataSizer.Add(littleSizer,0,)       
     
    892768            oblique.SetValue(data['Oblique'][1])
    893769            littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label='Value (0.01-0.99)  '),0,WACV)
    894             obliqVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.3f'%(data['Oblique'][0]),style=wx.TE_PROCESS_ENTER)
    895             obliqVal.Bind(wx.EVT_TEXT_ENTER,OnObliqVal)
    896             obliqVal.Bind(wx.EVT_KILL_FOCUS,OnObliqVal)
     770            obliqVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['Oblique'],0,nDig=(10,3),typeHint=float,min=0.01,max=0.99)
    897771            littleSizer.Add(obliqVal,0,WACV)
    898772            dataSizer.Add(littleSizer,0,)
     
    904778            setPolariz.SetValue(data['PolaVal'][1])
    905779            littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label='Value (0.001-0.999)  '),0,WACV)
    906             polaVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.3f'%(data['PolaVal'][0]),
    907                 style=wx.TE_PROCESS_ENTER)
    908             polaVal.Bind(wx.EVT_TEXT_ENTER,OnPolaVal)
    909             polaVal.Bind(wx.EVT_KILL_FOCUS,OnPolaVal)
     780            polaVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['PolaVal'],0,nDig=(10,3),typeHint=float,min=0.001,max=0.999)
    910781            littleSizer.Add(polaVal,0,WACV)
    911782            dataSizer.Add(littleSizer,0,)
     
    931802    def BackSizer():
    932803       
     804        global oldFlat
    933805        def OnBackImage(event):
    934806            data['background image'][0] = backImage.GetValue()
     
    943815            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    944816           
    945         def OnFlatBkg(event):
    946             event.Skip()
    947             oldFlat = data.get('Flat Bkg',0.)
    948             try:
    949                 value = float(flatbkg.GetValue())
    950                 data['Flat Bkg'] = value
    951             except ValueError:
    952                 pass
    953             flatbkg.SetValue("%.0f"%(data['Flat Bkg']))   
     817        def OnFlatBkg(invalid,value,tc):
     818            global oldFlat
    954819            G2frame.ImageZ += int(oldFlat-data['Flat Bkg'])
     820            oldFlat = data['Flat Bkg']
    955821            ResetThresholds()
    956             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    957 
    958         def OnBackMult(event):
    959             event.Skip()
    960             try:
    961                 mult = float(backMult.GetValue())
    962                 data['background image'][1] = mult
    963             except ValueError:
    964                 pass
    965             backMult.SetValue("%.3f" % (data['background image'][1]))          #reset in case of error
     822            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event)
     823
     824        def OnMult(invalid,value,tc):
    966825            G2frame.ImageZ = GetImageZ(G2frame,data)
    967826            ResetThresholds()
    968             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
    969        
    970         def OnDarkMult(event):
    971             event.Skip()
    972             try:
    973                 mult = float(darkMult.GetValue())
    974                 data['dark image'][1] = mult
    975             except ValueError:
    976                 pass
    977             darkMult.SetValue("%.3f" % (data['dark image'][1]))          #reset in case of error
    978             G2frame.ImageZ = GetImageZ(G2frame,data)
    979             ResetThresholds()
    980             wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event)
     827            wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event)
    981828       
    982829        backSizer = wx.FlexGridSizer(0,6,5,5)
     830        oldFlat = data.get('Flat Bkg',0.)
    983831
    984832        backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Dark image'),0,WACV)
     
    991839        backSizer.Add(darkImage)
    992840        backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' multiplier'),0,WACV)
    993         darkMult =  wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (data['dark image'][1])),
    994             style=wx.TE_PROCESS_ENTER)
    995         darkMult.Bind(wx.EVT_TEXT_ENTER,OnDarkMult)
    996         darkMult.Bind(wx.EVT_KILL_FOCUS,OnDarkMult)
     841        darkMult = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['dark image'],1,nDig=(10,3),
     842            typeHint=float,OnLeave=OnMult)
    997843        backSizer.Add(darkMult,0,WACV)
    998844        backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Flat Bkg: '),0,WACV)
    999         flatbkg = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.0f" % (data['Flat Bkg'])),
    1000             style=wx.TE_PROCESS_ENTER)
    1001         flatbkg.Bind(wx.EVT_TEXT_ENTER,OnFlatBkg)
    1002         flatbkg.Bind(wx.EVT_KILL_FOCUS,OnFlatBkg)
     845        flatbkg = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Flat Bkg',nDig=(10,0),
     846            typeHint=float,OnLeave=OnFlatBkg)
    1003847        backSizer.Add(flatbkg,0,WACV)
    1004848
     
    1009853        backSizer.Add(backImage)
    1010854        backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' multiplier'),0,WACV)
    1011         backMult =  wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (data['background image'][1])),
    1012             style=wx.TE_PROCESS_ENTER)
    1013         backMult.Bind(wx.EVT_TEXT_ENTER,OnBackMult)
    1014         backMult.Bind(wx.EVT_KILL_FOCUS,OnBackMult)
     855        backMult = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['background image'],1,nDig=(10,3),
     856            typeHint=float,OnLeave=OnMult)
    1015857        backSizer.Add(backMult,0,WACV)
    1016858        return backSizer
     
    1035877                G2frame.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMCALIBRATE,enable=False)
    1036878                G2frame.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBALL,enable=False)
     879               
    1037880        def OnCalibSkip(event):
    1038881            data['calibskip'] = int(calibSkip.GetValue())
    1039882           
    1040         def OnCalibDmin(event):
    1041             event.Skip()
    1042             try:
    1043                 dmin = float(calibDmin.GetValue())
    1044                 if dmin < 0.25:
    1045                     raise ValueError
    1046                 data['calibdmin'] = dmin
    1047             except ValueError:
    1048                 pass
    1049             calibDmin.SetValue("%.2f"%(data['calibdmin']))          #reset in case of error 
    1050                    
    1051         def OnCutOff(event):
    1052             event.Skip()
    1053             try:
    1054                 cutoff = float(cutOff.GetValue())
    1055                 if cutoff < 0.1:
    1056                     raise ValueError
    1057                 data['cutoff'] = cutoff
    1058             except ValueError:
    1059                 pass
    1060             cutOff.SetValue("%.1f"%(data['cutoff']))          #reset in case of error 
    1061        
    1062883        def OnPixLimit(event):
    1063884            data['pixLimit'] = int(pixLimit.GetValue())
     
    1086907        comboSizer = wx.BoxSizer(wx.HORIZONTAL)       
    1087908        comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min calib d-spacing '),0,WACV)
    1088         calibDmin = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.2f" % (data['calibdmin'])),
    1089             style=wx.TE_PROCESS_ENTER)
    1090         calibDmin.Bind(wx.EVT_TEXT_ENTER,OnCalibDmin)
    1091         calibDmin.Bind(wx.EVT_KILL_FOCUS,OnCalibDmin)
     909        calibDmin = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'calibdmin',nDig=(10,2),typeHint=float,min=0.25)
    1092910        comboSizer.Add(calibDmin,0,WACV)
    1093911        calibSizer.Add(comboSizer,0)
     
    1095913        comboSizer = wx.BoxSizer(wx.HORIZONTAL)
    1096914        comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min ring I/Ib '),0,WACV)
    1097         cutOff = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.1f" % (data['cutoff'])),
    1098             style=wx.TE_PROCESS_ENTER)
    1099         cutOff.Bind(wx.EVT_TEXT_ENTER,OnCutOff)
    1100         cutOff.Bind(wx.EVT_KILL_FOCUS,OnCutOff)
     915        cutOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'cutoff',nDig=(10,1),typeHint=float,min=0.1)
    1101916        comboSizer.Add(cutOff,0,WACV)
    1102917        calibSizer.Add(comboSizer,0)
     
    1120935    def GonioSizer():
    1121936       
    1122         ValObj = {}
    1123        
    1124         def OnGonioAngle(event):
    1125             event.Skip()
    1126             Obj = event.GetEventObject()
    1127             item = ValObj[Obj.GetId()]
    1128             try:
    1129                 value = float(Obj.GetValue())
    1130             except ValueError:
    1131                 value = data['GonioAngles'][item]
    1132             data['GonioAngles'][item] = value
    1133             Obj.SetValue('%8.2f'%(value))
    1134            
    1135937        def OnGlobalEdit(event):
    1136938            Names = []
     
    1171973        for i,name in enumerate(names):
    1172974            gonioSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,name),0,WACV)
    1173             angle = wx.TextCtrl(G2frame.dataDisplay,-1,value='%8.2f'%(data['GonioAngles'][i]),
    1174                 style=wx.TE_PROCESS_ENTER)
    1175             angle.Bind(wx.EVT_TEXT_ENTER,OnGonioAngle)
    1176             angle.Bind(wx.EVT_KILL_FOCUS,OnGonioAngle)
    1177             ValObj[angle.GetId()] = i
     975            angle = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['GonioAngles'],i,nDig=(8,2),typeHint=float)
    1178976            gonioSizer.Add(angle,0,WACV)
    1179977        globEdit = wx.Button(G2frame.dataDisplay,-1,'Global edit')
     
    16301428        Source = G2frame.PatternTree.GetItemText(G2frame.Image)
    16311429        Names.pop(Names.index(Source))
    1632 #        GSASIIpath.IPyBreak()
    16331430        dlg = G2G.G2MultiChoiceDialog(G2frame,'Copy stress/strain controls','Copy controls from '+Source+' to:',Names)
    16341431        try:
     
    18791676            data['Type'] = strType.GetValue()
    18801677       
    1881         def OnSamPhi(event):
    1882             event.Skip()
    1883             try:
    1884                 value = float(samPhi.GetValue())
    1885             except ValueError:
    1886                 value = data['Sample phi']
    1887             data['Sample phi'] = value
    1888             samPhi.SetValue("%.3f" % (data['Sample phi']))
    1889                
    1890         def OnSamZ(event):
    1891             event.Skip()
    1892             try:
    1893                 value = float(samZ.GetValue())
    1894             except ValueError:
    1895                 value = data['Sample z']
    1896             data['Sample z'] = value
    1897             samZ.SetValue("%.3f" % (data['Sample z']))
    1898                
    1899         def OnSamLoad(event):
    1900             event.Skip()
    1901             try:
    1902                 value = float(samLoad.GetValue())
    1903             except ValueError:
    1904                 value = data['Sample load']
    1905             data['Sample load'] = value
    1906             samLoad.SetValue("%.3f" % (data['Sample load']))
    1907                
    19081678        samSizer = wx.BoxSizer(wx.HORIZONTAL)
    19091679        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Strain type: '),0,WACV)
     
    19151685       
    19161686        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Sample phi: '),0,WACV)
    1917         samPhi = wx.TextCtrl(G2frame.dataDisplay,-1,value=("%.3f" % (data['Sample phi'])),
    1918             style=wx.TE_PROCESS_ENTER)
     1687        samPhi = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Sample phi',nDig=(10,3),typeHint=float,min=-360.,max=360.)
    19191688        samSizer.Add(samPhi,0,WACV)
    1920         samPhi.Bind(wx.EVT_TEXT_ENTER,OnSamPhi)
    1921         samPhi.Bind(wx.EVT_KILL_FOCUS,OnSamPhi)
    19221689        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Sample delta-z(mm): '),0,WACV)
    1923         samZ = wx.TextCtrl(G2frame.dataDisplay,-1,value=("%.3f" % (data['Sample z'])),
    1924             style=wx.TE_PROCESS_ENTER)
     1690        samZ = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Sample z',nDig=(10,3),typeHint=float)
    19251691        samSizer.Add(samZ,0,WACV)
    1926         samZ.Bind(wx.EVT_TEXT_ENTER,OnSamZ)
    1927         samZ.Bind(wx.EVT_KILL_FOCUS,OnSamZ)
    19281692        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Sample load(MPa): '),0,WACV)
    19291693        samLoad = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Sample load',
     
    19871751        for id,dzero in enumerate(data['d-zero']):
    19881752            dzeroSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=(' d-zero #%d: '%(id))),0,WACV)
     1753#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    19891754            dZero = wx.TextCtrl(G2frame.dataDisplay,-1,value=('%.5f'%(dzero['Dset'])),
    19901755                style=wx.TE_PROCESS_ENTER)
     
    19961761               
    19971762            dzeroSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Min ring I/Ib '),0,WACV)
     1763#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    19981764            cutOff = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.1f" % (dzero['cutoff'])),
    19991765                style=wx.TE_PROCESS_ENTER)
     
    23562122        sizer = wx.BoxSizer(wx.HORIZONTAL)
    23572123        sizer.Add(wx.StaticText(mnpnl, wx.ID_ANY,'Image filter'))
    2358         flterInp = G2G.ValidatedTxtCtrl(mnpnl,self.params,'filter',
    2359                                         OnLeave=self.ShowMatchingFiles)
     2124        flterInp = G2G.ValidatedTxtCtrl(mnpnl,self.params,'filter',OnLeave=self.ShowMatchingFiles)
    23602125        sizer.Add(flterInp)
    23612126        mnsizer.Add(sizer,0,wx.ALIGN_RIGHT,1)
     
    23682133        sizer = wx.BoxSizer(wx.HORIZONTAL)
    23692134        sizer.Add(wx.StaticText(mnpnl, wx.ID_ANY,'Write to: '))
    2370         fInp3 = G2G.ValidatedTxtCtrl(mnpnl,self.params,'outdir',
    2371                                        notBlank=False,size=(300,-1))
     2135        fInp3 = G2G.ValidatedTxtCtrl(mnpnl,self.params,'outdir',notBlank=False,size=(300,-1))
    23722136        sizer.Add(fInp3)
    23732137        btn3 = wx.Button(mnpnl,  wx.ID_ANY, "Browse")
  • trunk/GSASIIpwdGUI.py

    r2567 r2569  
    24332433            subSizer.Add(matsel,0,WACV)
    24342434            subSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Volume fraction: '),0,WACV)
     2435#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    24352436            volfrac = wx.TextCtrl(G2frame.dataDisplay,value=str('%.3f'%(item['VolFrac'])),style=wx.TE_PROCESS_ENTER)
    24362437            Info[volfrac.GetId()] = [id,'VolFrac']
     
    31573158    littleSizer.Add(NcNo,0,WACV)
    31583159    littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Start Volume '),0,WACV)
     3160#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    31593161    startVol = wx.TextCtrl(G2frame.dataDisplay,value=str('%d'%(controls[3])),style=wx.TE_PROCESS_ENTER)
    31603162    startVol.Bind(wx.EVT_TEXT_ENTER,OnStartVol)
     
    31993201    else:
    32003202        littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=" Zero offset"),0,WACV)
     3203#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    32013204        zero = wx.TextCtrl(G2frame.dataDisplay,value="%.4f"%(controls[1]),style=wx.TE_PROCESS_ENTER)
    32023205        zero.Bind(wx.EVT_TEXT_ENTER,OnZero)
     
    32273230        littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=txt),0,WACV)
    32283231        if ifEdit:          #a,b,c,etc.
     3232#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    32293233            cellVal = wx.TextCtrl(G2frame.dataDisplay,value=(fmt%(controls[6+Id])),style=wx.TE_PROCESS_ENTER)
    32303234            cellVal.Bind(wx.EVT_TEXT_ENTER,OnCellChange)       
     
    32653269            if show:
    32663270                valSizer = wx.BoxSizer(wx.HORIZONTAL)
     3271#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    32673272                modVal = wx.TextCtrl(G2frame.dataDisplay,value=('%.4f'%(val)),
    32683273                    size=wx.Size(50,20),style=wx.TE_PROCESS_ENTER)
     
    38313836                    elSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' '+El+': '),
    38323837                        0,WACV)
     3838#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    38333839                    num = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(Elems[El]['Num']),style=wx.TE_PROCESS_ENTER)
    38343840                    Indx[num.GetId()] = [name,El,'Num']
     
    38403846                vdsSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Volume: '),
    38413847                    0,WACV)
     3848#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    38423849                vol = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(Substance['Volume']),style=wx.TE_PROCESS_ENTER)
    38433850                Indx[vol.GetId()] = [name,'Volume']
     
    38473854                vdsSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Density: '),
    38483855                    0,WACV)
     3856#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    38493857                den = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(Substance['Density']),style=wx.TE_PROCESS_ENTER)
    38503858                Indx[den.GetId()] = [name,'Density']
     
    42244232        if data['Size']['Shape'][0] not in ['Unified sphere',]:
    42254233            partSizer.Add(wx.StaticText(G2frame.dataDisplay,label=shapes[data['Size']['Shape'][0]]),0,WACV)
     4234#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    42264235            partprm = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Size']['Shape'][1]),
    42274236                style=wx.TE_PROCESS_ENTER)
     
    44154424                        parmSizer.Add(parmVar,0,WACV)
    44164425                        Indx[parmVar.GetId()] = [Parms[parm],1]
     4426#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    44174427                    parmValue = wx.TextCtrl(G2frame.dataDisplay,value='%.3g'%(Parms[parm][0]),
    44184428                        style=wx.TE_PROCESS_ENTER)
     
    44434453                            parmVar.Bind(wx.EVT_CHECKBOX, OnSelect)
    44444454                            parmSizer.Add(parmVar,0,WACV)
     4455#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    44454456                            parmValue = wx.TextCtrl(G2frame.dataDisplay,value='%.3g'%(Args[parm][0]),
    44464457                                style=wx.TE_PROCESS_ENTER)
     
    45764587    topSizer.Add(fitSel,0,WACV)
    45774588    topSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Error multiplier: '),0,WACV)
     4589#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    45784590    esdScale = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(1./np.sqrt(ProfDict['wtFactor'])),style=wx.TE_PROCESS_ENTER)
    45794591    esdScale.Bind(wx.EVT_TEXT_ENTER,OnEsdScale)       
     
    45934605    backSizer = wx.BoxSizer(wx.HORIZONTAL)
    45944606    backSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Background:'),0,WACV)
     4607#        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    45954608    backVal = wx.TextCtrl(G2frame.dataDisplay,value='%.3g'%(data['Back'][0]),style=wx.TE_PROCESS_ENTER)
    45964609    Indx[backVal.GetId()] = ['Back',0,'%.3g']
  • trunk/GSASIIpy3.py

    r2546 r2569  
    6868    :param float val: number to be formatted.
    6969
    70     :param list maxdigits: the number of digits & places after decimal to be used for display of the
    71       number (defaults to [10,2]).
     70    :param list maxdigits: the number of digits, places after decimal and 'f' or 'g' to be used for display of the
     71      number (defaults to [10,2,'f']).
    7272
    7373    :returns: a string with <= maxdigits characters (usually). 
     
    7676        return val       
    7777    if maxdigits is None:
    78         digits = [10,2]
     78        digits = [10,2,'f']
    7979    else:
    8080        digits = list(maxdigits)
    81     fmt="{:."+str(digits[1])+"f}"
     81    if len(digits) == 2:
     82        digits.append('g')
     83    if not val:
     84        digits[2] = 'f'
     85    fmt="{:"+str(digits[0])+"."+str(digits[1])+digits[2]+"}"
    8286    string = fmt.format(float(val)).strip() # will standard .f formatting work?
    8387    if len(string) <= digits[0]:
  • trunk/GSASIIrestrGUI.py

    r2546 r2569  
    758758        if 'Range' not in restData: restData['Range'] = 1.1     #patch
    759759       
    760         def OnWtFactor(event):
    761             event.Skip()
    762             try:
    763                 value = float(wtfactor.GetValue())
    764             except ValueError:
    765                 value = 1.0
    766             restData['wtFactor'] = value
    767             wtfactor.SetValue('%.2f'%(value))
    768            
    769         def OnRange(event):
    770             event.Skip()
    771             try:
    772                 value = float(sRange.GetValue())
    773             except ValueError:
    774                 value = 1.0
    775             restData['Range'] = value
    776             sRange.SetValue('%.2f'%(value))
    777            
    778760        def OnUseData(event):
    779761            Obj = event.GetEventObject()
     
    782764        wtBox = wx.BoxSizer(wx.HORIZONTAL)
    783765        wtBox.Add(wx.StaticText(wind,-1,'Restraint weight factor:'),0,wx.ALIGN_CENTER_VERTICAL)
    784         wtfactor = wx.TextCtrl(wind,-1,value='%.2f'%(restData['wtFactor']),style=wx.TE_PROCESS_ENTER,size=(50,20))
    785         wtfactor.Bind(wx.EVT_TEXT_ENTER,OnWtFactor)
    786         wtfactor.Bind(wx.EVT_KILL_FOCUS,OnWtFactor)
     766        wtfactor = G2G.ValidatedTxtCtrl(wind,restData,'wtFactor',nDig=(10,2),typeHint=float)
    787767        wtBox.Add(wtfactor,0,wx.ALIGN_CENTER_VERTICAL)
    788768        useData = wx.CheckBox(wind,-1,label=' Use?')
     
    792772        if 'Bonds' in restData or 'Angles' in restData:
    793773            wtBox.Add(wx.StaticText(wind,-1,'  Search range:'),0,wx.ALIGN_CENTER_VERTICAL)
    794             sRange = wx.TextCtrl(wind,-1,value='%.2f'%(restData['Range']),style=wx.TE_PROCESS_ENTER,size=(50,20))
    795             sRange.Bind(wx.EVT_TEXT_ENTER,OnRange)
    796             sRange.Bind(wx.EVT_KILL_FOCUS,OnRange)
     774            sRange = G2G.ValidatedTxtCtrl(wind,restData,'Range',nDig=(10,2),typeHint=float)
    797775            wtBox.Add(sRange,0,wx.ALIGN_CENTER_VERTICAL)
    798776            wtBox.Add(wx.StaticText(wind,-1,'(x sum(atom radii)'),0,wx.ALIGN_CENTER_VERTICAL)
Note: See TracChangeset for help on using the changeset viewer.