Changeset 2899 for branch/2frame/GSASIIphsGUI.py
- Timestamp:
- Jul 3, 2017 4:12:45 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branch/2frame/GSASIIphsGUI.py
r2895 r2899 67 67 atan2d = lambda x,y: 180.*np.arctan2(y,x)/np.pi 68 68 69 ################################################################################ 70 #### phase class definitions 71 ################################################################################ 72 class SGMagSpinBox(wx.Dialog): 73 ''' Special version of MessageBox that displays magnetic spin text 74 ''' 75 def __init__(self,parent,title,text,table,names,spins,): 76 wx.Dialog.__init__(self,parent,wx.ID_ANY,title,pos=wx.DefaultPosition, 77 style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,size=wx.Size(420,350)) 78 self.text = text 79 self.table = table 80 self.names = names 81 self.spins = spins 82 self.panel = wxscroll.ScrolledPanel(self) 83 mainSizer = wx.BoxSizer(wx.VERTICAL) 84 mainSizer.Add((0,10)) 85 first = text[0].split(':')[-1].strip() 86 cents = [0,] 87 if 'P' != first[0]: 88 cents = text[-1].split(';') 89 for line in text: 90 mainSizer.Add(wx.StaticText(self.panel,label=' %s '%(line)),0,WACV) 91 ncol = self.table[0].count(',')+2 92 for ic,cent in enumerate(cents): 93 if cent: 94 cent = cent.strip(' (').strip(')+\n') 95 mainSizer.Add(wx.StaticText(self.panel,label=' for (%s)+'%(cent)),0,WACV) 96 tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0) 97 for j,item in enumerate(self.table): 98 flds = item.split(')')[1] 99 tableSizer.Add(wx.StaticText(self.panel,label=' (%2d) '%(j+1)),0,WACV|wx.ALIGN_LEFT) 100 flds = flds.replace(' ','').split(',') 101 for i,fld in enumerate(flds): 102 if i < ncol-1: 103 text = wx.StaticText(self.panel,label='%s, '%(fld)) 104 tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT) 105 else: 106 text = wx.StaticText(self.panel,label='%s '%(fld)) 107 tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT) 108 text = wx.StaticText(self.panel,label=' (%s) '%(self.names[j])) 109 if self.spins[j+ic*len(self.table)] < 0: 110 text.SetForegroundColour('Red') 111 tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT) 112 if not j%2: 113 tableSizer.Add((20,0)) 114 mainSizer.Add(tableSizer,0,wx.ALIGN_CENTER) 115 116 btnsizer = wx.StdDialogButtonSizer() 117 OKbtn = wx.Button(self.panel, wx.ID_OK) 118 OKbtn.SetDefault() 119 btnsizer.AddButton(OKbtn) 120 btnsizer.Realize() 121 mainSizer.Add((0,10)) 122 mainSizer.Add(btnsizer,0,wx.ALIGN_CENTER) 123 self.panel.SetSizer(mainSizer) 124 size = np.array(self.GetSize()) 125 self.panel.SetupScrolling() 126 size = [size[0]-5,size[1]-20] #this fiddling is needed for older wx! 127 self.panel.SetSize(size) 128 self.panel.SetAutoLayout(1) 129 130 def Show(self): 131 '''Use this method after creating the dialog to post it 132 ''' 133 self.ShowModal() 134 return 135 136 ################################################################################ 137 class SymOpDialog(wx.Dialog): 138 '''Class to select a symmetry operator 139 ''' 140 def __init__(self,parent,SGData,New=True,ForceUnit=False): 141 wx.Dialog.__init__(self,parent,-1,'Select symmetry operator', 142 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 143 panel = wx.Panel(self) 144 self.SGData = SGData 145 self.New = New 146 self.Force = ForceUnit 147 self.OpSelected = [0,0,0,[0,0,0],False,False] 148 mainSizer = wx.BoxSizer(wx.VERTICAL) 149 if ForceUnit: 150 choice = ['No','Yes'] 151 self.force = wx.RadioBox(panel,-1,'Force to unit cell?',choices=choice) 152 self.force.Bind(wx.EVT_RADIOBOX, self.OnOpSelect) 153 mainSizer.Add(self.force,0,WACV|wx.TOP,5) 154 # if SGData['SGInv']: 155 choice = ['No','Yes'] 156 self.inv = wx.RadioBox(panel,-1,'Choose inversion?',choices=choice) 157 self.inv.Bind(wx.EVT_RADIOBOX, self.OnOpSelect) 158 mainSizer.Add(self.inv,0,WACV) 159 if SGData['SGLatt'] != 'P': 160 LattOp = G2spc.Latt2text(SGData['SGLatt']).split(';') 161 self.latt = wx.RadioBox(panel,-1,'Choose cell centering?',choices=LattOp) 162 self.latt.Bind(wx.EVT_RADIOBOX, self.OnOpSelect) 163 mainSizer.Add(self.latt,0,WACV) 164 if SGData['SGLaue'] in ['-1','2/m','mmm','4/m','4/mmm']: 165 Ncol = 2 166 else: 167 Ncol = 3 168 OpList = [] 169 for Opr in SGData['SGOps']: 170 OpList.append(G2spc.MT2text(Opr)) 171 self.oprs = wx.RadioBox(panel,-1,'Choose space group operator?',choices=OpList, 172 majorDimension=Ncol) 173 self.oprs.Bind(wx.EVT_RADIOBOX, self.OnOpSelect) 174 mainSizer.Add(self.oprs,0,WACV|wx.BOTTOM,5) 175 mainSizer.Add(wx.StaticText(panel,-1," Choose unit cell?"),0,WACV) 176 cellSizer = wx.BoxSizer(wx.HORIZONTAL) 177 cellName = ['X','Y','Z'] 178 self.cell = [] 179 for i in range(3): 180 self.cell.append(wx.SpinCtrl(panel,-1,cellName[i],size=wx.Size(50,20))) 181 self.cell[-1].SetRange(-3,3) 182 self.cell[-1].SetValue(0) 183 self.cell[-1].Bind(wx.EVT_SPINCTRL, self.OnOpSelect) 184 cellSizer.Add(self.cell[-1],0,WACV) 185 mainSizer.Add(cellSizer,0,WACV|wx.BOTTOM,5) 186 if self.New: 187 choice = ['No','Yes'] 188 self.new = wx.RadioBox(panel,-1,'Generate new positions?',choices=choice) 189 self.new.Bind(wx.EVT_RADIOBOX, self.OnOpSelect) 190 mainSizer.Add(self.new,0,WACV) 191 192 OkBtn = wx.Button(panel,-1,"Ok") 193 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 194 cancelBtn = wx.Button(panel,-1,"Cancel") 195 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 196 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 197 btnSizer.Add((20,20),1) 198 btnSizer.Add(OkBtn) 199 btnSizer.Add((20,20),1) 200 btnSizer.Add(cancelBtn) 201 btnSizer.Add((20,20),1) 202 203 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 204 panel.SetSizer(mainSizer) 205 panel.Fit() 206 self.Fit() 207 208 def OnOpSelect(self,event): 209 # if self.SGData['SGInv']: 210 self.OpSelected[0] = self.inv.GetSelection() 211 if self.SGData['SGLatt'] != 'P': 212 self.OpSelected[1] = self.latt.GetSelection() 213 self.OpSelected[2] = self.oprs.GetSelection() 214 for i in range(3): 215 self.OpSelected[3][i] = float(self.cell[i].GetValue()) 216 if self.New: 217 self.OpSelected[4] = self.new.GetSelection() 218 if self.Force: 219 self.OpSelected[5] = self.force.GetSelection() 220 221 def GetSelection(self): 222 return self.OpSelected 223 224 def OnOk(self,event): 225 parent = self.GetParent() 226 parent.Raise() 227 self.EndModal(wx.ID_OK) 228 229 def OnCancel(self,event): 230 parent = self.GetParent() 231 parent.Raise() 232 self.EndModal(wx.ID_CANCEL) 233 ################################################################################ 234 class SphereEnclosure(wx.Dialog): 235 ''' Add atoms within sphere of enclosure to drawing 236 237 :param wx.Frame parent: reference to parent frame (or None) 238 :param general: general data (includes drawing data) 239 :param atoms: drawing atoms data 240 :param indx: list of selected atoms (may be empty) 241 242 ''' 243 def __init__(self,parent,general,drawing,indx): 244 wx.Dialog.__init__(self,parent,wx.ID_ANY,'Setup phase transformation', 245 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 246 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 247 self.General = general 248 self.Drawing = drawing 249 self.indx = indx 250 self.Sphere = [1.0,] 251 self.centers = [] 252 self.atomTypes = [[item,True] for item in self.General['AtomTypes']] 253 254 self.Draw() 255 256 def Draw(self): 257 258 def OnAtomType(event): 259 Obj = event.GetEventObject() 260 id = Ind[Obj.GetId()] 261 self.atomTypes[id][1] = Obj.GetValue() 262 263 self.panel.Destroy() 264 self.panel = wx.Panel(self) 265 mainSizer = wx.BoxSizer(wx.VERTICAL) 266 mainSizer.Add(wx.StaticText(self.panel,label=' Sphere of enclosure controls:'),0,WACV) 267 topSizer = wx.BoxSizer(wx.HORIZONTAL) 268 atoms = [] 269 if len(self.indx): 270 topSizer.Add(wx.StaticText(self.panel,label=' Sphere centered at atoms: '),0,WACV) 271 cx,ct,cs = self.Drawing['atomPtrs'][:3] 272 for id in self.indx: 273 atom = self.Drawing['Atoms'][id] 274 self.centers.append(atom[cx:cx+3]) 275 atoms.append('%s(%s)'%(atom[ct-1],atom[cs-1])) 276 topSizer.Add(wx.ComboBox(self.panel,choices=atoms,value=atoms[0], 277 style=wx.CB_READONLY|wx.CB_DROPDOWN),0,WACV) 278 else: 279 topSizer.Add(wx.StaticText(self.panel,label=' Sphere centered at drawing view point'),0,WACV) 280 self.centers.append(self.Drawing['viewPoint'][0]) 281 mainSizer.Add(topSizer,0,WACV) 282 sphereSizer = wx.BoxSizer(wx.HORIZONTAL) 283 sphereSizer.Add(wx.StaticText(self.panel,label=' Sphere radius: '),0,WACV) 284 radius = G2G.ValidatedTxtCtrl(self.panel,self.Sphere,0,nDig=(10,3),size=(65,25)) 285 sphereSizer.Add(radius,0,WACV) 286 mainSizer.Add(sphereSizer,0,WACV) 287 mainSizer.Add(wx.StaticText(self.panel,label=' Target selected atoms:'),0,WACV) 288 atSizer = wx.BoxSizer(wx.HORIZONTAL) 289 Ind = {} 290 for i,item in enumerate(self.atomTypes): 291 atm = wx.CheckBox(self.panel,label=item[0]) 292 atm.SetValue(item[1]) 293 atm.Bind(wx.EVT_CHECKBOX, OnAtomType) 294 Ind[atm.GetId()] = i 295 atSizer.Add(atm,0,WACV) 296 mainSizer.Add(atSizer,0,WACV) 297 298 OkBtn = wx.Button(self.panel,-1,"Ok") 299 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 300 cancelBtn = wx.Button(self.panel,-1,"Cancel") 301 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 302 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 303 btnSizer.Add((20,20),1) 304 btnSizer.Add(OkBtn) 305 btnSizer.Add((20,20),1) 306 btnSizer.Add(cancelBtn) 307 btnSizer.Add((20,20),1) 308 309 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 310 self.panel.SetSizer(mainSizer) 311 self.panel.Fit() 312 self.Fit() 313 314 def GetSelection(self): 315 used = [] 316 for atm in self.atomTypes: 317 if atm[1]: 318 used.append(str(atm[0])) 319 return self.centers,self.Sphere[0],used 320 321 def OnOk(self,event): 322 parent = self.GetParent() 323 parent.Raise() 324 self.EndModal(wx.ID_OK) 325 326 def OnCancel(self,event): 327 parent = self.GetParent() 328 parent.Raise() 329 self.EndModal(wx.ID_CANCEL) 330 331 ################################################################################ 332 class TransformDialog(wx.Dialog): 333 ''' Phase transformation 334 335 :param wx.Frame parent: reference to parent frame (or None) 336 :param phase: phase data 337 338 #NB: commonNames & commonTrans defined at top of this file 339 ''' 340 def __init__(self,parent,phase): 341 wx.Dialog.__init__(self,parent,wx.ID_ANY,'Setup phase transformation', 342 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 343 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 344 self.Phase = copy.deepcopy(phase) #will be a new phase! 345 # self.Super = phase['General']['Super'] 346 # if self.Super: 347 # self.Trans = np.eye(4) 348 # self.Vec = np.zeros(4) 349 # else: 350 self.Trans = np.eye(3) 351 self.Vec = np.zeros(3) 352 self.oldSpGrp = phase['General']['SGData']['SpGrp'] 353 self.oldSGdata = phase['General']['SGData'] 354 self.newSpGrp = self.Phase['General']['SGData']['SpGrp'] 355 self.oldCell = phase['General']['Cell'][1:8] 356 self.newCell = self.Phase['General']['Cell'][1:8] 357 self.Common = 'abc' 358 self.ifMag = False 359 self.ifConstr = True 360 self.Draw() 361 362 def Draw(self): 363 364 def OnCommon(event): 365 Obj = event.GetEventObject() 366 self.Common = Obj.GetValue() 367 if '*' in self.Common: 368 A,B = G2lat.cell2AB(self.oldCell[:6]) 369 self.newCell[2:5] = [A[2,2],90.,90.] 370 a,b = G2lat.cell2AB(self.newCell[:6]) 371 self.Trans = np.inner(a.T,B) #correct! 372 self.ifConstr = False 373 self.newSpGrp = 'P 1' 374 SGErr,SGData = G2spc.SpcGroup(self.newSpGrp) 375 self.Phase['General']['SGData'] = SGData 376 else: 377 if self.Common == commonNames[-1]: #change setting 378 self.Vec = G2spc.spg2origins[self.oldSpGrp] 379 self.newSpGrp = self.oldSpGrp 380 else: 381 self.Trans = commonTrans[self.Common] 382 if 'R' == self.Common[-1]: 383 self.newSpGrp += ' r' 384 SGErr,SGData = G2spc.SpcGroup(self.newSpGrp) 385 self.Phase['General']['SGData'] = SGData 386 SGTxt.SetValue(self.newSpGrp) 387 OnTest(event) 388 389 def OnSpaceGroup(event): 390 event.Skip() 391 Flds = SGTxt.GetValue().split() 392 Flds[0] = Flds[0].upper() 393 #get rid of extra spaces between fields first 394 for fld in Flds: fld = fld.strip() 395 SpcGp = ' '.join(Flds) 396 if SpcGp == self.newSpGrp: #didn't change it! 397 return 398 # try a lookup on the user-supplied name 399 SpGrpNorm = G2spc.StandardizeSpcName(SpcGp) 400 if SpGrpNorm: 401 SGErr,SGData = G2spc.SpcGroup(SpGrpNorm) 402 else: 403 SGErr,SGData = G2spc.SpcGroup(SpcGp) 404 if SGErr: 405 text = [G2spc.SGErrors(SGErr)+'\nSpace Group set to previous'] 406 SGTxt.SetValue(self.newSpGrp) 407 msg = 'Space Group Error' 408 Style = wx.ICON_EXCLAMATION 409 Text = '\n'.join(text) 410 wx.MessageBox(Text,caption=msg,style=Style) 411 else: 412 text,table = G2spc.SGPrint(SGData) 413 self.Phase['General']['SGData'] = SGData 414 self.newSpGrp = SpcGp 415 SGTxt.SetValue(self.Phase['General']['SGData']['SpGrp']) 416 msg = 'Space Group Information' 417 G2G.SGMessageBox(self.panel,msg,text,table).Show() 418 if self.Phase['General']['Type'] == 'magnetic': 419 Nops = len(SGData['SGOps'])*len(SGData['SGCen']) 420 if SGData['SGInv']: 421 Nops *= 2 422 SGData['SpnFlp'] = Nops*[1,] 423 # if self.Phase['General']['Type'] in ['modulated',]: 424 # self.Phase['General']['SuperSg'] = SetDefaultSSsymbol() 425 # self.Phase['General']['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1] 426 427 def OnTest(event): 428 self.newCell = G2lat.TransformCell(self.oldCell[:6],self.Trans) 429 wx.CallAfter(self.Draw) 430 431 def OnMag(event): 432 self.ifMag = mag.GetValue() 433 434 def OnConstr(event): 435 self.ifConstr = constr.GetValue() 436 437 self.panel.Destroy() 438 self.panel = wx.Panel(self) 439 mainSizer = wx.BoxSizer(wx.VERTICAL) 440 MatSizer = wx.BoxSizer(wx.HORIZONTAL) 441 transSizer = wx.BoxSizer(wx.VERTICAL) 442 transSizer.Add(wx.StaticText(self.panel,label=" XYZ Transformation matrix & vector: M*X+V = X'")) 443 # if self.Super: 444 # Trmat = wx.FlexGridSizer(4,4,0,0) 445 # else: 446 commonSizer = wx.BoxSizer(wx.HORIZONTAL) 447 commonSizer.Add(wx.StaticText(self.panel,label=' Common transformations: '),0,WACV) 448 if self.oldSpGrp not in G2spc.spg2origins: 449 common = wx.ComboBox(self.panel,value=self.Common,choices=commonNames[:-1], 450 style=wx.CB_READONLY|wx.CB_DROPDOWN) 451 else: 452 common = wx.ComboBox(self.panel,value=self.Common,choices=commonNames, 453 style=wx.CB_READONLY|wx.CB_DROPDOWN) 454 common.Bind(wx.EVT_COMBOBOX,OnCommon) 455 commonSizer.Add(common,0,WACV) 456 transSizer.Add(commonSizer) 457 Trmat = wx.FlexGridSizer(3,5,0,0) 458 for iy,line in enumerate(self.Trans): 459 for ix,val in enumerate(line): 460 item = G2G.ValidatedTxtCtrl(self.panel,self.Trans[iy],ix,nDig=(10,3),size=(65,25)) 461 Trmat.Add(item) 462 Trmat.Add((25,0),0) 463 vec = G2G.ValidatedTxtCtrl(self.panel,self.Vec,iy,nDig=(10,3),size=(65,25)) 464 Trmat.Add(vec) 465 transSizer.Add(Trmat) 466 MatSizer.Add((10,0),0) 467 MatSizer.Add(transSizer) 468 mainSizer.Add(MatSizer) 469 mainSizer.Add(wx.StaticText(self.panel,label=' Old lattice parameters:'),0,WACV) 470 mainSizer.Add(wx.StaticText(self.panel,label= 471 ' a = %.5f b = %.5f c = %.5f'%(self.oldCell[0],self.oldCell[1],self.oldCell[2])),0,WACV) 472 mainSizer.Add(wx.StaticText(self.panel,label=' alpha = %.3f beta = %.3f gamma = %.3f'% 473 (self.oldCell[3],self.oldCell[4],self.oldCell[5])),0,WACV) 474 mainSizer.Add(wx.StaticText(self.panel,label=' volume = %.3f'%(self.oldCell[6])),0,WACV) 475 mainSizer.Add(wx.StaticText(self.panel,label=' New lattice parameters:'),0,WACV) 476 mainSizer.Add(wx.StaticText(self.panel,label= 477 ' a = %.5f b = %.5f c = %.5f'%(self.newCell[0],self.newCell[1],self.newCell[2])),0,WACV) 478 mainSizer.Add(wx.StaticText(self.panel,label=' alpha = %.3f beta = %.3f gamma = %.3f'% 479 (self.newCell[3],self.newCell[4],self.newCell[5])),0,WACV) 480 mainSizer.Add(wx.StaticText(self.panel,label=' volume = %.3f'%(self.newCell[6])),0,WACV) 481 sgSizer = wx.BoxSizer(wx.HORIZONTAL) 482 sgSizer.Add(wx.StaticText(self.panel,label=' Space group: '),0,WACV) 483 SGTxt = wx.TextCtrl(self.panel,value=self.newSpGrp,style=wx.TE_PROCESS_ENTER) 484 SGTxt.Bind(wx.EVT_TEXT_ENTER,OnSpaceGroup) 485 SGTxt.Bind(wx.EVT_KILL_FOCUS,OnSpaceGroup) 486 sgSizer.Add(SGTxt,0,WACV) 487 mainSizer.Add(sgSizer,0,WACV) 488 if 'magnetic' not in self.Phase['General']['Type']: 489 mag = wx.CheckBox(self.panel,label=' Make new phase magnetic?') 490 mag.Bind(wx.EVT_CHECKBOX,OnMag) 491 mainSizer.Add(mag,0,WACV) 492 mainSizer.Add(wx.StaticText(self.panel, \ 493 label=' NB: Nonmagnetic atoms will be deleted from new phase'),0,WACV) 494 constr = wx.CheckBox(self.panel,label=' Make constraints between phases?') 495 mainSizer.Add(wx.StaticText(self.panel, \ 496 label=' Constraints not correct for non-diagonal transforms'),0,WACV) 497 constr.SetValue(self.ifConstr) 498 constr.Bind(wx.EVT_CHECKBOX,OnConstr) 499 mainSizer.Add(constr,0,WACV) 500 501 TestBtn = wx.Button(self.panel,-1,"Test") 502 TestBtn.Bind(wx.EVT_BUTTON, OnTest) 503 OkBtn = wx.Button(self.panel,-1,"Ok") 504 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 505 cancelBtn = wx.Button(self.panel,-1,"Cancel") 506 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 507 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 508 btnSizer.Add((20,20),1) 509 btnSizer.Add(TestBtn) 510 btnSizer.Add((20,20),1) 511 btnSizer.Add(OkBtn) 512 btnSizer.Add((20,20),1) 513 btnSizer.Add(cancelBtn) 514 btnSizer.Add((20,20),1) 515 516 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 517 self.panel.SetSizer(mainSizer) 518 self.panel.Fit() 519 self.Fit() 520 521 def GetSelection(self): 522 if self.ifMag: 523 self.Phase['General']['Name'] += ' mag' 524 else: 525 self.Phase['General']['Name'] += ' %s'%(self.Common) 526 self.Phase['General']['Cell'][1:] = G2lat.TransformCell(self.oldCell[:6],self.Trans) 527 return self.Phase,self.Trans,self.Vec,self.ifMag,self.ifConstr,self.Common 528 529 def OnOk(self,event): 530 parent = self.GetParent() 531 parent.Raise() 532 self.EndModal(wx.ID_OK) 533 534 def OnCancel(self,event): 535 parent = self.GetParent() 536 parent.Raise() 537 self.EndModal(wx.ID_CANCEL) 538 539 ################################################################################ 540 class UseMagAtomDialog(wx.Dialog): 541 '''Get user selected magnetic atoms after cell transformation 542 ''' 543 def __init__(self,parent,Atoms,atCodes): 544 wx.Dialog.__init__(self,parent,wx.ID_ANY,'Magnetic atom selection', 545 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 546 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 547 self.Atoms = Atoms 548 self.atCodes = atCodes 549 self.Use = len(self.Atoms)*[True,] 550 self.Draw() 551 552 def Draw(self): 553 554 def OnUseChk(event): 555 Obj = event.GetEventObject() 556 iuse = Indx[Obj.GetId()] 557 self.Use[iuse] = not self.Use[iuse] 558 Obj.SetValue(self.Use[iuse]) 559 560 self.panel.Destroy() 561 self.panel = wx.Panel(self) 562 Indx = {} 563 mainSizer = wx.BoxSizer(wx.VERTICAL) 564 565 mainSizer.Add(wx.StaticText(self.panel,label=' Name, x, y, z:'),0,WACV) 566 atmSizer = wx.FlexGridSizer(0,2,5,5) 567 for iuse,[use,atom] in enumerate(zip(self.Use,self.Atoms)): 568 useChk = wx.CheckBox(self.panel,label='Use?') 569 Indx[useChk.GetId()] = iuse 570 useChk.SetValue(use) 571 useChk.Bind(wx.EVT_CHECKBOX, OnUseChk) 572 atmSizer.Add(useChk,0,WACV) 573 text = ' %s %10.5f %10.5f %10.5f'%(atom[0],atom[3],atom[4],atom[5]) 574 atmSizer.Add(wx.StaticText(self.panel,label=text),0,WACV) 575 mainSizer.Add(atmSizer) 576 577 OkBtn = wx.Button(self.panel,-1,"Ok") 578 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 579 cancelBtn = wx.Button(self.panel,-1,"Use All") 580 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 581 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 582 btnSizer.Add((20,20),1) 583 btnSizer.Add(OkBtn) 584 btnSizer.Add((20,20),1) 585 btnSizer.Add(cancelBtn) 586 btnSizer.Add((20,20),1) 587 588 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 589 self.panel.SetSizer(mainSizer) 590 self.panel.Fit() 591 self.Fit() 592 593 def GetSelection(self): 594 useAtoms = [] 595 useatCodes = [] 596 for use,atom,code in zip(self.Use,self.Atoms,self.atCodes): 597 if use: 598 useAtoms.append(atom) 599 useatCodes.append(code) 600 return useAtoms,useatCodes 601 602 def OnOk(self,event): 603 parent = self.GetParent() 604 parent.Raise() 605 self.EndModal(wx.ID_OK) 606 607 def OnCancel(self,event): 608 parent = self.GetParent() 609 parent.Raise() 610 self.EndModal(wx.ID_CANCEL) 611 612 613 ################################################################################ 614 class RotationDialog(wx.Dialog): 615 ''' Get Rotate & translate matrix & vector - currently not used 616 needs rethinking - possible use to rotate a group of atoms about some 617 vector/origin + translation 618 619 ''' 620 def __init__(self,parent): 621 wx.Dialog.__init__(self,parent,wx.ID_ANY,'Atom group rotation/translation', 622 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 623 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 624 self.Trans = np.eye(3) 625 self.Vec = np.zeros(3) 626 self.rotAngle = 0. 627 self.rotVec = np.array([0.,0.,1.]) 628 self.Expand = '' 629 self.Draw() 630 631 def Draw(self): 632 633 def OnExpand(event): 634 self.Expand = expand.GetValue() 635 636 def OnRotAngle(event): 637 event.Skip() 638 self.rotAngle = float(rotangle.GetValue()) 639 rotangle.SetValue('%5.3f'%(self.rotAngle)) 640 Q = G2mth.AVdeg2Q(self.rotAngle,self.rotVec) 641 self.Trans = G2mth.Q2Mat(Q) 642 self.Draw() 643 644 def OnRotVec(event): 645 event.Skip() 646 vals = rotvec.GetValue() 647 vals = vals.split() 648 self.rotVec = np.array([float(val) for val in vals]) 649 rotvec.SetValue('%5.3f %5.3f %5.3f'%(self.rotVec[0],self.rotVec[1],self.rotVec[2])) 650 Q = G2mth.AVdeg2Q(self.rotAngle,self.rotVec) 651 self.Trans = G2mth.Q2Mat(Q) 652 self.Draw() 653 654 self.panel.Destroy() 655 self.panel = wx.Panel(self) 656 mainSizer = wx.BoxSizer(wx.VERTICAL) 657 MatSizer = wx.BoxSizer(wx.HORIZONTAL) 658 transSizer = wx.BoxSizer(wx.VERTICAL) 659 transSizer.Add(wx.StaticText(self.panel,label=" XYZ Transformation matrix && vector: "+ \ 660 "\n B*M*A*(X-V)+V = X'\n A,B: Cartesian transformation matrices")) 661 Trmat = wx.FlexGridSizer(3,5,0,0) 662 for iy,line in enumerate(self.Trans): 663 for ix,val in enumerate(line): 664 item = G2G.ValidatedTxtCtrl(self.panel,self.Trans[iy],ix,nDig=(10,3),size=(65,25)) 665 Trmat.Add(item) 666 Trmat.Add((25,0),0) 667 vec = G2G.ValidatedTxtCtrl(self.panel,self.Vec,iy,nDig=(10,3),size=(65,25)) 668 Trmat.Add(vec) 669 transSizer.Add(Trmat) 670 MatSizer.Add((10,0),0) 671 MatSizer.Add(transSizer) 672 mainSizer.Add(MatSizer) 673 rotationBox = wx.BoxSizer(wx.HORIZONTAL) 674 rotationBox.Add(wx.StaticText(self.panel,label=' Rotation angle: '),0,WACV) 675 rotangle = wx.TextCtrl(self.panel,value='%5.3f'%(self.rotAngle), 676 size=(50,25),style=wx.TE_PROCESS_ENTER) 677 rotangle.Bind(wx.EVT_TEXT_ENTER,OnRotAngle) 678 rotangle.Bind(wx.EVT_KILL_FOCUS,OnRotAngle) 679 rotationBox.Add(rotangle,0,WACV) 680 rotationBox.Add(wx.StaticText(self.panel,label=' about vector: '),0,WACV) 681 rotvec = wx.TextCtrl(self.panel,value='%5.3f %5.3f %5.3f'%(self.rotVec[0],self.rotVec[1],self.rotVec[2]), 682 size=(100,25),style=wx.TE_PROCESS_ENTER) 683 rotvec.Bind(wx.EVT_TEXT_ENTER,OnRotVec) 684 rotvec.Bind(wx.EVT_KILL_FOCUS,OnRotVec) 685 rotationBox.Add(rotvec,0,WACV) 686 mainSizer.Add(rotationBox,0,WACV) 687 expandChoice = ['','xy','xz','yz','xyz'] 688 expandBox = wx.BoxSizer(wx.HORIZONTAL) 689 expandBox.Add(wx.StaticText(self.panel,label=' Expand -1 to +1 on: '),0,WACV) 690 expand = wx.ComboBox(self.panel,value=self.Expand,choices=expandChoice, 691 style=wx.CB_READONLY|wx.CB_DROPDOWN) 692 expand.Bind(wx.EVT_COMBOBOX,OnExpand) 693 expandBox.Add(expand,0,WACV) 694 expandBox.Add(wx.StaticText(self.panel,label=' and find unique atoms '),0,WACV) 695 mainSizer.Add(expandBox) 696 697 OkBtn = wx.Button(self.panel,-1,"Ok") 698 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 699 cancelBtn = wx.Button(self.panel,-1,"Cancel") 700 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 701 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 702 btnSizer.Add((20,20),1) 703 btnSizer.Add(OkBtn) 704 btnSizer.Add((20,20),1) 705 btnSizer.Add(cancelBtn) 706 btnSizer.Add((20,20),1) 707 708 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 709 self.panel.SetSizer(mainSizer) 710 self.panel.Fit() 711 self.Fit() 712 713 def GetSelection(self): 714 return self.Trans,self.Vec,self.Expand 715 716 def OnOk(self,event): 717 parent = self.GetParent() 718 parent.Raise() 719 self.EndModal(wx.ID_OK) 720 721 def OnCancel(self,event): 722 parent = self.GetParent() 723 parent.Raise() 724 self.EndModal(wx.ID_CANCEL) 725 726 ################################################################################ 727 class DIFFaXcontrols(wx.Dialog): 728 ''' Solicit items needed to prepare DIFFaX control.dif file 729 ''' 730 def __init__(self,parent,ctrls,parms=None): 731 wx.Dialog.__init__(self,parent,wx.ID_ANY,'DIFFaX controls', 732 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 733 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 734 self.ctrls = ctrls 735 self.calcType = 'powder pattern' 736 self.plane = 'h0l' 737 self.planeChoice = ['h0l','0kl','hhl','h-hl',] 738 self.lmax = '2' 739 self.lmaxChoice = [str(i+1) for i in range(6)] 740 self.Parms = parms 741 self.Parm = None 742 if self.Parms != None: 743 self.Parm = self.Parms[0] 744 self.parmRange = [0.,1.] 745 self.parmStep = 2 746 self.Inst = 'Gaussian' 747 self.Draw() 748 749 def Draw(self): 750 751 def OnCalcType(event): 752 self.calcType = calcType.GetValue() 753 wx.CallAfter(self.Draw) 754 755 def OnPlane(event): 756 self.plane = plane.GetValue() 757 758 def OnMaxL(event): 759 self.lmax = lmax.GetValue() 760 761 def OnParmSel(event): 762 self.Parm = parmsel.GetValue() 763 764 def OnNumStep(event): 765 self.parmStep = int(numStep.GetValue()) 766 767 def OnParmRange(event): 768 event.Skip() 769 vals = parmrange.GetValue().split() 770 try: 771 vals = [float(vals[0]),float(vals[1])] 772 except ValueError: 773 vals = self.parmRange 774 parmrange.SetValue('%.3f %.3f'%(vals[0],vals[1])) 775 self.parmRange = vals 776 777 def OnInstSel(event): 778 self.Inst = instsel.GetValue() 779 780 self.panel.Destroy() 781 self.panel = wx.Panel(self) 782 mainSizer = wx.BoxSizer(wx.VERTICAL) 783 mainSizer.Add(wx.StaticText(self.panel,label=' Controls for DIFFaX'),0,WACV) 784 if self.Parms: 785 mainSizer.Add(wx.StaticText(self.panel,label=' Sequential powder pattern simulation'),0,WACV) 786 else: 787 calcChoice = ['powder pattern','selected area'] 788 calcSizer = wx.BoxSizer(wx.HORIZONTAL) 789 calcSizer.Add(wx.StaticText(self.panel,label=' Select calculation type: '),0,WACV) 790 calcType = wx.ComboBox(self.panel,value=self.calcType,choices=calcChoice, 791 style=wx.CB_READONLY|wx.CB_DROPDOWN) 792 calcType.Bind(wx.EVT_COMBOBOX,OnCalcType) 793 calcSizer.Add(calcType,0,WACV) 794 mainSizer.Add(calcSizer) 795 if self.Parms: 796 parmSel = wx.BoxSizer(wx.HORIZONTAL) 797 parmSel.Add(wx.StaticText(self.panel,label=' Select parameter to vary: '),0,WACV) 798 parmsel = wx.ComboBox(self.panel,value=self.Parm,choices=self.Parms, 799 style=wx.CB_READONLY|wx.CB_DROPDOWN) 800 parmsel.Bind(wx.EVT_COMBOBOX,OnParmSel) 801 parmSel.Add(parmsel,0,WACV) 802 mainSizer.Add(parmSel) 803 mainSizer.Add(wx.StaticText(self.panel,label=' Enter parameter range & no. steps: '),0,WACV) 804 parmRange = wx.BoxSizer(wx.HORIZONTAL) 805 numChoice = [str(i+1) for i in range(10)] 806 parmrange = wx.TextCtrl(self.panel,value='%.3f %.3f'%(self.parmRange[0],self.parmRange[1]), 807 style=wx.TE_PROCESS_ENTER) 808 parmrange.Bind(wx.EVT_TEXT_ENTER,OnParmRange) 809 parmrange.Bind(wx.EVT_KILL_FOCUS,OnParmRange) 810 parmRange.Add(parmrange,0,WACV) 811 numStep = wx.ComboBox(self.panel,value=str(self.parmStep),choices=numChoice, 812 style=wx.CB_READONLY|wx.CB_DROPDOWN) 813 numStep.Bind(wx.EVT_COMBOBOX,OnNumStep) 814 parmRange.Add(numStep,0,WACV) 815 mainSizer.Add(parmRange) 816 if 'selected' in self.calcType: 817 planeSizer = wx.BoxSizer(wx.HORIZONTAL) 818 planeSizer.Add(wx.StaticText(self.panel,label=' Select plane: '),0,WACV) 819 plane = wx.ComboBox(self.panel,value=self.plane,choices=self.planeChoice, 820 style=wx.CB_READONLY|wx.CB_DROPDOWN) 821 plane.Bind(wx.EVT_COMBOBOX,OnPlane) 822 planeSizer.Add(plane,0,WACV) 823 planeSizer.Add(wx.StaticText(self.panel,label=' Max. l index: '),0,WACV) 824 lmax = wx.ComboBox(self.panel,value=self.lmax,choices=self.lmaxChoice, 825 style=wx.CB_READONLY|wx.CB_DROPDOWN) 826 lmax.Bind(wx.EVT_COMBOBOX,OnMaxL) 827 planeSizer.Add(lmax,0,WACV) 828 mainSizer.Add(planeSizer) 829 else: 830 instChoice = ['None','Mean Gaussian','Gaussian',] 831 instSizer = wx.BoxSizer(wx.HORIZONTAL) 832 instSizer.Add(wx.StaticText(self.panel,label=' Select instrument broadening: '),0,WACV) 833 instsel = wx.ComboBox(self.panel,value=self.Inst,choices=instChoice, 834 style=wx.CB_READONLY|wx.CB_DROPDOWN) 835 instsel.Bind(wx.EVT_COMBOBOX,OnInstSel) 836 instSizer.Add(instsel,0,WACV) 837 mainSizer.Add(instSizer) 838 OkBtn = wx.Button(self.panel,-1,"Ok") 839 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 840 cancelBtn = wx.Button(self.panel,-1,"Cancel") 841 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 842 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 843 btnSizer.Add((20,20),1) 844 btnSizer.Add(OkBtn) 845 btnSizer.Add((20,20),1) 846 btnSizer.Add(cancelBtn) 847 btnSizer.Add((20,20),1) 848 849 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 850 self.panel.SetSizer(mainSizer) 851 self.panel.Fit() 852 self.Fit() 853 854 def GetSelection(self): 855 if 'powder' in self.calcType: 856 return 'PWDR',self.Inst,self.Parm,self.parmRange,self.parmStep 857 elif 'selected' in self.calcType: 858 return 'SADP',self.plane,self.lmax 859 860 def OnOk(self,event): 861 parent = self.GetParent() 862 parent.Raise() 863 self.EndModal(wx.ID_OK) 864 865 def OnCancel(self,event): 866 parent = self.GetParent() 867 parent.Raise() 868 self.EndModal(wx.ID_CANCEL) 869 870 ################################################################################ 871 class AddHatomDialog(wx.Dialog): 872 '''H atom addition dialog. After :meth:`ShowModal` returns, the results 873 are found in dict :attr:`self.data`, which is accessed using :meth:`GetData`. 874 875 :param wx.Frame parent: reference to parent frame (or None) 876 :param dict Neigh: a dict of atom names with list of atom name, dist pairs for neighboring atoms 877 :param dict phase: a dict containing the phase as defined by 878 :ref:`Phase Tree Item <Phase_table>` 879 ''' 880 def __init__(self,parent,Neigh,phase): 881 wx.Dialog.__init__(self,parent,wx.ID_ANY,'H atom add', 882 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 883 self.panel = wxscroll.ScrolledPanel(self) #just a dummy - gets destroyed in Draw! 884 self.Neigh = Neigh 885 self.phase = phase 886 self.Hatoms = [] 887 self.Draw(self.Neigh,self.phase) 888 889 def Draw(self,Neigh,phase): 890 '''Creates the contents of the dialog. Normally called 891 by :meth:`__init__`. 892 ''' 893 def OnHSelect(event): 894 Obj = event.GetEventObject() 895 item,i = Indx[Obj.GetId()] 896 for obj in Indx[item]: 897 obj.SetValue(False) 898 Obj.SetValue(True) 899 self.Neigh[item][2] = i 900 901 def OnBond(event): 902 Obj = event.GetEventObject() 903 inei,ibond = Indx[Obj.GetId()] 904 self.Neigh[inei][1][0][ibond][2] = Obj.GetValue() 905 906 self.panel.Destroy() 907 self.panel = wxscroll.ScrolledPanel(self,style = wx.DEFAULT_DIALOG_STYLE) 908 mainSizer = wx.BoxSizer(wx.VERTICAL) 909 mainSizer.Add(wx.StaticText(self.panel,-1,'H atom add controls for phase %s:'%(phase['General']['Name'])), 910 0,wx.LEFT|wx.TOP,10) 911 mainSizer.Add(wx.StaticText(self.panel,-1,'NB: Check selections as they may not be correct'),0,WACV|wx.LEFT,10) 912 mainSizer.Add(wx.StaticText(self.panel,-1," Atom: Add # H's Use: Neighbors, dist"),0,wx.TOP|wx.LEFT,5) 913 nHatms = ['0','1','2','3'] 914 dataSizer = wx.FlexGridSizer(0,3,0,0) 915 Indx = {} 916 for inei,neigh in enumerate(Neigh): 917 dataSizer.Add(wx.StaticText(self.panel,-1,' %s: '%(neigh[0])),0,WACV) 918 nH = 1 #for O atom 919 if 'C' in neigh[0] or 'N' in neigh[0]: 920 nH = 4-len(neigh[1][0]) 921 checks = wx.BoxSizer(wx.HORIZONTAL) 922 Ids = [] 923 for i in range(nH+1): 924 nHs = wx.CheckBox(self.panel,-1,label=nHatms[i]) 925 if i == neigh[2]: 926 nHs.SetValue(True) 927 Indx[nHs.GetId()] = [inei,i] 928 Ids.append(nHs) 929 nHs.Bind(wx.EVT_CHECKBOX, OnHSelect) 930 checks.Add(nHs,0,WACV) 931 Indx[inei] = Ids 932 dataSizer.Add(checks,0,WACV) 933 lineSizer = wx.BoxSizer(wx.HORIZONTAL) 934 for ib,bond in enumerate(neigh[1][0]): 935 Bond = wx.CheckBox(self.panel,-1,label=': %s, %.3f'%(bond[0],bond[1])) 936 Bond.SetValue(bond[2]) 937 Indx[Bond.GetId()] = [inei,ib] 938 Bond.Bind(wx.EVT_CHECKBOX,OnBond) 939 lineSizer.Add(Bond,0,WACV) 940 dataSizer.Add(lineSizer,0,WACV|wx.RIGHT,10) 941 mainSizer.Add(dataSizer,0,wx.LEFT,5) 942 943 CancelBtn = wx.Button(self.panel,-1,'Cancel') 944 CancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 945 OkBtn = wx.Button(self.panel,-1,'Ok') 946 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 947 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 948 btnSizer.Add((20,20),1) 949 btnSizer.Add(OkBtn) 950 btnSizer.Add((20,20),1) 951 btnSizer.Add(CancelBtn) 952 btnSizer.Add((20,20),1) 953 mainSizer.Add(btnSizer,0,wx.BOTTOM|wx.TOP, 10) 954 self.panel.SetSizer(mainSizer) 955 size = np.array(self.GetSize()) 956 self.panel.SetupScrolling() 957 self.panel.SetAutoLayout(1) 958 size = [size[0]-5,size[1]-20] #this fiddling is needed for older wx! 959 self.panel.SetSize(size) 960 961 def GetData(self): 962 'Returns the values from the dialog' 963 for neigh in self.Neigh: 964 for ibond,bond in enumerate(neigh[1][0]): 965 if not bond[2]: 966 neigh[1][1][1][ibond] = 0 #deselected bond 967 neigh[1][1][1] = [a for a in neigh[1][1][1] if a] 968 return self.Neigh #has #Hs to add for each entry 969 970 def OnOk(self,event): 971 'Called when the OK button is pressed' 972 parent = self.GetParent() 973 parent.Raise() 974 self.EndModal(wx.ID_OK) 975 976 def OnCancel(self,event): 977 parent = self.GetParent() 978 parent.Raise() 979 self.EndModal(wx.ID_CANCEL) 980 981 ################################################################################ 982 ################################################################################ 983 ################################################################################ 984 985 69 986 def SetPhaseWindow(mainFrame,phasePage,mainSizer=None,size=None,Scroll=0): 70 987 if not mainSizer is None: … … 814 1731 text[0] = ' Magnetic Space Group: '+SGData['MagSpGrp'] 815 1732 text[3] = ' The magnetic lattice point group is '+SGData['MagPtGp'] 816 G2gd.SGMagSpinBox(General,msg,text,table,OprNames,SpnFlp).Show()1733 SGMagSpinBox(General,msg,text,table,OprNames,SpnFlp).Show() 817 1734 818 1735 def OnDminVal(event): … … 1407 2324 1408 2325 def OnTransform(event): 1409 dlg = G2gd.TransformDialog(G2frame,data)2326 dlg = TransformDialog(G2frame,data) 1410 2327 try: 1411 2328 if dlg.ShowModal() == wx.ID_OK: … … 1435 2352 Atoms = newPhase['Atoms'] 1436 2353 if ifMag: 1437 dlg = G2gd.UseMagAtomDialog(G2frame,Atoms,atCodes)2354 dlg = UseMagAtomDialog(G2frame,Atoms,atCodes) 1438 2355 try: 1439 2356 if dlg.ShowModal() == wx.ID_OK: … … 1998 2915 DisAglCtls['AngleRadii'].append(0.5) 1999 2916 DisAglCtls['BondRadii'].append(0.5) 2000 dlg = G2 gd.DisAglDialog(G2frame,DisAglCtls,generalData,Reset=False)2917 dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData,Reset=False) 2001 2918 if dlg.ShowModal() == wx.ID_OK: 2002 2919 DisAglCtls = dlg.GetData() … … 2050 2967 HydIds = {} 2051 2968 mapError = False 2052 dlg = G2gd.AddHatomDialog(G2frame,Neigh,data)2969 dlg = AddHatomDialog(G2frame,Neigh,data) 2053 2970 if dlg.ShowModal() == wx.ID_OK: 2054 2971 Nat = len(atomData) … … 2388 3305 atomData = data['Atoms'] 2389 3306 SGData = generalData['SGData'] 2390 dlg = G2gd.SymOpDialog(G2frame,SGData,True,True)3307 dlg = SymOpDialog(G2frame,SGData,True,True) 2391 3308 New = False 2392 3309 try: … … 2493 3410 if 'DisAglCtls' in generalData: 2494 3411 DisAglCtls = generalData['DisAglCtls'] 2495 dlg = G2 gd.DisAglDialog(G2frame,DisAglCtls,generalData)3412 dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData) 2496 3413 if dlg.ShowModal() == wx.ID_OK: 2497 3414 DisAglCtls = dlg.GetData() … … 2549 3466 if 'DisAglCtls' in generalData: 2550 3467 DisAglCtls = generalData['DisAglCtls'] 2551 dlg = G2 gd.DisAglDialog(G2frame,DisAglCtls,generalData)3468 dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData) 2552 3469 if dlg.ShowModal() == wx.ID_OK: 2553 3470 DisAglCtls = dlg.GetData() … … 3505 4422 if debug: idebug = 1 3506 4423 ctrls = '' 3507 dlg = G2gd.DIFFaXcontrols(G2frame,ctrls)4424 dlg = DIFFaXcontrols(G2frame,ctrls) 3508 4425 if dlg.ShowModal() == wx.ID_OK: 3509 4426 simCodes = dlg.GetSelection() … … 3597 4514 data['Layers']['seqCodes'] = [] 3598 4515 Parms = G2pwd.GetStackParms(data['Layers']) 3599 dlg = G2gd.DIFFaXcontrols(G2frame,ctrls,Parms)4516 dlg = DIFFaXcontrols(G2frame,ctrls,Parms) 3600 4517 if dlg.ShowModal() == wx.ID_OK: 3601 4518 simCodes = dlg.GetSelection() … … 4365 5282 if 'DisAglCtls' in generalData: 4366 5283 DisAglCtls = generalData['DisAglCtls'] 4367 dlg = G2 gd.DisAglDialog(G2frame,DisAglCtls,generalData,Angle=False)5284 dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData,Angle=False) 4368 5285 if dlg.ShowModal() == wx.ID_OK: 4369 5286 DisAglCtls = dlg.GetData() … … 4404 5321 SGData = generalData['SGData'] 4405 5322 SpnFlp = SGData.get('SpnFlp',[]) 4406 dlg = G2gd.SymOpDialog(G2frame,SGData,False,True)5323 dlg = SymOpDialog(G2frame,SGData,False,True) 4407 5324 try: 4408 5325 if dlg.ShowModal() == wx.ID_OK: … … 4460 5377 indx = drawAtoms.GetSelectedRows() 4461 5378 indx.sort() 4462 dlg = G2gd.SphereEnclosure(G2frame,data['General'],data['Drawing'],indx)5379 dlg = SphereEnclosure(G2frame,data['General'],data['Drawing'],indx) 4463 5380 try: 4464 5381 if dlg.ShowModal() == wx.ID_OK: … … 4515 5432 SGData = generalData['SGData'] 4516 5433 SpnFlp = SGData.get('SpnFlp',[]) 4517 dlg = G2gd.SymOpDialog(G2frame,SGData,False,True)5434 dlg = SymOpDialog(G2frame,SGData,False,True) 4518 5435 try: 4519 5436 if dlg.ShowModal() == wx.ID_OK:
Note: See TracChangeset
for help on using the changeset viewer.