Changeset 1143 for trunk/GSASIIpwdGUI.py


Ignore:
Timestamp:
Nov 10, 2013 8:32:26 PM (9 years ago)
Author:
toby
Message:

rework constraints to handle names and refine flag for new var (input linear constraints); redo powder 'Sample Parameters'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwdGUI.py

    r1107 r1143  
    6363def SetDefaultSample():
    6464    'Needs a doc string'
    65     return {'ranId':ran.randint(0,sys.maxint),
     65    return {
     66        'ranId':ran.randint(0,sys.maxint),
    6667        'Scale':[1.0,True],'Type':'Debye-Scherrer','Absorption':[0.0,False],
    6768        'DisplaceX':[0.0,False],'DisplaceY':[0.0,False],'Diffuse':[],
    68         'Temperature':300.,'Pressure':1.0,'Humidity':0.0,
    69         'Voltage':0.0,'Force':0.0,'Gonio. radius':200.0,
    70         'Omega':0.0,'Chi':0.0,'Phi':0.0}
     69        'Temperature':300.,'Pressure':1.0,
     70        'FreePrm1':0.,'FreePrm2':0.,'FreePrm3':0.,
     71        'Gonio. radius':200.0,
     72        'Omega':0.0,'Chi':0.0,'Phi':0.0
     73        }
    7174                         
    7275################################################################################
     
    12391242            dlg.Destroy()
    12401243
     1244    def OnScaleRef(event):
     1245        Obj = event.GetEventObject()
     1246        data['Scale'][1] = Obj.GetValue()
     1247       
     1248    def OnScaleVal(event):
     1249        Obj = event.GetEventObject()
     1250        try:
     1251            scale = float(Obj.GetValue())
     1252            if scale > 0:
     1253                data['Scale'][0] = scale
     1254        except ValueError:
     1255            pass
     1256        Obj.SetValue("%.4f"%(data['Scale'][0]))          #reset in case of error
     1257       
     1258    def OnHistoType(event):
     1259        Obj = event.GetEventObject()
     1260        data['Type'] = Obj.GetValue()
     1261        if data['Type'] == 'Bragg-Brentano' and 'Shift' not in data:    #set up defaults for new type(s)
     1262            data['Shift'] = [0.0,False]
     1263            data['Transparency'] = [0.0,False]
     1264        wx.CallAfter(UpdateSampleGrid,G2frame,data)
     1265       
     1266    def SetNameVal():
     1267        inst = instNameVal.GetValue()
     1268        data['InstrName'] = inst.strip()
     1269
     1270    def OnNameVal(event):
     1271        event.Skip()
     1272        wx.CallAfter(SetNameVal)       
     1273
     1274    ######## DEBUG #######################################################
     1275    #import GSASIIpwdGUI
     1276    #reload(GSASIIpwdGUI)
     1277    #reload(G2gd)
     1278    ######################################################################
    12411279    if G2frame.dataDisplay:
    12421280        G2frame.dataFrame.Clear()
     
    12501288        Status = G2frame.dataFrame.CreateStatusBar()   
    12511289    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
    1252 
     1290    Controls = G2frame.PatternTree.GetItemPyData(
     1291        G2gd.GetPatternTreeItemId(G2frame,G2frame.root, 'Controls'))
    12531292#patch
    12541293    if 'ranId' not in data:
     
    12581297    if not 'Omega' in data:
    12591298        data.update({'Omega':0.0,'Chi':0.0,'Phi':0.0})
     1299    if type(data['Temperature']) is int:
     1300        data['Temperature'] = float(data['Temperature'])
     1301    if 'FreePrm1' not in Controls:
     1302        Controls['FreePrm1'] = 'Sample humidity (%)'
     1303    if 'FreePrm2' not in Controls:
     1304        Controls['FreePrm2'] = 'Sample voltage (V)'
     1305    if 'FreePrm3' not in Controls:
     1306        Controls['FreePrm3'] = 'Applied load (MN)'
     1307    if 'FreePrm1' not in data:
     1308        data['FreePrm1'] = 0.
     1309    if 'FreePrm2' not in data:
     1310        data['FreePrm2'] = 0.
     1311    if 'FreePrm3' not in data:
     1312        data['FreePrm3'] = 0.
    12601313#patch end
    12611314   
    1262     parms = [['Gonio. radius',' Goniometer radius(mm): ','%.2f',]]
     1315    parms = []
     1316    parms.append(['Scale','Histogram scale factor: '])
     1317    parms.append(['Gonio. radius','Goniometer radius (mm): '])
    12631318    if data['Type'] == 'Debye-Scherrer':
    1264         parms += [['DisplaceX',u' Sample X displ. perp. to beam (\xb5m): ','%.2f',],
    1265             ['DisplaceY',u' Sample Y displ. || to beam (\xb5m): ','%.2f',],
    1266             ['Absorption',u' Sample absorption(\xb5r): ','%.4f',],]
     1319        parms += [['DisplaceX',u'Sample X displ. perp. to beam (\xb5m): '],
     1320            ['DisplaceY',u'Sample Y displ. || to beam (\xb5m): '],
     1321            ['Absorption',u'Sample absorption (\xb5\xb7r): '],]
    12671322    elif data['Type'] == 'Bragg-Brentano':
    1268         parms += [['Shift',u' Sample displacement(\xb5m): ','%.2f',],
    1269             ['Transparency',u' Sample transparency(1/\xb5eff,cm): ','%.4f'],]
    1270     parms.append(['Omega','Goniometer omega:','%.2f'])
    1271     parms.append(['Chi','Goniometer chi:','%.2f'])
    1272     parms.append(['Phi','Goniometer phi:','%.2f'])
    1273     parms.append(['Temperature',' Sample temperature(K): ','%.2f'])
    1274     parms.append(['Pressure',' Sample pressure(MPa): ','%.3f'])
    1275     parms.append(['Humidity',' Sample humidity(%): ','%.1f'])
    1276     parms.append(['Voltage',' Sample voltage(V): ','%.3f'])
    1277     parms.append(['Force',' Applied load(MN): ','%.3f'])
    1278     objList = {}
    1279 
    1280     def OnScaleRef(event):
    1281         Obj = event.GetEventObject()
    1282         data['Scale'][1] = Obj.GetValue()
    1283        
    1284     def OnScaleVal(event):
    1285         Obj = event.GetEventObject()
    1286         try:
    1287             scale = float(Obj.GetValue())
    1288             if scale > 0:
    1289                 data['Scale'][0] = scale
    1290         except ValueError:
    1291             pass
    1292         Obj.SetValue("%.4f"%(data['Scale'][0]))          #reset in case of error
    1293        
    1294     def OnHistoType(event):
    1295         Obj = event.GetEventObject()
    1296         data['Type'] = Obj.GetValue()
    1297         if data['Type'] == 'Bragg-Brentano' and 'Shift' not in data:    #set up defaults for new type(s)
    1298             data['Shift'] = [0.0,False]
    1299             data['Transparency'] = [0.0,False]
    1300         wx.CallAfter(UpdateSampleGrid,G2frame,data)
    1301        
    1302     def OnParmRef(event):
    1303         Obj = event.GetEventObject()
    1304         parm = objList[Obj.GetId()]
    1305         data[parm][1] = Obj.GetValue()
    1306        
    1307     def OnParmVal(event):
    1308         Obj = event.GetEventObject()
    1309         parm = objList[Obj.GetId()]
    1310         try:
    1311             if 'list' in str(type(data[parm[0]])):
    1312                 data[parm[0]][0] = float(Obj.GetValue())
    1313             else:
    1314                 data[parm[0]] = float(Obj.GetValue())
    1315         except ValueError:
    1316             pass
    1317         if 'list' in str(type(data[parm[0]])):
    1318             Obj.SetValue(parm[2]%(data[parm[0]][0]))          #reset in case of error
    1319         else:
    1320             Obj.SetValue(parm[2]%(data[parm[0]]))          #reset in case of error
    1321 
    1322     def SetNameVal():
    1323         inst = instNameVal.GetValue()
    1324         data['InstrName'] = inst.strip()
    1325 
    1326     def OnNameVal(event):
    1327         event.Skip()
    1328         wx.CallAfter(SetNameVal)       
     1323        parms += [['Shift',u'Sample displacement(\xb5m): '],
     1324            ['Transparency',u'Sample transparency(1/\xb5eff, cm): '],]
     1325    parms.append(['Omega','Goniometer omega:',])
     1326    parms.append(['Chi','Goniometer chi:',])
     1327    parms.append(['Phi','Goniometer phi:',])
     1328    parms.append(['Temperature','Sample temperature (K): ',])
     1329    parms.append(['Pressure','Sample pressure (MPa): ',])
    13291330               
    13301331    mainSizer = wx.BoxSizer(wx.VERTICAL)
    13311332    topSizer = wx.BoxSizer(wx.HORIZONTAL)
    13321333    topSizer.Add((-1,-1),1,wx.EXPAND,1)
    1333     topSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample and Experimental Parameters'))
     1334    topSizer.Add(wx.StaticText(G2frame.dataDisplay,label='Sample and Experimental Parameters'))
    13341335    topSizer.Add((-1,-1),1,wx.EXPAND,1)
    13351336    mainSizer.Add(topSizer,0,wx.EXPAND,1)
    13361337    nameSizer = wx.BoxSizer(wx.HORIZONTAL)
    1337     nameSizer.Add(wx.StaticText(G2frame.dataDisplay,wx.ID_ANY,'Instrument Name'),
     1338    nameSizer.Add(wx.StaticText(G2frame.dataDisplay,wx.ID_ANY,' Instrument Name'),
    13381339                0,wx.ALIGN_CENTER_VERTICAL)
    13391340    nameSizer.Add((-1,-1),1,wx.EXPAND,1)
     
    13431344    instNameVal.Bind(wx.EVT_CHAR,OnNameVal)
    13441345    mainSizer.Add(nameSizer,0,wx.EXPAND,1)
    1345     mainSizer.Add((0,5),0)
     1346    mainSizer.Add((5,5),0)
    13461347
    1347     mainSizer.Add((5,5),0)
    1348     parmSizer = wx.FlexGridSizer(10,2,5,0)
    1349     scaleRef = wx.CheckBox(G2frame.dataDisplay,label=' Histogram scale factor: ')
    1350     scaleRef.SetValue(data['Scale'][1])
    1351     scaleRef.Bind(wx.EVT_CHECKBOX, OnScaleRef)
    1352     parmSizer.Add(scaleRef,0,wx.ALIGN_CENTER_VERTICAL)
    1353     scaleVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,
    1354         '%.4f'%(data['Scale'][0]),style=wx.TE_PROCESS_ENTER)
    1355     scaleVal.Bind(wx.EVT_TEXT_ENTER,OnScaleVal)
    1356     scaleVal.Bind(wx.EVT_KILL_FOCUS,OnScaleVal)
    1357     parmSizer.Add(scaleVal,0,wx.ALIGN_CENTER_VERTICAL)
    1358     typeSizer = wx.BoxSizer(wx.HORIZONTAL)
     1348    nameSizer = wx.BoxSizer(wx.HORIZONTAL)
     1349    nameSizer.Add(wx.StaticText(G2frame.dataDisplay,wx.ID_ANY,' Diffractometer type: '),
     1350                0,wx.ALIGN_CENTER_VERTICAL)
    13591351    choices = ['Debye-Scherrer','Bragg-Brentano',]
    13601352    histoType = wx.ComboBox(G2frame.dataDisplay,wx.ID_ANY,value=data['Type'],choices=choices,
    13611353        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    13621354    histoType.Bind(wx.EVT_COMBOBOX, OnHistoType)
    1363     parmSizer.Add(histoType)
    1364     parmSizer.Add((5,5),0)
    1365    
    1366     for parm in parms:
    1367         if 'list' in str(type(data[parm[0]])):
    1368             parmRef = wx.CheckBox(G2frame.dataDisplay,label=parm[1])
    1369             objList[parmRef.GetId()] = parm[0]
    1370             parmRef.SetValue(data[parm[0]][1])
    1371             parmRef.Bind(wx.EVT_CHECKBOX, OnParmRef)
    1372             parmSizer.Add(parmRef,0,wx.ALIGN_CENTER_VERTICAL)
    1373             parmVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,
    1374                 parm[2]%(data[parm[0]][0]),style=wx.TE_PROCESS_ENTER)
     1355    nameSizer.Add(histoType)
     1356    mainSizer.Add(nameSizer,0,wx.EXPAND,1)
     1357    mainSizer.Add((5,5),0)
     1358
     1359    parmSizer = wx.FlexGridSizer(10,2,5,0)
     1360    for key,lbl in parms:
     1361        if 'list' in str(type(data[key])):
     1362            parmRef = G2gd.G2CheckBox(G2frame.dataDisplay,' '+lbl,data[key],1)
     1363            parmSizer.Add(parmRef,0,wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
     1364            parmVal = G2gd.ValidatedTxtCtrl(G2frame.dataDisplay,data[key],0,typeHint=float)
    13751365        else:
    1376             parmSizer.Add(wx.StaticText(G2frame.dataDisplay,label=parm[1]),
    1377                 0,wx.ALIGN_CENTER_VERTICAL)
    1378             parmVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,
    1379                 parm[2]%(data[parm[0]]),style=wx.TE_PROCESS_ENTER)       
    1380         objList[parmVal.GetId()] = parm
    1381         parmVal.Bind(wx.EVT_TEXT_ENTER,OnParmVal)
    1382         parmVal.Bind(wx.EVT_KILL_FOCUS,OnParmVal)
     1366            parmSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' '+lbl),
     1367                0,wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
     1368            parmVal = G2gd.ValidatedTxtCtrl(G2frame.dataDisplay,data,key,typeHint=float)
    13831369        parmSizer.Add(parmVal,1,wx.EXPAND)
    1384     mainSizer.Add(parmSizer)
     1370    for key in ('FreePrm1','FreePrm2','FreePrm3'):
     1371        parmVal = G2gd.ValidatedTxtCtrl(G2frame.dataDisplay,Controls,key,typeHint=str,
     1372                                        notBlank=False)
     1373        parmSizer.Add(parmVal,1,wx.EXPAND)
     1374        parmVal = G2gd.ValidatedTxtCtrl(G2frame.dataDisplay,data,key,typeHint=float)
     1375        parmSizer.Add(parmVal,1,wx.EXPAND)
     1376    mainSizer.Add(parmSizer,1,wx.EXPAND)
    13851377    mainSizer.Add((0,5),0)   
    13861378   
Note: See TracChangeset for help on using the changeset viewer.