Changeset 5341
- Timestamp:
- Oct 1, 2022 7:23:35 PM (12 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrlGUI.py
r5340 r5341 32 32 or list value. Optionally calls function when a 33 33 choice is selected 34 :func:`G2CheckBoxFrontLbl` A version of :class:`G2CheckBox` that places the label 35 for the check box in front. Otherwise works the same. 34 36 :class:`G2SliderWidget` A customized combination of a wx.Slider and a validated 35 37 wx.TextCtrl (see :class:`ValidatedTxtCtrl`). … … 1393 1395 log.LogVarChange(self.loc,self.key) 1394 1396 if self.OnChange: self.OnChange(event) 1395 1397 1398 def G2CheckBoxFrontLbl(parent,label,loc,key,OnChange=None): 1399 '''A customized version of a CheckBox that automatically initializes 1400 the control to a supplied list or dict entry and updates that 1401 entry as the widget is used. Same as :class:`G2CheckBox` except the 1402 label is placed before the CheckBox and returns a sizer rather than the 1403 G2CheckBox. 1404 1405 If the CheckBox is needed, use Sizer.myCheckBox. 1406 ''' 1407 Sizer = wx.BoxSizer(wx.HORIZONTAL) 1408 Sizer.Add(wx.StaticText(parent,label=label),0,WACV) 1409 checkBox = G2CheckBox(parent,'',loc,key,OnChange) 1410 Sizer.Add(checkBox,0,WACV) 1411 Sizer.myCheckBox = checkBox 1412 return Sizer 1413 1396 1414 #### Commonly used dialogs ################################################################################ 1397 1415 def CallScrolledMultiEditor(parent,dictlst,elemlst,prelbl=[],postlbl=[], -
trunk/GSASIIphsGUI.py
r5328 r5341 1185 1185 # atomInfo[cs] = list(generalData['Color'][atNum]) 1186 1186 # return atomInfo 1187 1187 1188 def getPawleydRange(G2frame,data): 1189 'find d-space range in used histograms' 1190 fmtd = lambda d: '?' if d is None else '{:.5f}'.format(d) 1191 dmaxAll = dminAll = None 1192 Histograms,Phases = G2frame.GetUsedHistogramsAndPhasesfromTree() 1193 nhist = 0 1194 for item in data['Histograms']: 1195 if 'PWDR' not in item: continue 1196 if not data['Histograms'][item]['Use']: continue 1197 nhist += 1 1198 Inst = Histograms[item]['Instrument Parameters'][0] 1199 dmax,dmin = [G2lat.Pos2dsp(Inst,t) for t in Histograms[item]['Limits'][1]] 1200 if dmaxAll is None: 1201 dmaxAll = dmax 1202 else: 1203 dmaxAll = max(dmaxAll,dmax) 1204 if dminAll is None: 1205 dminAll = dmin 1206 else: 1207 dminAll = min(dminAll,dmin) 1208 # format data range 1209 lbl =" d-space range {} to {} {}-1 ({} histograms)".format( 1210 fmtd(dminAll),fmtd(dmaxAll),Angstr,nhist) 1211 if dmaxAll is None: dmaxAll = 100. 1212 if dminAll is None: dminAll = 0.25 1213 return dminAll,dmaxAll,nhist,lbl 1214 1188 1215 def getAtomSelections(AtmTbl,cn=0,action='action',includeView=False,ask=True): 1189 1216 '''get selected atoms from table or ask user if none are selected … … 2328 2355 2329 2356 def PawleySizer(): 2330 2331 def OnPawleyRef(event): 2332 generalData['doPawley'] = pawlRef.GetValue() 2357 # find d-space range in used histograms 2358 dmin,dmax,nhist,lbl = getPawleydRange(G2frame,data) 2333 2359 2334 2360 pawleySizer = wx.BoxSizer(wx.HORIZONTAL) 2335 2361 pawleySizer.Add(wx.StaticText(General,label=' Pawley controls: '),0,WACV) 2336 pawlRef = wx.CheckBox(General,-1,label=' Do Pawley refinement?') 2337 pawlRef.SetValue(generalData['doPawley']) 2338 pawlRef.Bind(wx.EVT_CHECKBOX,OnPawleyRef) 2362 if nhist == 0: # no data, no Pawley 2363 pawleySizer.Add(wx.StaticText(General,label=' no data'),0,WACV) 2364 generalData['doPawley'] = False 2365 return pawleySizer 2366 # force limits on dmin & dmax 2367 generalData['Pawley dmax'] = min(generalData['Pawley dmax'],dmax) 2368 generalData['Pawley dmin'] = max(generalData['Pawley dmin'],dmin) 2369 2370 pawlRef = G2G.G2CheckBoxFrontLbl(General,' Do Pawley refinement?', 2371 generalData,'doPawley') 2339 2372 pawleySizer.Add(pawlRef,0,WACV) 2340 pawleySizer.Add(wx.StaticText(General,label=' Pawleydmin: '),0,WACV)2341 pawlMin = G2G.ValidatedTxtCtrl(General,generalData,'Pawley dmin',size=( 65,25),2342 xmin= 0.25,xmax=20.,nDig=(10,5))2373 pawleySizer.Add(wx.StaticText(General,label=' dmin: '),0,WACV) 2374 pawlMin = G2G.ValidatedTxtCtrl(General,generalData,'Pawley dmin',size=(75,-1), 2375 xmin=dmin,xmax=20.,nDig=(10,5)) 2343 2376 pawleySizer.Add(pawlMin,0,WACV) 2344 pawleySizer.Add(wx.StaticText(General,label=' Pawleydmax: '),0,WACV)2345 pawlMax = G2G.ValidatedTxtCtrl(General,generalData,'Pawley dmax',size=( 65,25),2346 xmin=2.0,xmax= 100.,nDig=(10,5))2377 pawleySizer.Add(wx.StaticText(General,label=' dmax: '),0,WACV) 2378 pawlMax = G2G.ValidatedTxtCtrl(General,generalData,'Pawley dmax',size=(75,-1), 2379 xmin=2.0,xmax=dmax,nDig=(10,5)) 2347 2380 pawleySizer.Add(pawlMax,0,WACV) 2348 2381 pawleySizer.Add(wx.StaticText(General,label=' Pawley neg. wt.: '),0,WACV) 2349 pawlNegWt = G2G.ValidatedTxtCtrl(General,generalData,'Pawley neg wt',size=(65, 25),2382 pawlNegWt = G2G.ValidatedTxtCtrl(General,generalData,'Pawley neg wt',size=(65,-1), 2350 2383 xmin=0.,xmax=1.,nDig=(10,3,'g')) 2351 2384 pawleySizer.Add(pawlNegWt,0,WACV) 2352 return pawleySizer 2385 pawleyOuter = wx.BoxSizer(wx.VERTICAL) 2386 pawleyOuter.Add(pawleySizer) 2387 pawleyOuter.Add(wx.StaticText(General,label=lbl),0,wx.LEFT,120) 2388 return pawleyOuter 2353 2389 2354 2390 def MapSizer(): … … 10159 10195 slideSizer.Add(cameraPos,1,wx.EXPAND|wx.RIGHT) 10160 10196 10161 ZclipTxt = wx.StaticText(drawOptions, -1,' Z clipping, '+Angstr+': ')10197 ZclipTxt = wx.StaticText(drawOptions,wx.ID_ANY,' Z clipping, '+Angstr+': ') 10162 10198 slideSizer.Add(ZclipTxt,0,WACV) 10163 10199 Zval = G2G.ValidatedTxtCtrl(drawOptions,ZclipVal,0,nDig=(10,2),xmin=.01*drawingData['Zclip']*drawingData['cameraPos']/100., … … 10170 10206 slideSizer.Add(Zclip,1,wx.EXPAND|wx.RIGHT) 10171 10207 10172 slideSizer.Add(wx.StaticText(drawOptions, -1,' Z step, '+Angstr+': '),0,WACV)10208 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Z step, '+Angstr+': '),0,WACV) 10173 10209 Zstep = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=4.0,size=valSize) 10174 10210 slideSizer.Add(Zstep,0,WACV) 10175 10211 MoveSizer = wx.BoxSizer(wx.HORIZONTAL) 10176 MoveSizer.Add(wx.StaticText(drawOptions, -1,' Press to step:'),0,WACV)10212 MoveSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Press to step:'),0,WACV) 10177 10213 MoveZ = wx.SpinButton(drawOptions,style=wx.SP_HORIZONTAL,size=valSize) 10178 10214 MoveZ.SetValue(0) … … 10182 10218 slideSizer.Add(MoveSizer,1,wx.EXPAND|wx.RIGHT) 10183 10219 10184 slideSizer.Add(wx.StaticText(drawOptions, -1,' van der Waals scale: '),0,WACV)10220 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' van der Waals scale: '),0,WACV) 10185 10221 vdwScaleTxt = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'Zstep',nDig=(10,2),xmin=0.01,xmax=1.0,size=valSize,OnLeave=OnVdWScaleTxt) 10186 10222 slideSizer.Add(vdwScaleTxt,0,WACV) … … 10189 10225 slideSizer.Add(vdwScale,1,wx.EXPAND|wx.RIGHT) 10190 10226 10191 slideSizer.Add(wx.StaticText(drawOptions, -1,' Ellipsoid probability, %: '),0,WACV)10227 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Ellipsoid probability, %: '),0,WACV) 10192 10228 ellipseProbTxt = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'ellipseProb',nDig=(10,2),xmin=1,xmax=99,size=valSize,OnLeave=OnEllipseProbTxt) 10193 10229 slideSizer.Add(ellipseProbTxt,0,WACV) … … 10197 10233 slideSizer.Add(ellipseProb,1,wx.EXPAND|wx.RIGHT) 10198 10234 10199 slideSizer.Add(wx.StaticText(drawOptions, -1,' Ball scale: '),0,WACV)10235 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Ball scale: '),0,WACV) 10200 10236 ballScaleTxt = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'ballScale',nDig=(10,2),xmin=0.01,xmax=0.99,size=valSize,OnLeave=OnBallScaleTxt) 10201 10237 slideSizer.Add(ballScaleTxt,0,WACV) … … 10204 10240 slideSizer.Add(ballScale,1,wx.EXPAND|wx.RIGHT) 10205 10241 10206 slideSizer.Add(wx.StaticText(drawOptions, -1,' Bond radius, A: '),0,WACV)10242 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Bond radius, '+Angstr+': '),0,WACV) 10207 10243 bondRadiusTxt = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'bondRadius',nDig=(10,2),xmin=0.01,xmax=0.99,size=valSize,OnLeave=OnBondRadiusTxt) 10208 10244 slideSizer.Add(bondRadiusTxt,0,WACV) … … 10212 10248 10213 10249 if generalData['Type'] == 'magnetic': 10214 slideSizer.Add(wx.StaticText(drawOptions, -1,' Mag. mom. mult.: '),0,WACV)10250 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Mag. mom. mult.: '),0,WACV) 10215 10251 magMultTxt = G2G.ValidatedTxtCtrl(drawOptions,drawingData,'magMult',nDig=(10,2),xmin=0.1,xmax=5.,size=valSize,OnLeave=OnMagMultTxt) 10216 10252 slideSizer.Add(magMultTxt,0,WACV) … … 10219 10255 slideSizer.Add(magMult,1,wx.EXPAND|wx.RIGHT) 10220 10256 10221 slideSizer.Add(wx.StaticText(drawOptions, -1,' Bond search factor: '),0,WACV)10257 slideSizer.Add(wx.StaticText(drawOptions,wx.ID_ANY,' Bond search factor: '),0,WACV) 10222 10258 slideSizer.Add(G2G.ValidatedTxtCtrl(drawOptions,drawingData,'radiusFactor', 10223 10259 nDig=(10,2),xmin=0.1,xmax=1.2,size=valSize,OnLeave=OnRadFactor),0,WACV) … … 13555 13591 G2frame.PawleyRefl.AutoSizeColumns(False) 13556 13592 mainSizer.Add(G2frame.PawleyRefl) 13593 for r in range(G2frame.PawleyRefl.GetNumberRows()): 13594 try: 13595 if float(G2frame.PawleyRefl.GetCellValue(r,6)) < 0: 13596 G2frame.PawleyRefl.SetCellBackgroundColour(r,6,wx.RED) 13597 except: 13598 pass 13557 13599 else: 13558 13600 msg = ('\tPawley refinement has not yet been set up. Use the Operations->"Pawley setup"'+ … … 13565 13607 '''Set Pawley parameters and optionally recompute 13566 13608 ''' 13567 13568 13609 def DisablePawleyOpts(*args): 13569 pawlVal.Enable(generalData['doPawley']) 13570 pawlNegWt.Enable(generalData['doPawley']) 13610 for c in controlsList: 13611 c.Enable(generalData['doPawley']) 13612 13613 controlsList = [] 13614 dmin,dmax,nhist,lbl = getPawleydRange(G2frame,data) 13571 13615 generalData = data['General'] 13572 13616 prevPawleySetting = generalData['doPawley'] 13573 generalData['doPawley'] = True # make Pawley extraction the default if we get here 13617 generalData['doPawley'] = True # make Pawley extraction the default if window is opened 13618 if nhist == 0: # no data, no Pawley (probably can't happen here) 13619 generalData['doPawley'] = False 13620 else: 13621 # force limits on dmin & dmax 13622 generalData['Pawley dmax'] = min(generalData['Pawley dmax'],dmax) 13623 generalData['Pawley dmin'] = max(generalData['Pawley dmin'],dmin) 13574 13624 startDmin = generalData['Pawley dmin'] 13575 13625 genDlg = wx.Dialog(G2frame,title='Set Pawley Parameters', … … 13579 13629 'Set Pawley Extraction Parameters for phase '+generalData.get('Name','?'))) 13580 13630 mainSizer.Add([5,10]) 13631 pawlRef = G2G.G2CheckBoxFrontLbl(genDlg,' Do Pawley refinement?: ',generalData,'doPawley',DisablePawleyOpts) 13632 mainSizer.Add(pawlRef) 13633 mainSizer.Add(wx.StaticText(genDlg,label=lbl),0,wx.BOTTOM,10) 13581 13634 pawleySizer = wx.BoxSizer(wx.HORIZONTAL) 13582 pawleySizer.Add(wx.StaticText(genDlg,label=' Do Pawley refinement?: '),0,WACV) 13583 pawlRef = G2G.G2CheckBox(genDlg,'',generalData,'doPawley',DisablePawleyOpts) 13584 pawleySizer.Add(pawlRef,0,WACV) 13635 pawleySizer.Add(wx.StaticText(genDlg,label=' Pawley dmin: '),0,WACV) 13636 #def d2Q(*a,**kw): 13637 # temp['Qmax'] = 2 * math.pi / generalData['Pawley dmin'] 13638 # pawlQVal.SetValue(temp['Qmax']) 13639 pawlVal = G2G.ValidatedTxtCtrl(genDlg,generalData,'Pawley dmin', 13640 xmin=dmin,xmax=20.,nDig=(10,5),typeHint=float) 13641 # xmin=dmin,xmax=20.,nDig=(10,5),typeHint=float,OnLeave=d2Q) 13642 controlsList.append(pawlVal) 13643 pawleySizer.Add(pawlVal,0,WACV) 13644 #pawleySizer.Add(wx.StaticText(genDlg,label=' Qmax: '),0,WACV) 13645 #temp = {'Qmax':2 * math.pi / generalData['Pawley dmin']} 13646 #def Q2D(*args,**kw): 13647 # generalData['Pawley dmin'] = 2 * math.pi / temp['Qmax'] 13648 # pawlVal.SetValue(generalData['Pawley dmin']) 13649 #pawlQVal = G2G.ValidatedTxtCtrl(genDlg,temp,'Qmax', 13650 # xmin=0.314,xmax=25.,nDig=(10,5),typeHint=float,OnLeave=Q2D) 13651 #controlsList.append(pawlQVal) 13652 #pawleySizer.Add(pawlQVal,0,WACV) 13585 13653 mainSizer.Add(pawleySizer) 13654 13586 13655 pawleySizer = wx.BoxSizer(wx.HORIZONTAL) 13587 pawleySizer.Add(wx.StaticText(genDlg,label=' Pawley dmin: '),0,WACV) 13588 def d2Q(*a,**kw): 13589 temp['Qmax'] = 2 * math.pi / generalData['Pawley dmin'] 13590 pawlQVal.SetValue(temp['Qmax']) 13591 pawlVal = G2G.ValidatedTxtCtrl(genDlg,generalData,'Pawley dmin', 13592 xmin=0.25,xmax=20.,nDig=(10,5),typeHint=float,OnLeave=d2Q) 13656 pawleySizer.Add(wx.StaticText(genDlg,label=' Pawley dmax: '),0,WACV) 13657 pawlVal = G2G.ValidatedTxtCtrl(genDlg,generalData,'Pawley dmax', 13658 xmin=2.,xmax=dmax,nDig=(10,5),typeHint=float) 13659 controlsList.append(pawlVal) 13593 13660 pawleySizer.Add(pawlVal,0,WACV) 13594 pawleySizer.Add(wx.StaticText(genDlg,label=' Qmax: '),0,WACV)13595 temp = {'Qmax':2 * math.pi / generalData['Pawley dmin']}13596 def Q2D(*args,**kw):13597 generalData['Pawley dmin'] = 2 * math.pi / temp['Qmax']13598 pawlVal.SetValue(generalData['Pawley dmin'])13599 pawlQVal = G2G.ValidatedTxtCtrl(genDlg,temp,'Qmax',13600 xmin=0.314,xmax=25.,nDig=(10,5),typeHint=float,OnLeave=Q2D)13601 pawleySizer.Add(pawlQVal,0,WACV)13602 13661 mainSizer.Add(pawleySizer) 13662 13603 13663 pawleySizer = wx.BoxSizer(wx.HORIZONTAL) 13604 13664 pawleySizer.Add(wx.StaticText(genDlg,label=' Pawley neg. wt.: '),0,WACV) … … 13606 13666 xmin=0.,xmax=1.,nDig=(10,4),typeHint=float) 13607 13667 pawleySizer.Add(pawlNegWt,0,WACV) 13668 controlsList.append(pawlNegWt) 13608 13669 mainSizer.Add(pawleySizer) 13609 13670 … … 13640 13701 finally: 13641 13702 dlg.Destroy() 13642 OnPawleyLoad(event)13703 wx.CallAfter(OnPawleyLoad,event) 13643 13704 else: 13644 13705 wx.CallAfter(FillPawleyReflectionsGrid) … … 13695 13756 wx.EndBusyCursor() 13696 13757 data['Pawley ref'] = PawleyPeaks 13697 FillPawleyReflectionsGrid() 13758 13759 dlg = wx.MessageDialog(G2frame,'Do you want to initialize Pawley reflection intensities? ("Pawley estimate" command)','Initialize Pawley?', 13760 wx.YES_NO | wx.ICON_QUESTION) 13761 try: 13762 result = dlg.ShowModal() 13763 if result == wx.ID_NO: 13764 wx.CallAfter(FillPawleyReflectionsGrid) 13765 return 13766 finally: 13767 dlg.Destroy() 13768 wx.CallAfter(OnPawleyEstimate,event) 13698 13769 13699 13770 def OnPawleyEstimate(event):
Note: See TracChangeset
for help on using the changeset viewer.