Changeset 2567


Ignore:
Timestamp:
Dec 8, 2016 1:11:10 PM (6 years ago)
Author:
vondreele
Message:

fix to export CIF sym. op. problem
use ValidatedTxtctrl? for all values in PDF Controls, Background & RDFDialog

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwd.py

    r2561 r2567  
    361361    nR = len(xydata['GofR'][1][1])
    362362#    mul = 12
    363     mul = int(round(2.*np.pi*nR/(data['Rmax']*qLimits[1])))
     363    mul = int(round(2.*np.pi*nR/(data.get('Rmax',100.)*qLimits[1])))
    364364    xydata['GofR'][1][0] = 2.*np.pi*np.linspace(0,nR,nR)/(mul*qLimits[1])
    365365    xydata['GofR'][1][1] = -dq*np.imag(ft.fft(xydata['FofQ'][1][1],mul*nR)[:nR])
  • trunk/GSASIIpwdGUI.py

    r2564 r2567  
    7575        def OnSmCombo(event):
    7676            self.result['Smooth'] = smCombo.GetValue()
    77            
    78         def OnMaxR(event):
    79             event.Skip()
    80             try:
    81                 val = float(maxR.GetValue())
    82                 if val <= 0.:
    83                     raise ValueError
    84             except ValueError:
    85                 val = self.result['maxR']
    86             self.result['maxR'] = val
    87             maxR.SetValue('%.1f'%(val))
    88        
     77                   
    8978        self.panel.Destroy()
    9079        self.panel = wx.Panel(self)
     
    10392        dataSizer.Add(smCombo,0,WACV)
    10493        dataSizer.Add(wx.StaticText(self.panel,label=' Maximum radial dist.: '),0,WACV)
    105         maxR = wx.TextCtrl(self.panel,value='%.1f'%(self.result['maxR']),style=wx.TE_PROCESS_ENTER)
    106         maxR.Bind(wx.EVT_TEXT_ENTER,OnMaxR)       
    107         maxR.Bind(wx.EVT_KILL_FOCUS,OnMaxR)
     94        maxR = G2G.ValidatedTxtCtrl(self.panel,self.result,'maxR',nDig=(10,1),min=10.,max=50.,
     95            typeHint=float)
    10896        dataSizer.Add(maxR,0,WACV)
    10997        mainSizer.Add(dataSizer,0,WACV)
     
    869857    if 'nPeaks' not in data[1]:
    870858        data[1].update({'nPeaks':0,'peaksList':[]})
    871     ValObj = {}
    872859   
    873860    def OnBackFlagCopy(event):
     
    10721059            wx.CallLater(100,UpdateBackground,G2frame,data)
    10731060           
    1074         def OnBakVal(event):
    1075             event.Skip()
    1076             Obj = event.GetEventObject()
    1077             item = ValObj[Obj.GetId()][0]
    1078             try:
    1079                 value = float(Obj.GetValue())
    1080             except ValueError:
    1081                 value = data[0][item]
    1082             data[0][item] = value
    1083             Obj.SetValue('%10.4f'%(value))
    1084        
    10851061        backSizer = wx.BoxSizer(wx.VERTICAL)
    10861062        topSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    11051081        bakSizer = wx.FlexGridSizer(0,5,5,5)
    11061082        for i,value in enumerate(data[0][3:]):
    1107             bakVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.4g'%(value),style=wx.TE_PROCESS_ENTER)
     1083            bakVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data[0],i+3,nDig=(10,4),typeHint=float)
    11081084            bakSizer.Add(bakVal,0,WACV)
    1109             ValObj[bakVal.GetId()] = [i+3]
    1110             bakVal.Bind(wx.EVT_TEXT_ENTER,OnBakVal)
    1111             bakVal.Bind(wx.EVT_KILL_FOCUS,OnBakVal)
    11121085        backSizer.Add(bakSizer)
    11131086        return backSizer
     
    12671240    '''respond to selection of PWDR Limits data tree item.
    12681241    '''
    1269 #    if G2frame.dataDisplay:
    1270 #        G2frame.dataFrame.Clear()
    1271 #    G2frame.ifGetExclude = False
    1272 #       
    1273 #    def KeyEditPeakGrid(event):
    1274 #        '''for deleting excluded regions
    1275 #        '''
    1276 #        if event.GetKeyCode() == wx.WXK_DELETE:
    1277 #            row = G2frame.dataDisplay.GetSelectedRows()[0]
    1278 #            if row > 1: #can't delete limits!
    1279 #                del(data[row])
    1280 #                wx.CallAfter(UpdateLimitsGrid,G2frame,data,plottype)
    1281 #                G2plt.PlotPatterns(G2frame,plotType=plottype)
    1282 #                       
    1283 #    def RefreshLimitsGrid(event):
    1284 #        event.StopPropagation()
    1285 #        data = G2frame.LimitsTable.GetData()
    1286 #        old = data[0]
    1287 #        new = data[1]
    1288 #        new[0] = max(old[0],new[0])
    1289 #        new[1] = max(new[0],min(old[1],new[1]))
    1290 #        excl = []
    1291 #        if len(data) > 2:
    1292 #            excl = data[2:]
    1293 #            for item in excl:
    1294 #                item[0] = max(old[0],item[0])
    1295 #                item[1] = max(item[0],min(old[1],item[1]))
    1296 #        data = [old,new]+excl
    1297 #        G2frame.LimitsTable.SetData(data)
    1298 #        G2plt.PlotPatterns(G2frame,plotType=plottype)
    1299 #       
    1300 #    def OnLimitCopy(event):
    1301 #        hst = G2frame.PatternTree.GetItemText(G2frame.PatternId)
    1302 #        histList = GetHistsLikeSelected(G2frame)
    1303 #        if not histList:
    1304 #            G2frame.ErrorDialog('No match','No histograms match '+hst,G2frame.dataFrame)
    1305 #            return
    1306 #        copyList = []
    1307 #        dlg = G2G.G2MultiChoiceDialog(
    1308 #            G2frame.dataFrame,
    1309 #            'Copy limits from\n'+str(hst[5:])+' to...',
    1310 #            'Copy limits', histList)
    1311 #        try:
    1312 #            if dlg.ShowModal() == wx.ID_OK:
    1313 #                for i in dlg.GetSelections():
    1314 #                    item = histList[i]
    1315 #                    Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)
    1316 #                    G2frame.PatternTree.SetItemPyData(
    1317 #                        G2gd.GetPatternTreeItemId(G2frame,Id,'Limits'),copy.copy(data))
    1318 #        finally:
    1319 #            dlg.Destroy()
    1320 #           
    1321 #    def OnAddExcl(event):
    1322 #        G2frame.ifGetExclude = True
    1323 #        print 'Add excluded region'
    1324 #       
    1325 #    G2frame.LimitsTable = []
    1326 #    colLabels = ['Tmin','Tmax']
    1327 #    rowLabels = ['original','changed']
    1328 #    for i in range(len(data)-2):
    1329 #        rowLabels.append('exclude')
    1330 #    Types = 2*[wg.GRID_VALUE_FLOAT+':12,5',]
    1331 #    G2frame.LimitsTable = G2G.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)
    1332 #    G2frame.dataFrame.SetLabel('Limits')
    1333 #    G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.LimitMenu)
    1334 #    if not G2frame.dataFrame.GetStatusBar():
    1335 #        Status = G2frame.dataFrame.CreateStatusBar()
    1336 #    if len(data)>2:
    1337 #        Status.SetStatusText('To delete excluded region: select & press Delete key')
    1338 #    G2frame.Bind(wx.EVT_MENU,OnLimitCopy,id=G2gd.wxID_LIMITCOPY)
    1339 #    G2frame.Bind(wx.EVT_MENU,OnAddExcl,id=G2gd.wxID_ADDEXCLREGION)   
    1340 #    G2frame.dataDisplay = G2G.GSGrid(parent=G2frame.dataFrame)
    1341 #    G2frame.dataDisplay.SetTable(G2frame.LimitsTable, True)   
    1342 #    G2frame.dataDisplay.SetCellStyle(0,0,VERY_LIGHT_GREY,True)
    1343 #    G2frame.dataDisplay.SetCellStyle(0,1,VERY_LIGHT_GREY,True)
    1344 #    G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshLimitsGrid)               
    1345 #    G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
    1346 #    G2frame.dataDisplay.SetMargins(0,0)
    1347 #    G2frame.dataDisplay.AutoSizeColumns(False)
    1348 #    G2frame.dataFrame.setSizePosLeft([230,260])                               
    1349 #    G2frame.dataFrame.SendSizeEvent()
    1350 #   
    1351 #
    13521242    def LimitSizer():
    13531243        limits = wx.FlexGridSizer(2,3,0,5)
     
    47794669            data[fileKey][itemKey] = value
    47804670            UpdatePDFGrid(G2frame,data)
    4781        
    4782         def OnValueChange(event):
    4783             event.Skip()
    4784             Obj = event.GetEventObject()
    4785             fileKey,itemKey,fmt = itemDict[Obj.GetId()]
    4786             try:
    4787                 value = float(Obj.GetValue())
    4788             except ValueError:
    4789                 value = -1.0
    4790             Obj.SetValue(fmt%(value))
    4791             data[fileKey][itemKey] = value
    4792             wx.CallAfter(OnComputePDF,None)
    47934671           
    47944672        def OnMoveMult(event):
    47954673            data[key]['Mult'] += multSpin.GetValue()*0.01
    4796             mult.SetValue('%.3f'%(data[key]['Mult']))
     4674            mult.SetValue(data[key]['Mult'])
    47974675            wx.CallAfter(OnComputePDF,None)
    47984676                       
     4677        def AfterChange(invalid,value,tc):
     4678            if invalid: return
     4679            wx.CallAfter(OnComputePDF,None)
     4680       
    47994681        item = data[key]
    48004682        fileList = GetFileList('PWDR')
     
    48074689        fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Multiplier:'),0,WACV)
    48084690        mulBox = wx.BoxSizer(wx.HORIZONTAL)
    4809         mult = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(item['Mult']),style=wx.TE_PROCESS_ENTER)
    4810         itemDict[mult.GetId()] = [key,'Mult','%.3f']
    4811         mult.Bind(wx.EVT_TEXT_ENTER,OnValueChange)       
    4812         mult.Bind(wx.EVT_KILL_FOCUS,OnValueChange)
     4691        mult = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,item,'Mult',nDig=(10,3),
     4692            typeHint=float,OnLeave=AfterChange)
    48134693        mulBox.Add(mult,0,)
    48144694        multSpin = wx.SpinButton(G2frame.dataDisplay,style=wx.SP_VERTICAL,size=wx.Size(20,20))
     
    48194699        fileSizer.Add(mulBox,0,WACV)
    48204700        fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Add:'),0,WACV)
    4821         add = wx.TextCtrl(G2frame.dataDisplay,value='%.0f'%(item['Add']),style=wx.TE_PROCESS_ENTER)
    4822         itemDict[add.GetId()] = [key,'Add','%.0f']
    4823         add.Bind(wx.EVT_TEXT_ENTER,OnValueChange)       
    4824         add.Bind(wx.EVT_KILL_FOCUS,OnValueChange)
    4825         fileSizer.Add(add,0,)
     4701        fileSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,item,'Add',nDig=(10,0),
     4702            typeHint=float,OnLeave=AfterChange),0,)
    48264703       
    48274704    def SumElementVolumes():
     
    48364713    def FillElemSizer(elemSizer,ElData):
    48374714       
    4838         def OnFractionChange(event):
    4839             event.Skip()
    4840             try:
    4841                 value = max(0.0,float(num.GetValue()))
    4842             except ValueError:
    4843                 value = 0.0
    4844             num.SetValue('%.3f'%(value))
    4845             ElData['FormulaNo'] = value
     4715        def AfterChange(invalid,value,tc):
     4716            if invalid: return
    48464717            data['Form Vol'] = max(10.0,SumElementVolumes())
    4847             formVol.SetValue('%.2f'%(data['Form Vol']))
    48484718            wx.CallAfter(UpdatePDFGrid,G2frame,data)
    48494719            wx.CallAfter(OnComputePDF,None)
    4850        
     4720               
    48514721        elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,
    48524722            label=' Element: '+'%2s'%(ElData['Symbol'])+' * '),0,WACV)
    4853         num = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(ElData['FormulaNo']),style=wx.TE_PROCESS_ENTER)
    4854         num.Bind(wx.EVT_TEXT_ENTER,OnFractionChange)       
    4855         num.Bind(wx.EVT_KILL_FOCUS,OnFractionChange)
     4723        num = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,ElData,'FormulaNo',nDig=(10,3),min=0.0,
     4724            typeHint=float,OnLeave=AfterChange)
    48564725        elemSizer.Add(num,0,WACV)
    48574726        elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,
     
    48694738        wx.CallAfter(OnComputePDF,None)
    48704739       
    4871     def OnFormVol(event):
    4872         event.Skip()
    4873         try:
    4874             value = float(formVol.GetValue())
    4875             if value <= 0.0:
    4876                 raise ValueError
    4877         except ValueError:
    4878             value = data['Form Vol']
    4879         data['Form Vol'] = value
    4880         UpdatePDFGrid(G2frame,data)
     4740    def AfterChange(invalid,value,tc):
     4741        if invalid: return
     4742        wx.CallAfter(UpdatePDFGrid,G2frame,data)
    48814743        wx.CallAfter(OnComputePDF,None)
    48824744       
    4883     def OnDiameter(event):
    4884         event.Skip()
    4885         try:
    4886             value = float(diam.GetValue())
    4887             if value <= 0.0:
    4888                 raise ValueError
    4889         except ValueError:
    4890             value = data['Diam']
    4891         data['Diam'] = value
    4892         UpdatePDFGrid(G2frame,data)
     4745    def AfterChangeNoRefresh(invalid,value,tc):
     4746        if invalid: return
    48934747        wx.CallAfter(OnComputePDF,None)
    48944748       
    4895 #    def OnPolaVal(event):
    4896 #        event.Skip()
    4897 #        try:
    4898 #            value = float(polaVal.GetValue())
    4899 #            if not (0.0 <= value <= 1.0):
    4900 #                raise ValueError
    4901 #        except ValueError:
    4902 #            value = inst['Polariz.'][1]
    4903 #        inst['Polariz.'][1] = value
    4904 #        polaVal.SetValue('%.2f'%(inst['Polariz.'][1]))
    4905 #        UpdatePDFGrid(G2frame,data)
    4906 #        auxPlot = ComputePDF(data)
    4907 #        G2plt.PlotISFG(G2frame,newPlot=False)
    4908 #               
    4909 #    def OnAzimVal(event):
    4910 #        event.Skip()
    4911 #        try:
    4912 #            value = float(azimVal.GetValue())
    4913 #            if not (0. <= value <= 360.):
    4914 #                raise ValueError
    4915 #        except ValueError:
    4916 #            value = inst['Azimuth'][1]
    4917 #        inst['Azimuth'][1] = value
    4918 #        azimVal.SetValue('%.1f'%(inst['Azimuth'][1]))
    4919 #        UpdatePDFGrid(G2frame,data)
    4920 #        auxPlot = ComputePDF(data)
    4921 #        G2plt.PlotISFG(G2frame,newPlot=False)
    4922 #                       
    4923     def OnObliqCoeff(event):
    4924         event.Skip()
    4925         try:
    4926             value = float(obliqCoeff.GetValue())
    4927             if value < 0.0:
    4928                 raise ValueError
    4929             elif value > 1.0:
    4930                 value = 1.0
    4931         except ValueError:
    4932             value = data['ObliqCoeff']
    4933         data['ObliqCoeff'] = value
    4934         obliqCoeff.SetValue('%.3f'%(value))
    4935         wx.CallAfter(OnComputePDF,None)
    4936        
    4937     def OnBackVal(event):
    4938         event.Skip()
    4939         try:
    4940             value = float(backVal.GetValue())
    4941             value = min(max(0.,value),1.0)
    4942         except ValueError:
    4943             value = data['BackRatio']
    4944         data['BackRatio'] = value
    4945         backVal.SetValue('%.3f'%(value))
     4749    def NewQmax(invalid,value,tc):
     4750        if invalid: return
     4751        data['QScaleLim'][0] = 0.9*value
     4752        SQmin.SetValue(data['QScaleLim'][0])
    49464753        wx.CallAfter(OnComputePDF,None)
    49474754       
     
    49494756        value = int(backSldr.GetValue())/100.
    49504757        data['BackRatio'] = value
    4951         backVal.SetValue('%.3f'%(data['BackRatio']))
    4952         wx.CallAfter(OnComputePDF,None)
    4953        
    4954     def OnRulandWdt(event):
    4955         event.Skip()
    4956         try:
    4957             value = float(rulandWdt.GetValue())
    4958             if value <= 0.001:
    4959                 raise ValueError
    4960             elif value > 1.0:
    4961                 value = 1.0
    4962         except ValueError:
    4963             value = data['Ruland']
    4964         data['Ruland'] = value
    4965         rulandWdt.SetValue('%.3f'%(value))
     4758        backVal.SetValue(data['BackRatio'])
    49664759        wx.CallAfter(OnComputePDF,None)
    49674760       
     
    49694762        value = int(rulandSldr.GetValue())/1000.
    49704763        data['Ruland'] = max(0.001,value)
    4971         rulandWdt.SetValue('%.3f'%(data['Ruland']))
     4764        rulandWdt.SetValue(data['Ruland'])
    49724765        wx.CallAfter(OnComputePDF,None)
    49734766       
     
    49764769        wx.CallAfter(OnComputePDF,None)
    49774770                       
    4978     def OnPacking(event):
    4979         event.Skip()
    4980         try:
    4981             value = float(pack.GetValue())
    4982             if value <= 0.0:
    4983                 raise ValueError
    4984         except ValueError:
    4985             value = data['Pack']
    4986         data['Pack'] = value
    4987         UpdatePDFGrid(G2frame,data)
    4988         wx.CallAfter(OnComputePDF,None)
    4989                
    4990     def OnSQmin(event):
    4991         event.Skip()
    4992         try:
    4993             value = float(SQmin.GetValue())
    4994             if value < qLimits[0]:
    4995                 raise ValueError
    4996         except ValueError:
    4997             value = max(qLimits[0],data['QScaleLim'][0])
    4998         data['QScaleLim'][0] = value
    4999         SQmin.SetValue('%.1f'%(value))
    5000         wx.CallAfter(OnComputePDF,None)
    5001        
    5002     def OnSQmax(event):
    5003         event.Skip()
    5004         try:
    5005             value = float(SQmax.GetValue())
    5006             if value > qLimits[1]:
    5007                 raise ValueError
    5008         except ValueError:
    5009             value = min(qLimits[1],data['QScaleLim'][1])
    5010         data['QScaleLim'][1] = value
    5011         if value < data['QScaleLim'][0]:
    5012             data['QScaleLim'][0] = 0.90*value
    5013             SQmin.SetValue('%.1f'%(data['QScaleLim'][0]))
    5014         SQmax.SetValue('%.1f'%(value))
    5015         wx.CallAfter(OnComputePDF,None)
    5016        
    5017     def OnRmax(event):
    5018         event.Skip()
    5019         try:
    5020             value = float(rmax.GetValue())
    5021             if value > 200. or value < 10.:
    5022                 raise ValueError
    5023         except ValueError:
    5024             value = data['Rmax']
    5025         data['Rmax'] = value
    5026         rmax.SetValue('%.1f'%(value))
    5027         wx.CallAfter(OnComputePDF,None)
    5028        
    50294771    def OnResetQ(event):
    50304772        resetQ.SetValue(False)
    50314773        data['QScaleLim'][1] = qLimits[1]
    5032         SQmax.SetValue('%.1f'%(data['QScaleLim'][1]))
     4774        SQmax.SetValue(data['QScaleLim'][1])
    50334775        data['QScaleLim'][0] = 0.9*qLimits[1]
    5034         SQmin.SetValue('%.1f'%(data['QScaleLim'][0]))
     4776        SQmin.SetValue(data['QScaleLim'][0])
    50354777        wx.CallAfter(OnComputePDF,None)
    50364778       
     
    51964938            print ' Done calculating PDFs:'
    51974939       
    5198     def OnShowTip(G2frame,tip):
    5199         print tip   
    5200                
    52014940    if G2frame.dataDisplay:
    52024941        G2frame.dataFrame.Clear()
     
    52154954
    52164955    ElList = data['ElList']
     4956    mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' PDF data files: '),0,WACV)
     4957    mainSizer.Add((5,5),0)   
     4958    if 'C' in inst['Type'][0]:
     4959        str = ' Sample file: PWDR %s   Wavelength, A: %.5f  Energy, keV: %.3f  Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz)
     4960        mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV)
    52174961    mainSizer.Add((5,5),0)
     4962    fileSizer = wx.FlexGridSizer(0,6,5,1)
     4963    select = ['Sample Bkg.','Container']
     4964    if data['Container']['Name']:
     4965        select.append('Container Bkg.')
     4966    for key in select:
     4967        FillFileSizer(fileSizer,key)
     4968    mainSizer.Add(fileSizer,0)
     4969    G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
    52184970    if not ElList:
    52194971        mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample information: fill in this 1st'),0,WACV)
     
    52304982    midSizer = wx.BoxSizer(wx.HORIZONTAL)
    52314983    midSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Formula volume: '),0,WACV)
    5232     formVol = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(data['Form Vol']))
    5233     formVol.Bind(wx.EVT_TEXT_ENTER,OnFormVol)       
    5234     formVol.Bind(wx.EVT_KILL_FOCUS,OnFormVol)
     4984    formVol = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Form Vol',nDig=(10,3),min=10.0,
     4985        typeHint=float,OnLeave=AfterChange)
    52354986    midSizer.Add(formVol,0)
    52364987    midSizer.Add(wx.StaticText(G2frame.dataDisplay,
     
    52474998    geoBox.Add(geometry,0)
    52484999    geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample diameter/thickness, mm: '),0,WACV)
    5249     diam = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Diam']))
    5250     diam.Bind(wx.EVT_TEXT_ENTER,OnDiameter)       
    5251     diam.Bind(wx.EVT_KILL_FOCUS,OnDiameter)
    5252 #    diam.Bind(wx.EVT_SET_FOCUS,OnShowTip(G2frame,'tip')) #this doesn't work - what would????
     5000    diam = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Diam',nDig=(10,3),min=0.01,
     5001        typeHint=float,OnLeave=AfterChange)
    52535002    geoBox.Add(diam,0)
    52545003    mainSizer.Add(geoBox,0)
     
    52565005    geoBox = wx.BoxSizer(wx.HORIZONTAL)
    52575006    geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Packing: '),0,WACV)
    5258     pack = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(data['Pack']))
    5259     pack.Bind(wx.EVT_TEXT_ENTER,OnPacking)       
    5260     pack.Bind(wx.EVT_KILL_FOCUS,OnPacking)
     5007    pack = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Pack',nDig=(10,2),min=0.01,
     5008        typeHint=float,OnLeave=AfterChange)
    52615009    geoBox.Add(pack,0)
    52625010    geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample transmission: %.3f %%'%(Trans)),0,WACV)   
    52635011    mainSizer.Add(geoBox,0)
    5264     mainSizer.Add((5,5),0)   
    5265     mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' PDF data files: '),0,WACV)
    5266     mainSizer.Add((5,5),0)   
    5267     if 'C' in inst['Type'][0]:
    5268         str = ' Sample file: PWDR %s   Wavelength, A: %.5f  Energy, keV: %.3f  Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz)
    5269         mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV)
    5270 #    dataSizer = wx.BoxSizer(wx.HORIZONTAL)
    5271 #    dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Azimuth'),0,WACV)
    5272 #    azimVal = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(inst['Azimuth']))
    5273 #    azimVal.Bind(wx.EVT_TEXT_ENTER,OnAzimVal)       
    5274 #    azimVal.Bind(wx.EVT_KILL_FOCUS,OnAzimVal)
    5275 #    dataSizer.Add(azimVal,0)   
    5276 #    dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Polarization'),0,WACV)
    5277 #    polaVal = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(inst['Polariz.']))
    5278 #    polaVal.Bind(wx.EVT_TEXT_ENTER,OnPolaVal)       
    5279 #    polaVal.Bind(wx.EVT_KILL_FOCUS,OnPolaVal)
    5280 #    dataSizer.Add(polaVal,0)   
    5281 #    mainSizer.Add(dataSizer,0)
    5282     mainSizer.Add((5,5),0)
    5283     fileSizer = wx.FlexGridSizer(0,6,5,1)
    5284     select = ['Sample Bkg.','Container']
    5285     if data['Container']['Name']:
    5286         select.append('Container Bkg.')
    5287     for key in select:
    5288         FillFileSizer(fileSizer,key)
    5289     mainSizer.Add(fileSizer,0)
    5290     mainSizer.Add((5,5),0)
    5291 
    5292        
     5012       
     5013    G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
    52935014    mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' S(Q)->F(Q)->G(R) controls: '),0,WACV)
    52945015    mainSizer.Add((5,5),0)
     
    53025023    if data['DetType'] == 'Image plate':
    53035024        sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' IP transmission coeff.: '),0,WACV)
    5304         obliqCoeff = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['ObliqCoeff']))
    5305         obliqCoeff.Bind(wx.EVT_TEXT_ENTER,OnObliqCoeff)       
    5306         obliqCoeff.Bind(wx.EVT_KILL_FOCUS,OnObliqCoeff)
     5025        obliqCoeff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'ObliqCoeff',nDig=(10,3),min=0.0,max=1.0,
     5026            typeHint=float,OnLeave=AfterChangeNoRefresh)
    53075027        sqBox.Add(obliqCoeff,0)
    53085028    mainSizer.Add(sqBox,0)
     
    53145034    bkBox.Add(backSldr,1,wx.EXPAND)
    53155035    backSldr.Bind(wx.EVT_SLIDER, OnBackSlider)
    5316     backVal = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['BackRatio']))
    5317     backVal.Bind(wx.EVT_TEXT_ENTER,OnBackVal)       
    5318     backVal.Bind(wx.EVT_KILL_FOCUS,OnBackVal)
     5036    backVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'BackRatio',nDig=(10,3),min=0.0,max=1.0,
     5037        typeHint=float,OnLeave=AfterChangeNoRefresh)
    53195038    bkBox.Add(backVal,0,WACV)   
    53205039    mainSizer.Add(bkBox,0,wx.ALIGN_LEFT|wx.EXPAND)
     
    53265045    sqBox.Add(rulandSldr,1,wx.EXPAND)
    53275046    rulandSldr.Bind(wx.EVT_SLIDER, OnRulSlider)
    5328     rulandWdt = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Ruland']))
    5329     rulandWdt.Bind(wx.EVT_TEXT_ENTER,OnRulandWdt)       
    5330     rulandWdt.Bind(wx.EVT_KILL_FOCUS,OnRulandWdt)
     5047    rulandWdt = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Ruland',nDig=(10,3),min=0.001,max=1.0,
     5048        typeHint=float,OnLeave=AfterChangeNoRefresh)
    53315049    sqBox.Add(rulandWdt,0,WACV)   
    53325050    mainSizer.Add(sqBox,0,wx.ALIGN_LEFT|wx.EXPAND)
     
    53345052    sqBox = wx.BoxSizer(wx.HORIZONTAL)
    53355053    sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Scaling q-range: '),0,WACV)
    5336     SQmin = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['QScaleLim'][0]),size=wx.Size(50,20))
    5337     SQmin.Bind(wx.EVT_KILL_FOCUS,OnSQmin)   
    5338     SQmin.Bind(wx.EVT_TEXT_ENTER,OnSQmin)       
     5054    SQmin = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['QScaleLim'],0,nDig=(10,3),min=qLimits[0],max=.95*data['QScaleLim'][1],
     5055        typeHint=float,OnLeave=AfterChangeNoRefresh)
    53395056    sqBox.Add(SQmin,0,WACV)
    53405057    sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' to Qmax '),0,WACV)
    5341     SQmax = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['QScaleLim'][1]),size=wx.Size(50,20))
    5342     SQmax.Bind(wx.EVT_KILL_FOCUS,OnSQmax)
    5343     SQmax.Bind(wx.EVT_TEXT_ENTER,OnSQmax)       
     5058    SQmax = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['QScaleLim'],1,nDig=(10,3),min=qLimits[0],max=qLimits[1],
     5059        typeHint=float,OnLeave=NewQmax)
    53445060    sqBox.Add(SQmax,0,WACV)
    53455061    resetQ = wx.CheckBox(parent=G2frame.dataDisplay,label='Reset?')
     
    53475063    resetQ.Bind(wx.EVT_CHECKBOX, OnResetQ)
    53485064    sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Rmax: '),0,WACV)
    5349     rmax = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['Rmax']),size=wx.Size(50,20))
    5350     rmax.Bind(wx.EVT_KILL_FOCUS,OnRmax)
    5351     rmax.Bind(wx.EVT_TEXT_ENTER,OnRmax)       
     5065    rmax = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Rmax',nDig=(10,1),min=10.,max=200.,
     5066        typeHint=float,OnLeave=AfterChangeNoRefresh,size=wx.Size(50,20))
    53525067    sqBox.Add(rmax,0,WACV)
    53535068    lorch = wx.CheckBox(parent=G2frame.dataDisplay,label='Lorch damping?')
  • trunk/GSASIIspc.py

    r2549 r2567  
    423423        (see ``SGOps`` in the :ref:`Space Group object<SGData_table>`)
    424424      * G2oprList: The GSAS-II operations for each symmetry operation as
    425         a tuple with (center,mult,opnum), where center is (0,0,0), (0.5,0,0),
     425        a tuple with (center,mult,opnum,opcode), where center is (0,0,0), (0.5,0,0),
    426426        (0.5,0.5,0.5),...; where mult is 1 or -1 for the center of symmetry
    427         and opnum is the number for the symmetry operation, in ``SGOps``
    428         (starting with 0).
     427        where opnum is the number for the symmetry operation, in ``SGOps``
     428        (starting with 0) and opcode is mult*(100*icen+j+1).
    429429    '''
    430430    SGTextList = []
     
    432432    symOpList = []
    433433    G2oprList = []
     434    G2opcodes = []
    434435    onebar = (1,)
    435436    if SGData['SGInv']:
    436437        onebar += (-1,)
    437     for cen in SGData['SGCen']:
     438    for icen,cen in enumerate(SGData['SGCen']):
    438439        for mult in onebar:
    439440            for j,(M,T) in enumerate(SGData['SGOps']):
     
    453454                symOpList.append((mult*M,Tprime))
    454455                G2oprList.append((cen,mult,j))
    455     return SGTextList,offsetList,symOpList,G2oprList
     456                G2opcodes.append(mult*(100*icen+j+1))
     457    return SGTextList,offsetList,symOpList,G2oprList,G2opcodes
    456458   
    457459def MT2text(Opr):
  • trunk/exports/G2export_CIF.py

    r2543 r2567  
    3535import GSASIIgrid as G2gd
    3636import GSASIIctrls as G2G
    37 import GSASIIstrIO as G2stIO
    3837import GSASIImath as G2mth
    39 import GSASIIlattice as G2lat
    4038import GSASIIspc as G2spc
    41 import GSASIIphsGUI as G2pg
    4239import GSASIIstrMain as G2stMn
    43 import GSASIIctrls as G2G
    4440
    4541DEBUG = False    #True to skip printing of reflection/powder profile lists
     
    751747            DisAglData['OrigAtoms'] = xyz
    752748            DisAglData['TargAtoms'] = xyz
    753             SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(
     749            SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps(
    754750                generalData['SGData'])
    755751
    756             xpandSGdata = generalData['SGData'].copy()
    757             xpandSGdata.update({'SGOps':symOpList,
    758                                 'SGInv':False,
    759                                 'SGLatt':'P',
    760                                 'SGCen':np.array([[0, 0, 0]]),})
    761             DisAglData['SGData'] = xpandSGdata
     752#            xpandSGdata = generalData['SGData'].copy()
     753#            xpandSGdata.update({'SGOps':symOpList,
     754#                                'SGInv':False,
     755#                                'SGLatt':'P',
     756#                                'SGCen':np.array([[0, 0, 0]]),})
     757#            DisAglData['SGData'] = xpandSGdata
     758            DisAglData['SGData'] = generalData['SGData'].copy()
    762759
    763760            DisAglData['Cell'] = generalData['Cell'][1:] #+ volume
     
    790787                    line += PutInCol(G2mth.ValEsd(D[3],sig,True),10)
    791788                    line += "  1_555 "
    792                     line += " {:3d}_".format(D[2])
     789                    line += " {:3d}_".format(G2opcodes.index(D[2])+1)
    793790                    for d in D[1]:
    794791                        line += "{:1d}".format(d+5)
     
    819816                    if sig == 0: sig = -0.009
    820817                    line += PutInCol(G2mth.ValEsd(tup[0],sig,True),10)
    821                     line += " {:3d}_".format(Dj[2])
     818                    line += " {:3d}_".format(G2opcodes.index(Dj[2])+1)
    822819                    for d in Dj[1]:
    823820                        line += "{:1d}".format(d+5)
    824821                    line += "  1_555 "
    825                     line += " {:3d}_".format(Dk[2])
     822                    line += " {:3d}_".format(G2opcodes.index(Dk[2])+1)
    826823                    for d in Dk[1]:
    827824                        line += "{:1d}".format(d+5)
     
    861858
    862859            # generate symmetry operations including centering and center of symmetry
    863             SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(
     860            SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps(
    864861                phasedict['General']['SGData'])
    865862            WriteCIFitem('loop_\n    _space_group_symop_id\n    _space_group_symop_operation_xyz')
     
    12441241                    hklmin[i] = min(hkl,hklmin[i])
    12451242                    s += PutInCol(int(hkl),4)
    1246                 import sys
    12471243                if ref[5] == 0.0:
    12481244                    s += PutInCol(G2mth.ValEsd(ref[8],0),12)
     
    14711467            phasenam = event.GetEventObject().phase
    14721468            phasedict = self.Phases[phasenam]
    1473             SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(phasedict['General']['SGData'])
     1469            SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps(phasedict['General']['SGData'])
    14741470            generalData = phasedict['General']
    14751471            # create a dict for storing Pub flag for bonds/angles, if needed
     
    15151511            DisAglData['OrigAtoms'] = xyz
    15161512            DisAglData['TargAtoms'] = xyz
    1517             SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(
     1513            SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps(
    15181514                generalData['SGData'])
    15191515
    1520             xpandSGdata = generalData['SGData'].copy()
    1521             xpandSGdata.update({'SGOps':symOpList,
    1522                                 'SGInv':False,
    1523                                 'SGLatt':'P',
    1524                                 'SGCen':np.array([[0, 0, 0]]),})
    1525             DisAglData['SGData'] = xpandSGdata
     1516#            xpandSGdata = generalData['SGData'].copy()
     1517#            xpandSGdata.update({'SGOps':symOpList,
     1518#                                'SGInv':False,
     1519#                                'SGLatt':'P',
     1520#                                'SGCen':np.array([[0, 0, 0]]),})
     1521#            DisAglData['SGData'] = xpandSGdata
     1522            DisAglData['SGData'] = generalData['SGData'].copy()
    15261523
    15271524            DisAglData['Cell'] = generalData['Cell'][1:] #+ volume
Note: See TracChangeset for help on using the changeset viewer.