Changeset 5047
- Timestamp:
- Oct 14, 2021 4:59:02 PM (20 months ago)
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrlGUI.py
r5020 r5047 752 752 but (unlike _onLoseFocus) don't update the textbox contents. 753 753 ''' 754 if not self.IsModified(): #ignore mouse crusing 755 return 754 if self.type is not str: 755 if not self.IsModified(): return #ignore mouse crusing 756 elif self.result[self.key] == self.GetValue(): # .IsModified() seems unreliable for str 757 return 756 758 if self.evaluated and not self.invalid: # deal with computed expressions 757 759 self.evaluated = False # expression has been recast as value, reset flag … … 771 773 ''' 772 774 if event: event.Skip() 773 if not self.IsModified(): #ignore mouse crusing 774 return 775 if self.type is not str: 776 if not self.IsModified(): return #ignore mouse crusing 777 elif self.result[self.key] == self.GetValue(): # .IsModified() seems unreliable for str 778 return 775 779 if self.evaluated: # deal with computed expressions 776 780 if self.invalid: # don't substitute for an invalid expression -
trunk/GSASIIpath.py
r5046 r5047 924 924 msg = 'Entering IPython console inside {0.f_code.co_filename} at line {0.f_lineno}\n'.format(frame) 925 925 if userMsg: msg += userMsg 926 # globals().update(locals()) # This might help with vars inside list comprehensions, etc. 926 927 ipshell(msg,stack_depth=2) # Go up one level, to see the calling routine 927 928 sys.excepthook = savehook # reset IPython's change to the exception hook -
trunk/config_example.py
r4965 r5047 38 38 39 39 debug = False 40 '''Set to True to turn on debugging mode. This enables use of IPython on41 exceptions and on calls to :func:`GSASIIpath.IPyBreak` . Calls to42 :func:`GSASIIpath.pdbBreak` will invoke pdb at that location.43 44 If debug is False, calls to :func:`GSASIIpath.IPyBreak` and40 '''Set to True to turn on debugging mode. This enables use of IPython on 41 exceptions and on calls to :func:`GSASIIpath.IPyBreak` or breakpoint(). 42 Calls to :func:`GSASIIpath.pdbBreak` will invoke pdb at that location. 43 %% 44 If debug is False, calls to :func:`GSASIIpath.IPyBreak`, breakpoint() and 45 45 :func:`GSASIIpath.pdbBreak` are ignored. 46 %% 47 From inside Spyder, calls to breakpoint() invoke the Spyder debugger, 48 independent of the setting of debug. 49 %% 50 Restart GSAS-II for the setting of debug to take effect. 46 51 ''' 47 52 -
trunk/exports/G2export_CIF.py
r5042 r5047 2698 2698 parameters (mostly related to templates). 2699 2699 ''' 2700 self.cifdefs.DestroyChildren() 2700 if len(self.cifdefs.GetChildren()) > 0: 2701 saveSize = self.cifdefs.GetSize() 2702 self.cifdefs.DestroyChildren() 2703 else: 2704 saveSize = None 2701 2705 self.cifdefs.SetTitle('Edit CIF settings') 2702 2706 vbox = wx.BoxSizer(wx.VERTICAL) … … 2800 2804 vbox.Add(btnsizer, 0, wx.ALIGN_CENTER|wx.ALL, 5) 2801 2805 self.cifdefs.SetSizer(vbox) 2802 vbox.Fit(self.cifdefs) 2806 if not saveSize: 2807 vbox.Fit(self.cifdefs) 2803 2808 self.cifdefs.Layout() 2804 2809 … … 2994 2999 s += '.' 2995 3000 self.CIFname = s 2996 3001 phasebyhistDict = {} # a cross-reference to phases by histogram -- sequential fits 2997 3002 #================================================================= 2998 3003 # write quick CIFs … … 3239 3244 elif seqHistList: 3240 3245 #---- sequential fit project (multiblock) ==================== 3241 phasebyhistDict = {} # create a cross-reference to phases by histogram3242 3246 for phasenam in sorted(self.Phases.keys()): 3243 3247 rId = phasedict['ranId'] … … 3457 3461 self.CellHistSelection[rId] = self._CellSelectHist(phasenam) 3458 3462 nsteps = 1 + len(self.Phases) + len(self.powderDict) + len(self.xtalDict) 3459 dlg = wx.ProgressDialog('CIF progress','starting',nsteps,parent=self.G2frame) 3460 dlg.CenterOnParent() 3461 3462 # publication info 3463 step = 1 3464 dlg.Update(step,"Exporting overall section") 3465 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+'_publ') 3466 WriteAudit() 3467 WriteCIFitem(self.fp, '_pd_block_id', 3468 str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3469 str(self.shortauthorname) + "|Overall") 3470 writeCIFtemplate(self.OverallParms['Controls'],'publ') #insert the publication template 3471 # ``template_publ.cif`` or a modified version 3472 # overall info 3473 WriteCIFitem(self.fp, 'data_'+str(self.CIFname)+'_overall') 3474 WriteOverall() 3475 #============================================================ 3476 WriteCIFitem(self.fp, '# POINTERS TO PHASE AND HISTOGRAM BLOCKS') 3477 datablockidDict = {} # save block names here -- N.B. check for conflicts between phase & hist names (unlikely!) 3478 # loop over phase blocks 3479 if len(self.Phases) > 1: 3480 loopprefix = '' 3481 WriteCIFitem(self.fp, 'loop_ _pd_phase_block_id') 3482 else: 3483 loopprefix = '_pd_phase_block_id' 3484 3485 for phasenam in sorted(self.Phases.keys()): 3486 i = self.Phases[phasenam]['pId'] 3487 datablockidDict[phasenam] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3488 'phase_'+ str(i) + '|' + str(self.shortauthorname)) 3489 WriteCIFitem(self.fp, loopprefix,datablockidDict[phasenam]) 3490 # loop over data blocks 3491 if len(self.powderDict) + len(self.xtalDict) > 1: 3492 loopprefix = '' 3493 WriteCIFitem(self.fp, 'loop_ _pd_block_diffractogram_id') 3494 else: 3495 loopprefix = '_pd_block_diffractogram_id' 3496 for i in sorted(self.powderDict.keys()): 3497 hist = self.powderDict[i] 3498 histblk = self.Histograms[hist] 3499 instnam = histblk["Sample Parameters"]['InstrName'] 3500 instnam = instnam.replace(' ','') 3501 j = histblk['hId'] 3502 datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3503 str(self.shortauthorname) + "|" + 3504 instnam + "_hist_"+str(j)) 3505 WriteCIFitem(self.fp, loopprefix,datablockidDict[hist]) 3506 for i in sorted(self.xtalDict.keys()): 3507 hist = self.xtalDict[i] 3508 histblk = self.Histograms[hist] 3509 instnam = histblk["Instrument Parameters"][0]['InstrName'] 3510 instnam = instnam.replace(' ','') 3511 i = histblk['hId'] 3512 datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3513 str(self.shortauthorname) + "|" + 3514 instnam + "_hist_"+str(i)) 3515 WriteCIFitem(self.fp, loopprefix,datablockidDict[hist]) 3516 #============================================================ 3517 # loop over phases, exporting them 3518 for j,phasenam in enumerate(sorted(self.Phases.keys())): 3519 step += 1 3520 dlg.Update(step,"Exporting phase "+phasenam+' (#'+str(j+1)+')') 3521 i = self.Phases[phasenam]['pId'] 3522 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+"_phase_"+str(i)) 3523 WriteCIFitem(self.fp, '# Information for phase '+str(i)) 3524 WriteCIFitem(self.fp, '_pd_block_id',datablockidDict[phasenam]) 3525 # report the phase 3526 writeCIFtemplate(self.Phases[phasenam]['General'],'phase',phasenam) # write phase template 3527 WritePhaseInfo(phasenam,False,False) 3528 # preferred orientation 3529 if self.ifPWDR: 3530 SH = FormatSH(phasenam) 3531 MD = FormatHAPpo(phasenam) 3532 if SH and MD: 3533 WriteCIFitem(self.fp, '_pd_proc_ls_pref_orient_corr', SH + '\n' + MD) 3534 elif SH or MD: 3535 WriteCIFitem(self.fp, '_pd_proc_ls_pref_orient_corr', SH + MD) 3536 else: 3537 WriteCIFitem(self.fp, '_pd_proc_ls_pref_orient_corr', 'none') 3538 # report sample profile terms for all histograms with current phase 3539 PP = FormatPhaseProfile(phasenam) 3540 if PP: 3541 WriteCIFitem(self.fp, '_pd_proc_ls_profile_function',PP) 3542 self.ShowHstrainCells(phasenam,datablockidDict) 3543 3544 #============================================================ 3545 # loop over histograms, exporting them 3546 # first, get atoms across all phases 3547 uniqueAtoms = [] 3548 for phasenam in self.Phases: 3549 cx,ct,cs,cia = self.Phases[phasenam]['General']['AtomPtrs'] 3550 for line in self.Phases[phasenam]['Atoms']: 3551 atype = line[ct].strip() 3552 if atype.find('-') != -1: atype = atype.split('-')[0] 3553 if atype.find('+') != -1: atype = atype.split('+')[0] 3554 atype = atype[0].upper()+atype[1:2].lower() # force case conversion 3555 if atype == "D" or atype == "D": atype = "H" 3556 if atype not in uniqueAtoms: 3557 uniqueAtoms.append(atype) 3558 3559 for i in sorted(self.powderDict.keys()): 3560 hist = self.powderDict[i] 3561 histblk = self.Histograms[hist] 3562 if hist.startswith("PWDR"): 3463 try: 3464 dlg = wx.ProgressDialog('CIF progress','starting',nsteps,parent=self.G2frame) 3465 dlg.CenterOnParent() 3466 3467 # publication info 3468 step = 1 3469 dlg.Update(step,"Exporting overall section") 3470 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+'_publ') 3471 WriteAudit() 3472 WriteCIFitem(self.fp, '_pd_block_id', 3473 str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3474 str(self.shortauthorname) + "|Overall") 3475 writeCIFtemplate(self.OverallParms['Controls'],'publ') #insert the publication template 3476 # ``template_publ.cif`` or a modified version 3477 # overall info 3478 WriteCIFitem(self.fp, 'data_'+str(self.CIFname)+'_overall') 3479 WriteOverall() 3480 #============================================================ 3481 WriteCIFitem(self.fp, '# POINTERS TO PHASE AND HISTOGRAM BLOCKS') 3482 datablockidDict = {} # save block names here -- N.B. check for conflicts between phase & hist names (unlikely!) 3483 # loop over phase blocks 3484 if len(self.Phases) > 1: 3485 loopprefix = '' 3486 WriteCIFitem(self.fp, 'loop_ _pd_phase_block_id') 3487 else: 3488 loopprefix = '_pd_phase_block_id' 3489 3490 for phasenam in sorted(self.Phases.keys()): 3491 i = self.Phases[phasenam]['pId'] 3492 datablockidDict[phasenam] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3493 'phase_'+ str(i) + '|' + str(self.shortauthorname)) 3494 WriteCIFitem(self.fp, loopprefix,datablockidDict[phasenam]) 3495 # loop over data blocks 3496 if len(self.powderDict) + len(self.xtalDict) > 1: 3497 loopprefix = '' 3498 WriteCIFitem(self.fp, 'loop_ _pd_block_diffractogram_id') 3499 else: 3500 loopprefix = '_pd_block_diffractogram_id' 3501 for i in sorted(self.powderDict.keys()): 3502 hist = self.powderDict[i] 3503 histblk = self.Histograms[hist] 3504 instnam = histblk["Sample Parameters"]['InstrName'] 3505 instnam = instnam.replace(' ','') 3506 j = histblk['hId'] 3507 datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3508 str(self.shortauthorname) + "|" + 3509 instnam + "_hist_"+str(j)) 3510 WriteCIFitem(self.fp, loopprefix,datablockidDict[hist]) 3511 for i in sorted(self.xtalDict.keys()): 3512 hist = self.xtalDict[i] 3513 histblk = self.Histograms[hist] 3514 instnam = histblk["Instrument Parameters"][0]['InstrName'] 3515 instnam = instnam.replace(' ','') 3516 i = histblk['hId'] 3517 datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" + 3518 str(self.shortauthorname) + "|" + 3519 instnam + "_hist_"+str(i)) 3520 WriteCIFitem(self.fp, loopprefix,datablockidDict[hist]) 3521 #============================================================ 3522 # loop over phases, exporting them 3523 for j,phasenam in enumerate(sorted(self.Phases.keys())): 3563 3524 step += 1 3564 dlg.Update(step,"Exporting "+hist.strip()) 3565 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+"_pwd_"+str(i)) 3566 WriteCIFitem(self.fp, '# Information for histogram '+str(i)+': '+hist) 3567 #instnam = histblk["Sample Parameters"]['InstrName'] 3568 # report instrumental profile terms 3569 WriteCIFitem(self.fp, '_pd_proc_ls_profile_function', 3570 FormatInstProfile(histblk["Instrument Parameters"],histblk['hId'])) 3571 WriteCIFitem(self.fp, '_pd_block_id',datablockidDict[hist]) 3572 histprm = self.Histograms[hist]["Sample Parameters"] 3573 writeCIFtemplate(histprm,'powder',histprm['InstrName']) # powder template 3574 3575 # get xray wavelength and compute & write f' & f'' 3576 lam = None 3577 if 'X' in histblk['Instrument Parameters'][0]['Type'][0]: 3578 for k in ('Lam','Lam1'): 3579 if k in histblk['Instrument Parameters'][0]: 3580 lam = histblk['Instrument Parameters'][0][k][0] 3581 break 3582 if lam: 3583 keV = 12.397639/lam 3584 WriteCIFitem(self.fp,'loop_') 3585 for item in ('_atom_type_symbol','_atom_type_scat_dispersion_real', 3586 '_atom_type_scat_dispersion_imag','_atom_type_scat_dispersion_source'): 3587 WriteCIFitem(self.fp,' '+item) 3588 for elem in HillSortElements(uniqueAtoms): 3589 s = ' ' 3590 s += PutInCol(elem,4) 3591 Orbs = G2el.GetXsectionCoeff(elem) 3592 FP,FPP,Mu = G2el.FPcalc(Orbs, keV) 3593 s += ' {:8.3f}{:8.3f} https://subversion.xray.aps.anl.gov/pyGSAS/trunk/atmdata.py'.format(FP,FPP) 3594 WriteCIFitem(self.fp,s.rstrip()) 3595 WriteCIFitem(self.fp,'') 3596 WritePowderData(hist) 3597 for i in sorted(self.xtalDict.keys()): 3598 hist = self.xtalDict[i] 3599 histblk = self.Histograms[hist] 3600 if hist.startswith("HKLF"): 3601 step += 1 3602 dlg.Update(step,"Exporting "+hist.strip()) 3603 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+"_sx_"+str(i)) 3604 #instnam = histblk["Instrument Parameters"][0]['InstrName'] 3605 WriteCIFitem(self.fp, '# Information for histogram '+str(i)+': '+hist) 3606 WriteCIFitem(self.fp, '_pd_block_id',datablockidDict[hist]) 3607 histprm = self.Histograms[hist]["Instrument Parameters"][0] 3608 writeCIFtemplate(histprm,'single',histprm['InstrName']) # single crystal template 3609 WriteSingleXtalData(hist) 3610 3611 dlg.Destroy() 3525 dlg.Update(step,"Exporting phase "+phasenam+' (#'+str(j+1)+')') 3526 i = self.Phases[phasenam]['pId'] 3527 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+"_phase_"+str(i)) 3528 WriteCIFitem(self.fp, '# Information for phase '+str(i)) 3529 WriteCIFitem(self.fp, '_pd_block_id',datablockidDict[phasenam]) 3530 # report the phase 3531 writeCIFtemplate(self.Phases[phasenam]['General'],'phase',phasenam) # write phase template 3532 WritePhaseInfo(phasenam,False,False) 3533 # preferred orientation 3534 if self.ifPWDR: 3535 SH = FormatSH(phasenam) 3536 MD = FormatHAPpo(phasenam) 3537 if SH and MD: 3538 WriteCIFitem(self.fp, '_pd_proc_ls_pref_orient_corr', SH + '\n' + MD) 3539 elif SH or MD: 3540 WriteCIFitem(self.fp, '_pd_proc_ls_pref_orient_corr', SH + MD) 3541 else: 3542 WriteCIFitem(self.fp, '_pd_proc_ls_pref_orient_corr', 'none') 3543 # report sample profile terms for all histograms with current phase 3544 PP = FormatPhaseProfile(phasenam) 3545 if PP: 3546 WriteCIFitem(self.fp, '_pd_proc_ls_profile_function',PP) 3547 self.ShowHstrainCells(phasenam,datablockidDict) 3548 3549 #============================================================ 3550 # loop over histograms, exporting them 3551 # first, get atoms across all phases 3552 uniqueAtoms = [] 3553 for phasenam in self.Phases: 3554 cx,ct,cs,cia = self.Phases[phasenam]['General']['AtomPtrs'] 3555 for line in self.Phases[phasenam]['Atoms']: 3556 atype = line[ct].strip() 3557 if atype.find('-') != -1: atype = atype.split('-')[0] 3558 if atype.find('+') != -1: atype = atype.split('+')[0] 3559 atype = atype[0].upper()+atype[1:2].lower() # force case conversion 3560 if atype == "D" or atype == "D": atype = "H" 3561 if atype not in uniqueAtoms: 3562 uniqueAtoms.append(atype) 3563 3564 for i in sorted(self.powderDict.keys()): 3565 hist = self.powderDict[i] 3566 histblk = self.Histograms[hist] 3567 if hist.startswith("PWDR"): 3568 step += 1 3569 dlg.Update(step,"Exporting "+hist.strip()) 3570 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+"_pwd_"+str(i)) 3571 WriteCIFitem(self.fp, '# Information for histogram '+str(i)+': '+hist) 3572 #instnam = histblk["Sample Parameters"]['InstrName'] 3573 # report instrumental profile terms 3574 WriteCIFitem(self.fp, '_pd_proc_ls_profile_function', 3575 FormatInstProfile(histblk["Instrument Parameters"],histblk['hId'])) 3576 WriteCIFitem(self.fp, '_pd_block_id',datablockidDict[hist]) 3577 histprm = self.Histograms[hist]["Sample Parameters"] 3578 writeCIFtemplate(histprm,'powder',histprm['InstrName']) # powder template 3579 3580 # get xray wavelength and compute & write f' & f'' 3581 lam = None 3582 if 'X' in histblk['Instrument Parameters'][0]['Type'][0]: 3583 for k in ('Lam','Lam1'): 3584 if k in histblk['Instrument Parameters'][0]: 3585 lam = histblk['Instrument Parameters'][0][k][0] 3586 break 3587 if lam: 3588 keV = 12.397639/lam 3589 WriteCIFitem(self.fp,'loop_') 3590 for item in ('_atom_type_symbol','_atom_type_scat_dispersion_real', 3591 '_atom_type_scat_dispersion_imag','_atom_type_scat_dispersion_source'): 3592 WriteCIFitem(self.fp,' '+item) 3593 for elem in HillSortElements(uniqueAtoms): 3594 s = ' ' 3595 s += PutInCol(elem,4) 3596 Orbs = G2el.GetXsectionCoeff(elem) 3597 FP,FPP,Mu = G2el.FPcalc(Orbs, keV) 3598 s += ' {:8.3f}{:8.3f} https://subversion.xray.aps.anl.gov/pyGSAS/trunk/atmdata.py'.format(FP,FPP) 3599 WriteCIFitem(self.fp,s.rstrip()) 3600 WriteCIFitem(self.fp,'') 3601 WritePowderData(hist) 3602 for i in sorted(self.xtalDict.keys()): 3603 hist = self.xtalDict[i] 3604 histblk = self.Histograms[hist] 3605 if hist.startswith("HKLF"): 3606 step += 1 3607 dlg.Update(step,"Exporting "+hist.strip()) 3608 WriteCIFitem(self.fp, '\ndata_'+self.CIFname+"_sx_"+str(i)) 3609 #instnam = histblk["Instrument Parameters"][0]['InstrName'] 3610 WriteCIFitem(self.fp, '# Information for histogram '+str(i)+': '+hist) 3611 WriteCIFitem(self.fp, '_pd_block_id',datablockidDict[hist]) 3612 histprm = self.Histograms[hist]["Instrument Parameters"][0] 3613 writeCIFtemplate(histprm,'single',histprm['InstrName']) # single crystal template 3614 WriteSingleXtalData(hist) 3615 finally: 3616 dlg.Destroy() 3612 3617 3613 3618 WriteCIFitem(self.fp, '#--' + 15*'eof--' + '#') … … 4259 4264 ''' 4260 4265 def __init__(self,frame,panel,tmplate,G2dict, repaint, title, defaultname=''): 4266 def _onResetTemplate(event): 4267 self.CIF = None 4268 self.dict["CIF_template"] = resetTemplate 4269 wx.CallAfter(self.repaint) 4261 4270 wx.BoxSizer.__init__(self,wx.VERTICAL) 4262 4271 self.cifdefs = frame … … 4265 4274 self.G2frame = frame.G2frame 4266 4275 templateDefName = 'template_'+tmplate+'.cif' 4267 self.CIF = G2dict.get("CIF_template")4268 4276 if defaultname: 4269 4277 self.defaultname = G2obj.StripUnicode(defaultname) … … 4282 4290 self.Add((-1,3)) 4283 4291 4284 if not self.CIF: # empty or None 4285 for pth in [os.getcwd()]+sys.path: 4286 fil = os.path.join(pth,self.defaultname) 4287 if os.path.exists(fil) and self.defaultname: 4288 self.CIF = fil 4289 CIFtxt = "Template: "+self.defaultname 4290 break 4292 # find default name for template 4293 resetTemplate = None 4294 localTemplate = None 4295 for pth in sys.path: # -- search with default name 4296 fil = os.path.join(pth,templateDefName) 4297 if os.path.exists(fil): 4298 resetTemplate = fil 4299 break 4300 if not resetTemplate: # this should not happen! 4301 print("Default CIF template file",templateDefName, 4302 'not found in path!\nProblem with GSAS-II installation?') 4303 for pth in [os.getcwd()]+sys.path: # -- search with name based on hist/phase 4304 fil = os.path.join(pth,self.defaultname) 4305 if os.path.exists(fil) and self.defaultname: 4306 localTemplate = fil 4307 break 4308 4309 if G2dict.get("CIF_template") == localTemplate and localTemplate: 4310 self.CIF = localTemplate 4311 CIFtxt = "Customized template: "+os.path.split(self.CIF)[1] 4312 elif G2dict.get("CIF_template") == resetTemplate and resetTemplate: 4313 self.CIF = resetTemplate 4314 CIFtxt = "Default template: "+os.path.split(self.CIF)[1] 4315 elif not G2dict.get("CIF_template"): # empty or None 4316 if localTemplate: 4317 G2dict["CIF_template"] = self.CIF = localTemplate 4318 CIFtxt = "Customized template: "+os.path.split(self.CIF)[1] 4319 elif resetTemplate: 4320 G2dict["CIF_template"] = self.CIF = resetTemplate 4321 CIFtxt = "Default template: "+os.path.split(self.CIF)[1] 4291 4322 else: 4292 for pth in sys.path: 4293 fil = os.path.join(pth,templateDefName) 4294 if os.path.exists(fil): 4295 self.CIF = fil 4296 CIFtxt = "Template: "+templateDefName 4297 break 4298 else: 4299 print("Default CIF template "+self.defaultname+' not found in path!') 4300 self.CIF = None 4301 CIFtxt = "none! (No template found)" 4302 elif type(self.CIF) is not list and type(self.CIF) is not tuple: 4303 if not os.path.exists(self.CIF): 4304 print("Error: template file has disappeared: "+self.CIF) 4323 G2dict["CIF_template"] = self.CIF = None 4324 CIFtxt = "none (Template not found!)" 4325 elif type(G2dict["CIF_template"]) is not list and type( 4326 G2dict["CIF_template"]) is not tuple: 4327 if not os.path.exists(G2dict["CIF_template"]): 4328 print("Warning: saved template file,", 4329 os.path.abspath(G2dict["CIF_template"]), 4330 ' not found!\nWas this file moved or deleted?') 4305 4331 self.CIF = None 4306 4332 CIFtxt = "none! (file not found)" 4333 if resetTemplate: 4334 G2dict["CIF_template"] = None 4335 wx.CallLater(100,self.repaint) 4336 return 4307 4337 else: 4308 if len(self.CIF) < 50: 4309 CIFtxt = "File: "+self.CIF 4310 else: 4311 CIFtxt = "File: ..."+self.CIF[-50:] 4338 CIFtxt = "Edited template: "+os.path.split(G2dict["CIF_template"])[1] 4339 if GSASIIpath.GetConfigValue('debug'): 4340 print('Template file found',os.path.abspath(G2dict["CIF_template"])) 4312 4341 else: 4313 CIFtxt = "Template is customized" 4342 self.CIF = G2dict["CIF_template"] 4343 CIFtxt = "Customized template is reloaded" 4314 4344 # show template source 4315 4345 self.Add(wx.StaticText(panel,wx.ID_ANY,CIFtxt)) … … 4322 4352 but.Bind(wx.EVT_BUTTON,self._onEditTemplateContents) 4323 4353 if self.CIF is None: but.Disable() # nothing to edit! 4354 if resetTemplate and not CIFtxt.startswith('Default'): 4355 hbox.Add(but,0,0,2) 4356 but = wx.Button(panel,wx.ID_ANY,"Reset to default template") 4357 but.Bind(wx.EVT_BUTTON,_onResetTemplate) 4324 4358 hbox.Add(but,0,0,2) 4325 4359 self.Add(hbox) … … 4344 4378 raise Exception('Error, CIF Template has more than one block: '+fil) 4345 4379 self.dict["CIF_template"] = fil 4346 self.repaint() #EditCIFDefaults()4380 wx.CallAfter(self.repaint) 4347 4381 4348 4382 def _onEditTemplateContents(self,event): … … 4360 4394 else: 4361 4395 self.dict["CIF_template"] = [dlg.cifblk,dlg.loopstructure] 4362 self.repaint() #EditCIFDefaults() # note that this does a dlg.Destroy()4396 wx.CallAfter(self.repaint) #EditCIFDefaults() # note that this does a dlg.Destroy() 4363 4397 else: 4364 4398 dlg.Destroy() -
trunk/versioninfo.txt
r5038 r5047 27 27 sequential fits and treats cases not 28 28 previously allowed, such as where both refined and unrefined 29 parameters appear in a constraint. %%% Please contact Brian if you find a29 parameters appear in a constraint. %%%%Please contact Brian if you find a 30 30 case where a set of constraints that used to work, but now fails.
Note: See TracChangeset
for help on using the changeset viewer.