Changeset 4491


Ignore:
Timestamp:
Jun 17, 2020 5:46:20 PM (16 months ago)
Author:
toby
Message:

Add VoidMap?; change min/max in ValidatedTextCtrl? to xmin/xmax; new G2SliderWidget

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIIntPDFtool.py

    r4402 r4491  
    573573        lbl4a = wx.StaticText(mnpnl, wx.ID_ANY,'Max detector distance: ')
    574574        sizer.Add(lbl4a,0,wx.ALIGN_CENTER_VERTICAL)
    575         fInp4a = G2G.ValidatedTxtCtrl(mnpnl,self.params,'pdfDmax',min=0.0)
     575        fInp4a = G2G.ValidatedTxtCtrl(mnpnl,self.params,'pdfDmax',xmin=0.0)
    576576        pdfwidgets.append(fInp4a)
    577577        sizer.Add(fInp4a,0,wx.ALIGN_CENTER_VERTICAL)
  • trunk/GSASIIctrlGUI.py

    r4481 r4491  
    3030                                   or list value. Optionally calls function when a
    3131                                   choice is selected
     32:class:`G2SliderWidget`            A customized combination of a wx.Slider and a validated
     33                                   wx.TextCtrl (see :class:`ValidatedTxtCtrl`).
    3234:class:`G2ColumnIDDialog`          A dialog for matching column data to desired items; some
    3335                                   columns may be ignored.
     
    464466      for str inputs.
    465467     
    466     :param number min: minimum allowed valid value. If None (default) the
     468    :param number xmin: minimum allowed valid value. If None (default) the
    467469      lower limit is unbounded.
    468       NB: test in NumberValidator is val >= min not val > min
    469 
    470     :param number max: maximum allowed valid value. If None (default) the
     470      NB: test in NumberValidator is val >= xmin not val > xmin
     471
     472    :param number xmax: maximum allowed valid value. If None (default) the
    471473      upper limit is unbounded
    472       NB: test in NumberValidator is val <= max not val < max
     474      NB: test in NumberValidator is val <= xmax not val < xmax
    473475     
    474476    :param list exclLim: if True exclude min/max value ([exclMin,exclMax]);
     
    520522      wx.TextCtrl widget such as size or style may be specified.
    521523    '''
    522     def __init__(self,parent,loc,key,nDig=None,notBlank=True,min=None,max=None,
     524    def __init__(self,parent,loc,key,nDig=None,notBlank=True,xmin=None,xmax=None,
    523525        OKcontrol=None,OnLeave=None,typeHint=None,CIFinput=False,exclLim=[False,False],
    524         OnLeaveArgs={}, ASCIIonly=False, **kw):
     526        OnLeaveArgs={}, ASCIIonly=False,
     527                     min=None, max=None, # patch: remove this eventually
     528                     **kw):
    525529        # save passed values needed outside __init__
    526530        self.result = loc
     
    534538        self.ASCIIonly = ASCIIonly
    535539        self.type = str
     540        # patch: remove this when min & max are no longer used to call this
     541        if min is not None:
     542            xmin=min
     543            if GSASIIpath.GetConfigValue('debug'):
     544                print('Change min to xmin here:')
     545                G2obj.HowDidIgetHere(True)
     546        if max is not None:
     547            xmax=max
     548            if GSASIIpath.GetConfigValue('debug'):
     549                print('Change max to xmax here:')
     550                G2obj.HowDidIgetHere(True)
    536551        # initialization
    537552        self.invalid = False   # indicates if the control has invalid contents
     
    560575        if self.type is int:       
    561576            wx.TextCtrl.__init__(self,parent,wx.ID_ANY,
    562                 validator=NumberValidator(int,result=loc,key=key,min=min,max=max,
     577                validator=NumberValidator(int,result=loc,key=key,xmin=xmin,xmax=xmax,
    563578                    exclLim=exclLim,OKcontrol=OKcontrol,CIFinput=CIFinput),**kw)
    564579            if val is not None:
     
    569584        elif self.type is float:
    570585            wx.TextCtrl.__init__(self,parent,wx.ID_ANY,
    571                 validator=NumberValidator(float,result=loc,key=key,min=min,max=max,
     586                validator=NumberValidator(float,result=loc,key=key,xmin=xmin,xmax=xmax,
    572587                    exclLim=exclLim,OKcontrol=OKcontrol,CIFinput=CIFinput),**kw)
    573588            if val is not None:
     
    787802      Used with typ=int; ignored for typ=float.
    788803
    789     :param number min: Minimum allowed value. If None (default) the
     804    :param number xmin: Minimum allowed value. If None (default) the
    790805      lower limit is unbounded
    791806
    792     :param number max: Maximum allowed value. If None (default) the
     807    :param number xmax: Maximum allowed value. If None (default) the
    793808      upper limit is unbounded
    794809     
    795     :param list exclLim: if True exclude min/max value ([exclMin,exclMax]);
     810    :param list exclLim: if True exclude xmin/xmax value ([exclMin,exclMax]);
    796811     (Default=[False,False])
    797812
     
    808823     
    809824    '''
    810     def __init__(self, typ, positiveonly=False, min=None, max=None,exclLim=[False,False],
     825    def __init__(self, typ, positiveonly=False, xmin=None, xmax=None,exclLim=[False,False],
    811826        result=None, key=None, OKcontrol=None, CIFinput=False):
    812827        'Create the validator'
     
    818833        self.typ = typ
    819834        self.positiveonly = positiveonly
    820         self.min = min
    821         self.max = max
     835        self.xmin = xmin
     836        self.xmax = xmax
    822837        self.exclLim = exclLim
    823838        self.result = result
     
    844859        return NumberValidator(typ=self.typ,
    845860                               positiveonly=self.positiveonly,
    846                                min=self.min, max=self.max,
     861                               xmin=self.xmin, xmax=self.xmax,
    847862                               result=self.result, key=self.key,
    848863                               OKcontrol=self.OKcontrol,
     
    886901                tc.invalid = True
    887902                return
    888         if self.max != None:
    889             if val >= self.max and self.exclLim[1]:
     903        if self.xmax != None:
     904            if val >= self.xmax and self.exclLim[1]:
    890905                tc.invalid = True
    891             elif val > self.max:
     906            elif val > self.xmax:
    892907                tc.invalid = True
    893         if self.min != None:
    894             if val <= self.min and self.exclLim[0]:
     908        if self.xmin != None:
     909            if val <= self.xmin and self.exclLim[0]:
    895910                tc.invalid = True
    896             elif val < self.min:
     911            elif val < self.xmin:
    897912                tc.invalid = True  # invalid
    898913        if self.key is not None and self.result is not None and not tc.invalid:
     
    10371052            return
    10381053        return  # Returning without calling event.Skip, which eats the keystroke
     1054
     1055def G2SliderWidget(parent,loc,key,label,xmin,xmax,iscale):
     1056    '''A customized combination of a wx.Slider and a validated
     1057    wx.TextCtrl (see :class:`ValidatedTxtCtrl`) that allows either
     1058    a slider or text entry to set a value within a range.
     1059
     1060    :param wx.Panel parent: name of panel or frame that will be
     1061      the parent to the TextCtrl. Can be None.
     1062
     1063    :param dict/list loc: the dict or list with the initial value to be
     1064      placed in the TextCtrl.
     1065
     1066    :param int/str key: the dict key or the list index for the value to be
     1067      edited by the TextCtrl. The ``loc[key]`` element must exist and should
     1068      have a float value. It will be forced to an initial value
     1069      between xmin and xmax.
     1070     
     1071    :param str label: A label to be placed to the left of the slider.
     1072
     1073    :param float xmin: the minimum allowed valid value.
     1074
     1075    :param float xmax: the maximum allowed valid value.
     1076
     1077    :param float iscale: number to scale values to integers which is what the
     1078       Scale widget uses. If the xmin=1 and xmax=4 and iscale=1 then values
     1079       only the values 1,2,3 and 4 can be set with the slider. If
     1080       
     1081    :returns: returns a wx.BoxSizer containing the widgets
     1082    '''
     1083
     1084    def onScale(event):
     1085        loc[key] = vScale.GetValue()/float(iscale)
     1086        wx.TextCtrl.SetValue(vEntry,str(loc[key])) # will not trigger onValSet
     1087    def onValSet(*args,**kwargs):
     1088        vScale.SetValue(int(0.5+iscale*loc[key]))       
     1089    loc[key] = val = min(xmax,max(xmin,loc[key]))
     1090    hSizer = wx.BoxSizer(wx.HORIZONTAL)
     1091    hSizer.Add(wx.StaticText(parent,wx.ID_ANY,label),0,wx.ALL|wx.ALIGN_CENTER_VERTICAL)
     1092    vScale = wx.Slider(parent,style=wx.SL_HORIZONTAL,value=int(0.5+iscale*loc[key]))
     1093    vScale.SetRange(int(0.5+xmin*iscale),int(0.5+xmax*iscale))
     1094    vScale.Bind(wx.EVT_SLIDER, onScale)
     1095    hSizer.Add(vScale,0,wx.ALL|wx.ALIGN_CENTER_VERTICAL)
     1096    vEntry = ValidatedTxtCtrl(parent,loc,key,
     1097                nDig=(10,int(0.9+np.log10(iscale))),OnLeave=onValSet,
     1098                xmin=xmin,xmax=xmax,typeHint=float)
     1099    hSizer.Add(vEntry,0,wx.ALL|wx.ALIGN_CENTER_VERTICAL,5)
     1100    return hSizer
    10391101
    10401102################################################################################
     
    65246586    # test Tutorial access
    65256587    #======================================================================
    6526     dlg = OpenTutorial(frm)
    6527     if dlg.ShowModal() == wx.ID_OK:
    6528         print("OK")
    6529     else:
    6530         print("Cancel")
    6531     dlg.Destroy()
    6532     sys.exit()
     6588    # dlg = OpenTutorial(frm)
     6589    # if dlg.ShowModal() == wx.ID_OK:
     6590    #     print("OK")
     6591    # else:
     6592    #     print("Cancel")
     6593    # dlg.Destroy()
     6594    # sys.exit()
    65336595    #======================================================================
    65346596    # test ScrolledMultiEditor
     
    66566718    #         print sel,choices[sel]
    66576719
     6720    # pnl = wx.Panel(frm)
     6721    # siz = wx.BoxSizer(wx.VERTICAL)
     6722    # td = {'Goni':200.,'a':1.,'int':1,'calc':1./3.,'string':'s'}
     6723    # for key in sorted(td):
     6724    #     txt = ValidatedTxtCtrl(pnl,td,key,typeHint=float)
     6725    #     siz.Add(txt)
     6726    # pnl.SetSizer(siz)
     6727    # siz.Fit(frm)
     6728    # app.MainLoop()
     6729    # print(td)
     6730       
    66586731    pnl = wx.Panel(frm)
    6659     siz = wx.BoxSizer(wx.VERTICAL)
    6660     td = {'Goni':200.,'a':1.,'int':1,'calc':1./3.,'string':'s'}
    6661     for key in sorted(td):
    6662         txt = ValidatedTxtCtrl(pnl,td,key,typeHint=float)
    6663         siz.Add(txt)
    6664     pnl.SetSizer(siz)
    6665     siz.Fit(frm)
     6732    valArr = {'k':1.0}
     6733    ms = wx.BoxSizer(wx.VERTICAL)
     6734    #siz = G2SliderWidget(pnl,valArr,'k','test slider w/entry',.2,1.2,100)
     6735    #ms.Add(siz)
     6736    siz = G2SliderWidget(pnl,valArr,'k','test slider w/entry',2,5,1)
     6737    ms.Add(siz)
     6738    #siz = G2SliderWidget(pnl,valArr,'k','test slider w/entry',20,50,.1)
     6739    #ms.Add(siz)
     6740    pnl.SetSizer(ms)
     6741    ms.Fit(frm)
    66666742    app.MainLoop()
    6667     print(td)
     6743    print(valArr)
  • trunk/GSASIIdataGUI.py

    r4466 r4491  
    61166116        G2G.Define_wxId('wxID_DRAWADDMOLECULE')
    61176117        self.DrawAtomEdit.Append(G2G.wxID_DRAWADDMOLECULE,'Complete molecule','Cyclicly add atoms bonded to selected atoms')
     6118        G2G.Define_wxId('wxID_DRAWVOIDMAP')
     6119        self.DrawAtomEdit.Append(G2G.wxID_DRAWVOIDMAP,'Create void map','Create a map of locations outside of any VDW radius')
    61186120        self.DrawAtomEdit.Append(G2G.wxID_DRAWDELETE,'Delete atoms','Delete atoms from drawing set')
    61196121       
     
    64126414        LSSizer.Add(derivSel,0,WACV)
    64136415        LSSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Min delta-M/M: '),0,WACV)
    6414         LSSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'min dM/M',nDig=(10,2,'g'),min=1.e-9,max=1.),0,WACV)
     6416        LSSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'min dM/M',nDig=(10,2,'g'),xmin=1.e-9,xmax=1.),0,WACV)
    64156417        if 'Hessian' in data['deriv type']:
    64166418            LSSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Max cycles: '),0,WACV)
     
    64286430                LSSizer.Add(marqLam,0,WACV)
    64296431            LSSizer.Add(wx.StaticText(G2frame.dataWindow,label=' SVD zero tolerance:'),0,WACV)
    6430             LSSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'SVDtol',nDig=(10,1,'g'),min=1.e-9,max=.01),0,WACV)
     6432            LSSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'SVDtol',nDig=(10,1,'g'),xmin=1.e-9,xmax=.01),0,WACV)
    64316433        else:       #TODO what for SVD refine?
    64326434            LSSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Initial shift factor: '),0,WACV)
    6433             Factr = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'shift factor',nDig=(10,5),min=1.e-5,max=100.)
     6435            Factr = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'shift factor',nDig=(10,5),xmin=1.e-5,xmax=100.)
    64346436            LSSizer.Add(Factr,0,WACV)
    64356437        if G2frame.Sngl:
     
    64476449                LSSizer.Add(wx.StaticText(G2frame.dataWindow,-1,label=usrRej[item][0]),0,WACV)
    64486450                usrrej = G2G.ValidatedTxtCtrl(G2frame.dataWindow,userReject,item,nDig=(10,2),
    6449                     min=usrRej[item][1][0],max=usrRej[item][1][1])
     6451                    xmin=usrRej[item][1][0],xmax=usrRej[item][1][1])
    64506452                LSSizer.Add(usrrej,0,WACV)
    64516453        return LSSizer
     
    82268228    wtSizer = wx.BoxSizer(wx.HORIZONTAL)
    82278229    wtSizer.Add(wx.StaticText(G2frame.dataWindow,-1,' Weight factor: '),0,WACV)
    8228     wtSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data[0],'wtFactor',nDig=(10,3),min=1.e-9),0,WACV)
     8230    wtSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data[0],'wtFactor',nDig=(10,3),xmin=1.e-9),0,WACV)
    82298231#    if kind == 'PWDR':         #possible future compression feature; NB above patch as well
    82308232#        wtSizer.Add(wx.StaticText(G2frame.dataWindow,-1,' Compression factor: '),0,WACV)
     
    83118313            magSizer.Add(wx.StaticText(panel,-1,'(start)'),1,wx.ALIGN_CENTER,1)
    83128314            edit = G2G.ValidatedTxtCtrl(panel,data[0]['Magnification'][0],1,
    8313                 nDig=(7,2),min=0.01,max=1000.,OnLeave=OnEditMag,size=(65,-1))
     8315                nDig=(7,2),xmin=0.01,xmax=1000.,OnLeave=OnEditMag,size=(65,-1))
    83148316            magSizer.Add(edit,1,wx.ALIGN_CENTER,5)
    83158317            magSizer.Add((1,1))
    83168318            for i in range(1,lenmag):
    83178319                edit = G2G.ValidatedTxtCtrl(panel,data[0]['Magnification'][i],0,nDig=(10,3),
    8318                     min=data[1][0][0],max=data[1][0][-1],OnLeave=OnEditMag)
     8320                    xmin=data[1][0][0],xmax=data[1][0][-1],OnLeave=OnEditMag)
    83198321                magSizer.Add(edit)
    83208322                edit = G2G.ValidatedTxtCtrl(panel,data[0]['Magnification'][i],1,
    8321                     nDig=(7,2),min=0.01,max=1000.,OnLeave=OnEditMag,size=(65,-1))
     8323                    nDig=(7,2),xmin=0.01,xmax=1000.,OnLeave=OnEditMag,size=(65,-1))
    83228324                magSizer.Add(edit,1,wx.ALIGN_CENTER,5)
    83238325                delmag = wx.Button(panel,wx.ID_ANY,label='Del',size=(40,-1))
  • trunk/GSASIIddataGUI.py

    r4490 r4491  
    123123        scaleSizer.Add(scaleRef,0,WACV|wx.LEFT,5)
    124124        scaleVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Scale'],0,
    125             min=0.,nDig=(10,4),typeHint=float,OnLeave=onChangeFraction)
     125            xmin=0.,nDig=(10,4),typeHint=float,OnLeave=onChangeFraction)
    126126        scaleSizer.Add(scaleVal,0,WACV)
    127127        if 'PWDR' in G2frame.hist and generalData['Type'] != 'magnetic':
     
    270270        lgmixSizer.Add(lgmixRef,0,WACV|wx.LEFT,5)
    271271        lgmixVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist][name][1],2,
    272             nDig=(10,3),min=Limits[0],max=Limits[1])
     272            nDig=(10,3),xmin=Limits[0],xmax=Limits[1])
    273273        lgmixSizer.Add(lgmixVal,0,WACV|wx.LEFT,5)
    274274        return lgmixSizer
     
    292292        isoSizer.Add(sizeRef,0,WACV|wx.LEFT,5)
    293293        sizeVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist][parm][1],0,
    294             nDig=fmt,min=Limits[0],max=Limits[1],OnLeave=OnNewValue)
     294            nDig=fmt,xmin=Limits[0],xmax=Limits[1],OnLeave=OnNewValue)
    295295        isoSizer.Add(sizeVal,0,WACV)
    296296        return isoSizer
     
    318318            dataSizer.Add(sizeRef,0,WACV|wx.LEFT,5)
    319319            sizeVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist][parm][1],
    320                 Id,fmt,min=Limits[0],max=Limits[1],OnLeave=OnNewValue)
     320                Id,fmt,xmin=Limits[0],xmax=Limits[1],OnLeave=OnNewValue)
    321321            dataSizer.Add(sizeVal,0,WACV)
    322322        return dataSizer
     
    337337            if Id < 3:
    338338                sizeVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Size'][4],
    339                     Id,nDig=(10,3),min=0.,max=4.,OnLeave=OnNewValueReDraw)
     339                    Id,nDig=(10,3),xmin=0.,xmax=4.,OnLeave=OnNewValueReDraw)
    340340            else:
    341341                sizeVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Size'][4],
     
    433433        poRef.Bind(wx.EVT_CHECKBOX,OnPORef)
    434434        poSizer.Add(poRef,0,WACV|wx.LEFT,5)
    435         poVal = G2G.ValidatedTxtCtrl(DData,POData,1,nDig=(10,3),typeHint=float,min=0.)
     435        poVal = G2G.ValidatedTxtCtrl(DData,POData,1,nDig=(10,3),typeHint=float,xmin=0.)
    436436        poSizer.Add(poVal,0,WACV)
    437437        poSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Unique axis, H K L: '),0,WACV)
     
    526526                    valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Tbar(mm):'),0,WACV)
    527527                    tbarVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'][2],'Tbar',
    528                         min=0.,nDig=(10,3),typeHint=float)
     528                        xmin=0.,nDig=(10,3),typeHint=float)
    529529                    valSizer.Add(tbarVal,0,WACV)
    530530                    valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' cos(2ThM):'),0,WACV)
    531531                    cos2tm = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'][2],'Cos2TM',
    532                         min=0.,max=1.,nDig=(10,3),typeHint=float)
     532                        xmin=0.,xmax=1.,nDig=(10,3),typeHint=float)
    533533                    valSizer.Add(cos2tm,0,WACV)
    534534                    extSizer.Add(valSizer,0,WACV)
     
    549549                    val2Sizer.Add(Eref,0,WACV|wx.LEFT,5)
    550550                    Eval = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'][2][ekey],0,
    551                         min=0.,nDig=(10,3,'g'),typeHint=float)
     551                        xmin=0.,nDig=(10,3,'g'),typeHint=float)
    552552                    val2Sizer.Add(Eval,0,WACV)
    553553                extSizer.Add(val2Sizer,0,WACV)
     
    559559            extSizer.Add(extRef,0,WACV|wx.LEFT,5)
    560560            extVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Extinction'],0,
    561                 min=0.,nDig=(10,2),typeHint=float)
     561                xmin=0.,nDig=(10,2),typeHint=float)
    562562            extSizer.Add(extVal,0,WACV)
    563563
     
    579579            babSizer.Add(babRef,0,WACV|wx.LEFT,5)
    580580            babVal = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Babinet']['Bab'+bab],0,
    581                 nDig=(10,3),min=0.,typeHint=float)
     581                nDig=(10,3),xmin=0.,typeHint=float)
    582582            babSizer.Add(babVal,0,WACV)
    583583        return babSizer
     
    716716                if it:
    717717                    twinval = G2G.ValidatedTxtCtrl(DData,UseList[G2frame.hist]['Twins'][it],1,nDig=(10,3),
    718                         min=0.,max=1.,typeHint=float,OnLeave=OnTwinVal)
     718                        xmin=0.,xmax=1.,typeHint=float,OnLeave=OnTwinVal)
    719719                    Indx[twinval.GetId()] = it
    720720                else:
  • trunk/GSASIIimgGUI.py

    r4361 r4491  
    160160        data['PolaVal'] = [0.99,False]
    161161    distSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['PolaVal'],0,nDig=(10,4),
    162         min=0.,max=1.,typeHint=float),0,WACV)
     162        xmin=0.,xmax=1.,typeHint=float),0,WACV)
    163163    mainSizer.Add(distSizer,0)
    164164    if 'samplechangerpos' not in data or data['samplechangerpos'] is None:
     
    965965        G2frame.slideSizer.AddGrowableCol(2)
    966966        maxSel.Bind(wx.EVT_SLIDER, OnMaxSlider)
    967         maxVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Range[1],1,min=Range[0][0]+1,
    968             max=Range[0][1],OnLeave=OnNewVal)
     967        maxVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Range[1],1,xmin=Range[0][0]+1,
     968            xmax=Range[0][1],OnLeave=OnNewVal)
    969969        G2frame.slideSizer.Add(maxVal,0,WACV)
    970970        G2frame.slideSizer.Add(maxSel,flag=wx.EXPAND|wx.ALL)
     
    978978        minSel.Bind(wx.EVT_SLIDER, OnMinSlider)
    979979        minVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Range[1],0,
    980             max=Range[0][1],typeHint=int,OnLeave=OnNewVal)
     980            xmax=Range[0][1],typeHint=int,OnLeave=OnNewVal)
    981981        G2frame.slideSizer.Add(minVal,0,WACV)
    982982        G2frame.slideSizer.Add(minSel,flag=wx.EXPAND|wx.ALL)
     
    10021002        autoSizer.Add(linescan,0,WACV)
    10031003        if data['linescan'][0]:
    1004             G2frame.scanazm = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['linescan'],1,min=0.,
    1005             max=360.,OnLeave=OnNewLineScan)
     1004            G2frame.scanazm = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['linescan'],1,xmin=0.,
     1005            xmax=360.,OnLeave=OnNewLineScan)
    10061006            autoSizer.Add(G2frame.scanazm,0,WACV)
    10071007            azmSpin = wx.SpinButton(G2frame.dataWindow,style=wx.SP_VERTICAL,size=wx.Size(20,25))
     
    10401040            if name == 'wave':
    10411041                calVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Parms[name][2],
    1042                     Parms[name][3],min=0.01,max=10.,nDig=Parms[name][1],typeHint=float)
     1042                    Parms[name][3],xmin=0.01,xmax=10.,nDig=Parms[name][1],typeHint=float)
    10431043            elif name == 'dep':
    10441044                calVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Parms[name][2],
    1045                     Parms[name][3],min=0.0,max=0.2,nDig=Parms[name][1],typeHint=float)
     1045                    Parms[name][3],xmin=0.0,xmax=0.2,nDig=Parms[name][1],typeHint=float)
    10461046            else:
    10471047                calVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Parms[name][2],
     
    11531153            IOtth = [4.*math.pi*sind(IOtth[0]/2.)/wave,4.*math.pi*sind(IOtth[1]/2.)/wave]
    11541154        littleSizer = wx.BoxSizer(wx.HORIZONTAL)
    1155         G2frame.InnerTth = G2G.ValidatedTxtCtrl(G2frame.dataWindow,IOtth,0,nDig=(8,3,'f'),min=0.001,typeHint=float,OnLeave=OnIOtth)
     1155        G2frame.InnerTth = G2G.ValidatedTxtCtrl(G2frame.dataWindow,IOtth,0,nDig=(8,3,'f'),xmin=0.001,typeHint=float,OnLeave=OnIOtth)
    11561156        littleSizer.Add(G2frame.InnerTth,0,WACV)
    1157         G2frame.OuterTth = G2G.ValidatedTxtCtrl(G2frame.dataWindow,IOtth,1,nDig=(8,3,'f'),min=0.001,typeHint=float,OnLeave=OnIOtth)
     1157        G2frame.OuterTth = G2G.ValidatedTxtCtrl(G2frame.dataWindow,IOtth,1,nDig=(8,3,'f'),xmin=0.001,typeHint=float,OnLeave=OnIOtth)
    11581158        littleSizer.Add(G2frame.OuterTth,0,WACV)
    11591159        dataSizer.Add(littleSizer,0,)
     
    11721172        dataSizer.Add(wx.StaticText(parent=G2frame.dataWindow,label=' No. 2-theta/azimuth bins'),0,WACV)
    11731173        littleSizer = wx.BoxSizer(wx.HORIZONTAL)
    1174         outChan = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'outChannels',typeHint=int,min=10,OnLeave=OnNumOutBins)
     1174        outChan = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'outChannels',typeHint=int,xmin=10,OnLeave=OnNumOutBins)
    11751175        littleSizer.Add(outChan,0,WACV)
    1176         outAzim = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'outAzimuths',nDig=(10,4),min=1,typeHint=int,OnLeave=OnNumOutAzms)
     1176        outAzim = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'outAzimuths',nDig=(10,4),xmin=1,typeHint=int,OnLeave=OnNumOutAzms)
    11771177        littleSizer.Add(outAzim,0,WACV)
    11781178        dataSizer.Add(littleSizer,0,)
     
    11961196            minmax = [.05,1.0]
    11971197        samabsVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['SampleAbs'],0,nDig=(10,3),
    1198             typeHint=float,min=minmax[0],max=minmax[1])
     1198            typeHint=float,xmin=minmax[0],xmax=minmax[1])
    11991199        littleSizer.Add(samabsVal,0,WACV)
    12001200        dataSizer.Add(littleSizer,0,)       
     
    12061206            oblique.SetValue(data['Oblique'][1])
    12071207            littleSizer.Add(wx.StaticText(G2frame.dataWindow,label='Value (0.01-0.99)  '),0,WACV)
    1208             obliqVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Oblique'],0,nDig=(10,3),typeHint=float,min=0.01,max=0.99)
     1208            obliqVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Oblique'],0,nDig=(10,3),typeHint=float,xmin=0.01,xmax=0.99)
    12091209            littleSizer.Add(obliqVal,0,WACV)
    12101210            dataSizer.Add(littleSizer,0,)
     
    12161216            setPolariz.SetValue(data['PolaVal'][1])
    12171217            littleSizer.Add(wx.StaticText(G2frame.dataWindow,label='Value (0.001-0.999)  '),0,WACV)
    1218             polaVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['PolaVal'],0,nDig=(10,3),typeHint=float,min=0.001,max=0.999)
     1218            polaVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['PolaVal'],0,nDig=(10,3),typeHint=float,xmin=0.001,xmax=0.999)
    12191219            littleSizer.Add(polaVal,0,WACV)
    12201220            dataSizer.Add(littleSizer,0,)
     
    13611361        comboSizer = wx.BoxSizer(wx.HORIZONTAL)       
    13621362        comboSizer.Add(wx.StaticText(parent=G2frame.dataWindow,label=' Min calib d-spacing '),0,WACV)
    1363         G2frame.calibDmin = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'calibdmin',nDig=(10,2),typeHint=float,min=0.25)
     1363        G2frame.calibDmin = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'calibdmin',nDig=(10,2),typeHint=float,xmin=0.25)
    13641364        comboSizer.Add(G2frame.calibDmin,0,WACV)
    13651365        calibSizer.Add(comboSizer,0)
     
    13671367        comboSizer = wx.BoxSizer(wx.HORIZONTAL)
    13681368        comboSizer.Add(wx.StaticText(parent=G2frame.dataWindow,label=' Min ring I/Ib '),0,WACV)
    1369         cutOff = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'cutoff',nDig=(10,2),min=0.1)
     1369        cutOff = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'cutoff',nDig=(10,2),xmin=0.1)
    13701370        comboSizer.Add(cutOff,0,WACV)
    13711371        calibSizer.Add(comboSizer,0)
     
    18711871        sv1 = min(100,max(0,int(0.5+100.*sqrtDeltOne/sqrtDeltZero)))
    18721872        maxSel = wx.Slider(parent=G2frame.dataWindow,style=wx.SL_HORIZONTAL,value=sv1)
    1873         maxVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Range[1],1,min=Range[0][0]+1,
    1874             max=Range[0][1],OnLeave=OnNewVal)
     1873        maxVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Range[1],1,xmin=Range[0][0]+1,
     1874            xmax=Range[0][1],OnLeave=OnNewVal)
    18751875        slideSizer.Add(maxVal,0,WACV)
    18761876        slideSizer.Add(maxSel,flag=wx.EXPAND|wx.ALL)
     
    18841884        sv0 = min(100,max(0,int(0.5+100.*(Range[1][0]-Range[0][0])/DeltOne)))
    18851885        minVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,Range[1],0,
    1886             max=Range[0][1],typeHint=int,OnLeave=OnNewVal)
     1886            xmax=Range[0][1],typeHint=int,OnLeave=OnNewVal)
    18871887        slideSizer.Add(minVal,0,WACV)
    18881888        minSel = wx.Slider(parent=G2frame.dataWindow,style=wx.SL_HORIZONTAL,value=sv0)
     
    19811981    littleSizer.Add(wx.StaticText(parent=G2frame.dataWindow,label=' Lower/Upper thresholds '),0,WACV)
    19821982    lowerThreshold = G2G.ValidatedTxtCtrl(G2frame.dataWindow,loc=thresh[1],key=0,
    1983         min=thresh[0][0],OnLeave=newReplot,typeHint=int)
     1983        xmin=thresh[0][0],OnLeave=newReplot,typeHint=int)
    19841984    littleSizer.Add(lowerThreshold,0,WACV)
    19851985    upperThreshold = G2G.ValidatedTxtCtrl(G2frame.dataWindow,loc=thresh[1],key=1,
    1986         max=thresh[0][1],OnLeave=newReplot,typeHint=int)
     1986        xmax=thresh[0][1],OnLeave=newReplot,typeHint=int)
    19871987    littleSizer.Add(upperThreshold,0,WACV)
    19881988    mainSizer.Add(littleSizer,0,)
     
    19911991    spotSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Select n*sigma spot rejection (n=1-10): '),0,WACV)
    19921992    spotSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,loc=data['SpotMask'],
    1993         key='esdMul',min=1.,max=10.,size=(40,25)),0,WACV)
     1993        key='esdMul',xmin=1.,xmax=10.,size=(40,25)),0,WACV)
    19941994    numPix = 0
    19951995    if data['SpotMask']['spotMask'] is not None:
     
    20362036                littleSizer.Add(ringText,0,WACV)
    20372037                ringThick = G2G.ValidatedTxtCtrl(G2frame.dataWindow,loc=Rings[i],key=1,
    2038                     min=0.001,max=1.,OnLeave=Replot,nDig=[8,3])
     2038                    xmin=0.001,xmax=1.,OnLeave=Replot,nDig=[8,3])
    20392039                littleSizer.Add(ringThick,0,WACV)
    20402040                ringDelete = G2G.G2LoggedButton(G2frame.dataWindow,label='delete?',
     
    20652065                littleSizer.Add(azmText,0,WACV)
    20662066                arcThick = G2G.ValidatedTxtCtrl(G2frame.dataWindow,loc=Arcs[i],key=2,
    2067                     min=0.001,max=20.,OnLeave=Replot,nDig=[8,3])
     2067                    xmin=0.001,xmax=20.,OnLeave=Replot,nDig=[8,3])
    20682068                littleSizer.Add(arcThick,0,WACV)
    20692069                arcDelete = G2G.G2LoggedButton(G2frame.dataWindow,label='delete?',
     
    24392439        samSizer.Add(strType,0,WACV)
    24402440        samSizer.Add(wx.StaticText(G2frame.dataWindow,-1,label=' Sample phi: '),0,WACV)
    2441         samPhi = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Sample phi',nDig=(10,3),typeHint=float,min=-360.,max=360.)
     2441        samPhi = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Sample phi',nDig=(10,3),typeHint=float,xmin=-360.,xmax=360.)
    24422442        samSizer.Add(samPhi,0,WACV)
    24432443        samSizer.Add(wx.StaticText(G2frame.dataWindow,-1,label=' Sample delta-z(mm): '),0,WACV)
     
    29782978            sizer.Add(scalename,0,WACV)
    29792979            sizer.Add(wx.StaticText(mnpnl,label=' to '),0,WACV)
    2980             scaleval = G2G.ValidatedTxtCtrl(mnpnl,self.Scale,0,nDig=(10,2),min=1.)
     2980            scaleval = G2G.ValidatedTxtCtrl(mnpnl,self.Scale,0,nDig=(10,2),xmin=1.)
    29812981            sizer.Add(scaleval,0,WACV)
    29822982            lblsizr.Add(sizer,0)
     
    29872987        lbl4a = wx.StaticText(mnpnl, wx.ID_ANY,'Max detector distance: ')
    29882988        sizer.Add(lbl4a,0,wx.ALIGN_CENTER_VERTICAL)
    2989         fInp4a = G2G.ValidatedTxtCtrl(mnpnl,self.params,'pdfDmax',min=0.0)
     2989        fInp4a = G2G.ValidatedTxtCtrl(mnpnl,self.params,'pdfDmax',xmin=0.0)
    29902990        sizer.Add(fInp4a,0,wx.ALIGN_CENTER_VERTICAL)
    29912991        cOpt = G2G.G2CheckBox(mnpnl,'Optimize',self.params,'optPDF')
  • trunk/GSASIImath.py

    r4489 r4491  
    619619    atTypes = General['AtomTypes']
    620620    Radii = np.array(General['BondRadii'])
    621     DisAglCtls = General['DisAglCtls']   
    622     radiusFactor = DisAglCtls['Factors'][0]
     621    try:
     622        DisAglCtls = General['DisAglCtls']   
     623        radiusFactor = DisAglCtls['Factors'][0]
     624    except:
     625        radiusFactor = 0.85
    623626    AtInfo = dict(zip(atTypes,Radii)) #or General['BondRadii']
    624627    Orig = atNames.index(FrstName)
     
    708711    AtTypes = General['AtomTypes']
    709712    Radii = np.array(General['BondRadii'])
    710     DisAglCtls = General['DisAglCtls']   
    711     radiusFactor = DisAglCtls['Factors'][0]
     713    try:
     714        DisAglCtls = General['DisAglCtls']   
     715        radiusFactor = DisAglCtls['Factors'][0]
     716    except:
     717        radiusFactor = 0.85
    712718    AtInfo = dict(zip(AtTypes,Radii)) #or General['BondRadii']
    713719    if Orig is None:
  • trunk/GSASIIphsGUI.py

    r4489 r4491  
    784784        rotationBox = wx.BoxSizer(wx.HORIZONTAL)
    785785        rotationBox.Add(wx.StaticText(self.panel,label=' Rotation angle: '),0,WACV)
    786 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     786#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    787787        rotangle = wx.TextCtrl(self.panel,value='%5.3f'%(self.rotAngle),
    788788            size=(50,25),style=wx.TE_PROCESS_ENTER)
     
    791791        rotationBox.Add(rotangle,0,WACV)
    792792        rotationBox.Add(wx.StaticText(self.panel,label=' about vector: '),0,WACV)
    793 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     793#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    794794        rotvec = wx.TextCtrl(self.panel,value='%5.3f %5.3f %5.3f'%(self.rotVec[0],self.rotVec[1],self.rotVec[2]),
    795795            size=(100,25),style=wx.TE_PROCESS_ENTER)
     
    917917            parmRange =  wx.BoxSizer(wx.HORIZONTAL)
    918918            numChoice = [str(i+1) for i in range(10)]
    919 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     919#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    920920            parmrange = wx.TextCtrl(self.panel,value='%.3f %.3f'%(self.parmRange[0],self.parmRange[1]),
    921921                style=wx.TE_PROCESS_ENTER)
     
    12271227def FindCoordinationByLabel(data):
    12281228    '''Map out molecular connectivity by determining the atoms bonded
    1229     to each atom, by label. The atoms boced to each atom in the asymmetric
     1229    to each atom, by label. The atoms bonded to each atom in the asymmetric
    12301230    unit is determined and returned in a dict. Works best
    12311231    '''
     
    13931393                    atomData[i][-1] = Faces
    13941394                       
     1395def VoidMap(data,aMax=1,bMax=1,cMax=1,gridspacing=.25,probeRadius=.5):
     1396    '''Compute points where there are no atoms within probeRadius A.
     1397    All atoms in the Atoms list are considered, provided their
     1398    occupancy is non-zero.
     1399
     1400    :param dict data: Phase data array
     1401    :param float aMax: Maximum along the *a* direction (fractional units).
     1402       Defaults to 1.
     1403    :param float bMax: Maximum along the *b* direction (fractional units).
     1404       Defaults to 1.
     1405    :param float cMax: Maximum along the *c* direction (fractional units).
     1406       Defaults to 1.
     1407    :param float gridspacing=.25: Approximate spacing of points (fractional units).
     1408       Defaults to 1.
     1409    :param float ,probeRadius=.5:
     1410   
     1411    '''
     1412
     1413    VDWdict = dict(zip(data['General']['AtomTypes'],data['General']['vdWRadii']))
     1414    cell = data['General']['Cell'][1:7] 
     1415    Amat,Bmat = G2lat.cell2AB(cell) # orthogonalization matrix
     1416    SGData = data['General']['SGData']
     1417    surroundingCells = G2lat.CellBlock(1)
     1418
     1419    xx,yy,zz = np.meshgrid(
     1420        np.linspace(0,aMax,int(0.5+cell[0]*aMax/gridspacing),endpoint=False),
     1421        np.linspace(0,cMax,int(0.5+cell[1]*bMax/gridspacing),endpoint=False),
     1422        np.linspace(0,cMax,int(0.5+cell[2]*cMax/gridspacing),endpoint=False))
     1423    coordGrd = np.array([xyz for xyz in zip(xx.ravel(),yy.ravel(),zz.ravel())])
     1424
     1425    lgclArray = [True for i in xx.ravel()]
     1426
     1427    cx,ct,cs,cia = data['General']['AtomPtrs']
     1428    nind = len(data['Atoms'])
     1429    pgbar = wx.ProgressDialog('Fill unit cell for %d atoms'%nind,'Atoms done=',nind+1,
     1430            style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
     1431    screenSize = wx.ClientDisplayRect()
     1432    Size = pgbar.GetSize()
     1433    if 50 < Size[0] < 500: # sanity check on size, since this fails w/Win & wx3.0
     1434        pgbar.SetSize((int(Size[0]*1.2),Size[1])) # increase size a bit along x
     1435        pgbar.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
     1436
     1437    for i,atom in enumerate(data['Atoms']):
     1438        if atom[cx+3] <= 0: continue
     1439        radius = VDWdict.get(atom[ct])
     1440        cellMin = -radius/np.array(cell[0:3])
     1441        cellMax = radius/np.array(cell[0:3]) + (aMax,bMax,cMax)
     1442        if radius is None:
     1443            print('Skipping atom {}, no radius'.format(atom[0]))
     1444            continue
     1445        radius += probeRadius
     1446        result = G2spc.GenAtom(atom[cx:cx+3],SGData,Move=True)
     1447        for item in result:
     1448            for scell in surroundingCells:
     1449                XYZ = item[0] + scell
     1450                if np.any((XYZ < cellMin, XYZ > cellMax)): continue
     1451                lgclArray = np.logical_and(lgclArray,np.sqrt(np.sum(np.inner(Amat,coordGrd-XYZ)**2,axis=0))>radius)
     1452        GoOn = pgbar.Update(i,newmsg='Atoms done=%d'%(i))
     1453        if not GoOn[0]:
     1454            break
     1455    pgbar.Destroy()
     1456    print('found ',len(coordGrd[lgclArray]),'points gridspacing,probeRadius=',gridspacing,probeRadius)
     1457    return coordGrd[lgclArray]
     1458       
    13951459def SetDrawingDefaults(drawingData):
    13961460    """Add required items into data['drawing'] array if not present. This does not add
     
    18351899            nameSizer = wx.BoxSizer(wx.HORIZONTAL)
    18361900            nameSizer.Add(wx.StaticText(General,-1,' Phase name: '),0,WACV)
    1837 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     1901#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    18381902            NameTxt = wx.TextCtrl(General,-1,value=generalData['Name'],style=wx.TE_PROCESS_ENTER)
    18391903            NameTxt.Bind(wx.EVT_TEXT_ENTER,OnPhaseName)
     
    19772041                if ifEdit:          #a,b,c,etc.
    19782042                    cellVal = G2G.ValidatedTxtCtrl(General,generalData['Cell'],Id+1,
    1979                             min=0.1,max=500.,nDig=Fmt,OnLeave=OnCellChange)
     2043                            xmin=0.1,xmax=500.,nDig=Fmt,OnLeave=OnCellChange)
    19802044                    cellSizer.Add(cellVal,0,WACV)
    19812045                    cellList.append(cellVal.GetId())
     
    20562120                    else:
    20572121                        gfacTxt = G2G.ValidatedTxtCtrl(General,generalData['Lande g'],ig,
    2058                             min=0.5,max=3.0,nDig=(10,2))
     2122                            xmin=0.5,xmax=3.0,nDig=(10,2))
    20592123                        elemSizer.Add(gfacTxt,0,WACV)
    20602124            return elemSizer
     
    21812245            dminSizer = wx.BoxSizer(wx.HORIZONTAL)
    21822246            dminSizer.Add(wx.StaticText(General,label=' Magnetic reflection d-min: '),0,WACV)
    2183             dminVal = G2G.ValidatedTxtCtrl(General,generalData,'MagDmin',nDig=(10,4),min=0.7)
     2247            dminVal = G2G.ValidatedTxtCtrl(General,generalData,'MagDmin',nDig=(10,4),xmin=0.7)
    21842248            dminSizer.Add(dminVal,0,WACV)
    21852249            magSizer.Add(dminSizer,0,WACV)
     
    22862350            for i,[val,show] in enumerate(zip(generalData['SuperVec'][0],ifShow)):
    22872351                if show:
    2288                     modVal = G2G.ValidatedTxtCtrl(General,generalData['SuperVec'][0],i,nDig=(10,4),min=-1.,max=2.)
     2352                    modVal = G2G.ValidatedTxtCtrl(General,generalData['SuperVec'][0],i,nDig=(10,4),xmin=-1.,xmax=2.)
    22892353                    vecSizer.Add(modVal,0,WACV)
    22902354                    Indx[modVal.GetId()] = i
     
    23152379            pawleySizer.Add(wx.StaticText(General,label=' Pawley dmin: '),0,WACV)
    23162380            pawlMin = G2G.ValidatedTxtCtrl(General,generalData,'Pawley dmin',size=(65,25),
    2317                 min=0.25,max=20.,nDig=(10,5))
     2381                xmin=0.25,xmax=20.,nDig=(10,5))
    23182382            pawleySizer.Add(pawlMin,0,WACV)
    23192383            pawleySizer.Add(wx.StaticText(General,label=' Pawley dmax: '),0,WACV)
    23202384            pawlMax = G2G.ValidatedTxtCtrl(General,generalData,'Pawley dmax',size=(65,25),
    2321                 min=2.0,max=100.,nDig=(10,5))
     2385                xmin=2.0,xmax=100.,nDig=(10,5))
    23222386            pawleySizer.Add(pawlMax,0,WACV)
    23232387            pawleySizer.Add(wx.StaticText(General,label=' Pawley neg. wt.: '),0,WACV)
    23242388            pawlNegWt = G2G.ValidatedTxtCtrl(General,generalData,'Pawley neg wt',size=(65,25),
    2325                 min=0.,max=1.,nDig=(10,4))
     2389                xmin=0.,xmax=1.,nDig=(10,4))
    23262390            pawleySizer.Add(pawlNegWt,0,WACV)
    23272391            return pawleySizer
     
    23992463            line2Sizer = wx.BoxSizer(wx.HORIZONTAL)
    24002464            line2Sizer.Add(wx.StaticText(General,label=' Map grid step: '),0,WACV)
    2401             mapRes = G2G.ValidatedTxtCtrl(General,Map,'GridStep',nDig=(10,2),min=0.1,max=2.)
     2465            mapRes = G2G.ValidatedTxtCtrl(General,Map,'GridStep',nDig=(10,2),xmin=0.1,xmax=2.)
    24022466            line2Sizer.Add(mapRes,0,WACV)
    24032467            line2Sizer.Add(wx.StaticText(General,label=' Peak cutoff %: '),0,WACV)
    2404             cutOff = G2G.ValidatedTxtCtrl(General,Map,'cutOff',nDig=(10,1),min=1.0,max=100.)
     2468            cutOff = G2G.ValidatedTxtCtrl(General,Map,'cutOff',nDig=(10,1),xmin=1.0,xmax=100.)
    24052469            line2Sizer.Add(cutOff,0,WACV)
    24062470            if len(Map['RefList']) and not generalData['Modulated']:
     
    24732537            line2Sizer = wx.BoxSizer(wx.HORIZONTAL)
    24742538            line2Sizer.Add(wx.StaticText(General,label=' Map grid step: '),0,WACV)
    2475             flipRes = G2G.ValidatedTxtCtrl(General,Flip,'GridStep',nDig=(10,2),min=0.10,max=2.)
     2539            flipRes = G2G.ValidatedTxtCtrl(General,Flip,'GridStep',nDig=(10,2),xmin=0.10,xmax=2.)
    24762540            line2Sizer.Add(flipRes,0,WACV)
    24772541            line2Sizer.Add(wx.StaticText(General,label=' k-Factor (0.1-1.2): '),0,WACV)
    2478             kFactor = G2G.ValidatedTxtCtrl(General,Flip,'k-factor',nDig=(10,3),min=0.1,max=1.2)
     2542            kFactor = G2G.ValidatedTxtCtrl(General,Flip,'k-factor',nDig=(10,3),xmin=0.1,xmax=1.2)
    24792543            line2Sizer.Add(kFactor,0,WACV)
    24802544            line2Sizer.Add(wx.StaticText(General,label=' k-Max (>=10.0): '),0,WACV)
    2481             kMax = G2G.ValidatedTxtCtrl(General,Flip,'k-Max',nDig=(10,1),min=10.)
     2545            kMax = G2G.ValidatedTxtCtrl(General,Flip,'k-Max',nDig=(10,1),xmin=10.)
    24822546            line2Sizer.Add(kMax,0,WACV)
    24832547            flipSizer.Add(line2Sizer,0,WACV)
     
    24882552            HKL = Flip['testHKL']
    24892553            for ih,hkl in enumerate(Flip['testHKL']):               
    2490 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     2554#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    24912555                hkl = wx.TextCtrl(General,value='%3d %3d %3d'%(HKL[ih][0],HKL[ih][1],HKL[ih][2]),
    24922556                    style=wx.TE_PROCESS_ENTER,name='hkl%d'%(ih))
     
    25592623            lineSizer.Add(refList,0,WACV)
    25602624            lineSizer.Add(wx.StaticText(General,label=' d-min: '),0,WACV)
    2561             dmin = G2G.ValidatedTxtCtrl(General,MCSAdata,'dmin',nDig=(10,3),min=1.,max=5.)
     2625            dmin = G2G.ValidatedTxtCtrl(General,MCSAdata,'dmin',nDig=(10,3),xmin=1.,xmax=5.)
    25622626            lineSizer.Add(dmin,0,WACV)
    25632627            mcsaSizer.Add(lineSizer)
     
    25762640            line2Sizer.Add(ranStart,0,WACV)
    25772641            MCSAdata['ranRange'] = MCSAdata.get('ranRange',10.)  #patch for old gpx files
    2578             ranRange = G2G.ValidatedTxtCtrl(General,MCSAdata,'ranRange',nDig=(10,1),min=1.,max=99.)
     2642            ranRange = G2G.ValidatedTxtCtrl(General,MCSAdata,'ranRange',nDig=(10,1),xmin=1.,xmax=99.)
    25792643            line2Sizer.Add(ranRange,0,WACV)
    25802644            line2Sizer.Add(wx.StaticText(General,label='% of ranges. '),0,WACV)
     
    25932657                for i,name in enumerate(Names):
    25942658                    line3Sizer.Add(wx.StaticText(General,label=name),0,WACV)
    2595                     Ajump = G2G.ValidatedTxtCtrl(General,MCSAdata[parms],i,nDig=(10,2),min=0.1,max=1.,OnLeave=ShowTsched)
     2659                    Ajump = G2G.ValidatedTxtCtrl(General,MCSAdata[parms],i,nDig=(10,2),xmin=0.1,xmax=1.,OnLeave=ShowTsched)
    25962660                    line3Sizer.Add(Ajump,0,WACV)
    25972661            elif 'log' in MCSAdata['Algorithm']:
    25982662                line3Sizer.Add(wx.StaticText(General,label=' slope: '),0,WACV)
    2599                 slope = G2G.ValidatedTxtCtrl(General,MCSAdata,'log slope',nDig=(10,3),min=0.25,max=1.0,OnLeave=ShowTsched)
     2663                slope = G2G.ValidatedTxtCtrl(General,MCSAdata,'log slope',nDig=(10,3),xmin=0.25,xmax=1.0,OnLeave=ShowTsched)
    26002664                line3Sizer.Add(slope,0,WACV)
    26012665            elif 'Basin Hopping' in MCSAdata['Algorithm']:
     
    44064470        lineSizer.Add(OptMeth,0,WACV)
    44074471        lineSizer.Add(wx.StaticText(MEMData,label=' Peak overlap factor'),0,WACV)
    4408         overlap = G2G.ValidatedTxtCtrl(MEMData,DysData,'overlap',nDig=(10,4),min=0.1,max=1.)
     4472        overlap = G2G.ValidatedTxtCtrl(MEMData,DysData,'overlap',nDig=(10,4),xmin=0.1,xmax=1.)
    44094473        lineSizer.Add(overlap,0,WACV)
    44104474        mainSizer.Add(lineSizer)
     
    44184482            if DysData['Lagrange'][0] == 'user':
    44194483                Zsizer.Add(wx.StaticText(MEMData,label=' value: '),0,WACV)
    4420                 lamb = G2G.ValidatedTxtCtrl(MEMData,DysData['Lagrange'],1,nDig=(10,4),min=0.0001,max=1.)
     4484                lamb = G2G.ValidatedTxtCtrl(MEMData,DysData['Lagrange'],1,nDig=(10,4),xmin=0.0001,xmax=1.)
    44214485                Zsizer.Add(lamb,0,WACV)
    44224486            Zsizer.Add(wx.StaticText(MEMData,label=' Adjust by: '),0,WACV)
    4423             dlamb = G2G.ValidatedTxtCtrl(MEMData,DysData['Lagrange'],2,nDig=(8,2),min=0.05,max=0.1)
     4487            dlamb = G2G.ValidatedTxtCtrl(MEMData,DysData['Lagrange'],2,nDig=(8,2),xmin=0.05,xmax=0.1)
    44244488            Zsizer.Add(dlamb,0,WACV)
    44254489            mainSizer.Add(Zsizer)
     
    44274491        Esizer = wx.BoxSizer(wx.HORIZONTAL)
    44284492        Esizer.Add(wx.StaticText(MEMData,label=' Weight by d-spacing**'),0,WACV)
    4429         Efact = G2G.ValidatedTxtCtrl(MEMData,DysData,'wt pwr',min=0,max=4,size=(50,20))
     4493        Efact = G2G.ValidatedTxtCtrl(MEMData,DysData,'wt pwr',xmin=0,xmax=4,size=(50,20))
    44304494        Esizer.Add(Efact,0,WACV)
    4431         Dmin = G2G.ValidatedTxtCtrl(MEMData,DysData,'MEMdmin',min=0.5,max=refDmin,size=(50,20))
     4495        Dmin = G2G.ValidatedTxtCtrl(MEMData,DysData,'MEMdmin',xmin=0.5,xmax=refDmin,size=(50,20))
    44324496        Esizer.Add(wx.StaticText(MEMData,label=' Minimum d-spacing for generated reflections: '),0,WACV)
    44334497        Esizer.Add(Dmin,0,WACV)
     
    44534517        Csizer = wx.BoxSizer(wx.HORIZONTAL)
    44544518        Csizer.Add(wx.StaticText(MEMData,label=' Maximum number of cycles: '),0,WACV)
    4455         Cyc = G2G.ValidatedTxtCtrl(MEMData,DysData,'Ncyc',min=0,max=10000,size=(50,20))
     4519        Cyc = G2G.ValidatedTxtCtrl(MEMData,DysData,'Ncyc',xmin=0,xmax=10000,size=(50,20))
    44564520        Csizer.Add(Cyc,0,WACV)
    44574521        fileCheck = wx.CheckBox(MEMData,label='Clear Dynsomia files? ')
     
    46054669                atmChoice.Add(wx.StaticText(G2frame.FRMC,label=' BVS weight: '),0,WACV)
    46064670                for itype in range(nTypes):
    4607                     atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Oxid'][itype],1,min=0.),0,WACV)
     4671                    atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Oxid'][itype],1,xmin=0.),0,WACV)
    46084672            if G2frame.RMCchoice == 'RMCProfile':
    46094673                atmChoice.Add(wx.StaticText(G2frame.FRMC,label=' Set max shift: '),0,WACV)
    46104674                for iType in range(nTypes):
    46114675                    atId = RMCPdict['atSeq'][iType]
    4612                     atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['aTypes'],atId,min=0.,max=1.),0,WACV)
     4676                    atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['aTypes'],atId,xmin=0.,xmax=1.),0,WACV)
    46134677            return atmChoice
    46144678       
     
    46454709                    Indx[atmSel.GetId()] = [ifx,i]
    46464710                    swapSizer.Add(atmSel,0,WACV)
    4647                 swapSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,swap,2,min=0.01,max=0.5,size=(50,25)),0,WACV)
     4711                swapSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,swap,2,xmin=0.01,xmax=0.5,size=(50,25)),0,WACV)
    46484712            return swapSizer
    46494713       
     
    46564720                pairSizer.Add(wx.StaticText(G2frame.FRMC,label='%14s'%' Hard min: '),0,WACV)
    46574721                for pair in RMCPdict['Pairs']:
    4658                     pairSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Pairs'][pair],0,min=0.,max=10.,size=(50,25)),0,WACV)
     4722                    pairSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Pairs'][pair],0,xmin=0.,xmax=10.,size=(50,25)),0,WACV)
    46594723            pairSizer.Add(wx.StaticText(G2frame.FRMC,label='%14s'%' Search from: '),0,WACV)
    46604724            for pair in RMCPdict['Pairs']:
    46614725                pairSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Pairs'][pair],
    4662                     1,min=0.,max=10.,size=(50,25)),0,WACV)
     4726                    1,xmin=0.,xmax=10.,size=(50,25)),0,WACV)
    46634727            pairSizer.Add(wx.StaticText(G2frame.FRMC,label='%14s'%'to: '),0,WACV)
    46644728            for pair in RMCPdict['Pairs']:
    4665                 pairSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Pairs'][pair],2,min=0.,max=10.,size=(50,25)),0,WACV)
     4729                pairSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Pairs'][pair],2,xmin=0.,xmax=10.,size=(50,25)),0,WACV)
    46664730            return pairSizer
    46674731                   
     
    48504914                    superSizer.Add(wx.StaticText(G2frame.FRMC,label=' %s-axis: '%ax),0,WACV)
    48514915                    superSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['SuperCell'],
    4852                         i,min=1,max=20,size=(50,25)),0,WACV)
     4916                        i,xmin=1,xmax=20,size=(50,25)),0,WACV)
    48534917                return superSizer
    48544918
     
    48594923                    boxSizer.Add(wx.StaticText(G2frame.FRMC,label=' %s-axis: '%ax),0,WACV)
    48604924                    boxSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Box'],
    4861                         i,min=10.,max=50.,size=(50,25)),0,WACV)
     4925                        i,xmin=10.,xmax=50.,size=(50,25)),0,WACV)
    48624926                return boxSizer
    48634927                                       
     
    49545018                        Indx[atmSel.GetId()] = [ifx,i]
    49555019                        angleSizer.Add(atmSel,0,WACV)
    4956                     angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,3,min=0.,max=180.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    4957                     angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,4,min=0.,max=180.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5020                    angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,3,xmin=0.,xmax=180.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5021                    angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,4,xmin=0.,xmax=180.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    49585022                return angleSizer
    49595023           
     
    49925056                        torsionSizer.Add(atmSel,0,WACV)
    49935057                    for i in  [4,5,6,7,8,9]:
    4994                         torsionSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,torsion,i,min=0.,max=360.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5058                        torsionSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,torsion,i,xmin=0.,xmax=360.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    49955059                return torsionSizer
    49965060#patches
     
    50335097                lineSizer.Add(GetSuperSizer(),0,WACV)
    50345098                lineSizer.Add(wx.StaticText(G2frame.FRMC,label=' Num. atoms per group '),0,WACV)
    5035                 lineSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Natoms',min=1,size=[40,25]),0,WACV)
     5099                lineSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Natoms',xmin=1,size=[40,25]),0,WACV)
    50365100            else:
    50375101                lineSizer.Add(wx.StaticText(G2frame.FRMC,label=' Starting phase symmetry must be P 1; transform structure first'))
     
    50445108                molecSizer.Add(pdbButton,0,WACV)
    50455109                molecSizer.Add(wx.StaticText(G2frame.FRMC,label=' target density, gm/cc '),0,WACV)
    5046                 molecSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'targetDensity',min=0.1,size=[60,25]),0,WACV)
     5110                molecSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'targetDensity',xmin=0.1,size=[60,25]),0,WACV)
    50475111                molecSizer.Add(wx.StaticText(G2frame.FRMC,label=' max tries '),0,WACV)
    5048                 molecSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'maxRecursion',min=1000,max=1000000,size=[60,25]),0,WACV)
     5112                molecSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'maxRecursion',xmin=1000,xmax=1000000,size=[60,25]),0,WACV)
    50495113                makePDB = wx.Button(G2frame.FRMC,label='Make big box PDB (slow!)')
    50505114                makePDB.Bind(wx.EVT_BUTTON,OnMakePDB)
     
    50675131            resLine.Add(restart,0,WACV)
    50685132            resLine.Add(wx.StaticText(G2frame.FRMC,label=' 10,000X Computation cycles: '),0,WACV)
    5069             resLine.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Cycles',min=1,size=[60,25]),0,WACV)
     5133            resLine.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Cycles',xmin=1,size=[60,25]),0,WACV)
    50705134            mainSizer.Add(resLine,0,WACV)
    50715135               
     
    50875151            distBox = wx.BoxSizer(wx.HORIZONTAL)
    50885152            distBox.Add(wx.StaticText(G2frame.FRMC,label=' Distance constraints, weight: :'),0,WACV)       
    5089             distBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Bond Weight',min=0.,max=100.,size=(50,25)),0,WACV)
     5153            distBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Bond Weight',xmin=0.,xmax=100.,size=(50,25)),0,WACV)
    50905154            distBox.Add(wx.StaticText(G2frame.FRMC,label=' min contact dist: '),0,WACV)
    5091             distBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'min Contact',min=0.,max=4.,size=(50,25)),0,WACV)           
     5155            distBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'min Contact',xmin=0.,xmax=4.,size=(50,25)),0,WACV)           
    50925156            mainSizer.Add(distBox,0,WACV)
    50935157            if RMCPdict['byMolec']:
     
    50995163                angBox.Add(angAdd,0,WACV)
    51005164                angBox.Add(wx.StaticText(G2frame.FRMC,label=' A-B-C angle restraints, weight: '),0,WACV)
    5101                 angBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Angle Weight',min=0.,max=100.,size=(50,25)),0,WACV)
     5165                angBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Angle Weight',xmin=0.,xmax=100.,size=(50,25)),0,WACV)
    51025166                mainSizer.Add(angBox,0,WACV)
    51035167                if len(RMCPdict['Angles']):
     
    51095173                torBox.Add(torAdd,0,WACV)
    51105174                torBox.Add(wx.StaticText(G2frame.FRMC,label=' A-B-C-D torsion angle restraints, weight: '),0,WACV)
    5111                 torBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Torsion Weight',min=0.,max=100.,size=(50,25)),0,WACV)
     5175                torBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict,'Torsion Weight',xmin=0.,xmax=100.,size=(50,25)),0,WACV)
    51125176                mainSizer.Add(torBox,0,WACV)
    51135177                if len(RMCPdict['Torsions']):
     
    52065270                timeSizer = wx.BoxSizer(wx.HORIZONTAL)
    52075271                timeSizer.Add(wx.StaticText(G2frame.FRMC,label=' Total running time (min): '),0,WACV)
    5208                 timeSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['runTimes'],0,min=0.),0,WACV)
     5272                timeSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['runTimes'],0,xmin=0.),0,WACV)
    52095273                timeSizer.Add(wx.StaticText(G2frame.FRMC,label=' Save interval time (min): '),0,WACV)
    5210                 timeSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['runTimes'],1,min=0.1,max=20.),0,WACV)
     5274                timeSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['runTimes'],1,xmin=0.1,xmax=20.),0,WACV)
    52115275                return timeSizer
    52125276               
     
    52175281                    superSizer.Add(wx.StaticText(G2frame.FRMC,label=' %s-axis: '%ax),0,WACV)
    52185282                    superSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['SuperCell'],
    5219                         i,min=1,max=20,size=(50,25),OnLeave=SetRestart),0,WACV)
     5283                        i,xmin=1,xmax=20,size=(50,25),OnLeave=SetRestart),0,WACV)
    52205284                return superSizer
    52215285                     
     
    52485312                bvsSizer.Add(wx.StaticText(G2frame.FRMC,label=' Bond length:'),0,WACV)
    52495313                for pair in RMCPdict['BVS']:
    5250                     bvsSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['BVS'][pair],0,min=0.,max=10.,size=(50,25)),0,WACV)
     5314                    bvsSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['BVS'][pair],0,xmin=0.,xmax=10.,size=(50,25)),0,WACV)
    52515315                bvsSizer.Add(wx.StaticText(G2frame.FRMC,label=' B constant (0.37): '),0,WACV)
    52525316                for pair in RMCPdict['BVS']:
    5253                     bvsSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['BVS'][pair],1,min=0.,max=10.,size=(50,25)),0,WACV)
     5317                    bvsSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['BVS'][pair],1,xmin=0.,xmax=10.,size=(50,25)),0,WACV)
    52545318                bvsSizer.Add(wx.StaticText(G2frame.FRMC,label=' Cut off: '),0,WACV)
    52555319                for pair in RMCPdict['BVS']:
    5256                     bvsSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['BVS'][pair],2,min=0.,max=10.,size=(50,25)),0,WACV)
     5320                    bvsSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['BVS'][pair],2,xmin=0.,xmax=10.,size=(50,25)),0,WACV)
    52575321                return bvsSizer
    52585322           
     
    52865350                        Indx[atmSel.GetId()] = [ifx,i]
    52875351                        fxcnSizer.Add(atmSel,0,WACV)
    5288                     fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,2,min=0.,max=5.,size=(50,25)),0,WACV)
    5289                     fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,3,min=0.,max=5.,size=(50,25)),0,WACV)
    5290                     fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,4,min=1,max=12,size=(50,25)),0,WACV)
    5291                     fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,5,min=0.,max=1.,size=(50,25)),0,WACV)
    5292                     fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,6,min=0.,size=(50,25)),0,WACV)
     5352                    fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,2,xmin=0.,xmax=5.,size=(50,25)),0,WACV)
     5353                    fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,3,xmin=0.,xmax=5.,size=(50,25)),0,WACV)
     5354                    fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,4,xmin=1,xmax=12,size=(50,25)),0,WACV)
     5355                    fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,5,xmin=0.,xmax=1.,size=(50,25)),0,WACV)
     5356                    fxcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,6,xmin=0.,size=(50,25)),0,WACV)
    52935357                return fxcnSizer
    52945358   
     
    53225386                        Indx[atmSel.GetId()] = [ifx,i]
    53235387                        avcnSizer.Add(atmSel,0,WACV)
    5324                     avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,2,min=0.,max=5.,size=(50,25)),0,WACV)
    5325                     avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,3,min=0.,max=5.,size=(50,25)),0,WACV)
    5326                     avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,4,min=1.,max=12.,size=(50,25)),0,WACV)
    5327                     avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,5,min=0.,size=(50,25)),0,WACV)
     5388                    avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,2,xmin=0.,xmax=5.,size=(50,25)),0,WACV)
     5389                    avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,3,xmin=0.,xmax=5.,size=(50,25)),0,WACV)
     5390                    avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,4,xmin=1.,xmax=12.,size=(50,25)),0,WACV)
     5391                    avcnSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,fxCN,5,xmin=0.,size=(50,25)),0,WACV)
    53285392                return avcnSizer
    53295393   
     
    53605424                        Indx[atmSel.GetId()] = [ifx,i]
    53615425                        angleSizer.Add(atmSel,0,WACV)
    5362                     angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,3,min=0.,max=180.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    5363                     angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,4,min=0.5,max=5.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    5364                     angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,5,min=0.5,max=5.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    5365                     angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,6,min=0.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5426                    angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,3,xmin=0.,xmax=180.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5427                    angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,4,xmin=0.5,xmax=5.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5428                    angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,5,xmin=0.5,xmax=5.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5429                    angleSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,angle,6,xmin=0.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    53665430                return angleSizer
    53675431   
     
    53985462                        Indx[atmSel.GetId()] = [ifx,i]
    53995463                        bondSizer.Add(atmSel,0,WACV)
    5400                     bondSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,bond,2,min=0.,max=5.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
    5401                     bondSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,bond,3,min=0.,size=(50,25)),0,WACV)
     5464                    bondSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,bond,2,xmin=0.,xmax=5.,OnLeave=SetRestart1,size=(50,25)),0,WACV)
     5465                    bondSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,bond,3,xmin=0.,size=(50,25)),0,WACV)
    54025466                return bondSizer
    54035467
     
    54635527            pottempBox = wx.BoxSizer(wx.HORIZONTAL)
    54645528            pottempBox.Add(wx.StaticText(G2frame.FRMC,label=' Potential temperature (K): '),0,WACV)
    5465             pottempBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Potentials'],'Pot. Temp.',min=0.,max=1000.,size=(50,25)),0,WACV)
     5529            pottempBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Potentials'],'Pot. Temp.',xmin=0.,xmax=1000.,size=(50,25)),0,WACV)
    54665530            mainSizer.Add(pottempBox,0,WACV)
    54675531            bondpotBox = wx.BoxSizer(wx.HORIZONTAL)
     
    54705534            bondpotBox.Add(bondpotAdd,0,WACV)
    54715535            bondpotBox.Add(wx.StaticText(G2frame.FRMC,label=' A-B stretch potential restraints, search range (%): '),0,WACV)
    5472             bondpotBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Potentials'],'Stretch search',min=0.,max=100.,size=(50,25)),0,WACV)
     5536            bondpotBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Potentials'],'Stretch search',xmin=0.,xmax=100.,size=(50,25)),0,WACV)
    54735537            mainSizer.Add(bondpotBox,0,WACV)
    54745538            if len(RMCPdict['Potentials']['Stretch']):
     
    54805544            angpotBox.Add(angpotAdd,0,WACV)
    54815545            angpotBox.Add(wx.StaticText(G2frame.FRMC,label=' A-B-C angle potential restraints, search range (%): '),0,WACV)
    5482             angpotBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Potentials'],'Angle search',min=0.,max=100.,size=(50,25)),0,WACV)
     5546            angpotBox.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Potentials'],'Angle search',xmin=0.,xmax=100.,size=(50,25)),0,WACV)
    54835547            mainSizer.Add(angpotBox,0,WACV)
    54845548            if len(RMCPdict['Potentials']['Angles']):
     
    54965560            histoSizer.Add(histo,0,WACV)
    54975561            histoSizer.Add(wx.StaticText(G2frame.FRMC,label=' Weight '),0,WACV)
    5498             histoSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['histogram'],1,min=0.,max=10000.,size=(50,25)),0,WACV)
     5562            histoSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['histogram'],1,xmin=0.,xmax=10000.,size=(50,25)),0,WACV)
    54995563            mainSizer.Add(histoSizer,0,WACV)
    55005564           
     
    62586322            for txt,fmt,ifEdit,Id in useGUI[2]:
    62596323                cellSizer.Add(wx.StaticText(layerData,label=txt),0,WACV)
    6260 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     6324#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    62616325                cellVal = wx.TextCtrl(layerData,value=(fmt%(cell[Id+1])),
    62626326                    style=wx.TE_PROCESS_ENTER)
     
    62806344            for i in range(2):
    62816345                widthSizer.Add(wx.StaticText(layerData,label=u' layer width(%s) (<= 1\xb5m): '%(Labels[i])),0,WACV)
    6282                 widthVal = G2G.ValidatedTxtCtrl(layerData,Layers['Width'][0],i,nDig=(10,3),min=0.005,max=1.0)
     6346                widthVal = G2G.ValidatedTxtCtrl(layerData,Layers['Width'][0],i,nDig=(10,3),xmin=0.005,xmax=1.0)
    62836347                widthSizer.Add(widthVal,0,WACV)
    62846348                widthRef = wx.CheckBox(layerData,label='Refine?')
     
    63956459            nameSizer = wx.BoxSizer(wx.HORIZONTAL)           
    63966460            nameSizer.Add(wx.StaticText(layerData,label=' Layer name: '),0,WACV)
    6397 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     6461#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    63986462            layerName = wx.TextCtrl(layerData,value=Layer['Name'],style=wx.TE_PROCESS_ENTER)
    63996463            layerName.Bind(wx.EVT_TEXT_ENTER,OnNameChange)       
     
    65596623            lineSizer = wx.BoxSizer(wx.HORIZONTAL)
    65606624            lineSizer.Add(wx.StaticText(layerData,label=' Enter sequence of layers to plot:'),0,WACV)
    6561 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     6625#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    65626626            plotSeq = wx.TextCtrl(layerData,value = '',style=wx.TE_PROCESS_ENTER)
    65636627            plotSeq.Bind(wx.EVT_TEXT_ENTER,OnPlotSeq)       
     
    66656729            if Layers['Stacking'][0] == 'recursive':
    66666730                topLine.Add(wx.StaticText(layerData,label=' number of layers (<1022 or "infinite"): '),0,WACV)
    6667 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     6731#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    66686732                numLayers = wx.TextCtrl(layerData,value=data['Layers']['Stacking'][1],style=wx.TE_PROCESS_ENTER)
    66696733                numLayers.Bind(wx.EVT_TEXT_ENTER,OnNumLayers)       
     
    66936757                else:   #random
    66946758                    topLine.Add(wx.StaticText(layerData,label=' Length of random sequence: '),0,WACV)
    6695 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     6759#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    66966760                    numRan = wx.TextCtrl(layerData,value=Layers['Stacking'][2],style=wx.TE_PROCESS_ENTER)
    66976761                    numRan.Bind(wx.EVT_TEXT_ENTER,OnNumRan)       
     
    71747238                                    else:
    71757239                                        minmax = [wave[0][0],1.0+wave[0][0]]
    7176                                 waveVal = G2G.ValidatedTxtCtrl(waveData,wave[0],ival,nDig=(10,5),min=minmax[0],max=minmax[1],OnLeave=OnWavePlot)
     7240                                waveVal = G2G.ValidatedTxtCtrl(waveData,wave[0],ival,nDig=(10,5),xmin=minmax[0],xmax=minmax[1],OnLeave=OnWavePlot)
    71777241                            else:
    71787242                                waveVal = wx.TextCtrl(waveData,value='%.5f'%(val),style=wx.TE_READONLY)
     
    83298393            DATData['covData'] = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Covariance'))
    83308394        G2stMn.DisAglTor(DATData)
    8331                        
     8395       
     8396    def MapVoid(event):
     8397        generalData = data['General']
     8398        rMax = max(data['General']['vdWRadii'])
     8399        cell = data['General']['Cell'][1:7]
     8400        voidDlg = wx.Dialog(G2frame,wx.ID_ANY,
     8401                    'Void computation parameters',
     8402                    style=wx.DEFAULT_DIALOG_STYLE)
     8403        mainSizer = wx.BoxSizer(wx.VERTICAL)
     8404        mainSizer.Add(wx.StaticText(voidDlg,wx.ID_ANY,
     8405                    'Set parameters for void computation for phase '+generalData.get('Name','?')))
     8406        # get cell ranges
     8407        xmax = 2. - rMax/cell[0]
     8408        voidPar = {'a':1., 'b':1., 'c':1., 'grid':.25, 'probe':0.5}
     8409        for i in ('a', 'b', 'c'):
     8410            mainSizer.Add(
     8411                G2G.G2SliderWidget(voidDlg,voidPar,i,
     8412                               'Max '+i+' value: ',0.,xmax,100))
     8413           
     8414        hSizer = wx.BoxSizer(wx.HORIZONTAL)
     8415        hSizer.Add(wx.StaticText(voidDlg,wx.ID_ANY,'Grid spacing (A)'))
     8416        hSizer.Add(G2G.ValidatedTxtCtrl(voidDlg,voidPar,'grid',
     8417                nDig=(5,2), xmin=0.1, xmax=2., typeHint=float))       
     8418        mainSizer.Add(hSizer)
     8419        hSizer = wx.BoxSizer(wx.HORIZONTAL)
     8420        hSizer.Add(wx.StaticText(voidDlg,wx.ID_ANY,'Probe radius (A)'))
     8421        hSizer.Add(G2G.ValidatedTxtCtrl(voidDlg,voidPar,'probe',
     8422                nDig=(5,2), xmin=0.1, xmax=2., typeHint=float))       
     8423        mainSizer.Add(hSizer)
     8424
     8425        def OnOK(event): voidDlg.EndModal(wx.ID_OK)
     8426        mainSizer.Add([5,5])
     8427        btnsizer = wx.StdDialogButtonSizer()
     8428        btn = wx.Button(voidDlg, wx.ID_OK)
     8429        btn.Bind(wx.EVT_BUTTON, OnOK)
     8430        btn.SetDefault()
     8431        btnsizer.AddButton(btn)
     8432        btn = wx.Button(voidDlg, wx.ID_CANCEL)
     8433        btnsizer.AddButton(btn)
     8434        btnsizer.Realize()
     8435        mainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER|wx.ALL, 5)
     8436
     8437        voidDlg.SetSizer(mainSizer)
     8438        mainSizer.Fit(voidDlg)
     8439        voidDlg.CenterOnParent()
     8440        res = voidDlg.ShowModal()
     8441        voidDlg.Destroy()
     8442        if res != wx.ID_OK: return
     8443        res = VoidMap(data, voidPar['a'], voidPar['b'], voidPar['c'],
     8444                          voidPar['grid'],voidPar['probe'])
     8445        G2plt.PlotStructure(G2frame,data,
     8446                        voidMap=res,voidRadius=voidPar['probe']) 
     8447       
    83328448################################################################################
    83338449#### Draw Options page
     
    84218537            ZstepSizer = wx.BoxSizer(wx.HORIZONTAL)
    84228538            ZstepSizer.Add(wx.StaticText(drawOptions,-1,' Z step:'),0,WACV)
    8423             Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     8539            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    84248540            ZstepSizer.Add(Zstep,0,WACV)
    84258541            slideSizer.Add(ZstepSizer)
     
    85988714            lineSizer.Add(wx.StaticText(drawOptions,-1,' View Dir.:'),0,WACV)
    85998715            VD = drawingData['viewDir']
    8600 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     8716#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    86018717            viewDir = wx.TextCtrl(drawOptions,value='%.3f %.3f %.3f'%(VD[0],VD[1],VD[2]),
    86028718                style=wx.TE_PROCESS_ENTER,size=wx.Size(140,20),name='viewDir')
     
    86158731            lineSizer.Add(wx.StaticText(drawOptions,-1,' View Point:'),0,WACV)
    86168732            VP = drawingData['viewPoint'][0]
    8617 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     8733#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    86188734            viewPoint = wx.TextCtrl(drawOptions,value='%.3f %.3f %.3f'%(VP[0],VP[1],VP[2]),
    86198735                style=wx.TE_PROCESS_ENTER,size=wx.Size(140,20),name='viewPoint')
     
    86818797            radSizer = wx.BoxSizer(wx.HORIZONTAL)
    86828798            radSizer.Add(wx.StaticText(drawOptions,-1,' Hydrogen radius, A:  '),0,WACV)
    8683             sizeH = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'sizeH',nDig=(10,2),min=0.1,max=1.2,size=wx.Size(60,20),OnLeave=OnSizeHatoms)
     8799            sizeH = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'sizeH',nDig=(10,2),xmin=0.1,xmax=1.2,size=wx.Size(60,20),OnLeave=OnSizeHatoms)
    86848800            radSizer.Add(sizeH,0,WACV)
    86858801   
    86868802            radSizer.Add(wx.StaticText(drawOptions,-1,' Bond search factor:  '),0,WACV)
    8687             radFactor = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'radiusFactor',nDig=(10,2),min=0.1,max=1.2,size=wx.Size(60,20),OnLeave=OnRadFactor)
     8803            radFactor = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'radiusFactor',nDig=(10,2),xmin=0.1,xmax=1.2,size=wx.Size(60,20),OnLeave=OnRadFactor)
    86888804            radSizer.Add(radFactor,0,WACV)
    86898805            return radSizer
     
    87238839            planeSizer1.Add(wx.StaticText(drawOptions,label=' Plane: '),0,WACV)
    87248840            H = drawingData['Plane'][0]
    8725 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     8841#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    87268842            plane = wx.TextCtrl(drawOptions,value='%3d %3d %3d'%(H[0],H[1],H[2]),
    87278843                style=wx.TE_PROCESS_ENTER)
     
    87798895        mapSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,'Show Map points within:'),0,WACV)
    87808896        mapSizer.Add(G2G.ValidatedTxtCtrl(drawOptions,drawingData,'PeakDistRadius',
    8781                             min=0.0,max=5.0,nDig=(10,1),size=(50,-1)))
     8897                            xmin=0.0,xmax=5.0,nDig=(10,1),size=(50,-1)))
    87828898        mapSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,u"\u212B"),0,WACV)
    87838899        mapSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,'Show atoms within:'),0,WACV)
    87848900        mapSizer.Add(G2G.ValidatedTxtCtrl(drawOptions,drawingData,'atomsExpandRadius',
    8785                             min=0.0,max=15.0,nDig=(10,1),size=(50,-1)))
     8901                            xmin=0.0,xmax=15.0,nDig=(10,1),size=(50,-1)))
    87868902        mapSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,u"\u212B"),0,WACV)
    87878903        mapSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,'Label distance to atoms within:'),0,WACV)
    87888904        mapSizer.Add(G2G.ValidatedTxtCtrl(drawOptions,drawingData,'atomsDistRadius',
    8789                             min=0.0,max=15.0,nDig=(10,1),size=(50,-1)))
     8905                            xmin=0.0,xmax=15.0,nDig=(10,1),size=(50,-1)))
    87908906        mapSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,u"\u212B"),0,WACV)
    87918907        mainSizer.Add(mapSizer)
     
    90369152            shPenalty.Add(hklList,0,WACV)
    90379153            shPenalty.Add(wx.StaticText(Texture,wx.ID_ANY,' Zero MRD tolerance: '),0,WACV)
    9038             shToler = G2G.ValidatedTxtCtrl(Texture,Penalty,1,nDig=(10,2),min=0.001)
     9154            shToler = G2G.ValidatedTxtCtrl(Texture,Penalty,1,nDig=(10,2),xmin=0.001)
    90399155            shPenalty.Add(shToler,0,WACV)
    90409156            return shPenalty
     
    91499265            PTSizer.Add(wx.StaticText(Texture,-1,' Pole figure HKL: '),0,WACV)
    91509266            PH = textureData['PFhkl']
    9151 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     9267#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    91529268            pfVal = wx.TextCtrl(Texture,-1,'%d %d %d'%(PH[0],PH[1],PH[2]),style=wx.TE_PROCESS_ENTER)
    91539269        else:
    91549270            PTSizer.Add(wx.StaticText(Texture,-1,' Inverse pole figure XYZ: '),0,WACV)
    91559271            PX = textureData['PFxyz']
    9156 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     9272#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    91579273            pfVal = wx.TextCtrl(Texture,-1,'%3.1f %3.1f %3.1f'%(PX[0],PX[1],PX[2]),style=wx.TE_PROCESS_ENTER)
    91589274        pfVal.Bind(wx.EVT_TEXT_ENTER,OnPFValue)
     
    96739789            topSizer.Add(wx.StaticText(RigidBodies,-1,'Rotation angle, vector:'),0,WACV)
    96749790            for ix,x in enumerate(Orien):
    9675 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     9791#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    96769792                orien = wx.TextCtrl(RigidBodies,-1,value='%8.4f'%(x),style=wx.TE_PROCESS_ENTER)
    96779793                orien.Bind(wx.EVT_TEXT_ENTER,OnOrien)
     
    1022210338                OriSizer.Add(wx.StaticText(RigidBodies,wx.ID_ANY,lbl[ix]),0,WACV,4)
    1022310339                origX = G2G.ValidatedTxtCtrl(RigidBodies,rbObj['Orig'][0],ix,nDig=(10,5),
    10224                             min=-1.5,max=1.5,typeHint=float,
     10340                            xmin=-1.5,xmax=1.5,typeHint=float,
    1022510341                                                 OnLeave=UpdateTablePlot)
    1022610342                OriSizer.Add(origX,0,WACV)
     
    1069210808                atomsizer.Add(wx.StaticText(G2frame.MCSA,-1,' Range: '),0,WACV)
    1069310809                rmin,rmax = model['Pos'][2][ix]
    10694 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10810#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1069510811                posRange = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f'%(rmin,rmax),style=wx.TE_PROCESS_ENTER)
    1069610812                Indx[posRange.GetId()] = [model,'Pos',ix]
     
    1076610882                rbsizer1.Add(wx.StaticText(G2frame.MCSA,-1,' Range: '),0,WACV)
    1076710883                rmin,rmax = model['Pos'][2][ix]
    10768 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10884#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1076910885                posRange = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f'%(rmin,rmax),style=wx.TE_PROCESS_ENTER)
    1077010886                Indx[posRange.GetId()] = [model,'Pos',ix]
     
    1077610892            Ori = model['Ori'][0]
    1077710893            rbsizer2.Add(wx.StaticText(G2frame.MCSA,-1,'Oa: '),0,WACV)
    10778 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10894#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1077910895            angVal = wx.TextCtrl(G2frame.MCSA,-1,'%.5f'%(Ori[0]),style=wx.TE_PROCESS_ENTER)
    1078010896            angVal.Bind(wx.EVT_TEXT_ENTER,OnOriVal)
     
    1078210898            rbsizer2.Add(angVal,0,WACV)
    1078310899            rbsizer2.Add(wx.StaticText(G2frame.MCSA,-1,'Oi,Oj,Ok: '),0,WACV)
    10784 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10900#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1078510901            vecVal = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f %.3f'%(Ori[1],Ori[2],Ori[3]),style=wx.TE_PROCESS_ENTER)
    1078610902            vecVal.Bind(wx.EVT_TEXT_ENTER,OnOriVal)
     
    1079810914            rbsizer2.Add(wx.StaticText(G2frame.MCSA,-1,' Range: Oa: '),0,WACV)
    1079910915            Rge = model['Ori'][2]
    10800 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10916#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1080110917            angRange = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f'%(Rge[0][0],Rge[0][1]),style=wx.TE_PROCESS_ENTER)
    1080210918            Indx[angRange.GetId()] = [model,'Ori',0]
     
    1080710923            for io,item in enumerate(['Oi','Oj','Ok']):
    1080810924                rmin,rmax = Rge[io+1]
    10809 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10925#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1081010926                vecRange = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f '%(rmin,rmax),style=wx.TE_PROCESS_ENTER)
    1081110927                Indx[vecRange.GetId()] = [model,'Ori',io+1]
     
    1083210948                        rbsizer3.Add(wx.StaticText(G2frame.MCSA,-1,' Range: '),0,WACV)
    1083310949                        rmin,rmax = model['Tor'][2][it]
    10834 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     10950#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1083510951                        torRange = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f'%(rmin,rmax),style=wx.TE_PROCESS_ENTER)
    1083610952                        Indx[torRange.GetId()] = [model,'Tor',it]
     
    1088110997            poRef.Bind(wx.EVT_CHECKBOX,OnPORef)
    1088210998            poSizer.Add(poRef,0,WACV)
    10883             poVal = G2G.ValidatedTxtCtrl(G2frame.MCSA,POData['Coef'],0,nDig=(10,3),min=0.)
     10999            poVal = G2G.ValidatedTxtCtrl(G2frame.MCSA,POData['Coef'],0,nDig=(10,3),xmin=0.)
    1088411000            poSizer.Add(poVal,0,WACV)
    1088511001            poSizer.Add(wx.StaticText(G2frame.MCSA,-1,' Range: '),0,WACV)
    1088611002            rmin,rmax = POData['Coef'][2]
    10887 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     11003#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1088811004            poRange = wx.TextCtrl(G2frame.MCSA,-1,'%.3f %.3f'%(rmin,rmax),style=wx.TE_PROCESS_ENTER)
    1088911005            poRange.Bind(wx.EVT_TEXT_ENTER,OnPORange)
     
    1089211008            poSizer.Add(wx.StaticText(G2frame.MCSA,-1,' Unique axis, H K L: '),0,WACV)
    1089311009            h,k,l = POData['axis']
    10894 #            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),min=0.01,max=4.0)
     11010#            Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0)
    1089511011            poAxis = wx.TextCtrl(G2frame.MCSA,-1,'%3d %3d %3d'%(h,k,l),style=wx.TE_PROCESS_ENTER)
    1089611012            poAxis.Bind(wx.EVT_TEXT_ENTER,OnPOAxis)
     
    1129411410            pawlQVal.SetValue(temp['Qmax'])
    1129511411        pawlVal = G2G.ValidatedTxtCtrl(genDlg,generalData,'Pawley dmin',
    11296             min=0.25,max=20.,nDig=(10,5),typeHint=float,OnLeave=d2Q)
     11412            xmin=0.25,xmax=20.,nDig=(10,5),typeHint=float,OnLeave=d2Q)
    1129711413        pawleySizer.Add(pawlVal,0,WACV)
    1129811414        pawleySizer.Add(wx.StaticText(genDlg,label='   Qmax: '),0,WACV)
     
    1130211418            pawlVal.SetValue(generalData['Pawley dmin'])       
    1130311419        pawlQVal = G2G.ValidatedTxtCtrl(genDlg,temp,'Qmax',
    11304             min=0.314,max=25.,nDig=(10,5),typeHint=float,OnLeave=Q2D)
     11420            xmin=0.314,xmax=25.,nDig=(10,5),typeHint=float,OnLeave=Q2D)
    1130511421        pawleySizer.Add(pawlQVal,0,WACV)
    1130611422        mainSizer.Add(pawleySizer)
     
    1130811424        pawleySizer.Add(wx.StaticText(genDlg,label=' Pawley neg. wt.: '),0,WACV)
    1130911425        pawlNegWt = G2G.ValidatedTxtCtrl(genDlg,generalData,'Pawley neg wt',
    11310             min=0.,max=1.,nDig=(10,4),typeHint=float)
     11426            xmin=0.,xmax=1.,nDig=(10,4),typeHint=float)
    1131111427        pawleySizer.Add(pawlNegWt,0,WACV)
    1131211428        mainSizer.Add(pawleySizer)
     
    1215712273        G2frame.Bind(wx.EVT_MENU, OnDefineRB, id=G2G.wxID_DRAWDEFINERB)
    1215812274        G2frame.Bind(wx.EVT_MENU, FillMolecule, id=G2G.wxID_DRAWADDMOLECULE)
     12275        G2frame.Bind(wx.EVT_MENU, MapVoid, id=G2G.wxID_DRAWVOIDMAP)
    1215912276       
    1216012277        # RB Models
  • trunk/GSASIIplot.py

    r4486 r4491  
    41124112    txt = wx.StaticText(dlg,wx.ID_ANY,'Pixels/inch:')
    41134113    hbox.Add(txt,0,wx.ALL|wx.ALIGN_CENTER_VERTICAL)
    4114     val = G2G.ValidatedTxtCtrl(dlg,plotOpt,'dpi',min=60,max=1600,size=(40,-1))
     4114    val = G2G.ValidatedTxtCtrl(dlg,plotOpt,'dpi',xmin=60,xmax=1600,size=(40,-1))
    41154115    hbox.Add(val,0,wx.ALL)
    41164116    txt = wx.StaticText(dlg,wx.ID_ANY,' Width (in):')
    41174117    hbox.Add(txt,0,wx.ALL|wx.ALIGN_CENTER_VERTICAL)
    4118     val = G2G.ValidatedTxtCtrl(dlg,plotOpt,'width',min=3.,max=20.,nDig=(5,1),size=(45,-1))
     4118    val = G2G.ValidatedTxtCtrl(dlg,plotOpt,'width',xmin=3.,xmax=20.,nDig=(5,1),size=(45,-1))
    41194119    hbox.Add(val,0,wx.ALL)
    41204120    txt = wx.StaticText(dlg,wx.ID_ANY,' Height (in):')
    41214121    hbox.Add(txt,0,wx.ALL|wx.ALIGN_CENTER_VERTICAL)
    4122     val = G2G.ValidatedTxtCtrl(dlg,plotOpt,'height',min=3.,max=20.,nDig=(5,1),size=(45,-1))
     4122    val = G2G.ValidatedTxtCtrl(dlg,plotOpt,'height',xmin=3.,xmax=20.,nDig=(5,1),size=(45,-1))
    41234123    hbox.Add(val,0,wx.ALL)
    41244124    txt = wx.StaticText(dlg,wx.ID_ANY,'File format:')
     
    79287928################################################################################
    79297929           
    7930 def PlotStructure(G2frame,data,firstCall=False,pageCallback=None):
     7930def PlotStructure(G2frame,data,firstCall=False,pageCallback=None,
     7931                    voidMap=[],voidRadius=.1):
    79317932    '''Crystal structure plotting package. Can show structures as balls, sticks, lines,
    79327933    thermal motion ellipsoids and polyhedra. Magnetic moments shown as black/red
     
    79417942      update items on the parent page. Currently implemented for
    79427943      RB Models tab only
     7944    :param list voidMap: a list of coordinates to be plotted as small spheres
     7945    :param float voidRadius: radius of spheres drawn for void map
    79437946    '''
    79447947
     
    88968899#        if caller:
    88978900#            print (caller,generalData['Name'])
     8901#    Bob: why not use a traceback? See GSASIIobj.HowDidIgetHere()
    88988902# end of useful debug
    88998903        vdWRadii = generalData['vdWRadii']
     
    92479251#            agg = canvas.switch_backends(Canvas)
    92489252            RenderViewPlane(msize*eplane,Zimg,width,height)
    9249                
     9253        for x,y,z in voidMap:
     9254             RenderSphere(x,y,z,voidRadius,(0,1.,0))
    92509255        try:
    92519256            if Page.context: Page.canvas.SetCurrent(Page.context)
  • trunk/GSASIIpwdGUI.py

    r4483 r4491  
    245245        dataSizer.Add(smCombo,0,WACV)
    246246        dataSizer.Add(wx.StaticText(self.panel,label=' Maximum radial dist.: '),0,WACV)
    247         maxR = G2G.ValidatedTxtCtrl(self.panel,self.result,'maxR',nDig=(10,1),min=10.,max=50.,
     247        maxR = G2G.ValidatedTxtCtrl(self.panel,self.result,'maxR',nDig=(10,1),xmin=10.,xmax=50.,
    248248            typeHint=float)
    249249        dataSizer.Add(maxR,0,WACV)
     
    17001700            limits.Add(wx.StaticText(G2frame.dataWindow,label=' New: '),0,WACV)
    17011701            limits.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data[1],i,  \
    1702                 min=data[0][0],max=data[0][1],nDig=(10,4),typeHint=float,OnLeave=AfterChange))
     1702                xmin=data[0][0],xmax=data[0][1],nDig=(10,4),typeHint=float,OnLeave=AfterChange))
    17031703        return limits
    17041704       
     
    17201720            for i in [0,1]:
    17211721                excl.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,item,i,  \
    1722                     min=data[0][0],max=data[0][1],nDig=(10,4),typeHint=float,OnLeave=AfterChange))
     1722                    xmin=data[0][0],xmax=data[0][1],nDig=(10,4),typeHint=float,OnLeave=AfterChange))
    17231723            delExcl = wx.CheckBox(G2frame.dataWindow,label='')
    17241724            Indx[delExcl.GetId()] = Id
     
    29432943            subSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Volume fraction: '),0,WACV)
    29442944            volfrac = G2G.ValidatedTxtCtrl(G2frame.dataWindow,item,'VolFrac',
    2945                 min=0.,max=1.,nDig=(10,3),typeHint=float,OnLeave=OnVolFrac)
     2945                xmin=0.,xmax=1.,nDig=(10,3),typeHint=float,OnLeave=OnVolFrac)
    29462946            subSizer.Add(volfrac,0,WACV)
    29472947            try:
     
    43274327    littleSizer.Add(NcNo,0,WACV)
    43284328    littleSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Start Volume '),0,WACV)
    4329     startVol = G2G.ValidatedTxtCtrl(G2frame.dataWindow,controls,3,typeHint=int,min=25)
     4329    startVol = G2G.ValidatedTxtCtrl(G2frame.dataWindow,controls,3,typeHint=int,xmin=25)
    43304330    littleSizer.Add(startVol,0,WACV)
    43314331    x20 = wx.CheckBox(G2frame.dataWindow,label='Use M20/(X20+1)?')
     
    43834383        littleSizer.Add(wx.StaticText(G2frame.dataWindow,label=" Zero offset "),0,WACV)
    43844384        zero = G2G.ValidatedTxtCtrl(G2frame.dataWindow,controls,1,nDig=(10,4),typeHint=float,
    4385                                     min=-5.,max=5.,size=(50,-1))
     4385                                    xmin=-5.,xmax=5.,size=(50,-1))
    43864386        littleSizer.Add(zero,0,WACV)
    43874387        zeroVar = wx.CheckBox(G2frame.dataWindow,label="Refine?")
     
    44884488                valSizer = wx.BoxSizer(wx.HORIZONTAL)
    44894489                modVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,ssopt['ModVec'],i,
    4490                     min=-.98,max=.98,nDig=(10,4),typeHint=float,OnLeave=OnModVal)
     4490                    xmin=-.98,xmax=.98,nDig=(10,4),typeHint=float,OnLeave=OnModVal)
    44914491                valSizer.Add(modVal,0,WACV)
    44924492                modSpin = wx.SpinButton(G2frame.dataWindow,style=wx.SP_VERTICAL,size=wx.Size(20,20))
     
    56215621            partSizer.Add(wx.StaticText(G2frame.dataWindow,label=shapes[data['Size']['Shape'][0]]),0,WACV)
    56225622            partprm = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Size']['Shape'],1,
    5623                 nDig=(10,3),typeHint=float,min=0.)
     5623                nDig=(10,3),typeHint=float,xmin=0.)
    56245624            partSizer.Add(partprm,0,WACV)
    56255625        sizeSizer.Add(partSizer,0)
     
    57025702        binSizer.Add(nbins,0,WACV)
    57035703        binSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Max diam.: '),0,WACV)
    5704         maxdiam = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Pair'],'MaxRadius',min=10.,nDig=(10,1),OnLeave=OnNewVal)
     5704        maxdiam = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Pair'],'MaxRadius',xmin=10.,nDig=(10,1),OnLeave=OnNewVal)
    57055705        binSizer.Add(maxdiam,0,WACV)
    57065706        maxest = wx.Button(G2frame.dataWindow,label='Make estimate')
     
    57245724            mooreSizer = wx.BoxSizer(wx.HORIZONTAL)
    57255725            mooreSizer.Add(wx.StaticText(G2frame.dataWindow,label='Number of functions: '),0,WACV)
    5726             moore = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Pair'],'Moore',min=2,max=20)
     5726            moore = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Pair'],'Moore',xmin=2,xmax=20)
    57275727            mooreSizer.Add(moore,0,WACV)
    57285728            mooreterms = wx.Button(G2frame.dataWindow,label = 'Auto determine?')
     
    57375737        error.Bind(wx.EVT_COMBOBOX,OnError)
    57385738        if 'Percent' in data['Pair']['Errors']:
    5739             percent = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Pair'],'Percent error',min=0.5,nDig=(10,1))
     5739            percent = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Pair'],'Percent error',xmin=0.5,nDig=(10,1))
    57405740            errorSizer.Add(percent,0,WACV)
    57415741        errorSizer.Add(error,0,WACV)
     
    57815781#1st row       
    57825782        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' No. amino acids: '),0,WACV)
    5783         numAA = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'NumAA',min=10)
     5783        numAA = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'NumAA',xmin=10)
    57845784        parmSizer.Add(numAA,0,WACV)
    57855785        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Nballs=no. amino acids*'),0,WACV)       
    5786         scaleAA = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'AAscale',min=0.01,max=10.,nDig=(10,2))
     5786        scaleAA = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'AAscale',xmin=0.01,xmax=10.,nDig=(10,2))
    57875787        parmSizer.Add(scaleAA,0,WACV)
    57885788#2nd row       
    57895789        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Inflate by (1.-1.4): '),0,WACV)       
    5790         inflate = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'inflateV',min=1.,max=1.4,nDig=(10,2))
     5790        inflate = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'inflateV',xmin=1.,xmax=1.4,nDig=(10,2))
    57915791        parmSizer.Add(inflate,0,WACV)
    57925792        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Axial symmetry (1-12): '),0,WACV)       
    5793         symm = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'Symm',min=1,max=12)
     5793        symm = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'Symm',xmin=1,xmax=12)
    57945794        parmSizer.Add(symm,0,WACV)
    57955795#3rd row
    57965796        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' z-axis bias (-2 to 2): '),0,WACV)       
    5797         zaxis = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'bias-z',min=-2.,max=2.,nDig=(10,2))
     5797        zaxis = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'bias-z',xmin=-2.,xmax=2.,nDig=(10,2))
    57985798        parmSizer.Add(zaxis,0,WACV)
    57995799        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' elongation (0-20): '),0,WACV)       
    5800         glue = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'AAglue',min=0.,max=20.,nDig=(10,2))
     5800        glue = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'AAglue',xmin=0.,xmax=20.,nDig=(10,2))
    58015801        parmSizer.Add(glue,0,WACV)
    58025802#4th row
    58035803        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' No. iterations (1-10): '),0,WACV)       
    5804         niter = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'Niter',min=1,max=10)
     5804        niter = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'Niter',xmin=1,xmax=10)
    58055805        parmSizer.Add(niter,0,WACV)
    58065806        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Output name: '),0,WACV)       
     
    58095809#last row
    58105810        parmSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Bead separation (3.5-5): '),0,WACV)
    5811         beadsep = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'boxStep',min=3.5,max=5,nDig=(10,1))
     5811        beadsep = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Shapes'],'boxStep',xmin=3.5,xmax=5,nDig=(10,1))
    58125812        parmSizer.Add(beadsep,0,WACV)       
    58135813#        pdb = wx.CheckBox(G2frame.dataWindow,label=' Save as pdb files?: ')
     
    59675967                    sizeSizer.Add(wx.StaticText(G2frame.dataWindow,label=' R dist. cutoff: '),0,WACV)
    59685968                    rCutoff = G2G.ValidatedTxtCtrl(G2frame.dataWindow,level['Controls'],'Cutoff',
    5969                         min=0.001,max=0.1,typeHint=float)
     5969                        xmin=0.001,xmax=0.1,typeHint=float)
    59705970                    sizeSizer.Add(rCutoff,0,WACV)
    59715971            elif level['Controls']['DistType']  in ['Unified',]:
     
    64286428        resol.Add(dQSel,0,WACV)
    64296429        resol.Add(wx.StaticText(G2frame.dataWindow,label=' (FWHM %): '),0,WACV)
    6430         resol.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Resolution'],0,nDig=(10,3),min=0.,max=5.,OnLeave=NewRes),0,WACV)
     6430        resol.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['Resolution'],0,nDig=(10,3),xmin=0.,xmax=5.,OnLeave=NewRes),0,WACV)
    64316431        controlSizer.Add(resol,0,WACV)
    64326432        minimiz = wx.BoxSizer(wx.HORIZONTAL)
     
    64386438        minimiz.Add(minSel,0,WACV)
    64396439        minimiz.Add(wx.StaticText(G2frame.dataWindow,label=' Bounds factor: '),0,WACV)
    6440         minimiz.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Toler',nDig=(10,2),max=0.99,min=0.1),0,WACV)
     6440        minimiz.Add(G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Toler',nDig=(10,2),xmax=0.99,xmin=0.1),0,WACV)
    64416441        weight = wx.CheckBox(G2frame.dataWindow,label='Use 2% sig. weights')
    64426442        weight.SetValue(data.get('2% weight',False))
     
    69376937            elemSizer.Add(wx.StaticText(parent=G2frame.dataWindow,
    69386938                label=' Element: '+'%2s'%(ElData['Symbol'])+' * '),0,WACV)
    6939             num = G2G.ValidatedTxtCtrl(G2frame.dataWindow,ElData,'FormulaNo',nDig=(10,3),min=0.0,
     6939            num = G2G.ValidatedTxtCtrl(G2frame.dataWindow,ElData,'FormulaNo',nDig=(10,3),xmin=0.0,
    69406940                typeHint=float,OnLeave=AfterChange)
    69416941            elemSizer.Add(num,0,WACV)
     
    69706970        midSizer = wx.BoxSizer(wx.HORIZONTAL)
    69716971        midSizer.Add(wx.StaticText(G2frame.dataWindow,label=' Formula volume: '),0,WACV)
    6972         formVol = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Form Vol',nDig=(10,3),min=10.0,
     6972        formVol = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Form Vol',nDig=(10,3),xmin=10.0,
    69736973            typeHint=float,OnLeave=AfterChange)
    69746974        midSizer.Add(formVol,0)
     
    69896989        geoBox.Add(geometry,0)
    69906990        geoBox.Add(wx.StaticText(G2frame.dataWindow,label=' Sample diameter/thickness, mm: '),0,WACV)
    6991         diam = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Diam',nDig=(10,3),min=0.01,
     6991        diam = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Diam',nDig=(10,3),xmin=0.01,
    69926992            typeHint=float,OnLeave=AfterChange)
    69936993        geoBox.Add(diam,0)
     
    69966996        geoBox = wx.BoxSizer(wx.HORIZONTAL)
    69976997        geoBox.Add(wx.StaticText(G2frame.dataWindow,label=' Packing: '),0,WACV)
    6998         pack = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Pack',nDig=(10,2),min=0.01,
     6998        pack = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Pack',nDig=(10,2),xmin=0.01,
    69996999            typeHint=float,OnLeave=AfterChange)
    70007000        geoBox.Add(pack,0)
     
    70897089        if data['DetType'] == 'Area detector':
    70907090            sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' IP transmission coeff.: '),0,WACV)
    7091             obliqCoeff = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'ObliqCoeff',nDig=(10,3),min=0.0,max=1.0,
     7091            obliqCoeff = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'ObliqCoeff',nDig=(10,3),xmin=0.0,xmax=1.0,
    70927092                typeHint=float,OnLeave=AfterChangeNoRefresh)
    70937093            sqBox.Add(obliqCoeff,0)
    70947094        sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' Flat Bkg.: '),0,WACV)
    7095         G2frame.flatBkg = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Flat Bkg',nDig=(10,0),min=0,
     7095        G2frame.flatBkg = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Flat Bkg',nDig=(10,0),xmin=0,
    70967096                typeHint=float,OnLeave=AfterChangeNoRefresh)
    70977097        sqBox.Add(G2frame.flatBkg,0)
     
    71147114        bkBox.Add(backSldr,1,wx.EXPAND)
    71157115        backSldr.Bind(wx.EVT_SLIDER, OnBackSlider)
    7116         backVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'BackRatio',nDig=(10,3),min=0.0,max=1.0,
     7116        backVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'BackRatio',nDig=(10,3),xmin=0.0,xmax=1.0,
    71177117            typeHint=float,OnLeave=AfterChangeNoRefresh)
    71187118        bkBox.Add(backVal,0,WACV)   
     
    71267126            sqBox.Add(rulandSldr,1,wx.EXPAND)
    71277127            rulandSldr.Bind(wx.EVT_SLIDER, OnRulSlider)
    7128             rulandWdt = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Ruland',nDig=(10,3),min=0.001,max=1.0,
     7128            rulandWdt = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Ruland',nDig=(10,3),xmin=0.001,xmax=1.0,
    71297129                typeHint=float,OnLeave=AfterChangeNoRefresh)
    71307130            sqBox.Add(rulandWdt,0,WACV)   
     
    71347134        sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' Scaling Q-range: '),0,WACV)
    71357135        SQmin = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['QScaleLim'],0,nDig=(10,3),
    7136             min=qLimits[0],max=.95*data['QScaleLim'][1],
     7136            xmin=qLimits[0],xmax=.95*data['QScaleLim'][1],
    71377137            typeHint=float,OnLeave=AfterChangeNoRefresh)
    71387138        sqBox.Add(SQmin,0,WACV)
    71397139        sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' to Qmax '),0,WACV)
    71407140        SQmax = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data['QScaleLim'],1,nDig=(10,3),
    7141             min=qLimits[0],max=qLimits[1],typeHint=float,OnLeave=NewQmax)
     7141            xmin=qLimits[0],xmax=qLimits[1],typeHint=float,OnLeave=NewQmax)
    71427142        sqBox.Add(SQmax,0,WACV)
    71437143        resetQ = wx.Button(G2frame.dataWindow,label='Reset?',style=wx.BU_EXACTFIT)
     
    71457145        resetQ.Bind(wx.EVT_BUTTON, OnResetQ)
    71467146        sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' Plot Rmax: '),0,WACV)
    7147         rmax = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Rmax',nDig=(10,1),min=10.,max=200.,
     7147        rmax = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Rmax',nDig=(10,1),xmin=10.,xmax=200.,
    71487148            typeHint=float,OnLeave=AfterChangeNoRefresh,size=wx.Size(50,20))
    71497149        sqBox.Add(rmax,0,WACV)
     
    74927492        limitBox.Add(wx.StaticText(G2frame.dataWindow,label=' PDF Limits: '),0,WACV)
    74937493        lowLim = G2G.ValidatedTxtCtrl(G2frame.dataWindow,peaks['Limits'],0,nDig=(10,3),
    7494             min=0.,max=10.,typeHint=float,OnLeave=NewLim)
     7494            xmin=0.,xmax=10.,typeHint=float,OnLeave=NewLim)
    74957495        limitBox.Add(lowLim,0,WACV)
    74967496        highLim = G2G.ValidatedTxtCtrl(G2frame.dataWindow,peaks['Limits'],1,nDig=(10,3),
    7497             min=peaks['Limits'][0],max=10.,typeHint=float,OnLeave=NewLim)
     7497            xmin=peaks['Limits'][0],xmax=10.,typeHint=float,OnLeave=NewLim)
    74987498        limitBox.Add(highLim,0,WACV)
    74997499        return limitBox
     
    75127512        backBox.Add(wx.StaticText(G2frame.dataWindow,label=' Background slope: '),0,WACV)
    75137513        slope = G2G.ValidatedTxtCtrl(G2frame.dataWindow,peaks['Background'][1],1,nDig=(10,3),
    7514             min=-4.*np.pi,max=0.,typeHint=float,OnLeave=NewBack)
     7514            xmin=-4.*np.pi,xmax=0.,typeHint=float,OnLeave=NewBack)
    75157515        backBox.Add(slope,0,WACV)
    75167516        refbk = wx.CheckBox(parent=G2frame.dataWindow,label=' Refine?')
Note: See TracChangeset for help on using the changeset viewer.