Changeset 3686 for trunk/GSASIIphsGUI.py
- Timestamp:
- Oct 22, 2018 8:58:53 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIphsGUI.py
r3682 r3686 590 590 '''Get user selected magnetic atoms after cell transformation 591 591 ''' 592 def __init__(self,parent,Name,Atoms,atCodes,atMxyz,ifOK=False,ifDelete=False): 593 wx.Dialog.__init__(self,parent,wx.ID_ANY,'Magnetic atom selection', 592 def __init__(self,parent,Name,Atoms,atCodes,atMxyz,ifMag=True,ifOK=False,ifDelete=False): 593 title = 'Subgroup atom list' 594 if ifMag: 595 title = 'Magnetic atom selection' 596 wx.Dialog.__init__(self,parent,wx.ID_ANY,title, 594 597 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 595 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 598 self.panel = wxscroll.ScrolledPanel(self) #just a dummy - gets destroyed in Draw! 599 # self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 596 600 self.Name = Name 597 601 self.Atoms = Atoms 598 602 self.atCodes = atCodes 599 603 self.atMxyz = atMxyz 604 self.ifMag = ifMag 600 605 self.ifOK = ifOK 601 606 self.ifDelete = ifDelete … … 612 617 613 618 self.panel.Destroy() 614 self.panel = wx .Panel(self)619 self.panel = wxscroll.ScrolledPanel(self,style = wx.DEFAULT_DIALOG_STYLE) 615 620 Indx = {} 616 621 Mstr = [' Mx',' My',' Mz'] 622 Xstr = ['X','Y','Z'] 617 623 mainSizer = wx.BoxSizer(wx.VERTICAL) 618 624 mainSizer.Add(wx.StaticText(self.panel,label='For: %s'%self.Name),0,WACV) 619 625 620 mainSizer.Add(wx.StaticText(self.panel,label=' Name, x, y, z, allowed moments, mag. site sym:'),0,WACV) 626 if self.ifMag: 627 mainSizer.Add(wx.StaticText(self.panel,label=' Name, x, y, z, allowed moments, mag. site sym:'),0,WACV) 628 else: 629 mainSizer.Add(wx.StaticText(self.panel,label=' Name, x, y, z, allowed xyz, site sym:'),0,WACV) 621 630 atmSizer = wx.FlexGridSizer(0,2,5,5) 622 631 for iuse,[use,atom,mxyz] in enumerate(zip(self.Use,self.Atoms,self.atMxyz)): … … 624 633 for i,mx in enumerate(mxyz[1]): 625 634 if mx: 626 mstr[i] = Mstr[i] 627 useChk = wx.CheckBox(self.panel,label='Use?') 628 Indx[useChk.GetId()] = iuse 629 useChk.SetValue(use) 630 useChk.Bind(wx.EVT_CHECKBOX, OnUseChk) 631 atmSizer.Add(useChk,0,WACV) 635 if self.ifMag: 636 mstr[i] = Mstr[i] 637 else: 638 mstr[i] = Xstr[i] 639 if self.ifMag: 640 useChk = wx.CheckBox(self.panel,label='Use?') 641 Indx[useChk.GetId()] = iuse 642 useChk.SetValue(use) 643 useChk.Bind(wx.EVT_CHECKBOX, OnUseChk) 644 atmSizer.Add(useChk,0,WACV) 645 else: 646 atmSizer.Add((2,2),0) 632 647 text = ' %5s %10.5f %10.5f %10.5f (%s,%s,%s) %s '%(atom[0],atom[3],atom[4],atom[5],mstr[0],mstr[1],mstr[2],mxyz[0]) 633 648 atmSizer.Add(wx.StaticText(self.panel,label=text),0,WACV) … … 657 672 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 658 673 self.panel.SetSizer(mainSizer) 659 self.panel.Fit() 660 self.Fit() 674 size = np.array(self.GetSize()) 675 self.panel.SetupScrolling() 676 self.panel.SetAutoLayout(1) 677 size = [size[0]-5,size[1]-20] #this fiddling is needed for older wx! 678 self.panel.SetSize(size) 661 679 662 680 def GetSelection(self): … … 2442 2460 if not '_' in BNSlatt: 2443 2461 SGData['SGSpin'] = G2spc.GetSGSpin(SGData,SGData['MagSpGrp']) 2444 2445 2446 2447 2462 else: 2448 2463 return … … 2463 2478 else: 2464 2479 phaseName = newPhase['General']['Name'] 2465 2466 2467 2480 newPhase,atCodes = G2lat.TransformPhase(data,newPhase,Trans,Uvec,Vvec,ifMag) 2468 2481 detTrans = np.abs(nl.det(Trans)) … … 2517 2530 magIds = [] 2518 2531 magchoices = [] 2532 ifMag = False 2519 2533 for mid,magdata in enumerate(magData): 2520 2534 if magdata['Keep']: 2535 if 'magAtms' in magdata: 2536 ifMag = True 2521 2537 magdata['No.'] = mid+1 2522 2538 trans = G2spc.Trans2Text(magdata['Trans']) … … 2526 2542 magchoices.append('(%d) %s; (%s) + (%s)'%(mid+1,magdata['Name'],trans,vec)) 2527 2543 if not len(magKeep): 2528 G2frame.ErrorDialog(' Magnetic phase selection error','No magnetic phases found; be sure to "Keep" some')2544 G2frame.ErrorDialog('Subgroup/magnetic phase selection error','No magnetic phases found; be sure to "Keep" some') 2529 2545 return 2530 dlg = wx.SingleChoiceDialog(G2frame,'Select magnetic space group','Make new magnetic phase',magchoices) 2546 if ifMag: 2547 dlg = wx.SingleChoiceDialog(G2frame,'Select magnetic space group','Make new magnetic phase',magchoices) 2548 else: 2549 dlg = wx.SingleChoiceDialog(G2frame,'Select subgroup','Make new subgroup phase',magchoices) 2531 2550 opt = dlg.ShowModal() 2532 2551 if opt == wx.ID_OK: … … 2534 2553 magchoice = magKeep[sel] 2535 2554 magId = magIds[sel] 2536 phaseName = '%s mag_%d'%(data['General']['Name'],magchoice['No.']) 2555 if ifMag: 2556 phaseName = '%s mag_%d'%(data['General']['Name'],magchoice['No.']) 2557 else: 2558 phaseName = '%s sub_%d'%(data['General']['Name'],magchoice['No.']) 2537 2559 newPhase = copy.deepcopy(data) 2538 2560 newPhase['ranId'] = ran.randint(0,sys.maxsize), … … 2544 2566 SGData = generalData['SGData'] 2545 2567 vvec = np.array([0.,0.,0.]) 2546 newPhase,atCodes = G2lat.TransformPhase(data,newPhase,magchoice['Trans'],magchoice['Uvec'],vvec, True)2568 newPhase,atCodes = G2lat.TransformPhase(data,newPhase,magchoice['Trans'],magchoice['Uvec'],vvec,ifMag) 2547 2569 Atoms = newPhase['Atoms'] 2548 2570 Atms = [] … … 2550 2572 atMxyz = [] 2551 2573 for ia,atom in enumerate(Atoms): 2552 if not len(G2elem.GetMFtable([atom[1],],[2.0,])):2574 if ifMag and not len(G2elem.GetMFtable([atom[1],],[2.0,])): 2553 2575 continue 2554 2576 atom[0] += '_%d'%ia 2577 atom[2] = '' #clear away refinement flags 2555 2578 SytSym,Mul,Nop,dupDir = G2spc.SytSym(atom[3:6],SGData) 2556 CSI = G2spc.GetCSpqinel(SGData['SpnFlp'],dupDir)2557 2579 Atms.append(atom) 2558 2580 AtCods.append(atCodes[ia]) 2559 MagSytSym = G2spc.MagSytSym(SytSym,dupDir,SGData) 2560 atMxyz.append([MagSytSym,CSI[0]]) 2561 dlg = UseMagAtomDialog(G2frame,magchoices[sel],Atms,AtCods,atMxyz,ifDelete=True) 2581 if ifMag: 2582 MagSytSym = G2spc.MagSytSym(SytSym,dupDir,SGData) 2583 CSI = G2spc.GetCSpqinel(SGData['SpnFlp'],dupDir) 2584 atMxyz.append([MagSytSym,CSI[0]]) 2585 else: 2586 CSI = G2spc.GetCSxinel(SytSym) 2587 atMxyz.append([SytSym,CSI[0]]) 2588 dlg = UseMagAtomDialog(G2frame,magchoices[sel],Atms,AtCods,atMxyz,ifMag=ifMag,ifDelete=True) 2562 2589 try: 2563 2590 opt = dlg.ShowModal() … … 2588 2615 G2frame.GPXtree.SetItemPyData(sub,newPhase) 2589 2616 newPhase['Drawing'] = [] 2590 G2cnstG.TransConstraints(G2frame,data,newPhase,magchoice['Trans'],vvec,atCodes) #data is old phase 2591 G2frame.newGPXfile = phaseName+'.gpx' 2592 UCdata[5] = [] #clear away other mag choices from chem phase in new project 2593 G2frame.GPXtree.SetItemPyData(UnitCellsId,UCdata) 2594 G2frame.OnFileSaveas(event) 2617 if ifMag: 2618 G2cnstG.TransConstraints(G2frame,data,newPhase,magchoice['Trans'],vvec,atCodes) #data is old phase 2619 G2frame.newGPXfile = phaseName+'.gpx' 2620 UCdata[5] = [] #clear away other mag choices from chem phase in new project 2621 G2frame.GPXtree.SetItemPyData(UnitCellsId,UCdata) 2622 G2frame.OnFileSaveas(event) 2595 2623 G2frame.GPXtree.SelectItem(sub) 2596 2624
Note: See TracChangeset
for help on using the changeset viewer.