- Timestamp:
- Feb 2, 2012 11:27:53 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/GSASII.py ¶
r467 r468 1139 1139 dlg = wx.FileDialog(self, 'Choose GSAS-II project file name', '.', '', 1140 1140 'GSAS-II project file (*.gpx)|*.gpx',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR) 1141 if self.dirname:1142 dlg.SetDirectory(self.dirname)1143 1141 try: 1144 1142 if dlg.ShowModal() == wx.ID_OK: -
TabularUnified trunk/GSASIIIO.py ¶
r467 r468 36 36 return 0 37 37 38 def SelectPowderData( self, filename):38 def SelectPowderData(G2frame, filename): 39 39 """Selects banks of data from a filename of any GSAS powder data format 40 40 Input - filename: any GSAS powder data formatted file (currently STD, FXYE, FXY & ESD) … … 48 48 First line of this file: 49 49 '''+File.readline() 50 dlg = wx.MessageDialog( self, Title, 'Is this the file you want?',50 dlg = wx.MessageDialog(G2frame, Title, 'Is this the file you want?', 51 51 wx.YES_NO | wx.ICON_QUESTION) 52 52 try: … … 58 58 59 59 if '.xye' in filename: #Topas style xye file (e.g. 2-th, I, sig) - no iparm file/no BANK record 60 dlg = wx.MessageDialog( self,'''Is this laboratory Cu Ka1/Ka2 data?60 dlg = wx.MessageDialog(G2frame,'''Is this laboratory Cu Ka1/Ka2 data? 61 61 (No = 0.6A wavelength synchrotron data) 62 62 Change wavelength in Instrument Parameters if needed''','Data type?', … … 84 84 85 85 else: #GSAS style fxye or fxy file (e.g. 100*2-th, I, sig) 86 self.IparmName = GetInstrumentFile(self,filename)87 if self.IparmName:88 Iparm = GetInstrumentData( self.IparmName)86 G2frame.IparmName = GetInstrumentFile(G2frame,filename) 87 if G2frame.IparmName: 88 Iparm = GetInstrumentData(G2frame.IparmName) 89 89 else: 90 90 Iparm = {} #Assume CuKa lab data if no iparm file … … 124 124 result = [0] 125 125 if len(Banks) >= 2: 126 dlg = wx.MultiChoiceDialog( self, 'Which scans do you want?', 'Select scans', Banks, wx.CHOICEDLG_STYLE)126 dlg = wx.MultiChoiceDialog(G2frame, 'Which scans do you want?', 'Select scans', Banks, wx.CHOICEDLG_STYLE) 127 127 try: 128 128 if dlg.ShowModal() == wx.ID_OK: … … 135 135 FoundData.append((filename,Pos[i],Banks[i])) 136 136 else: 137 dlg = wx.MessageDialog( self, 'ERROR - this is not a GSAS powder data file', 'No BANK records', wx.OK | wx.ICON_ERROR)137 dlg = wx.MessageDialog(G2frame, 'ERROR - this is not a GSAS powder data file', 'No BANK records', wx.OK | wx.ICON_ERROR) 138 138 try: 139 139 result = dlg.ShowModal() … … 142 142 return FoundData,Iparm,Comments,Temperature 143 143 144 def GetInstrumentFile( self,filename):144 def GetInstrumentFile(G2frame,filename): 145 145 import os.path as op 146 dlg = wx.FileDialog( self,'Choose an instrument file','.', '', 'GSAS iparm file (*.prm)|*.prm|All files(*.*)|*.*',146 dlg = wx.FileDialog(G2frame,'Choose an instrument file','.', '', 'GSAS iparm file (*.prm)|*.prm|All files(*.*)|*.*', 147 147 wx.OPEN|wx.CHANGE_DIR) 148 148 Tname = filename[:filename.index('.')]+'.prm' 149 149 if op.exists(Tname): 150 self.IparmName = Tname151 if self.IparmName: dlg.SetFilename(self.IparmName)150 G2frame.IparmName = Tname 151 if G2frame.IparmName: dlg.SetFilename(G2frame.IparmName) 152 152 filename = '' 153 153 try: … … 472 472 return [np.array(x),np.array(y),np.array(w),np.zeros(N),np.zeros(N),np.zeros(N)] 473 473 474 def CheckImageFile( self,imagefile):474 def CheckImageFile(G2frame,imagefile): 475 475 if not ospath.exists(imagefile): 476 dlg = wx.FileDialog( self, 'Bad image file name; choose name', '.', '',\476 dlg = wx.FileDialog(G2frame, 'Bad image file name; choose name', '.', '',\ 477 477 'Any image file (*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img)\ 478 478 |*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img|\ … … 492 492 return imagefile 493 493 494 def GetImageData( self,imagefile,imageOnly=False):494 def GetImageData(G2frame,imagefile,imageOnly=False): 495 495 ext = ospath.splitext(imagefile)[1] 496 496 Comments = [] … … 795 795 return head,data,Npix,image 796 796 797 def ProjFileOpen( self):798 file = open( self.GSASprojectfile,'rb')799 print 'load from file: ', self.GSASprojectfile797 def ProjFileOpen(G2frame): 798 file = open(G2frame.GSASprojectfile,'rb') 799 print 'load from file: ',G2frame.GSASprojectfile 800 800 wx.BeginBusyCursor() 801 801 try: … … 807 807 datum = data[0] 808 808 809 Id = self.PatternTree.AppendItem(parent=self.root,text=datum[0])809 Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text=datum[0]) 810 810 if 'PWDR' in datum[0]: 811 self.PatternTree.SetItemPyData(Id,datum[1][:3]) #temp. trim off junk811 G2frame.PatternTree.SetItemPyData(Id,datum[1][:3]) #temp. trim off junk 812 812 else: 813 self.PatternTree.SetItemPyData(Id,datum[1])813 G2frame.PatternTree.SetItemPyData(Id,datum[1]) 814 814 for datus in data[1:]: 815 sub = self.PatternTree.AppendItem(Id,datus[0])816 self.PatternTree.SetItemPyData(sub,datus[1])815 sub = G2frame.PatternTree.AppendItem(Id,datus[0]) 816 G2frame.PatternTree.SetItemPyData(sub,datus[1]) 817 817 if 'IMG' in datum[0]: #retreive image default flag & data if set 818 Data = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Image Controls'))818 Data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Image Controls')) 819 819 if Data['setDefault']: 820 self.imageDefault = Data820 G2frame.imageDefault = Data 821 821 file.close() 822 822 … … 824 824 wx.EndBusyCursor() 825 825 print 'project load successful' 826 self.NewPlot = True827 828 def ProjFileSave( self):829 if not self.PatternTree.IsEmpty():830 file = open( self.GSASprojectfile,'wb')831 print 'save to file: ', self.GSASprojectfile826 G2frame.NewPlot = True 827 828 def ProjFileSave(G2frame): 829 if not G2frame.PatternTree.IsEmpty(): 830 file = open(G2frame.GSASprojectfile,'wb') 831 print 'save to file: ',G2frame.GSASprojectfile 832 832 wx.BeginBusyCursor() 833 833 try: 834 item, cookie = self.PatternTree.GetFirstChild(self.root)834 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 835 835 while item: 836 836 data = [] 837 name = self.PatternTree.GetItemText(item)838 data.append([name, self.PatternTree.GetItemPyData(item)])839 item2, cookie2 = self.PatternTree.GetFirstChild(item)837 name = G2frame.PatternTree.GetItemText(item) 838 data.append([name,G2frame.PatternTree.GetItemPyData(item)]) 839 item2, cookie2 = G2frame.PatternTree.GetFirstChild(item) 840 840 while item2: 841 name = self.PatternTree.GetItemText(item2)842 data.append([name, self.PatternTree.GetItemPyData(item2)])843 item2, cookie2 = self.PatternTree.GetNextChild(item, cookie2)844 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)841 name = G2frame.PatternTree.GetItemText(item2) 842 data.append([name,G2frame.PatternTree.GetItemPyData(item2)]) 843 item2, cookie2 = G2frame.PatternTree.GetNextChild(item, cookie2) 844 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 845 845 cPickle.dump(data,file,1) 846 846 file.close() … … 1047 1047 for name in files: 1048 1048 name = name.split('.') 1049 if len(name) == 3 and name[0] == Name and 'bak' in name[1]:1049 if len(name) >= 3 and name[0] == Name and 'bak' in name[-2]: 1050 1050 if makeBack: 1051 last = max(last,int(name[ 1].strip('bak'))+1)1051 last = max(last,int(name[-2].strip('bak'))+1) 1052 1052 else: 1053 last = max(last,int(name[ 1].strip('bak')))1054 GPXback = ospath.join(GPXpath, ospath.splitext(GPXname)[0]+'.bak'+str(last)+'.gpx')1053 last = max(last,int(name[-2].strip('bak'))) 1054 GPXback = ospath.join(GPXpath,GPXname.rstrip('.'.join(name[-2:]))+'.bak'+str(last)+'.gpx') 1055 1055 dfu.copy_file(GPXfile,GPXback) 1056 1056 return GPXback … … 1186 1186 return HKLFdata 1187 1187 1188 def SaveIntegration( self,PickId,data):1189 azms = self.Integrate[1]1190 X = self.Integrate[2][:-1]1188 def SaveIntegration(G2frame,PickId,data): 1189 azms = G2frame.Integrate[1] 1190 X = G2frame.Integrate[2][:-1] 1191 1191 Xminmax = [X[0],X[-1]] 1192 1192 N = len(X) 1193 Id = self.PatternTree.GetItemParent(PickId)1194 name = self.PatternTree.GetItemText(Id)1193 Id = G2frame.PatternTree.GetItemParent(PickId) 1194 name = G2frame.PatternTree.GetItemText(Id) 1195 1195 name = name.replace('IMG ','PWDR ') 1196 Comments = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id, 'Comments'))1196 Comments = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Comments')) 1197 1197 names = ['Type','Lam','Zero','Polariz.','U','V','W','X','Y','SH/L','Azimuth'] 1198 1198 codes = [0 for i in range(11)] … … 1205 1205 Azms.append((azms[i+1]+azm)/2.) 1206 1206 for i,azm in enumerate(azms[:-1]): 1207 item, cookie = self.PatternTree.GetFirstChild(self.root)1207 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 1208 1208 Id = 0 1209 1209 while item: 1210 Name = self.PatternTree.GetItemText(item)1210 Name = G2frame.PatternTree.GetItemText(item) 1211 1211 if name == Name: 1212 1212 Id = item 1213 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)1213 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 1214 1214 parms = ['PXC',data['wavelength'],0.0,0.99,1.0,-0.10,0.4,0.30,1.0,0.0001,Azms[i]] #set polarization for synchrotron radiation! 1215 Y = self.Integrate[0][i]1215 Y = G2frame.Integrate[0][i] 1216 1216 W = 1./Y #probably not true 1217 1217 Sample = G2pdG.SetDefaultSample() 1218 1218 if Id: 1219 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id, 'Comments'),Comments)1220 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Limits'),[tuple(Xminmax),Xminmax])1221 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Background'),[['chebyschev',1,3,1.0,0.0,0.0],1219 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Comments'),Comments) 1220 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Limits'),[tuple(Xminmax),Xminmax]) 1221 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Background'),[['chebyschev',1,3,1.0,0.0,0.0], 1222 1222 {'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]}]) 1223 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Instrument Parameters'),[tuple(parms),parms[:],codes,names])1224 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Peak List'),[])1225 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Index Peak List'),[])1226 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Unit Cells List'),[])1227 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Reflection Lists'),{})1223 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Instrument Parameters'),[tuple(parms),parms[:],codes,names]) 1224 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),[]) 1225 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Index Peak List'),[]) 1226 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Unit Cells List'),[]) 1227 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Reflection Lists'),{}) 1228 1228 else: 1229 Id = self.PatternTree.AppendItem(parent=self.root,text=name+" Azm= %.2f"%(Azms[i]))1230 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments)1231 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Limits'),[tuple(Xminmax),Xminmax])1232 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Background'),[['chebyschev',1,3,1.0,0.0,0.0],1229 Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text=name+" Azm= %.2f"%(Azms[i])) 1230 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Comments'),Comments) 1231 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Limits'),[tuple(Xminmax),Xminmax]) 1232 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Background'),[['chebyschev',1,3,1.0,0.0,0.0], 1233 1233 {'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]}]) 1234 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(parms),parms[:],codes,names])1235 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Sample Parameters'),Sample)1236 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Peak List'),[])1237 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Index Peak List'),[])1238 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Unit Cells List'),[])1239 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Reflection Lists'),{})1240 self.PatternTree.SetItemPyData(Id,[[''],[np.array(X),np.array(Y),np.array(W),np.zeros(N),np.zeros(N),np.zeros(N)]])1241 self.PatternTree.SelectItem(Id)1242 self.PatternTree.Expand(Id)1243 self.PatternId = Id1234 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(parms),parms[:],codes,names]) 1235 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Sample Parameters'),Sample) 1236 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Peak List'),[]) 1237 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Index Peak List'),[]) 1238 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Unit Cells List'),[]) 1239 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Reflection Lists'),{}) 1240 G2frame.PatternTree.SetItemPyData(Id,[[''],[np.array(X),np.array(Y),np.array(W),np.zeros(N),np.zeros(N),np.zeros(N)]]) 1241 G2frame.PatternTree.SelectItem(Id) 1242 G2frame.PatternTree.Expand(Id) 1243 G2frame.PatternId = Id 1244 1244 1245 def powderFxyeSave( self,exports,powderfile):1245 def powderFxyeSave(G2frame,exports,powderfile): 1246 1246 head,tail = ospath.split(powderfile) 1247 1247 name,ext = tail.split('.') … … 1251 1251 prmname = filename.strip(ext)+'prm' 1252 1252 prm = open(prmname,'w') #old style GSAS parm file 1253 PickId = G2gd.GetPatternTreeItemId( self, self.root, export)1254 Values,Names = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \1253 PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export) 1254 Values,Names = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, \ 1255 1255 PickId, 'Instrument Parameters'))[1::2] #get values & names 1256 1256 Inst = dict(zip(Names,Values)) … … 1274 1274 print 'save powder pattern to file: ',filename 1275 1275 try: 1276 x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(PickId)[1]1276 x,y,w,yc,yb,yd = G2frame.PatternTree.GetItemPyData(PickId)[1] 1277 1277 file.write(powderfile+'\n') 1278 1278 file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\ … … 1287 1287 print 'powder pattern file written' 1288 1288 1289 def powderXyeSave( self,exports,powderfile):1289 def powderXyeSave(G2frame,exports,powderfile): 1290 1290 head,tail = ospath.split(powderfile) 1291 1291 name,ext = tail.split('.') 1292 1292 for i,export in enumerate(exports): 1293 1293 filename = ospath.join(head,name+'-%03d.'%(i)+ext) 1294 PickId = G2gd.GetPatternTreeItemId( self, self.root, export)1294 PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export) 1295 1295 file = open(filename,'w') 1296 1296 file.write('#%s\n'%(export)) … … 1298 1298 wx.BeginBusyCursor() 1299 1299 try: 1300 x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(PickId)[1]1300 x,y,w,yc,yb,yd = G2frame.PatternTree.GetItemPyData(PickId)[1] 1301 1301 s = list(np.sqrt(1./np.array(w))) 1302 1302 XYW = zip(x,y,s) … … 1308 1308 print 'powder pattern file written' 1309 1309 1310 def PDFSave( self,exports):1310 def PDFSave(G2frame,exports): 1311 1311 for export in exports: 1312 PickId = G2gd.GetPatternTreeItemId( self, self.root, export)1312 PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export) 1313 1313 SQname = 'S(Q)'+export[4:] 1314 1314 GRname = 'G(R)'+export[4:] 1315 sqfilename = ospath.join( self.dirname,export.replace(' ','_')[5:]+'.sq')1316 grfilename = ospath.join( self.dirname,export.replace(' ','_')[5:]+'.gr')1317 sqId = G2gd.GetPatternTreeItemId( self, PickId, SQname)1318 grId = G2gd.GetPatternTreeItemId( self, PickId, GRname)1319 sqdata = np.array( self.PatternTree.GetItemPyData(sqId)[1][:2]).T1320 grdata = np.array( self.PatternTree.GetItemPyData(grId)[1][:2]).T1315 sqfilename = ospath.join(G2frame.dirname,export.replace(' ','_')[5:]+'.sq') 1316 grfilename = ospath.join(G2frame.dirname,export.replace(' ','_')[5:]+'.gr') 1317 sqId = G2gd.GetPatternTreeItemId(G2frame, PickId, SQname) 1318 grId = G2gd.GetPatternTreeItemId(G2frame, PickId, GRname) 1319 sqdata = np.array(G2frame.PatternTree.GetItemPyData(sqId)[1][:2]).T 1320 grdata = np.array(G2frame.PatternTree.GetItemPyData(grId)[1][:2]).T 1321 1321 sqfile = open(sqfilename,'w') 1322 1322 grfile = open(grfilename,'w') … … 1332 1332 grfile.close() 1333 1333 1334 def PeakListSave( self,file,peaks):1335 print 'save peak list to file: ', self.peaklistfile1334 def PeakListSave(G2frame,file,peaks): 1335 print 'save peak list to file: ',G2frame.peaklistfile 1336 1336 if not peaks: 1337 dlg = wx.MessageDialog( self, 'No peaks!', 'Nothing to save!', wx.OK)1337 dlg = wx.MessageDialog(G2frame, 'No peaks!', 'Nothing to save!', wx.OK) 1338 1338 try: 1339 1339 result = dlg.ShowModal() … … 1346 1346 print 'peak list saved' 1347 1347 1348 def IndexPeakListSave( self,peaks):1349 file = open( self.peaklistfile,'wa')1350 print 'save index peak list to file: ', self.peaklistfile1348 def IndexPeakListSave(G2frame,peaks): 1349 file = open(G2frame.peaklistfile,'wa') 1350 print 'save index peak list to file: ',G2frame.peaklistfile 1351 1351 wx.BeginBusyCursor() 1352 1352 try: 1353 1353 if not peaks: 1354 dlg = wx.MessageDialog( self, 'No peaks!', 'Nothing to save!', wx.OK)1354 dlg = wx.MessageDialog(G2frame, 'No peaks!', 'Nothing to save!', wx.OK) 1355 1355 try: 1356 1356 result = dlg.ShowModal() … … 1365 1365 print 'index peak list saved' 1366 1366 1367 def ReadEXPPhase( self,filename):1367 def ReadEXPPhase(G2frame,filename): 1368 1368 shModels = ['cylindrical','none','shear - 2/m','rolling - mmm'] 1369 1369 textureData = {'Order':0,'Model':'cylindrical','Sample omega':[False,0.0], … … 1390 1390 PNames.append(Expr[n][key]) 1391 1391 if Num < 8: 1392 dlg = wx.SingleChoiceDialog( self, 'Which phase to read?', 'Read phase data', PNames, wx.CHOICEDLG_STYLE)1392 dlg = wx.SingleChoiceDialog(G2frame, 'Which phase to read?', 'Read phase data', PNames, wx.CHOICEDLG_STYLE) 1393 1393 try: 1394 1394 if dlg.ShowModal() == wx.ID_OK: -
TabularUnified trunk/GSASIIgrid.py ¶
r467 r468 708 708 innerSetValue(row, col, value) 709 709 710 def UpdateNotebook( self,data):710 def UpdateNotebook(G2frame,data): 711 711 if data: 712 self.dataFrame.SetLabel('Notebook')713 self.dataDisplay = wx.TextCtrl(parent=self.dataFrame,size=self.dataFrame.GetClientSize(),712 G2frame.dataFrame.SetLabel('Notebook') 713 G2frame.dataDisplay = wx.TextCtrl(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize(), 714 714 style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP) 715 715 for line in data: 716 self.dataDisplay.AppendText(line+"\n")717 self.dataDisplay.AppendText('Notebook entry @ '+time.ctime()+"\n")718 719 def UpdateControls( self,data):716 G2frame.dataDisplay.AppendText(line+"\n") 717 G2frame.dataDisplay.AppendText('Notebook entry @ '+time.ctime()+"\n") 718 719 def UpdateControls(G2frame,data): 720 720 #patch 721 721 if 'deriv type' not in data: … … 737 737 738 738 def OnSelectData(event): 739 choices = ['All',]+GetPatternTreeDataNames( self,['PWDR',])739 choices = ['All',]+GetPatternTreeDataNames(G2frame,['PWDR',]) 740 740 sel = [] 741 741 if 'Seq Data' in data: … … 743 743 sel.append(choices.index(item)) 744 744 names = [] 745 dlg = wx.MultiChoiceDialog( self,'Select data:','Sequential refinement',choices)745 dlg = wx.MultiChoiceDialog(G2frame,'Select data:','Sequential refinement',choices) 746 746 dlg.SetSelections(sel) 747 747 if dlg.ShowModal() == wx.ID_OK: … … 758 758 759 759 seqSizer = wx.BoxSizer(wx.HORIZONTAL) 760 seqSizer.Add(wx.StaticText( self.dataDisplay,label=' Sequential Refinement Powder Data: '),0,wx.ALIGN_CENTER_VERTICAL)761 selSeqData = wx.Button( self.dataDisplay,-1,label=' Select data')760 seqSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sequential Refinement Powder Data: '),0,wx.ALIGN_CENTER_VERTICAL) 761 selSeqData = wx.Button(G2frame.dataDisplay,-1,label=' Select data') 762 762 selSeqData.Bind(wx.EVT_BUTTON,OnSelectData) 763 763 seqSizer.Add(selSeqData,0,wx.ALIGN_CENTER_VERTICAL) 764 764 seqSizer.Add((5,0),0) 765 reverseSel = wx.CheckBox( self.dataDisplay,-1,label=' Reverse order?')765 reverseSel = wx.CheckBox(G2frame.dataDisplay,-1,label=' Reverse order?') 766 766 reverseSel.Bind(wx.EVT_CHECKBOX,OnReverse) 767 767 if 'Seq Data' not in data: … … 777 777 data['deriv type'] = derivSel.GetValue() 778 778 derivSel.SetValue(data['deriv type']) 779 wx.CallAfter(UpdateControls, self,data)779 wx.CallAfter(UpdateControls,G2frame,data) 780 780 781 781 def OnConvergence(event): … … 800 800 801 801 LSSizer = wx.FlexGridSizer(cols=6,vgap=5,hgap=5) 802 LSSizer.Add(wx.StaticText( self.dataDisplay,label=' Refinement derivatives: '),0,wx.ALIGN_CENTER_VERTICAL)802 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Refinement derivatives: '),0,wx.ALIGN_CENTER_VERTICAL) 803 803 Choice=['analytic Jacobian','numeric','analytic Hessian'] 804 derivSel = wx.ComboBox(parent= self.dataDisplay,value=data['deriv type'],choices=Choice,804 derivSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['deriv type'],choices=Choice, 805 805 style=wx.CB_READONLY|wx.CB_DROPDOWN) 806 806 derivSel.SetValue(data['deriv type']) … … 808 808 809 809 LSSizer.Add(derivSel,0,wx.ALIGN_CENTER_VERTICAL) 810 LSSizer.Add(wx.StaticText( self.dataDisplay,label=' Min delta-M/M: '),0,wx.ALIGN_CENTER_VERTICAL)811 Cnvrg = wx.TextCtrl( self.dataDisplay,-1,value='%.2g'%(data['min dM/M']),style=wx.TE_PROCESS_ENTER)810 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Min delta-M/M: '),0,wx.ALIGN_CENTER_VERTICAL) 811 Cnvrg = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.2g'%(data['min dM/M']),style=wx.TE_PROCESS_ENTER) 812 812 Cnvrg.Bind(wx.EVT_TEXT_ENTER,OnConvergence) 813 813 Cnvrg.Bind(wx.EVT_KILL_FOCUS,OnConvergence) 814 814 LSSizer.Add(Cnvrg,0,wx.ALIGN_CENTER_VERTICAL) 815 815 if 'Hessian' in data['deriv type']: 816 LSSizer.Add(wx.StaticText( self.dataDisplay,label=' Max cycles: '),0,wx.ALIGN_CENTER_VERTICAL)816 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Max cycles: '),0,wx.ALIGN_CENTER_VERTICAL) 817 817 Choice = ['0','1','2','3','5','10','15','20'] 818 maxCyc = wx.ComboBox(parent= self.dataDisplay,value=str(data['max cyc']),choices=Choice,818 maxCyc = wx.ComboBox(parent=G2frame.dataDisplay,value=str(data['max cyc']),choices=Choice, 819 819 style=wx.CB_READONLY|wx.CB_DROPDOWN) 820 820 maxCyc.SetValue(str(data['max cyc'])) … … 822 822 LSSizer.Add(maxCyc,0,wx.ALIGN_CENTER_VERTICAL) 823 823 else: 824 LSSizer.Add(wx.StaticText( self.dataDisplay,label=' Initial shift factor: '),0,wx.ALIGN_CENTER_VERTICAL)825 Factr = wx.TextCtrl( self.dataDisplay,-1,value='%.5f'%(data['shift factor']),style=wx.TE_PROCESS_ENTER)824 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Initial shift factor: '),0,wx.ALIGN_CENTER_VERTICAL) 825 Factr = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.5f'%(data['shift factor']),style=wx.TE_PROCESS_ENTER) 826 826 Factr.Bind(wx.EVT_TEXT_ENTER,OnFactor) 827 827 Factr.Bind(wx.EVT_KILL_FOCUS,OnFactor) … … 829 829 return LSSizer 830 830 831 if self.dataDisplay:832 self.dataDisplay.Destroy()833 if not self.dataFrame.GetStatusBar():834 Status = self.dataFrame.CreateStatusBar()831 if G2frame.dataDisplay: 832 G2frame.dataDisplay.Destroy() 833 if not G2frame.dataFrame.GetStatusBar(): 834 Status = G2frame.dataFrame.CreateStatusBar() 835 835 Status.SetStatusText('') 836 self.dataFrame.SetLabel('Controls')837 self.dataDisplay = wx.Panel(self.dataFrame)838 self.dataFrame.SetMenuBar(self.dataFrame.ControlsMenu)836 G2frame.dataFrame.SetLabel('Controls') 837 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 838 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.ControlsMenu) 839 839 mainSizer = wx.BoxSizer(wx.VERTICAL) 840 840 mainSizer.Add((5,5),0) 841 mainSizer.Add(wx.StaticText( self.dataDisplay,label=' Refinement Controls:'),0,wx.ALIGN_CENTER_VERTICAL)841 mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Refinement Controls:'),0,wx.ALIGN_CENTER_VERTICAL) 842 842 mainSizer.Add(LSSizer()) 843 843 mainSizer.Add((5,5),0) … … 845 845 mainSizer.Add((5,5),0) 846 846 847 mainSizer.Add(wx.StaticText( self.dataDisplay,label=' Density Map Controls:'),0,wx.ALIGN_CENTER_VERTICAL)847 mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Density Map Controls:'),0,wx.ALIGN_CENTER_VERTICAL) 848 848 849 849 mainSizer.Layout() 850 self.dataDisplay.SetSizer(mainSizer)851 self.dataDisplay.SetSize(mainSizer.Fit(self.dataFrame))852 self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))850 G2frame.dataDisplay.SetSizer(mainSizer) 851 G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame)) 852 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame)) 853 853 854 def UpdateComments( self,data):855 self.dataFrame.SetLabel('Comments')856 self.dataDisplay = wx.TextCtrl(parent=self.dataFrame,size=self.dataFrame.GetClientSize(),854 def UpdateComments(G2frame,data): 855 G2frame.dataFrame.SetLabel('Comments') 856 G2frame.dataDisplay = wx.TextCtrl(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize(), 857 857 style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP) 858 858 for line in data: 859 859 if line[-1] == '\n': 860 self.dataDisplay.AppendText(line)860 G2frame.dataDisplay.AppendText(line) 861 861 else: 862 self.dataDisplay.AppendText(line+'\n')863 864 def UpdateSeqResults( self,data):862 G2frame.dataDisplay.AppendText(line+'\n') 863 864 def UpdateSeqResults(G2frame,data): 865 865 """ 866 866 input: … … 886 886 sampleParm = {} 887 887 for name in histNames: 888 Id = GetPatternTreeItemId( self,self.root,name)889 sampleData = self.PatternTree.GetItemPyData(GetPatternTreeItemId(self,Id,'Sample Parameters'))888 Id = GetPatternTreeItemId(G2frame,G2frame.root,name) 889 sampleData = G2frame.PatternTree.GetItemPyData(GetPatternTreeItemId(G2frame,Id,'Sample Parameters')) 890 890 for item in sampleParmDict: 891 891 sampleParmDict[item].append(sampleData[item]) … … 909 909 910 910 def Select(event): 911 cols = self.dataDisplay.GetSelectedCols()912 rows = self.dataDisplay.GetSelectedRows()911 cols = G2frame.dataDisplay.GetSelectedCols() 912 rows = G2frame.dataDisplay.GetSelectedRows() 913 913 if cols: 914 914 plotData = [] … … 916 916 plotNames = [] 917 917 for col in cols: 918 plotData.append( self.SeqTable.GetColValues(col))918 plotData.append(G2frame.SeqTable.GetColValues(col)) 919 919 plotSig.append(GetSigData(col)) 920 plotNames.append( self.SeqTable.GetColLabelValue(col))920 plotNames.append(G2frame.SeqTable.GetColLabelValue(col)) 921 921 plotData = np.array(plotData) 922 G2plt.PlotSeq( self,plotData,plotSig,plotNames,sampleParms)922 G2plt.PlotSeq(G2frame,plotData,plotSig,plotNames,sampleParms) 923 923 elif rows: 924 924 name = histNames[rows[0]] 925 G2plt.PlotCovariance( self,Data=data[name])925 G2plt.PlotCovariance(G2frame,Data=data[name]) 926 926 927 if self.dataDisplay:928 self.dataDisplay.Destroy()927 if G2frame.dataDisplay: 928 G2frame.dataDisplay.Destroy() 929 929 cellList = {} 930 930 newCellDict = data[histNames[0]]['newCellDict'] … … 938 938 atomList[newAtomDict[item][0]] = item 939 939 sampleParms = GetSampleParms() 940 self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)941 self.dataFrame.SetLabel('Sequental refinement results')942 self.dataFrame.CreateStatusBar()940 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu) 941 G2frame.dataFrame.SetLabel('Sequental refinement results') 942 G2frame.dataFrame.CreateStatusBar() 943 943 colLabels = data['varyList']+atomList.keys()+cellList.keys() 944 944 Types = len(data['varyList']+atomList.keys()+cellList.keys())*[wg.GRID_VALUE_FLOAT,] … … 950 950 item += [newAtomDict[atomList[parm]][1] for parm in atomList.keys()] 951 951 item += [newCellDict[cellList[parm]][1] for parm in cellList.keys()] 952 self.SeqTable = Table(seqList,colLabels=colLabels,rowLabels=histNames,types=Types)953 self.dataDisplay = GSGrid(parent=self.dataFrame)954 self.dataDisplay.SetTable(self.SeqTable, True)955 self.dataDisplay.EnableEditing(False)956 self.dataDisplay.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK, Select)957 self.dataDisplay.SetRowLabelSize(8*len(histNames[0])) #pretty arbitrary 8958 self.dataDisplay.SetMargins(0,0)959 self.dataDisplay.AutoSizeColumns(True)960 self.dataFrame.setSizePosLeft([700,350])952 G2frame.SeqTable = Table(seqList,colLabels=colLabels,rowLabels=histNames,types=Types) 953 G2frame.dataDisplay = GSGrid(parent=G2frame.dataFrame) 954 G2frame.dataDisplay.SetTable(G2frame.SeqTable, True) 955 G2frame.dataDisplay.EnableEditing(False) 956 G2frame.dataDisplay.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK, Select) 957 G2frame.dataDisplay.SetRowLabelSize(8*len(histNames[0])) #pretty arbitrary 8 958 G2frame.dataDisplay.SetMargins(0,0) 959 G2frame.dataDisplay.AutoSizeColumns(True) 960 G2frame.dataFrame.setSizePosLeft([700,350]) 961 961 962 def UpdateConstraints( self,data):962 def UpdateConstraints(G2frame,data): 963 963 # data.update({'Hist':[],'HAP':[],'Phase':[]}) #empty dict - fill it 964 964 if not data: 965 965 data.update({'Hist':[],'HAP':[],'Phase':[]}) #empty dict - fill it 966 Histograms,Phases = self.GetUsedHistogramsAndPhasesfromTree()966 Histograms,Phases = G2frame.GetUsedHistogramsAndPhasesfromTree() 967 967 AtomDict = dict([Phases[phase]['pId'],Phases[phase]['Atoms']] for phase in Phases) 968 968 Natoms,phaseVary,phaseDict,pawleyLookup,FFtable,BLtable = G2str.GetPhaseData(Phases,Print=False) … … 991 991 Indx = {} 992 992 scope = {} #filled out later 993 self.Page = [0,'phs']993 G2frame.Page = [0,'phs'] 994 994 995 995 def GetPHlegends(Phases,Histograms): … … 1034 1034 if page[1] == 'phs': 1035 1035 atchoice = [item+' for '+phaseAtNames[item] for item in varList] 1036 dlg = wx.MultiChoiceDialog( self,'Select more variables:'+legend,FrstVarb+' and:',atchoice)1036 dlg = wx.MultiChoiceDialog(G2frame,'Select more variables:'+legend,FrstVarb+' and:',atchoice) 1037 1037 else: 1038 dlg = wx.MultiChoiceDialog( self,'Select more variables:'+legend,FrstVarb+' and:',varList)1038 dlg = wx.MultiChoiceDialog(G2frame,'Select more variables:'+legend,FrstVarb+' and:',varList) 1039 1039 varbs = [FrstVarb,] 1040 1040 if dlg.ShowModal() == wx.ID_OK: … … 1062 1062 Atoms = Phase['Atoms'] 1063 1063 constr = [] 1064 page = self.Page1064 page = G2frame.Page 1065 1065 choice = scope[page[1]] 1066 1066 if page[1] == 'phs': 1067 1067 atchoice = [item+' for '+phaseAtNames[item] for item in choice[2]] 1068 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],atchoice)1068 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],atchoice) 1069 1069 else: 1070 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],choice[2])1070 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],choice[2]) 1071 1071 if dlg.ShowModal() == wx.ID_OK: 1072 1072 sel = dlg.GetSelection() … … 1078 1078 def OnAddEquivalence(event): 1079 1079 constr = [] 1080 page = self.Page1080 page = G2frame.Page 1081 1081 choice = scope[page[1]] 1082 1082 if page[1] == 'phs': 1083 1083 atchoice = [item+' for '+phaseAtNames[item] for item in choice[2]] 1084 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],atchoice)1084 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],atchoice) 1085 1085 else: 1086 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],choice[2])1086 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],choice[2]) 1087 1087 if dlg.ShowModal() == wx.ID_OK: 1088 1088 sel = dlg.GetSelection() … … 1097 1097 def OnAddFunction(event): 1098 1098 constr = [] 1099 page = self.Page1099 page = G2frame.Page 1100 1100 choice = scope[page[1]] 1101 1101 if page[1] == 'phs': 1102 1102 atchoice = [item+' for '+phaseAtNames[item] for item in choice[2]] 1103 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],atchoice)1103 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],atchoice) 1104 1104 else: 1105 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],choice[2])1105 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],choice[2]) 1106 1106 if dlg.ShowModal() == wx.ID_OK: 1107 1107 sel = dlg.GetSelection() … … 1116 1116 def OnAddConstraint(event): 1117 1117 constr = [] 1118 page = self.Page1118 page = G2frame.Page 1119 1119 choice = scope[page[1]] 1120 1120 if page[1] == 'phs': 1121 1121 atchoice = [item+' for '+phaseAtNames[item] for item in choice[2]] 1122 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],atchoice)1122 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],atchoice) 1123 1123 else: 1124 dlg = wx.SingleChoiceDialog( self,'Select 1st variable:'+choice[1],choice[0],choice[2])1124 dlg = wx.SingleChoiceDialog(G2frame,'Select 1st variable:'+choice[1],choice[0],choice[2]) 1125 1125 if dlg.ShowModal() == wx.ID_OK: 1126 1126 sel = dlg.GetSelection() … … 1198 1198 constType = 'Equivalence' 1199 1199 extra = '; sum = 0' 1200 dlg = self.SumDialog(self,constType,'Enter value for each term in constraint'+extra,'',items)1200 dlg = G2frame.SumDialog(G2frame,constType,'Enter value for each term in constraint'+extra,'',items) 1201 1201 try: 1202 1202 if dlg.ShowModal() == wx.ID_OK: … … 1224 1224 HAPConstr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1) 1225 1225 Size[1] = min(Size[1],250) 1226 self.dataFrame.setSizePosLeft(Size)1226 G2frame.dataFrame.setSizePosLeft(Size) 1227 1227 1228 1228 def UpdateHistConstr(): … … 1239 1239 HistConstr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1) 1240 1240 Size[1] = min(Size[1],250) 1241 self.dataFrame.setSizePosLeft(Size)1241 G2frame.dataFrame.setSizePosLeft(Size) 1242 1242 1243 1243 def UpdatePhaseConstr(): … … 1254 1254 PhaseConstr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1) 1255 1255 Size[1] = min(Size[1],250) 1256 self.dataFrame.setSizePosLeft(Size)1256 G2frame.dataFrame.setSizePosLeft(Size) 1257 1257 1258 1258 def OnPageChanged(event): … … 1260 1260 page = event.GetSelection() 1261 1261 else: 1262 page = self.dataDisplay.GetSelection()1263 oldPage = self.dataDisplay.ChangeSelection(page)1264 text = self.dataDisplay.GetPageText(page)1262 page = G2frame.dataDisplay.GetSelection() 1263 oldPage = G2frame.dataDisplay.ChangeSelection(page) 1264 text = G2frame.dataDisplay.GetPageText(page) 1265 1265 if text == 'Histogram/Phase constraints': 1266 self.Page = [page,'hap']1266 G2frame.Page = [page,'hap'] 1267 1267 UpdateHAPConstr() 1268 1268 elif text == 'Histogram constraints': 1269 self.Page = [page,'hst']1269 G2frame.Page = [page,'hst'] 1270 1270 UpdateHistConstr() 1271 1271 elif text == 'Phase constraints': 1272 self.Page = [page,'phs']1272 G2frame.Page = [page,'phs'] 1273 1273 UpdatePhaseConstr() 1274 1274 … … 1280 1280 'hap':['HAP variables:',phlegend,hapList,'HAP',UpdateHAPConstr], 1281 1281 'phs':['Phase variables:',plegend,phaseList,'Phase',UpdatePhaseConstr]} 1282 if self.dataDisplay:1283 self.dataDisplay.Destroy()1284 self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)1285 self.dataFrame.SetLabel('Constraints')1286 if not self.dataFrame.GetStatusBar():1287 Status = self.dataFrame.CreateStatusBar()1282 if G2frame.dataDisplay: 1283 G2frame.dataDisplay.Destroy() 1284 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.ConstraintMenu) 1285 G2frame.dataFrame.SetLabel('Constraints') 1286 if not G2frame.dataFrame.GetStatusBar(): 1287 Status = G2frame.dataFrame.CreateStatusBar() 1288 1288 SetStatusLine('') 1289 1289 1290 self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)1291 self.dataFrame.Bind(wx.EVT_MENU, OnAddConstraint, id=wxID_CONSTRAINTADD)1292 self.dataFrame.Bind(wx.EVT_MENU, OnAddFunction, id=wxID_FUNCTADD)1293 self.dataFrame.Bind(wx.EVT_MENU, OnAddEquivalence, id=wxID_EQUIVADD)1294 self.dataFrame.Bind(wx.EVT_MENU, OnAddHold, id=wxID_HOLDADD)1295 self.dataDisplay = GSNoteBook(parent=self.dataFrame,size=self.dataFrame.GetClientSize())1290 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.ConstraintMenu) 1291 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddConstraint, id=wxID_CONSTRAINTADD) 1292 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddFunction, id=wxID_FUNCTADD) 1293 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddEquivalence, id=wxID_EQUIVADD) 1294 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddHold, id=wxID_HOLDADD) 1295 G2frame.dataDisplay = GSNoteBook(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize()) 1296 1296 1297 PhaseConstr = wx.ScrolledWindow( self.dataDisplay)1298 self.dataDisplay.AddPage(PhaseConstr,'Phase constraints')1299 HAPConstr = wx.ScrolledWindow( self.dataDisplay)1300 self.dataDisplay.AddPage(HAPConstr,'Histogram/Phase constraints')1301 HistConstr = wx.ScrolledWindow( self.dataDisplay)1302 self.dataDisplay.AddPage(HistConstr,'Histogram constraints')1297 PhaseConstr = wx.ScrolledWindow(G2frame.dataDisplay) 1298 G2frame.dataDisplay.AddPage(PhaseConstr,'Phase constraints') 1299 HAPConstr = wx.ScrolledWindow(G2frame.dataDisplay) 1300 G2frame.dataDisplay.AddPage(HAPConstr,'Histogram/Phase constraints') 1301 HistConstr = wx.ScrolledWindow(G2frame.dataDisplay) 1302 G2frame.dataDisplay.AddPage(HistConstr,'Histogram constraints') 1303 1303 UpdatePhaseConstr() 1304 1304 1305 self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)1305 G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged) 1306 1306 1307 1307 1308 def UpdateRestraints( self,data):1308 def UpdateRestraints(G2frame,data): 1309 1309 1310 1310 def OnAddRestraint(event): 1311 page = self.dataDisplay.GetSelection()1312 print self.dataDisplay.GetPageText(page)1311 page = G2frame.dataDisplay.GetSelection() 1312 print G2frame.dataDisplay.GetPageText(page) 1313 1313 1314 1314 def UpdateAtomRestr(): … … 1322 1322 1323 1323 dataDisplay.SetSizer(mainSizer) 1324 Size = mainSizer.Fit( self.dataFrame)1324 Size = mainSizer.Fit(G2frame.dataFrame) 1325 1325 Size[1] += 26 #compensate for status bar 1326 1326 dataDisplay.SetSize(Size) 1327 self.dataFrame.setSizePosLeft(Size)1327 G2frame.dataFrame.setSizePosLeft(Size) 1328 1328 1329 1329 def UpdatePhaseRestr(): … … 1337 1337 1338 1338 dataDisplay.SetSizer(mainSizer) 1339 Size = mainSizer.Fit( self.dataFrame)1339 Size = mainSizer.Fit(G2frame.dataFrame) 1340 1340 Size[1] += 26 #compensate for status bar 1341 1341 dataDisplay.SetSize(Size) 1342 self.dataFrame.setSizePosLeft(Size)1342 G2frame.dataFrame.setSizePosLeft(Size) 1343 1343 1344 1344 def OnPageChanged(event): 1345 1345 page = event.GetSelection() 1346 text = self.dataDisplay.GetPageText(page)1346 text = G2frame.dataDisplay.GetPageText(page) 1347 1347 if text == 'Atom restraints': 1348 self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)1348 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1349 1349 UpdateAtomRestr() 1350 1350 elif text == 'Phase restraints': 1351 1351 UpdatePhaseRestr() 1352 self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)1352 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1353 1353 event.Skip() 1354 1354 1355 if self.dataDisplay:1356 self.dataDisplay.Destroy()1357 self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)1358 self.dataFrame.SetLabel('restraints')1359 self.dataFrame.CreateStatusBar()1360 self.dataFrame.Bind(wx.EVT_MENU, OnAddRestraint, id=wxID_RESTRAINTADD)1361 self.dataDisplay = GSNoteBook(parent=self.dataFrame,size=self.dataFrame.GetClientSize())1355 if G2frame.dataDisplay: 1356 G2frame.dataDisplay.Destroy() 1357 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1358 G2frame.dataFrame.SetLabel('restraints') 1359 G2frame.dataFrame.CreateStatusBar() 1360 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddRestraint, id=wxID_RESTRAINTADD) 1361 G2frame.dataDisplay = GSNoteBook(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize()) 1362 1362 1363 PhaseRestr = wx.ScrolledWindow( self.dataDisplay)1364 self.dataDisplay.AddPage(PhaseRestr,'Phase restraints')1365 AtomRestr = wx.ScrolledWindow( self.dataDisplay)1366 self.dataDisplay.AddPage(AtomRestr,'Atom restraints')1363 PhaseRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1364 G2frame.dataDisplay.AddPage(PhaseRestr,'Phase restraints') 1365 AtomRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1366 G2frame.dataDisplay.AddPage(AtomRestr,'Atom restraints') 1367 1367 UpdatePhaseRestr() 1368 1368 # AtomRestrData = data['AtomRestr'] 1369 1369 1370 self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)1370 G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged) 1371 1371 1372 def UpdateHKLControls( self,data):1372 def UpdateHKLControls(G2frame,data): 1373 1373 1374 1374 def OnScaleSlider(event): … … 1376 1376 scaleSel.SetValue(int(scale*1000.)) 1377 1377 data['Scale'] = scale*10. 1378 G2plt.PlotSngl( self)1378 G2plt.PlotSngl(G2frame) 1379 1379 1380 1380 def OnLayerSlider(event): 1381 1381 layer = layerSel.GetValue() 1382 1382 data['Layer'] = layer 1383 G2plt.PlotSngl( self)1383 G2plt.PlotSngl(G2frame) 1384 1384 1385 1385 def OnSelZone(event): 1386 1386 data['Zone'] = zoneSel.GetValue() 1387 G2plt.PlotSngl( self,newPlot=True)1387 G2plt.PlotSngl(G2frame,newPlot=True) 1388 1388 1389 1389 def OnSelType(event): 1390 1390 data['Type'] = typeSel.GetValue() 1391 G2plt.PlotSngl( self)1391 G2plt.PlotSngl(G2frame) 1392 1392 1393 1393 def SetStatusLine(): 1394 1394 Status.SetStatusText("look at me!!!") 1395 1395 1396 if self.dataDisplay:1397 self.dataDisplay.Destroy()1398 if not self.dataFrame.GetStatusBar():1399 Status = self.dataFrame.CreateStatusBar()1396 if G2frame.dataDisplay: 1397 G2frame.dataDisplay.Destroy() 1398 if not G2frame.dataFrame.GetStatusBar(): 1399 Status = G2frame.dataFrame.CreateStatusBar() 1400 1400 SetStatusLine() 1401 1401 zones = ['100','010','001'] … … 1406 1406 else: 1407 1407 typeChoices = ['Fosq','Fo'] 1408 self.dataDisplay = wx.Panel(self.dataFrame)1409 self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)1408 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 1409 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu) 1410 1410 mainSizer = wx.BoxSizer(wx.VERTICAL) 1411 1411 mainSizer.Add((5,10),0) 1412 1412 1413 1413 scaleSizer = wx.BoxSizer(wx.HORIZONTAL) 1414 scaleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Scale'),0,1414 scaleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Scale'),0, 1415 1415 wx.ALIGN_CENTER_VERTICAL|wx.EXPAND) 1416 scaleSel = wx.Slider(parent= self.dataDisplay,maxValue=1000,minValue=100,1416 scaleSel = wx.Slider(parent=G2frame.dataDisplay,maxValue=1000,minValue=100, 1417 1417 style=wx.SL_HORIZONTAL,value=int(data['Scale']*100)) 1418 1418 scaleSizer.Add(scaleSel,1,wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL) … … 1423 1423 1424 1424 zoneSizer = wx.BoxSizer(wx.HORIZONTAL) 1425 zoneSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Zone '),0,1425 zoneSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Zone '),0, 1426 1426 wx.ALIGN_CENTER_VERTICAL) 1427 zoneSel = wx.ComboBox(parent= self.dataDisplay,value=data['Zone'],choices=['100','010','001'],1427 zoneSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['Zone'],choices=['100','010','001'], 1428 1428 style=wx.CB_READONLY|wx.CB_DROPDOWN) 1429 1429 zoneSel.Bind(wx.EVT_COMBOBOX, OnSelZone) 1430 1430 zoneSizer.Add(zoneSel,0,wx.ALIGN_CENTER_VERTICAL) 1431 zoneSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Plot type '),0,1431 zoneSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Plot type '),0, 1432 1432 wx.ALIGN_CENTER_VERTICAL) 1433 typeSel = wx.ComboBox(parent= self.dataDisplay,value=data['Type'],choices=typeChoices,1433 typeSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['Type'],choices=typeChoices, 1434 1434 style=wx.CB_READONLY|wx.CB_DROPDOWN) 1435 1435 typeSel.Bind(wx.EVT_COMBOBOX, OnSelType) … … 1440 1440 izone = zones.index(data['Zone']) 1441 1441 layerSizer = wx.BoxSizer(wx.HORIZONTAL) 1442 layerSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Layer'),0,1442 layerSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Layer'),0, 1443 1443 wx.ALIGN_CENTER_VERTICAL|wx.EXPAND) 1444 layerSel = wx.Slider(parent= self.dataDisplay,maxValue=HKLmax[izone],minValue=HKLmin[izone],1444 layerSel = wx.Slider(parent=G2frame.dataDisplay,maxValue=HKLmax[izone],minValue=HKLmin[izone], 1445 1445 style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS,value=0) 1446 1446 layerSel.SetLineSize(1) … … 1453 1453 1454 1454 mainSizer.Layout() 1455 self.dataDisplay.SetSizer(mainSizer)1456 self.dataDisplay.SetSize(mainSizer.Fit(self.dataFrame))1457 self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))1458 1459 def GetPatternTreeDataNames( self,dataTypes):1455 G2frame.dataDisplay.SetSizer(mainSizer) 1456 G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame)) 1457 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame)) 1458 1459 def GetPatternTreeDataNames(G2frame,dataTypes): 1460 1460 names = [] 1461 item, cookie = self.PatternTree.GetFirstChild(self.root)1461 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 1462 1462 while item: 1463 name = self.PatternTree.GetItemText(item)1463 name = G2frame.PatternTree.GetItemText(item) 1464 1464 if name[:4] in dataTypes: 1465 1465 names.append(name) 1466 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)1466 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 1467 1467 return names 1468 1468 1469 def GetPatternTreeItemId( self, parentId, itemText):1470 item, cookie = self.PatternTree.GetFirstChild(parentId)1469 def GetPatternTreeItemId(G2frame, parentId, itemText): 1470 item, cookie = G2frame.PatternTree.GetFirstChild(parentId) 1471 1471 while item: 1472 if self.PatternTree.GetItemText(item) == itemText:1472 if G2frame.PatternTree.GetItemText(item) == itemText: 1473 1473 return item 1474 item, cookie = self.PatternTree.GetNextChild(parentId, cookie)1474 item, cookie = G2frame.PatternTree.GetNextChild(parentId, cookie) 1475 1475 return 0 1476 1476 1477 def MovePatternTreeToGrid( self,item):1477 def MovePatternTreeToGrid(G2frame,item): 1478 1478 1479 # print self.PatternTree.GetItemText(item)1479 # print G2frame.PatternTree.GetItemText(item) 1480 1480 1481 1481 oldPage = 0 1482 if self.dataFrame:1483 self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)1484 if self.dataFrame.GetLabel() == 'Comments':1485 data = [ self.dataDisplay.GetValue()]1486 self.dataDisplay.Clear()1487 Id = GetPatternTreeItemId( self,self.root, 'Comments')1488 if Id: self.PatternTree.SetItemPyData(Id,data)1489 elif self.dataFrame.GetLabel() == 'Notebook':1490 data = [ self.dataDisplay.GetValue()]1491 self.dataDisplay.Clear()1492 Id = GetPatternTreeItemId( self,self.root, 'Notebook')1493 if Id: self.PatternTree.SetItemPyData(Id,data)1494 elif 'Phase Data for' in self.dataFrame.GetLabel():1495 if self.dataDisplay:1496 oldPage = self.dataDisplay.GetSelection()1497 self.dataFrame.Clear()1498 self.dataFrame.SetLabel('')1482 if G2frame.dataFrame: 1483 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu) 1484 if G2frame.dataFrame.GetLabel() == 'Comments': 1485 data = [G2frame.dataDisplay.GetValue()] 1486 G2frame.dataDisplay.Clear() 1487 Id = GetPatternTreeItemId(G2frame,G2frame.root, 'Comments') 1488 if Id: G2frame.PatternTree.SetItemPyData(Id,data) 1489 elif G2frame.dataFrame.GetLabel() == 'Notebook': 1490 data = [G2frame.dataDisplay.GetValue()] 1491 G2frame.dataDisplay.Clear() 1492 Id = GetPatternTreeItemId(G2frame,G2frame.root, 'Notebook') 1493 if Id: G2frame.PatternTree.SetItemPyData(Id,data) 1494 elif 'Phase Data for' in G2frame.dataFrame.GetLabel(): 1495 if G2frame.dataDisplay: 1496 oldPage = G2frame.dataDisplay.GetSelection() 1497 G2frame.dataFrame.Clear() 1498 G2frame.dataFrame.SetLabel('') 1499 1499 else: 1500 1500 #create the frame for the data item window 1501 self.dataFrame = DataFrame(parent=self.mainPanel)1502 1503 self.dataFrame.Raise()1504 self.PickId = 01505 parentID = self.root1506 self.ExportPattern.Enable(False)1501 G2frame.dataFrame = DataFrame(parent=G2frame.mainPanel) 1502 1503 G2frame.dataFrame.Raise() 1504 G2frame.PickId = 0 1505 parentID = G2frame.root 1506 G2frame.ExportPattern.Enable(False) 1507 1507 defWid = [250,150] 1508 if item != self.root:1509 parentID = self.PatternTree.GetItemParent(item)1510 if self.PatternTree.GetItemParent(item) == self.root:1511 self.PatternId = item1512 self.PickId = item1513 if self.PatternTree.GetItemText(item) == 'Notebook':1514 self.dataFrame.SetMenuBar(self.dataFrame.DataNotebookMenu)1515 self.PatternId = 01516 self.ExportPattern.Enable(False)1517 data = self.PatternTree.GetItemPyData(item)1518 UpdateNotebook( self,data)1519 elif self.PatternTree.GetItemText(item) == 'Controls':1520 self.PatternId = 01521 self.ExportPattern.Enable(False)1522 data = self.PatternTree.GetItemPyData(item)1508 if item != G2frame.root: 1509 parentID = G2frame.PatternTree.GetItemParent(item) 1510 if G2frame.PatternTree.GetItemParent(item) == G2frame.root: 1511 G2frame.PatternId = item 1512 G2frame.PickId = item 1513 if G2frame.PatternTree.GetItemText(item) == 'Notebook': 1514 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataNotebookMenu) 1515 G2frame.PatternId = 0 1516 G2frame.ExportPattern.Enable(False) 1517 data = G2frame.PatternTree.GetItemPyData(item) 1518 UpdateNotebook(G2frame,data) 1519 elif G2frame.PatternTree.GetItemText(item) == 'Controls': 1520 G2frame.PatternId = 0 1521 G2frame.ExportPattern.Enable(False) 1522 data = G2frame.PatternTree.GetItemPyData(item) 1523 1523 if not data: #fill in defaults 1524 1524 data = { … … 1530 1530 #distance/angle controls 1531 1531 'distMax':0.0,'angleMax':0.0,'useMapPeaks':False} 1532 self.PatternTree.SetItemPyData(item,data)1533 self.Refine.Enable(True)1534 self.SeqRefine.Enable(True)1535 UpdateControls( self,data)1536 elif self.PatternTree.GetItemText(item) == 'Sequental results':1537 data = self.PatternTree.GetItemPyData(item)1538 UpdateSeqResults( self,data)1539 elif self.PatternTree.GetItemText(item) == 'Covariance':1540 data = self.PatternTree.GetItemPyData(item)1541 self.dataFrame.setSizePosLeft(defWid)1542 wx.TextCtrl(parent= self.dataFrame,size=self.dataFrame.GetClientSize(),1532 G2frame.PatternTree.SetItemPyData(item,data) 1533 G2frame.Refine.Enable(True) 1534 G2frame.SeqRefine.Enable(True) 1535 UpdateControls(G2frame,data) 1536 elif G2frame.PatternTree.GetItemText(item) == 'Sequental results': 1537 data = G2frame.PatternTree.GetItemPyData(item) 1538 UpdateSeqResults(G2frame,data) 1539 elif G2frame.PatternTree.GetItemText(item) == 'Covariance': 1540 data = G2frame.PatternTree.GetItemPyData(item) 1541 G2frame.dataFrame.setSizePosLeft(defWid) 1542 wx.TextCtrl(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize(), 1543 1543 value='See plot window for covariance display') 1544 G2plt.PlotCovariance( self)1545 elif self.PatternTree.GetItemText(item) == 'Constraints':1546 data = self.PatternTree.GetItemPyData(item)1547 UpdateConstraints( self,data)1548 elif self.PatternTree.GetItemText(item) == 'Restraints':1549 data = self.PatternTree.GetItemPyData(item)1550 UpdateRestraints( self,data)1551 elif 'IMG' in self.PatternTree.GetItemText(item):1552 self.Image = item1553 G2plt.PlotImage( self,newPlot=True)1554 elif 'PKS' in self.PatternTree.GetItemText(item):1555 G2plt.PlotPowderLines( self)1556 elif 'PWDR' in self.PatternTree.GetItemText(item):1557 self.ExportPattern.Enable(True)1558 self.dataFrame.setSizePosLeft(defWid)1559 wx.TextCtrl(parent= self.dataFrame,size=self.dataFrame.GetClientSize(),1544 G2plt.PlotCovariance(G2frame) 1545 elif G2frame.PatternTree.GetItemText(item) == 'Constraints': 1546 data = G2frame.PatternTree.GetItemPyData(item) 1547 UpdateConstraints(G2frame,data) 1548 elif G2frame.PatternTree.GetItemText(item) == 'Restraints': 1549 data = G2frame.PatternTree.GetItemPyData(item) 1550 UpdateRestraints(G2frame,data) 1551 elif 'IMG' in G2frame.PatternTree.GetItemText(item): 1552 G2frame.Image = item 1553 G2plt.PlotImage(G2frame,newPlot=True) 1554 elif 'PKS' in G2frame.PatternTree.GetItemText(item): 1555 G2plt.PlotPowderLines(G2frame) 1556 elif 'PWDR' in G2frame.PatternTree.GetItemText(item): 1557 G2frame.ExportPattern.Enable(True) 1558 G2frame.dataFrame.setSizePosLeft(defWid) 1559 wx.TextCtrl(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize(), 1560 1560 style=wx.TE_MULTILINE, 1561 1561 value='See plot window for powder data display\nor select a data item in histogram') 1562 G2plt.PlotPatterns( self,newPlot=True)1563 elif 'HKLF' in self.PatternTree.GetItemText(item):1564 self.Sngl = item1565 G2plt.PlotSngl( self,newPlot=True)1566 elif 'PDF' in self.PatternTree.GetItemText(item):1567 self.PatternId = item1568 self.ExportPDF.Enable(True)1569 G2plt.PlotISFG( self,type='S(Q)')1570 elif self.PatternTree.GetItemText(item) == 'Phases':1571 self.dataFrame.setSizePosLeft(defWid)1572 wx.TextCtrl(parent= self.dataFrame,size=self.dataFrame.GetClientSize(),1562 G2plt.PlotPatterns(G2frame,newPlot=True) 1563 elif 'HKLF' in G2frame.PatternTree.GetItemText(item): 1564 G2frame.Sngl = item 1565 G2plt.PlotSngl(G2frame,newPlot=True) 1566 elif 'PDF' in G2frame.PatternTree.GetItemText(item): 1567 G2frame.PatternId = item 1568 G2frame.ExportPDF.Enable(True) 1569 G2plt.PlotISFG(G2frame,type='S(Q)') 1570 elif G2frame.PatternTree.GetItemText(item) == 'Phases': 1571 G2frame.dataFrame.setSizePosLeft(defWid) 1572 wx.TextCtrl(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize(), 1573 1573 value='Select one phase to see its parameters') 1574 elif 'I(Q)' in self.PatternTree.GetItemText(item):1575 self.PickId = item1576 self.PatternId = self.PatternTree.GetItemParent(item)1577 G2plt.PlotISFG( self,type='I(Q)',newPlot=True)1578 elif 'S(Q)' in self.PatternTree.GetItemText(item):1579 self.PickId = item1580 self.PatternId = self.PatternTree.GetItemParent(item)1581 G2plt.PlotISFG( self,type='S(Q)',newPlot=True)1582 elif 'F(Q)' in self.PatternTree.GetItemText(item):1583 self.PickId = item1584 self.PatternId = self.PatternTree.GetItemParent(item)1585 G2plt.PlotISFG( self,type='F(Q)',newPlot=True)1586 elif 'G(R)' in self.PatternTree.GetItemText(item):1587 self.PickId = item1588 self.PatternId = self.PatternTree.GetItemParent(item)1589 G2plt.PlotISFG( self,type='G(R)',newPlot=True)1590 elif self.PatternTree.GetItemText(parentID) == 'Phases':1591 self.PickId = item1592 data = self.PatternTree.GetItemPyData(item)1593 G2phG.UpdatePhaseData( self,item,data,oldPage)1594 elif self.PatternTree.GetItemText(item) == 'Comments':1595 self.dataFrame.SetMenuBar(self.dataFrame.DataCommentsMenu)1596 self.PatternId = self.PatternTree.GetItemParent(item)1597 self.PickId = item1598 data = self.PatternTree.GetItemPyData(item)1599 UpdateComments( self,data)1600 elif self.PatternTree.GetItemText(item) == 'Image Controls':1601 self.dataFrame.SetTitle('Image Controls')1602 self.PickId = item1603 self.Image = self.PatternTree.GetItemParent(item)1604 masks = self.PatternTree.GetItemPyData(1605 GetPatternTreeItemId( self,self.Image, 'Masks'))1606 data = self.PatternTree.GetItemPyData(item)1607 G2imG.UpdateImageControls( self,data,masks)1608 G2plt.PlotImage( self)1609 elif self.PatternTree.GetItemText(item) == 'Masks':1610 self.dataFrame.SetTitle('Masks')1611 self.PickId = item1612 self.Image = self.PatternTree.GetItemParent(item)1613 data = self.PatternTree.GetItemPyData(item)1614 G2imG.UpdateMasks( self,data)1615 G2plt.PlotImage( self)1616 elif self.PatternTree.GetItemText(item) == 'HKL Plot Controls':1617 self.PickId = item1618 self.Sngl = self.PatternTree.GetItemParent(item)1619 data = self.PatternTree.GetItemPyData(item)1620 UpdateHKLControls( self,data)1621 G2plt.PlotSngl( self)1622 elif self.PatternTree.GetItemText(item) == 'PDF Controls':1623 self.PatternId = self.PatternTree.GetItemParent(item)1624 self.ExportPDF.Enable(True)1625 self.PickId = item1626 data = self.PatternTree.GetItemPyData(item)1627 G2pdG.UpdatePDFGrid( self,data)1628 G2plt.PlotISFG( self,type='I(Q)')1629 G2plt.PlotISFG( self,type='S(Q)')1630 G2plt.PlotISFG( self,type='F(Q)')1631 G2plt.PlotISFG( self,type='G(R)')1632 elif self.PatternTree.GetItemText(item) == 'Peak List':1633 self.PatternId = self.PatternTree.GetItemParent(item)1634 self.ExportPeakList.Enable(True)1635 self.PickId = item1636 data = self.PatternTree.GetItemPyData(item)1637 G2pdG.UpdatePeakGrid( self,data)1638 G2plt.PlotPatterns( self)1639 elif self.PatternTree.GetItemText(item) == 'Background':1640 self.PatternId = self.PatternTree.GetItemParent(item)1641 self.PickId = item1642 data = self.PatternTree.GetItemPyData(item)1643 G2pdG.UpdateBackground( self,data)1644 G2plt.PlotPatterns( self)1645 elif self.PatternTree.GetItemText(item) == 'Limits':1646 self.PatternId = self.PatternTree.GetItemParent(item)1647 self.PickId = item1648 data = self.PatternTree.GetItemPyData(item)1649 G2pdG.UpdateLimitsGrid( self,data)1650 G2plt.PlotPatterns( self)1651 elif self.PatternTree.GetItemText(item) == 'Instrument Parameters':1652 self.PatternId = self.PatternTree.GetItemParent(item)1653 self.PickId = item1654 data = self.PatternTree.GetItemPyData(item)1655 G2pdG.UpdateInstrumentGrid( self,data)1656 G2plt.PlotPeakWidths( self)1657 elif self.PatternTree.GetItemText(item) == 'Sample Parameters':1658 self.PatternId = self.PatternTree.GetItemParent(item)1659 self.PickId = item1660 data = self.PatternTree.GetItemPyData(item)1574 elif 'I(Q)' in G2frame.PatternTree.GetItemText(item): 1575 G2frame.PickId = item 1576 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1577 G2plt.PlotISFG(G2frame,type='I(Q)',newPlot=True) 1578 elif 'S(Q)' in G2frame.PatternTree.GetItemText(item): 1579 G2frame.PickId = item 1580 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1581 G2plt.PlotISFG(G2frame,type='S(Q)',newPlot=True) 1582 elif 'F(Q)' in G2frame.PatternTree.GetItemText(item): 1583 G2frame.PickId = item 1584 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1585 G2plt.PlotISFG(G2frame,type='F(Q)',newPlot=True) 1586 elif 'G(R)' in G2frame.PatternTree.GetItemText(item): 1587 G2frame.PickId = item 1588 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1589 G2plt.PlotISFG(G2frame,type='G(R)',newPlot=True) 1590 elif G2frame.PatternTree.GetItemText(parentID) == 'Phases': 1591 G2frame.PickId = item 1592 data = G2frame.PatternTree.GetItemPyData(item) 1593 G2phG.UpdatePhaseData(G2frame,item,data,oldPage) 1594 elif G2frame.PatternTree.GetItemText(item) == 'Comments': 1595 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataCommentsMenu) 1596 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1597 G2frame.PickId = item 1598 data = G2frame.PatternTree.GetItemPyData(item) 1599 UpdateComments(G2frame,data) 1600 elif G2frame.PatternTree.GetItemText(item) == 'Image Controls': 1601 G2frame.dataFrame.SetTitle('Image Controls') 1602 G2frame.PickId = item 1603 G2frame.Image = G2frame.PatternTree.GetItemParent(item) 1604 masks = G2frame.PatternTree.GetItemPyData( 1605 GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks')) 1606 data = G2frame.PatternTree.GetItemPyData(item) 1607 G2imG.UpdateImageControls(G2frame,data,masks) 1608 G2plt.PlotImage(G2frame) 1609 elif G2frame.PatternTree.GetItemText(item) == 'Masks': 1610 G2frame.dataFrame.SetTitle('Masks') 1611 G2frame.PickId = item 1612 G2frame.Image = G2frame.PatternTree.GetItemParent(item) 1613 data = G2frame.PatternTree.GetItemPyData(item) 1614 G2imG.UpdateMasks(G2frame,data) 1615 G2plt.PlotImage(G2frame) 1616 elif G2frame.PatternTree.GetItemText(item) == 'HKL Plot Controls': 1617 G2frame.PickId = item 1618 G2frame.Sngl = G2frame.PatternTree.GetItemParent(item) 1619 data = G2frame.PatternTree.GetItemPyData(item) 1620 UpdateHKLControls(G2frame,data) 1621 G2plt.PlotSngl(G2frame) 1622 elif G2frame.PatternTree.GetItemText(item) == 'PDF Controls': 1623 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1624 G2frame.ExportPDF.Enable(True) 1625 G2frame.PickId = item 1626 data = G2frame.PatternTree.GetItemPyData(item) 1627 G2pdG.UpdatePDFGrid(G2frame,data) 1628 G2plt.PlotISFG(G2frame,type='I(Q)') 1629 G2plt.PlotISFG(G2frame,type='S(Q)') 1630 G2plt.PlotISFG(G2frame,type='F(Q)') 1631 G2plt.PlotISFG(G2frame,type='G(R)') 1632 elif G2frame.PatternTree.GetItemText(item) == 'Peak List': 1633 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1634 G2frame.ExportPeakList.Enable(True) 1635 G2frame.PickId = item 1636 data = G2frame.PatternTree.GetItemPyData(item) 1637 G2pdG.UpdatePeakGrid(G2frame,data) 1638 G2plt.PlotPatterns(G2frame) 1639 elif G2frame.PatternTree.GetItemText(item) == 'Background': 1640 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1641 G2frame.PickId = item 1642 data = G2frame.PatternTree.GetItemPyData(item) 1643 G2pdG.UpdateBackground(G2frame,data) 1644 G2plt.PlotPatterns(G2frame) 1645 elif G2frame.PatternTree.GetItemText(item) == 'Limits': 1646 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1647 G2frame.PickId = item 1648 data = G2frame.PatternTree.GetItemPyData(item) 1649 G2pdG.UpdateLimitsGrid(G2frame,data) 1650 G2plt.PlotPatterns(G2frame) 1651 elif G2frame.PatternTree.GetItemText(item) == 'Instrument Parameters': 1652 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1653 G2frame.PickId = item 1654 data = G2frame.PatternTree.GetItemPyData(item) 1655 G2pdG.UpdateInstrumentGrid(G2frame,data) 1656 G2plt.PlotPeakWidths(G2frame) 1657 elif G2frame.PatternTree.GetItemText(item) == 'Sample Parameters': 1658 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1659 G2frame.PickId = item 1660 data = G2frame.PatternTree.GetItemPyData(item) 1661 1661 1662 1662 if 'Temperature' not in data: #temp fix for old gpx files … … 1664 1664 'DisplaceY':[0.0,False],'Diffuse':[],'Temperature':300.,'Pressure':1.0,'Humidity':0.0,'Voltage':0.0, 1665 1665 'Force':0.0,'Gonio. radius':200.0} 1666 self.PatternTree.SetItemPyData(item,data)1666 G2frame.PatternTree.SetItemPyData(item,data) 1667 1667 1668 G2pdG.UpdateSampleGrid( self,data)1669 G2plt.PlotPatterns( self)1670 elif self.PatternTree.GetItemText(item) == 'Index Peak List':1671 self.PatternId = self.PatternTree.GetItemParent(item)1672 self.ExportPeakList.Enable(True)1673 self.PickId = item1674 data = self.PatternTree.GetItemPyData(item)1675 G2pdG.UpdateIndexPeaksGrid( self,data)1676 if 'PKS' in self.PatternTree.GetItemText(self.PatternId):1677 G2plt.PlotPowderLines( self)1668 G2pdG.UpdateSampleGrid(G2frame,data) 1669 G2plt.PlotPatterns(G2frame) 1670 elif G2frame.PatternTree.GetItemText(item) == 'Index Peak List': 1671 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1672 G2frame.ExportPeakList.Enable(True) 1673 G2frame.PickId = item 1674 data = G2frame.PatternTree.GetItemPyData(item) 1675 G2pdG.UpdateIndexPeaksGrid(G2frame,data) 1676 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1677 G2plt.PlotPowderLines(G2frame) 1678 1678 else: 1679 G2plt.PlotPatterns( self)1680 elif self.PatternTree.GetItemText(item) == 'Unit Cells List':1681 self.PatternId = self.PatternTree.GetItemParent(item)1682 self.PickId = item1683 data = self.PatternTree.GetItemPyData(item)1679 G2plt.PlotPatterns(G2frame) 1680 elif G2frame.PatternTree.GetItemText(item) == 'Unit Cells List': 1681 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1682 G2frame.PickId = item 1683 data = G2frame.PatternTree.GetItemPyData(item) 1684 1684 if not data: 1685 1685 data.append([0,0.0,4,25.0,0,'P1',1,1,1,90,90,90]) #zero error flag, zero value, max Nc/No, start volume … … 1687 1687 data.append([]) #empty cell list 1688 1688 data.append([]) #empty dmin 1689 self.PatternTree.SetItemPyData(item,data)1690 G2pdG.UpdateUnitCellsGrid( self,data)1691 if 'PKS' in self.PatternTree.GetItemText(self.PatternId):1692 G2plt.PlotPowderLines( self)1689 G2frame.PatternTree.SetItemPyData(item,data) 1690 G2pdG.UpdateUnitCellsGrid(G2frame,data) 1691 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1692 G2plt.PlotPowderLines(G2frame) 1693 1693 else: 1694 G2plt.PlotPatterns( self)1695 elif self.PatternTree.GetItemText(item) == 'Reflection Lists':1696 self.PatternId = self.PatternTree.GetItemParent(item)1697 self.PickId = item1698 data = self.PatternTree.GetItemPyData(item)1699 self.RefList = ''1694 G2plt.PlotPatterns(G2frame) 1695 elif G2frame.PatternTree.GetItemText(item) == 'Reflection Lists': 1696 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 1697 G2frame.PickId = item 1698 data = G2frame.PatternTree.GetItemPyData(item) 1699 G2frame.RefList = '' 1700 1700 if len(data): 1701 self.RefList = data.keys()[0]1702 G2pdG.UpdateReflectionGrid( self,data)1703 G2plt.PlotPatterns( self)1701 G2frame.RefList = data.keys()[0] 1702 G2pdG.UpdateReflectionGrid(G2frame,data) 1703 G2plt.PlotPatterns(G2frame) -
TabularUnified trunk/GSASIIimgGUI.py ¶
r467 r468 29 29 30 30 31 def UpdateImageControls( self,data,masks):31 def UpdateImageControls(G2frame,data,masks): 32 32 import ImageCalibrants as calFile 33 33 … … 37 37 def OnNewColorBar(event): 38 38 data['color'] = colSel.GetValue() 39 G2plt.PlotExposedImage( self,event=event)39 G2plt.PlotExposedImage(G2frame,event=event) 40 40 41 41 def OnNewCalibrant(event): … … 60 60 else: 61 61 data['setRings'] = True 62 G2plt.PlotExposedImage( self,event=event)62 G2plt.PlotExposedImage(G2frame,event=event) 63 63 64 64 def OnCalibDmin(event): … … 103 103 maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero)) 104 104 minSel.SetValue(int(100*(data['range'][1][0]/DeltOne))) 105 G2plt.PlotExposedImage( self,event=event)105 G2plt.PlotExposedImage(G2frame,event=event) 106 106 107 107 def OnMinVal(event): … … 115 115 minVal.SetValue('%.0f'%(data['range'][1][0])) 116 116 minSel.SetValue(int(100*(data['range'][1][0]-max(0.0,data['range'][0][0]))/DeltOne)) 117 G2plt.PlotExposedImage( self,event=event)117 G2plt.PlotExposedImage(G2frame,event=event) 118 118 119 119 def OnMaxSlider(event): … … 125 125 minSel.SetValue(int(100*(data['range'][1][0]/DeltOne))) 126 126 maxVal.SetValue('%.0f'%(data['range'][1][1])) 127 G2plt.PlotExposedImage( self,event=event)127 G2plt.PlotExposedImage(G2frame,event=event) 128 128 129 129 def OnMinSlider(event): … … 132 132 data['range'][1][0] = max(0.0,min(data['range'][1][1]-1,imin)) 133 133 minVal.SetValue('%.0f'%(data['range'][1][0])) 134 G2plt.PlotExposedImage( self,event=event)134 G2plt.PlotExposedImage(G2frame,event=event) 135 135 136 136 def OnNumOutChans(event): … … 153 153 pass 154 154 outAzim.SetValue(str(data['outAzimuths'])) #reset in case of error 155 G2plt.PlotExposedImage( self,event=event)155 G2plt.PlotExposedImage(G2frame,event=event) 156 156 157 157 def OnWavelength(event): … … 170 170 else: 171 171 data['showLines'] = True 172 G2plt.PlotExposedImage( self,event=event)172 G2plt.PlotExposedImage(G2frame,event=event) 173 173 174 174 def OnSetDefault(event): 175 175 import copy 176 176 if data['setDefault']: 177 self.imageDefault = {}177 G2frame.imageDefault = {} 178 178 data['setDefault'] = False 179 179 else: 180 self.imageDefault = copy.copy(data)180 G2frame.imageDefault = copy.copy(data) 181 181 data['setDefault'] = True 182 182 183 183 def OnIOtth(event): 184 Ltth = max(float( self.InnerTth.GetValue()),0.001)185 Utth = float( self.OuterTth.GetValue())184 Ltth = max(float(G2frame.InnerTth.GetValue()),0.001) 185 Utth = float(G2frame.OuterTth.GetValue()) 186 186 if Ltth > Utth: 187 187 Ltth,Utth = Utth,Ltth 188 188 data['IOtth'] = [Ltth,Utth] 189 self.InnerTth.SetValue("%8.3f" % (Ltth))190 self.OuterTth.SetValue("%8.2f" % (Utth))191 G2plt.PlotExposedImage( self,event=event)189 G2frame.InnerTth.SetValue("%8.3f" % (Ltth)) 190 G2frame.OuterTth.SetValue("%8.2f" % (Utth)) 191 G2plt.PlotExposedImage(G2frame,event=event) 192 192 193 193 def OnFullIntegrate(event): 194 Lazm =int( self.Lazim.GetValue())194 Lazm =int(G2frame.Lazim.GetValue()) 195 195 if data['fullIntegrate']: 196 196 data['fullIntegrate'] = False … … 199 199 data['fullIntegrate'] = True 200 200 data['LRazimuth'] = [Lazm,Lazm+360] 201 UpdateImageControls( self,data,masks)202 G2plt.PlotExposedImage( self,event=event)201 UpdateImageControls(G2frame,data,masks) 202 G2plt.PlotExposedImage(G2frame,event=event) 203 203 204 204 def OnLRazim(event): 205 Lazm =int( self.Lazim.GetValue())205 Lazm =int(G2frame.Lazim.GetValue()) 206 206 if data['fullIntegrate']: 207 self.Razim.SetValue("%6d" % (Lazm+360))208 Razm = int( self.Razim.GetValue())207 G2frame.Razim.SetValue("%6d" % (Lazm+360)) 208 Razm = int(G2frame.Razim.GetValue()) 209 209 if Lazm > Razm: 210 210 Lazm -= 360 211 211 data['LRazimuth'] = [Lazm,Razm] 212 G2plt.PlotExposedImage( self,event=event)212 G2plt.PlotExposedImage(G2frame,event=event) 213 213 214 214 def OnBackImage(event): … … 227 227 data['rings'] = [] 228 228 data['ellipses'] = [] 229 # self.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBRATE,enable=False)230 G2plt.PlotExposedImage( self,event=event)229 # G2frame.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBRATE,enable=False) 230 G2plt.PlotExposedImage(G2frame,event=event) 231 231 232 232 def OnCalibrate(event): 233 self.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBRATE,enable=True)234 self.dataFrame.GetStatusBar().SetStatusText('Select > 4 points on 1st used ring; LB to pick, RB on point to delete else RB to finish')235 self.ifGetRing = True233 G2frame.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBRATE,enable=True) 234 G2frame.dataFrame.GetStatusBar().SetStatusText('Select > 4 points on 1st used ring; LB to pick, RB on point to delete else RB to finish') 235 G2frame.ifGetRing = True 236 236 237 237 def OnRecalibrate(event): 238 G2img.ImageRecalibrate( self,data)239 UpdateImageControls( self,data,masks)238 G2img.ImageRecalibrate(G2frame,data) 239 UpdateImageControls(G2frame,data,masks) 240 240 241 241 def OnIntegrate(event): … … 245 245 backImg = data['background image'][0] 246 246 backScale = data['background image'][1] 247 id = G2gd.GetPatternTreeItemId( self, self.root, backImg)248 Npix,imagefile = self.PatternTree.GetItemPyData(id)249 backImage = G2IO.GetImageData( self,imagefile,True)*backScale250 sumImage = self.ImageZ+backImage247 id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg) 248 Npix,imagefile = G2frame.PatternTree.GetItemPyData(id) 249 backImage = G2IO.GetImageData(G2frame,imagefile,True)*backScale 250 sumImage = G2frame.ImageZ+backImage 251 251 sumMin = np.min(sumImage) 252 252 sumMax = np.max(sumImage) 253 253 maskCopy['Thresholds'] = [(sumMin,sumMax),[sumMin,sumMax]] 254 self.Integrate = G2img.ImageIntegrate(sumImage,data,maskCopy)254 G2frame.Integrate = G2img.ImageIntegrate(sumImage,data,maskCopy) 255 255 else: 256 self.Integrate = G2img.ImageIntegrate(self.ImageZ,data,masks)257 G2plt.PlotIntegration( self,newPlot=True)258 G2IO.SaveIntegration( self,self.PickId,data)259 self.MakePDF.Enable(True)256 G2frame.Integrate = G2img.ImageIntegrate(G2frame.ImageZ,data,masks) 257 G2plt.PlotIntegration(G2frame,newPlot=True) 258 G2IO.SaveIntegration(G2frame,G2frame.PickId,data) 259 G2frame.MakePDF.Enable(True) 260 260 261 261 def OnIntegrateAll(event): … … 263 263 TextList = [[False,'All IMG',0]] 264 264 Names = [] 265 if self.PatternTree.GetCount():266 id, cookie = self.PatternTree.GetFirstChild(self.root)265 if G2frame.PatternTree.GetCount(): 266 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 267 267 while id: 268 name = self.PatternTree.GetItemText(id)268 name = G2frame.PatternTree.GetItemText(id) 269 269 Names.append(name) 270 270 if 'IMG' in name: 271 271 TextList.append([False,name,id]) 272 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)272 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 273 273 if len(TextList) == 1: 274 self.ErrorDialog('Nothing to integrate','There must some "IMG" patterns')274 G2frame.ErrorDialog('Nothing to integrate','There must some "IMG" patterns') 275 275 return 276 dlg = self.CopyDialog(self,'Image integration controls','Select images to integrate:',TextList)276 dlg = G2frame.CopyDialog(G2frame,'Image integration controls','Select images to integrate:',TextList) 277 277 try: 278 278 if dlg.ShowModal() == wx.ID_OK: … … 284 284 ifintegrate,name,id = item 285 285 if ifintegrate: 286 id = G2gd.GetPatternTreeItemId( self, self.root, name)287 Npix,imagefile = self.PatternTree.GetItemPyData(id)288 image = G2IO.GetImageData( self,imagefile,True)289 Id = G2gd.GetPatternTreeItemId( self,id, 'Image Controls')290 Data = self.PatternTree.GetItemPyData(Id)286 id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, name) 287 Npix,imagefile = G2frame.PatternTree.GetItemPyData(id) 288 image = G2IO.GetImageData(G2frame,imagefile,True) 289 Id = G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls') 290 Data = G2frame.PatternTree.GetItemPyData(Id) 291 291 backImage = [] 292 292 if Data['background image'][0]: 293 293 backImg = Data['background image'][0] 294 294 backScale = Data['background image'][1] 295 id = G2gd.GetPatternTreeItemId( self, self.root, backImg)296 Npix,imagefile = self.PatternTree.GetItemPyData(id)297 backImage = G2IO.GetImageData( self,imagefile,True)*backScale295 id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg) 296 Npix,imagefile = G2frame.PatternTree.GetItemPyData(id) 297 backImage = G2IO.GetImageData(G2frame,imagefile,True)*backScale 298 298 try: 299 Masks = self.PatternTree.GetItemPyData(300 G2gd.GetPatternTreeItemId( self,self.Image, 'Masks'))299 Masks = G2frame.PatternTree.GetItemPyData( 300 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks')) 301 301 except TypeError: #missing Masks 302 302 Imin,Imax = Data['Range'] 303 303 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 304 self.PatternTree.SetItemPyData(305 G2gd.GetPatternTreeItemId( self,self.Image, 'Masks'),Masks)304 G2frame.PatternTree.SetItemPyData( 305 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks'),Masks) 306 306 if len(backImage): 307 self.Integrate = G2img.ImageIntegrate(image+backImage,Data,Masks)307 G2frame.Integrate = G2img.ImageIntegrate(image+backImage,Data,Masks) 308 308 else: 309 self.Integrate = G2img.ImageIntegrate(image,Data,Masks)310 # G2plt.PlotIntegration( self,newPlot=True,event=event)311 G2IO.SaveIntegration( self,Id,Data)309 G2frame.Integrate = G2img.ImageIntegrate(image,Data,Masks) 310 # G2plt.PlotIntegration(G2frame,newPlot=True,event=event) 311 G2IO.SaveIntegration(G2frame,Id,Data) 312 312 finally: 313 313 dlg.Destroy() … … 317 317 TextList = [[False,'All IMG',0]] 318 318 Names = [] 319 if self.PatternTree.GetCount():320 id, cookie = self.PatternTree.GetFirstChild(self.root)319 if G2frame.PatternTree.GetCount(): 320 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 321 321 while id: 322 name = self.PatternTree.GetItemText(id)322 name = G2frame.PatternTree.GetItemText(id) 323 323 Names.append(name) 324 324 if 'IMG' in name: 325 if id == self.Image:325 if id == G2frame.Image: 326 326 Source = name 327 Data = copy.deepcopy( self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Image Controls')))327 Data = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'))) 328 328 Data['showLines'] = True 329 329 Data['ring'] = [] … … 333 333 else: 334 334 TextList.append([False,name,id]) 335 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)335 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 336 336 if len(TextList) == 1: 337 self.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern')337 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern') 338 338 return 339 dlg = self.CopyDialog(self,'Copy image controls','Copy controls from '+Source+' to:',TextList)339 dlg = G2frame.CopyDialog(G2frame,'Copy image controls','Copy controls from '+Source+' to:',TextList) 340 340 try: 341 341 if dlg.ShowModal() == wx.ID_OK: … … 347 347 ifcopy,name,id = item 348 348 if ifcopy: 349 oldData = copy.deepcopy( self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Image Controls')))349 oldData = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'))) 350 350 Data['range'] = oldData['range'] 351 351 Data['size'] = oldData['size'] … … 353 353 Data['rings'] = [] 354 354 Data['ellipses'] = [] 355 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Image Controls'),copy.deepcopy(Data))355 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'),copy.deepcopy(Data)) 356 356 finally: 357 357 dlg.Destroy() 358 358 359 359 def OnSaveControls(event): 360 dlg = wx.FileDialog( self, 'Choose image controls file', '.', '',360 dlg = wx.FileDialog(G2frame, 'Choose image controls file', '.', '', 361 361 'image control files (*.imctrl)|*.imctrl',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR) 362 362 try: … … 377 377 cntlList = ['wavelength','distance','tilt','rotation', 378 378 'fullIntegrate','outAzimuths','LRazimuth','IOtth'] 379 dlg = wx.FileDialog( self, 'Choose image controls file', '.', '',379 dlg = wx.FileDialog(G2frame, 'Choose image controls file', '.', '', 380 380 'image control files (*.imctrl)|*.imctrl',wx.OPEN|wx.CHANGE_DIR) 381 381 try: … … 402 402 S = File.readline() 403 403 data.update(save) 404 UpdateImageControls( self,data,masks)405 G2plt.PlotExposedImage( self,event=event)404 UpdateImageControls(G2frame,data,masks) 405 G2plt.PlotExposedImage(G2frame,event=event) 406 406 407 407 File.close() … … 423 423 data['type'] = 'PWDR' 424 424 typeDict = {'PWDR':typeList[0],'SASD':typeList[1],'REFL':typeList[2]} 425 if self.dataDisplay:426 self.dataDisplay.Destroy()427 self.dataFrame.SetMenuBar(self.dataFrame.ImageMenu)428 if not self.dataFrame.GetStatusBar():429 self.dataFrame.CreateStatusBar()430 self.dataFrame.Bind(wx.EVT_MENU, OnCalibrate, id=G2gd.wxID_IMCALIBRATE)431 self.dataFrame.Bind(wx.EVT_MENU, OnRecalibrate, id=G2gd.wxID_IMRECALIBRATE)432 self.dataFrame.Bind(wx.EVT_MENU, OnClearCalib, id=G2gd.wxID_IMCLEARCALIB)425 if G2frame.dataDisplay: 426 G2frame.dataDisplay.Destroy() 427 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.ImageMenu) 428 if not G2frame.dataFrame.GetStatusBar(): 429 G2frame.dataFrame.CreateStatusBar() 430 G2frame.dataFrame.Bind(wx.EVT_MENU, OnCalibrate, id=G2gd.wxID_IMCALIBRATE) 431 G2frame.dataFrame.Bind(wx.EVT_MENU, OnRecalibrate, id=G2gd.wxID_IMRECALIBRATE) 432 G2frame.dataFrame.Bind(wx.EVT_MENU, OnClearCalib, id=G2gd.wxID_IMCLEARCALIB) 433 433 if not data['rings']: 434 self.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBRATE,enable=False)435 self.dataFrame.Bind(wx.EVT_MENU, OnIntegrate, id=G2gd.wxID_IMINTEGRATE)436 self.dataFrame.Bind(wx.EVT_MENU, OnIntegrateAll, id=G2gd.wxID_INTEGRATEALL)437 self.dataFrame.Bind(wx.EVT_MENU, OnCopyControls, id=G2gd.wxID_IMCOPYCONTROLS)438 self.dataFrame.Bind(wx.EVT_MENU, OnSaveControls, id=G2gd.wxID_IMSAVECONTROLS)439 self.dataFrame.Bind(wx.EVT_MENU, OnLoadControls, id=G2gd.wxID_IMLOADCONTROLS)440 self.dataDisplay = wx.Panel(self.dataFrame)434 G2frame.dataFrame.ImageEdit.Enable(id=G2gd.wxID_IMRECALIBRATE,enable=False) 435 G2frame.dataFrame.Bind(wx.EVT_MENU, OnIntegrate, id=G2gd.wxID_IMINTEGRATE) 436 G2frame.dataFrame.Bind(wx.EVT_MENU, OnIntegrateAll, id=G2gd.wxID_INTEGRATEALL) 437 G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyControls, id=G2gd.wxID_IMCOPYCONTROLS) 438 G2frame.dataFrame.Bind(wx.EVT_MENU, OnSaveControls, id=G2gd.wxID_IMSAVECONTROLS) 439 G2frame.dataFrame.Bind(wx.EVT_MENU, OnLoadControls, id=G2gd.wxID_IMLOADCONTROLS) 440 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 441 441 mainSizer = wx.BoxSizer(wx.VERTICAL) 442 442 mainSizer.Add((5,10),0) 443 443 444 444 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 445 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Type of image data: '),0,446 wx.ALIGN_CENTER_VERTICAL) 447 typeSel = wx.ComboBox(parent= self.dataDisplay,value=typeDict[data['type']],choices=typeList,445 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Type of image data: '),0, 446 wx.ALIGN_CENTER_VERTICAL) 447 typeSel = wx.ComboBox(parent=G2frame.dataDisplay,value=typeDict[data['type']],choices=typeList, 448 448 style=wx.CB_READONLY|wx.CB_DROPDOWN) 449 449 typeSel.SetValue(data['type']) 450 450 typeSel.Bind(wx.EVT_COMBOBOX, OnDataType) 451 451 comboSizer.Add(typeSel,0,wx.ALIGN_CENTER_VERTICAL) 452 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Color bar '),0,453 wx.ALIGN_CENTER_VERTICAL) 454 colSel = wx.ComboBox(parent= self.dataDisplay,value=data['color'],choices=colorList,452 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Color bar '),0, 453 wx.ALIGN_CENTER_VERTICAL) 454 colSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['color'],choices=colorList, 455 455 style=wx.CB_READONLY|wx.CB_DROPDOWN|wx.CB_SORT) 456 456 colSel.Bind(wx.EVT_COMBOBOX, OnNewColorBar) 457 457 comboSizer.Add(colSel,0,wx.ALIGN_CENTER_VERTICAL) 458 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Azimuth offset '),0,459 wx.ALIGN_CENTER_VERTICAL) 460 azmthOff = wx.TextCtrl(parent= self.dataDisplay,value=("%.2f" % (data['azmthOff'])),458 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Azimuth offset '),0, 459 wx.ALIGN_CENTER_VERTICAL) 460 azmthOff = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.2f" % (data['azmthOff'])), 461 461 style=wx.TE_PROCESS_ENTER) 462 462 azmthOff.Bind(wx.EVT_TEXT_ENTER,OnAzmthOff) … … 472 472 DeltOne = data['range'][1][1]-max(0.0,data['range'][0][0]) 473 473 sqrtDeltOne = math.sqrt(DeltOne) 474 maxSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Max intensity'),0,475 wx.ALIGN_CENTER_VERTICAL) 476 maxSel = wx.Slider(parent= self.dataDisplay,style=wx.SL_HORIZONTAL,474 maxSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Max intensity'),0, 475 wx.ALIGN_CENTER_VERTICAL) 476 maxSel = wx.Slider(parent=G2frame.dataDisplay,style=wx.SL_HORIZONTAL, 477 477 value=int(100*sqrtDeltOne/sqrtDeltZero)) 478 478 maxSizer.Add(maxSel,1,wx.EXPAND) 479 479 maxSel.Bind(wx.EVT_SLIDER, OnMaxSlider) 480 maxVal = wx.TextCtrl(parent= self.dataDisplay,value='%.0f'%(data['range'][1][1]))480 maxVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.0f'%(data['range'][1][1])) 481 481 maxVal.Bind(wx.EVT_TEXT_ENTER,OnMaxVal) 482 482 maxVal.Bind(wx.EVT_KILL_FOCUS,OnMaxVal) 483 483 maxSizer.Add(maxVal,0,wx.ALIGN_CENTER_VERTICAL) 484 maxSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Min intensity'),0,485 wx.ALIGN_CENTER_VERTICAL) 486 minSel = wx.Slider(parent= self.dataDisplay,style=wx.SL_HORIZONTAL,484 maxSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min intensity'),0, 485 wx.ALIGN_CENTER_VERTICAL) 486 minSel = wx.Slider(parent=G2frame.dataDisplay,style=wx.SL_HORIZONTAL, 487 487 value=int(100*(data['range'][1][0]-max(0.0,data['range'][0][0]))/DeltOne)) 488 488 maxSizer.Add(minSel,1,wx.EXPAND) 489 489 minSel.Bind(wx.EVT_SLIDER, OnMinSlider) 490 minVal = wx.TextCtrl(parent= self.dataDisplay,value='%.0f'%(data['range'][1][0]))490 minVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.0f'%(data['range'][1][0])) 491 491 minVal.Bind(wx.EVT_TEXT_ENTER,OnMinVal) 492 492 minVal.Bind(wx.EVT_KILL_FOCUS,OnMinVal) … … 495 495 496 496 dataSizer = wx.FlexGridSizer(6,4,5,5) 497 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Calibration coefficients'),0,497 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calibration coefficients'),0, 498 498 wx.ALIGN_CENTER_VERTICAL) 499 499 dataSizer.Add((5,0),0) 500 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Integration coefficients'),0,500 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Integration coefficients'),0, 501 501 wx.ALIGN_CENTER_VERTICAL) 502 502 dataSizer.Add((5,0),0) 503 503 504 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Beam center X,Y'),0,504 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Beam center X,Y'),0, 505 505 wx.ALIGN_CENTER_VERTICAL) 506 506 cent = data['center'] 507 centText = wx.TextCtrl(parent= self.dataDisplay,value=("%8.3f,%8.3f" % (cent[0],cent[1])),style=wx.TE_READONLY)507 centText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%8.3f,%8.3f" % (cent[0],cent[1])),style=wx.TE_READONLY) 508 508 centText.SetBackgroundColour(VERY_LIGHT_GREY) 509 509 dataSizer.Add(centText,0,wx.ALIGN_CENTER_VERTICAL) 510 510 511 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Inner/Outer 2-theta'),0,511 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Inner/Outer 2-theta'),0, 512 512 wx.ALIGN_CENTER_VERTICAL) 513 513 514 514 IOtth = data['IOtth'] 515 515 littleSizer = wx.BoxSizer(wx.HORIZONTAL) 516 self.InnerTth = wx.TextCtrl(parent=self.dataDisplay,516 G2frame.InnerTth = wx.TextCtrl(parent=G2frame.dataDisplay, 517 517 value=("%8.3f" % (IOtth[0])),style=wx.TE_PROCESS_ENTER) 518 self.InnerTth.Bind(wx.EVT_TEXT_ENTER,OnIOtth)519 self.InnerTth.Bind(wx.EVT_KILL_FOCUS,OnIOtth)520 littleSizer.Add( self.InnerTth,0,wx.ALIGN_CENTER_VERTICAL)521 self.OuterTth = wx.TextCtrl(parent=self.dataDisplay,518 G2frame.InnerTth.Bind(wx.EVT_TEXT_ENTER,OnIOtth) 519 G2frame.InnerTth.Bind(wx.EVT_KILL_FOCUS,OnIOtth) 520 littleSizer.Add(G2frame.InnerTth,0,wx.ALIGN_CENTER_VERTICAL) 521 G2frame.OuterTth = wx.TextCtrl(parent=G2frame.dataDisplay, 522 522 value=("%8.2f" % (IOtth[1])),style=wx.TE_PROCESS_ENTER) 523 self.OuterTth.Bind(wx.EVT_TEXT_ENTER,OnIOtth)524 self.OuterTth.Bind(wx.EVT_KILL_FOCUS,OnIOtth)525 littleSizer.Add( self.OuterTth,0,wx.ALIGN_CENTER_VERTICAL)523 G2frame.OuterTth.Bind(wx.EVT_TEXT_ENTER,OnIOtth) 524 G2frame.OuterTth.Bind(wx.EVT_KILL_FOCUS,OnIOtth) 525 littleSizer.Add(G2frame.OuterTth,0,wx.ALIGN_CENTER_VERTICAL) 526 526 dataSizer.Add(littleSizer,0,) 527 527 528 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Wavelength'),0,529 wx.ALIGN_CENTER_VERTICAL) 530 waveSel = wx.TextCtrl(parent= self.dataDisplay,value=("%6.5f" % (data['wavelength'])),528 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Wavelength'),0, 529 wx.ALIGN_CENTER_VERTICAL) 530 waveSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%6.5f" % (data['wavelength'])), 531 531 style=wx.TE_PROCESS_ENTER) 532 532 waveSel.Bind(wx.EVT_TEXT_ENTER,OnWavelength) … … 534 534 dataSizer.Add(waveSel,0,wx.ALIGN_CENTER_VERTICAL) 535 535 536 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Start/End azimuth'),0,536 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Start/End azimuth'),0, 537 537 wx.ALIGN_CENTER_VERTICAL) 538 538 LRazim = data['LRazimuth'] 539 539 littleSizer = wx.BoxSizer(wx.HORIZONTAL) 540 self.Lazim = wx.TextCtrl(parent=self.dataDisplay,540 G2frame.Lazim = wx.TextCtrl(parent=G2frame.dataDisplay, 541 541 value=("%6d" % (LRazim[0])),style=wx.TE_PROCESS_ENTER) 542 self.Lazim.Bind(wx.EVT_TEXT_ENTER,OnLRazim)543 self.Lazim.Bind(wx.EVT_KILL_FOCUS,OnLRazim)544 littleSizer.Add( self.Lazim,0,wx.ALIGN_CENTER_VERTICAL)545 self.Razim = wx.TextCtrl(parent=self.dataDisplay,542 G2frame.Lazim.Bind(wx.EVT_TEXT_ENTER,OnLRazim) 543 G2frame.Lazim.Bind(wx.EVT_KILL_FOCUS,OnLRazim) 544 littleSizer.Add(G2frame.Lazim,0,wx.ALIGN_CENTER_VERTICAL) 545 G2frame.Razim = wx.TextCtrl(parent=G2frame.dataDisplay, 546 546 value=("%6d" % (LRazim[1])),style=wx.TE_PROCESS_ENTER) 547 self.Razim.Bind(wx.EVT_TEXT_ENTER,OnLRazim)548 self.Razim.Bind(wx.EVT_KILL_FOCUS,OnLRazim)547 G2frame.Razim.Bind(wx.EVT_TEXT_ENTER,OnLRazim) 548 G2frame.Razim.Bind(wx.EVT_KILL_FOCUS,OnLRazim) 549 549 if data['fullIntegrate']: 550 self.Razim.Enable(False)551 self.Razim.SetBackgroundColour(VERY_LIGHT_GREY)552 self.Razim.SetValue("%6d" % (LRazim[0]+360))553 littleSizer.Add( self.Razim,0,wx.ALIGN_CENTER_VERTICAL)550 G2frame.Razim.Enable(False) 551 G2frame.Razim.SetBackgroundColour(VERY_LIGHT_GREY) 552 G2frame.Razim.SetValue("%6d" % (LRazim[0]+360)) 553 littleSizer.Add(G2frame.Razim,0,wx.ALIGN_CENTER_VERTICAL) 554 554 dataSizer.Add(littleSizer,0,) 555 555 556 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Distance'),0,557 wx.ALIGN_CENTER_VERTICAL) 558 distSel = wx.TextCtrl(parent= self.dataDisplay,value=("%8.3f"%(data['distance'])),style=wx.TE_READONLY)556 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Distance'),0, 557 wx.ALIGN_CENTER_VERTICAL) 558 distSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%8.3f"%(data['distance'])),style=wx.TE_READONLY) 559 559 distSel.SetBackgroundColour(VERY_LIGHT_GREY) 560 560 dataSizer.Add(distSel,0,wx.ALIGN_CENTER_VERTICAL) 561 561 562 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' No. 2-theta/azimuth bins'),0,562 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' No. 2-theta/azimuth bins'),0, 563 563 wx.ALIGN_CENTER_VERTICAL) 564 564 littleSizer = wx.BoxSizer(wx.HORIZONTAL) 565 outChan = wx.TextCtrl(parent= self.dataDisplay,value=str(data['outChannels']),style=wx.TE_PROCESS_ENTER)565 outChan = wx.TextCtrl(parent=G2frame.dataDisplay,value=str(data['outChannels']),style=wx.TE_PROCESS_ENTER) 566 566 outChan.Bind(wx.EVT_TEXT_ENTER,OnNumOutChans) 567 567 outChan.Bind(wx.EVT_KILL_FOCUS,OnNumOutChans) 568 568 littleSizer.Add(outChan,0,wx.ALIGN_CENTER_VERTICAL) 569 outAzim = wx.TextCtrl(parent= self.dataDisplay,value=str(data['outAzimuths']),style=wx.TE_PROCESS_ENTER)569 outAzim = wx.TextCtrl(parent=G2frame.dataDisplay,value=str(data['outAzimuths']),style=wx.TE_PROCESS_ENTER) 570 570 outAzim.Bind(wx.EVT_TEXT_ENTER,OnNumOutAzms) 571 571 outAzim.Bind(wx.EVT_KILL_FOCUS,OnNumOutAzms) … … 573 573 dataSizer.Add(littleSizer,0,) 574 574 575 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Tilt angle'),0,576 wx.ALIGN_CENTER_VERTICAL) 577 tiltSel = wx.TextCtrl(parent= self.dataDisplay,value=("%9.3f"%(data['tilt'])),style=wx.TE_READONLY)575 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Tilt angle'),0, 576 wx.ALIGN_CENTER_VERTICAL) 577 tiltSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%9.3f"%(data['tilt'])),style=wx.TE_READONLY) 578 578 tiltSel.SetBackgroundColour(VERY_LIGHT_GREY) 579 579 dataSizer.Add(tiltSel,0,wx.ALIGN_CENTER_VERTICAL) 580 showLines = wx.CheckBox(parent= self.dataDisplay,label='Show integration limits?')580 showLines = wx.CheckBox(parent=G2frame.dataDisplay,label='Show integration limits?') 581 581 dataSizer.Add(showLines,0,wx.ALIGN_CENTER_VERTICAL) 582 582 showLines.Bind(wx.EVT_CHECKBOX, OnShowLines) 583 583 showLines.SetValue(data['showLines']) 584 fullIntegrate = wx.CheckBox(parent= self.dataDisplay,label='Do full integration?')584 fullIntegrate = wx.CheckBox(parent=G2frame.dataDisplay,label='Do full integration?') 585 585 dataSizer.Add(fullIntegrate,0,wx.ALIGN_CENTER_VERTICAL) 586 586 fullIntegrate.Bind(wx.EVT_CHECKBOX, OnFullIntegrate) 587 587 fullIntegrate.SetValue(data['fullIntegrate']) 588 588 589 dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Tilt rotation'),0,590 wx.ALIGN_CENTER_VERTICAL) 591 rotSel = wx.TextCtrl(parent= self.dataDisplay,value=("%9.3f"%(data['rotation']-90.)),style=wx.TE_READONLY) #kluge to get rotation from vertical - see GSASIIimage589 dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Tilt rotation'),0, 590 wx.ALIGN_CENTER_VERTICAL) 591 rotSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%9.3f"%(data['rotation']-90.)),style=wx.TE_READONLY) #kluge to get rotation from vertical - see GSASIIimage 592 592 rotSel.SetBackgroundColour(VERY_LIGHT_GREY) 593 593 dataSizer.Add(rotSel,0,wx.ALIGN_CENTER_VERTICAL) 594 setDefault = wx.CheckBox(parent= self.dataDisplay,label='Use as default for all images?')594 setDefault = wx.CheckBox(parent=G2frame.dataDisplay,label='Use as default for all images?') 595 595 dataSizer.Add(setDefault,0,wx.ALIGN_CENTER_VERTICAL) 596 596 setDefault.Bind(wx.EVT_CHECKBOX, OnSetDefault) … … 598 598 dataSizer.Add((5,5),0) 599 599 600 dataSizer.Add(wx.StaticText( self.dataDisplay,-1,' Background image'),0,wx.ALIGN_CENTER_VERTICAL)601 Choices = ['',]+G2gd.GetPatternTreeDataNames( self,['IMG ',])602 backImage = wx.ComboBox(parent= self.dataDisplay,value=data['background image'][0],choices=Choices,600 dataSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Background image'),0,wx.ALIGN_CENTER_VERTICAL) 601 Choices = ['',]+G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 602 backImage = wx.ComboBox(parent=G2frame.dataDisplay,value=data['background image'][0],choices=Choices, 603 603 style=wx.CB_READONLY|wx.CB_DROPDOWN) 604 604 backImage.Bind(wx.EVT_COMBOBOX,OnBackImage) 605 605 dataSizer.Add(backImage) 606 dataSizer.Add(wx.StaticText( self.dataDisplay,-1,' multiplier'),0,wx.ALIGN_CENTER_VERTICAL)607 backMult = wx.TextCtrl(parent= self.dataDisplay,value=("%.3f" % (data['background image'][1])),606 dataSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' multiplier'),0,wx.ALIGN_CENTER_VERTICAL) 607 backMult = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (data['background image'][1])), 608 608 style=wx.TE_PROCESS_ENTER) 609 609 backMult.Bind(wx.EVT_TEXT_ENTER,OnBackMult) … … 613 613 mainSizer.Add((5,5),0) 614 614 mainSizer.Add(dataSizer,0) 615 mainSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Calibration controls:'),0,615 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calibration controls:'),0, 616 616 wx.ALIGN_CENTER_VERTICAL) 617 617 mainSizer.Add((5,5),0) 618 618 calibSizer = wx.FlexGridSizer(2,3,5,5) 619 619 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 620 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Calibrant '),0,621 wx.ALIGN_CENTER_VERTICAL) 622 calSel = wx.ComboBox(parent= self.dataDisplay,value=data['calibrant'],choices=calList,620 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calibrant '),0, 621 wx.ALIGN_CENTER_VERTICAL) 622 calSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['calibrant'],choices=calList, 623 623 style=wx.CB_READONLY|wx.CB_DROPDOWN|wx.CB_SORT) 624 624 calSel.Bind(wx.EVT_COMBOBOX, OnNewCalibrant) … … 627 627 628 628 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 629 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Calib lines to skip '),0,630 wx.ALIGN_CENTER_VERTICAL) 631 calibSkip = wx.ComboBox(parent= self.dataDisplay,value=str(data['calibskip']),choices=[str(i) for i in range(25)],629 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calib lines to skip '),0, 630 wx.ALIGN_CENTER_VERTICAL) 631 calibSkip = wx.ComboBox(parent=G2frame.dataDisplay,value=str(data['calibskip']),choices=[str(i) for i in range(25)], 632 632 style=wx.CB_READONLY|wx.CB_DROPDOWN) 633 633 calibSkip.Bind(wx.EVT_COMBOBOX, OnCalibSkip) … … 636 636 637 637 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 638 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Min calib d-spacing '),0,639 wx.ALIGN_CENTER_VERTICAL) 640 calibDmin = wx.TextCtrl(parent= self.dataDisplay,value=("%.2f" % (data['calibdmin'])),638 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min calib d-spacing '),0, 639 wx.ALIGN_CENTER_VERTICAL) 640 calibDmin = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.2f" % (data['calibdmin'])), 641 641 style=wx.TE_PROCESS_ENTER) 642 642 calibDmin.Bind(wx.EVT_TEXT_ENTER,OnCalibDmin) … … 646 646 647 647 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 648 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Min ring I/Ib '),0,649 wx.ALIGN_CENTER_VERTICAL) 650 cutOff = wx.TextCtrl(parent= self.dataDisplay,value=("%.1f" % (data['cutoff'])),648 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min ring I/Ib '),0, 649 wx.ALIGN_CENTER_VERTICAL) 650 cutOff = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.1f" % (data['cutoff'])), 651 651 style=wx.TE_PROCESS_ENTER) 652 652 cutOff.Bind(wx.EVT_TEXT_ENTER,OnCutOff) … … 656 656 657 657 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 658 comboSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Pixel search range '),0,659 wx.ALIGN_CENTER_VERTICAL) 660 pixLimit = wx.ComboBox(parent= self.dataDisplay,value=str(data['pixLimit']),choices=['1','2','5','10','15','20'],658 comboSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Pixel search range '),0, 659 wx.ALIGN_CENTER_VERTICAL) 660 pixLimit = wx.ComboBox(parent=G2frame.dataDisplay,value=str(data['pixLimit']),choices=['1','2','5','10','15','20'], 661 661 style=wx.CB_READONLY|wx.CB_DROPDOWN) 662 662 pixLimit.Bind(wx.EVT_COMBOBOX, OnPixLimit) … … 665 665 666 666 comboSizer = wx.BoxSizer(wx.HORIZONTAL) 667 setRings = wx.CheckBox(parent= self.dataDisplay,label='Show ring picks?')667 setRings = wx.CheckBox(parent=G2frame.dataDisplay,label='Show ring picks?') 668 668 comboSizer.Add(setRings,0) 669 669 setRings.Bind(wx.EVT_CHECKBOX, OnSetRings) … … 674 674 675 675 mainSizer.Layout() 676 self.dataDisplay.SetSizer(mainSizer)677 fitSize = mainSizer.Fit( self.dataFrame)678 self.dataFrame.setSizePosLeft(fitSize)679 self.dataDisplay.SetSize(fitSize)680 681 def UpdateMasks( self,data):676 G2frame.dataDisplay.SetSizer(mainSizer) 677 fitSize = mainSizer.Fit(G2frame.dataFrame) 678 G2frame.dataFrame.setSizePosLeft(fitSize) 679 G2frame.dataDisplay.SetSize(fitSize) 680 681 def UpdateMasks(G2frame,data): 682 682 683 683 def OnTextMsg(event): … … 697 697 lowerThreshold.SetValue("%8d" % (lower)) 698 698 upperThreshold.SetValue("%8d" % (upper)) 699 G2plt.PlotExposedImage( self,event=event)699 G2plt.PlotExposedImage(G2frame,event=event) 700 700 701 701 def OnSpotDiameter(event): … … 707 707 Obj.SetValue("%.2f"%(diameter)) 708 708 data['Points'][spotIds.index(Obj.GetId())][2] = diameter 709 G2plt.PlotExposedImage( self,event=event)709 G2plt.PlotExposedImage(G2frame,event=event) 710 710 711 711 def OnDeleteSpot(event): 712 712 Obj = event.GetEventObject() 713 713 del(data['Points'][delSpotId.index(Obj)]) 714 UpdateMasks( self,data)715 G2plt.PlotExposedImage( self,event=event)714 UpdateMasks(G2frame,data) 715 G2plt.PlotExposedImage(G2frame,event=event) 716 716 717 717 def OnRingThickness(event): … … 723 723 Obj.SetValue("%.3f"%(thick)) 724 724 data['Rings'][ringIds.index(Obj.GetId())][1] = thick 725 G2plt.PlotExposedImage( self,event=event)725 G2plt.PlotExposedImage(G2frame,event=event) 726 726 727 727 def OnDeleteRing(event): 728 728 Obj = event.GetEventObject() 729 729 del(data['Rings'][delRingId.index(Obj)]) 730 UpdateMasks( self,data)731 G2plt.PlotExposedImage( self,event=event)730 UpdateMasks(G2frame,data) 731 G2plt.PlotExposedImage(G2frame,event=event) 732 732 733 733 def OnArcThickness(event): … … 739 739 Obj.SetValue("%.3f"%(thick)) 740 740 data['Arcs'][arcIds.index(Obj.GetId())][2] = thick 741 G2plt.PlotExposedImage( self,event=event)741 G2plt.PlotExposedImage(G2frame,event=event) 742 742 743 743 def OnDeleteArc(event): 744 744 Obj = event.GetEventObject() 745 745 del(data['Arcs'][delArcId.index(Obj)]) 746 UpdateMasks( self,data)747 G2plt.PlotExposedImage( self,event=event)746 UpdateMasks(G2frame,data) 747 G2plt.PlotExposedImage(G2frame,event=event) 748 748 749 749 def OnDeletePoly(event): 750 750 Obj = event.GetEventObject() 751 751 del(data['Polygons'][delPolyId.index(Obj)]) 752 UpdateMasks( self,data)753 G2plt.PlotExposedImage( self,event=event)752 UpdateMasks(G2frame,data) 753 G2plt.PlotExposedImage(G2frame,event=event) 754 754 755 755 def OnCopyMask(event): … … 757 757 TextList = [[False,'All IMG',0]] 758 758 Names = [] 759 if self.PatternTree.GetCount():760 id, cookie = self.PatternTree.GetFirstChild(self.root)759 if G2frame.PatternTree.GetCount(): 760 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 761 761 while id: 762 name = self.PatternTree.GetItemText(id)762 name = G2frame.PatternTree.GetItemText(id) 763 763 Names.append(name) 764 764 if 'IMG' in name: 765 if id == self.Image:765 if id == G2frame.Image: 766 766 Source = name 767 Mask = copy.deepcopy( self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks')))767 Mask = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks'))) 768 768 del Mask['Thresholds'] 769 769 else: 770 770 TextList.append([False,name,id]) 771 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)771 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 772 772 if len(TextList) == 1: 773 self.ErrorDialog('Nothing to copy mask to','There must be more than one "IMG" pattern')773 G2frame.ErrorDialog('Nothing to copy mask to','There must be more than one "IMG" pattern') 774 774 return 775 dlg = self.CopyDialog(self,'Copy mask information','Copy mask from '+Source+' to:',TextList)775 dlg = G2frame.CopyDialog(G2frame,'Copy mask information','Copy mask from '+Source+' to:',TextList) 776 776 try: 777 777 if dlg.ShowModal() == wx.ID_OK: … … 783 783 ifcopy,name,id = item 784 784 if ifcopy: 785 mask = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks'))785 mask = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks')) 786 786 mask.update(Mask) 787 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks'),copy.deepcopy(mask))787 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks'),copy.deepcopy(mask)) 788 788 finally: 789 789 dlg.Destroy() 790 790 791 791 def OnSaveMask(event): 792 dlg = wx.FileDialog( self, 'Choose image mask file', '.', '',792 dlg = wx.FileDialog(G2frame, 'Choose image mask file', '.', '', 793 793 'image mask files (*.immask)|*.immask',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR) 794 794 try: … … 805 805 806 806 def OnLoadMask(event): 807 dlg = wx.FileDialog( self, 'Choose image mask file', '.', '',807 dlg = wx.FileDialog(G2frame, 'Choose image mask file', '.', '', 808 808 'image mask files (*.immask)|*.immask',wx.OPEN|wx.CHANGE_DIR) 809 809 try: … … 822 822 S = File.readline() 823 823 data.update(save) 824 UpdateMasks( self,data)825 G2plt.PlotExposedImage( self,event=event)824 UpdateMasks(G2frame,data) 825 G2plt.PlotExposedImage(G2frame,event=event) 826 826 827 827 File.close() … … 829 829 dlg.Destroy() 830 830 831 if self.dataDisplay:832 self.dataDisplay.Destroy()833 self.dataFrame.SetMenuBar(self.dataFrame.MaskMenu)834 self.dataFrame.Bind(wx.EVT_MENU, OnCopyMask, id=G2gd.wxID_MASKCOPY)835 self.dataFrame.Bind(wx.EVT_MENU, OnLoadMask, id=G2gd.wxID_MASKLOAD)836 self.dataFrame.Bind(wx.EVT_MENU, OnSaveMask, id=G2gd.wxID_MASKSAVE)837 if not self.dataFrame.GetStatusBar():838 Status = self.dataFrame.CreateStatusBar()831 if G2frame.dataDisplay: 832 G2frame.dataDisplay.Destroy() 833 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.MaskMenu) 834 G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyMask, id=G2gd.wxID_MASKCOPY) 835 G2frame.dataFrame.Bind(wx.EVT_MENU, OnLoadMask, id=G2gd.wxID_MASKLOAD) 836 G2frame.dataFrame.Bind(wx.EVT_MENU, OnSaveMask, id=G2gd.wxID_MASKSAVE) 837 if not G2frame.dataFrame.GetStatusBar(): 838 Status = G2frame.dataFrame.CreateStatusBar() 839 839 Status.SetStatusText("To add mask: On 2D Powder Image, key a:arc, r:ring, s:spot, p:polygon") 840 self.dataDisplay = wx.Panel(self.dataFrame)840 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 841 841 mainSizer = wx.BoxSizer(wx.VERTICAL) 842 842 mainSizer.Add((5,10),0) … … 849 849 850 850 littleSizer = wx.FlexGridSizer(2,3,0,5) 851 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Lower/Upper limits '),0,852 wx.ALIGN_CENTER_VERTICAL) 853 Text = wx.TextCtrl( self.dataDisplay,value=("%8d" % (thresh[0][0])),style=wx.TE_READONLY)851 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Lower/Upper limits '),0, 852 wx.ALIGN_CENTER_VERTICAL) 853 Text = wx.TextCtrl(G2frame.dataDisplay,value=("%8d" % (thresh[0][0])),style=wx.TE_READONLY) 854 854 littleSizer.Add(Text,0,wx.ALIGN_CENTER_VERTICAL) 855 855 Text.SetBackgroundColour(VERY_LIGHT_GREY) 856 Text = wx.TextCtrl( self.dataDisplay,value=("%8d" % (thresh[0][1])),style=wx.TE_READONLY)856 Text = wx.TextCtrl(G2frame.dataDisplay,value=("%8d" % (thresh[0][1])),style=wx.TE_READONLY) 857 857 littleSizer.Add(Text,0,wx.ALIGN_CENTER_VERTICAL) 858 858 Text.SetBackgroundColour(VERY_LIGHT_GREY) 859 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Lower/Upper thresholds '),859 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Lower/Upper thresholds '), 860 860 0,wx.ALIGN_CENTER_VERTICAL) 861 lowerThreshold = wx.TextCtrl(parent= self.dataDisplay,861 lowerThreshold = wx.TextCtrl(parent=G2frame.dataDisplay, 862 862 value=("%8d" % (thresh[1][0])),style=wx.TE_PROCESS_ENTER) 863 863 lowerThreshold.Bind(wx.EVT_TEXT_ENTER,OnThreshold) 864 864 lowerThreshold.Bind(wx.EVT_KILL_FOCUS,OnThreshold) 865 865 littleSizer.Add(lowerThreshold,0,wx.ALIGN_CENTER_VERTICAL) 866 upperThreshold = wx.TextCtrl(parent= self.dataDisplay,866 upperThreshold = wx.TextCtrl(parent=G2frame.dataDisplay, 867 867 value=("%8d" % (thresh[1][1])),style=wx.TE_PROCESS_ENTER) 868 868 upperThreshold.Bind(wx.EVT_TEXT_ENTER,OnThreshold) … … 874 874 if spots: 875 875 littleSizer = wx.FlexGridSizer(len(spots)+2,3,0,5) 876 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Spot masks:'),0,877 wx.ALIGN_CENTER_VERTICAL) 878 littleSizer.Add((5,0),0) 879 littleSizer.Add((5,0),0) 880 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' position, mm'),0,881 wx.ALIGN_CENTER_VERTICAL) 882 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' diameter, mm'),0,876 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Spot masks:'),0, 877 wx.ALIGN_CENTER_VERTICAL) 878 littleSizer.Add((5,0),0) 879 littleSizer.Add((5,0),0) 880 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' position, mm'),0, 881 wx.ALIGN_CENTER_VERTICAL) 882 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' diameter, mm'),0, 883 883 wx.ALIGN_CENTER_VERTICAL) 884 884 littleSizer.Add((5,0),0) 885 885 for x,y,d in spots: 886 spotText = wx.TextCtrl(parent= self.dataDisplay,value=("%.2f,%.2f" % (x,y)),886 spotText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.2f,%.2f" % (x,y)), 887 887 style=wx.TE_READONLY) 888 888 spotText.SetBackgroundColour(VERY_LIGHT_GREY) 889 889 littleSizer.Add(spotText,0,wx.ALIGN_CENTER_VERTICAL) 890 890 spotText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg) 891 spotDiameter = wx.TextCtrl(parent= self.dataDisplay,value=("%.2f" % (d)),891 spotDiameter = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.2f" % (d)), 892 892 style=wx.TE_PROCESS_ENTER) 893 893 littleSizer.Add(spotDiameter,0,wx.ALIGN_CENTER_VERTICAL) … … 895 895 spotDiameter.Bind(wx.EVT_KILL_FOCUS,OnSpotDiameter) 896 896 spotIds.append(spotDiameter.GetId()) 897 spotDelete = wx.CheckBox(parent= self.dataDisplay,label='delete?')897 spotDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?') 898 898 spotDelete.Bind(wx.EVT_CHECKBOX,OnDeleteSpot) 899 899 delSpotId.append(spotDelete) … … 904 904 if rings: 905 905 littleSizer = wx.FlexGridSizer(len(rings)+2,3,0,5) 906 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Ring masks:'),0,907 wx.ALIGN_CENTER_VERTICAL) 908 littleSizer.Add((5,0),0) 909 littleSizer.Add((5,0),0) 910 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' 2-theta,deg'),0,911 wx.ALIGN_CENTER_VERTICAL) 912 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' thickness, deg'),0,906 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Ring masks:'),0, 907 wx.ALIGN_CENTER_VERTICAL) 908 littleSizer.Add((5,0),0) 909 littleSizer.Add((5,0),0) 910 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' 2-theta,deg'),0, 911 wx.ALIGN_CENTER_VERTICAL) 912 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' thickness, deg'),0, 913 913 wx.ALIGN_CENTER_VERTICAL) 914 914 littleSizer.Add((5,0),0) 915 915 for tth,thick in rings: 916 ringText = wx.TextCtrl(parent= self.dataDisplay,value=("%.3f" % (tth)),916 ringText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (tth)), 917 917 style=wx.TE_READONLY) 918 918 ringText.SetBackgroundColour(VERY_LIGHT_GREY) 919 919 ringText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg) 920 920 littleSizer.Add(ringText,0,wx.ALIGN_CENTER_VERTICAL) 921 ringThick = wx.TextCtrl(parent= self.dataDisplay,value=("%.3f" % (thick)),921 ringThick = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (thick)), 922 922 style=wx.TE_PROCESS_ENTER) 923 923 littleSizer.Add(ringThick,0,wx.ALIGN_CENTER_VERTICAL) … … 925 925 ringThick.Bind(wx.EVT_KILL_FOCUS,OnRingThickness) 926 926 ringIds.append(ringThick.GetId()) 927 ringDelete = wx.CheckBox(parent= self.dataDisplay,label='delete?')927 ringDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?') 928 928 ringDelete.Bind(wx.EVT_CHECKBOX,OnDeleteRing) 929 929 delRingId.append(ringDelete) … … 934 934 if arcs: 935 935 littleSizer = wx.FlexGridSizer(len(rings)+2,4,0,5) 936 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Arc masks:'),0,937 wx.ALIGN_CENTER_VERTICAL) 938 littleSizer.Add((5,0),0) 939 littleSizer.Add((5,0),0) 940 littleSizer.Add((5,0),0) 941 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' 2-theta,deg'),0,942 wx.ALIGN_CENTER_VERTICAL) 943 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' azimuth, deg'),0,944 wx.ALIGN_CENTER_VERTICAL) 945 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' thickness, deg'),0,936 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Arc masks:'),0, 937 wx.ALIGN_CENTER_VERTICAL) 938 littleSizer.Add((5,0),0) 939 littleSizer.Add((5,0),0) 940 littleSizer.Add((5,0),0) 941 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' 2-theta,deg'),0, 942 wx.ALIGN_CENTER_VERTICAL) 943 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' azimuth, deg'),0, 944 wx.ALIGN_CENTER_VERTICAL) 945 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' thickness, deg'),0, 946 946 wx.ALIGN_CENTER_VERTICAL) 947 947 littleSizer.Add((5,0),0) 948 948 for tth,azimuth,thick in arcs: 949 arcText = wx.TextCtrl(parent= self.dataDisplay,value=("%.3f" % (tth)),949 arcText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (tth)), 950 950 style=wx.TE_READONLY) 951 951 arcText.SetBackgroundColour(VERY_LIGHT_GREY) 952 952 arcText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg) 953 953 littleSizer.Add(arcText,0,wx.ALIGN_CENTER_VERTICAL) 954 azmText = wx.TextCtrl(parent= self.dataDisplay,value=("%d,%d" % (azimuth[0],azimuth[1])),954 azmText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%d,%d" % (azimuth[0],azimuth[1])), 955 955 style=wx.TE_READONLY) 956 956 azmText.SetBackgroundColour(VERY_LIGHT_GREY) 957 957 azmText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg) 958 958 littleSizer.Add(azmText,0,wx.ALIGN_CENTER_VERTICAL) 959 arcThick = wx.TextCtrl(parent= self.dataDisplay,value=("%.3f" % (thick)),959 arcThick = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (thick)), 960 960 style=wx.TE_PROCESS_ENTER) 961 961 littleSizer.Add(arcThick,0,wx.ALIGN_CENTER_VERTICAL) … … 963 963 arcThick.Bind(wx.EVT_KILL_FOCUS,OnArcThickness) 964 964 arcIds.append(arcThick.GetId()) 965 arcDelete = wx.CheckBox(parent= self.dataDisplay,label='delete?')965 arcDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?') 966 966 arcDelete.Bind(wx.EVT_CHECKBOX,OnDeleteArc) 967 967 delArcId.append(arcDelete) … … 972 972 if polygons: 973 973 littleSizer = wx.FlexGridSizer(len(polygons)+2,2,0,5) 974 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Polygon masks:'),0,974 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Polygon masks:'),0, 975 975 wx.ALIGN_CENTER_VERTICAL) 976 976 littleSizer.Add((5,0),0) … … 980 980 for x,y in polygon: 981 981 polyList.append("%.2f, %.2f"%(x,y)) 982 polyText = wx.ComboBox( self.dataDisplay,value=polyList[0],choices=polyList,style=wx.CB_READONLY)982 polyText = wx.ComboBox(G2frame.dataDisplay,value=polyList[0],choices=polyList,style=wx.CB_READONLY) 983 983 littleSizer.Add(polyText,0,wx.ALIGN_CENTER_VERTICAL) 984 polyDelete = wx.CheckBox(parent= self.dataDisplay,label='delete?')984 polyDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?') 985 985 polyDelete.Bind(wx.EVT_CHECKBOX,OnDeletePoly) 986 986 delPolyId.append(polyDelete) … … 988 988 mainSizer.Add(littleSizer,0,) 989 989 mainSizer.Layout() 990 self.dataDisplay.SetSizer(mainSizer)991 self.dataDisplay.SetSize(mainSizer.Fit(self.dataFrame))992 self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))990 G2frame.dataDisplay.SetSizer(mainSizer) 991 G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame)) 992 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame)) -
TabularUnified trunk/GSASIIphsGUI.py ¶
r460 r468 228 228 self.Draw(self.data) 229 229 230 def UpdatePhaseData( self,Item,data,oldPage):230 def UpdatePhaseData(G2frame,Item,data,oldPage): 231 231 232 232 Atoms = [] 233 if self.dataDisplay:234 self.dataDisplay.Destroy()235 PhaseName = self.PatternTree.GetItemText(Item)236 self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)237 self.dataFrame.SetLabel('Phase Data for '+PhaseName)238 self.dataFrame.CreateStatusBar()239 self.dataDisplay = G2gd.GSNoteBook(parent=self.dataFrame,size=self.dataFrame.GetClientSize())233 if G2frame.dataDisplay: 234 G2frame.dataDisplay.Destroy() 235 PhaseName = G2frame.PatternTree.GetItemText(Item) 236 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu) 237 G2frame.dataFrame.SetLabel('Phase Data for '+PhaseName) 238 G2frame.dataFrame.CreateStatusBar() 239 G2frame.dataDisplay = G2gd.GSNoteBook(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize()) 240 240 241 241 def SetupGeneral(): … … 256 256 generalData['AtomMass'] = [] 257 257 generalData['Color'] = [] 258 generalData['Mydir'] = self.dirname258 generalData['Mydir'] = G2frame.dirname 259 259 cx,ct,cs,cia = [3,1,7,9] 260 260 generalData['AtomPtrs'] = [cx,ct,cs,cia] … … 294 294 'Drawing':{} 295 295 ''' 296 self.dataFrame.SetMenuBar(self.dataFrame.DataGeneral) # do this here, since this is called from all over296 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataGeneral) # do this here, since this is called from all over 297 297 298 298 phaseTypes = ['nuclear','modulated','magnetic','macromolecular','Pawley'] … … 303 303 oldName = generalData['Name'] 304 304 generalData['Name'] = NameTxt.GetValue() 305 self.G2plotNB.Rename(oldName,generalData['Name'])306 self.dataFrame.SetLabel('Phase Data for '+generalData['Name'])307 self.PatternTree.SetItemText(Item,generalData['Name'])305 G2frame.G2plotNB.Rename(oldName,generalData['Name']) 306 G2frame.dataFrame.SetLabel('Phase Data for '+generalData['Name']) 307 G2frame.PatternTree.SetItemText(Item,generalData['Name']) 308 308 #Hmm, need to change phase name key in Reflection Lists for each histogram 309 309 … … 314 314 UpdateGeneral() #must use this way! 315 315 if generalData['Type'] == 'Pawley': 316 if self.dataDisplay.FindPage('Atoms'):317 self.dataDisplay.DeletePage(self.dataDisplay.FindPage('Atoms'))318 self.dataDisplay.DeletePage(self.dataDisplay.FindPage('Draw Options'))319 self.dataDisplay.DeletePage(self.dataDisplay.FindPage('Draw Atoms'))320 if not self.dataDisplay.FindPage('Pawley reflections'):321 self.PawleyRefl = G2gd.GSGrid(self.dataDisplay)322 self.dataDisplay.AddPage(self.PawleyRefl,'Pawley reflections')316 if G2frame.dataDisplay.FindPage('Atoms'): 317 G2frame.dataDisplay.DeletePage(G2frame.dataDisplay.FindPage('Atoms')) 318 G2frame.dataDisplay.DeletePage(G2frame.dataDisplay.FindPage('Draw Options')) 319 G2frame.dataDisplay.DeletePage(G2frame.dataDisplay.FindPage('Draw Atoms')) 320 if not G2frame.dataDisplay.FindPage('Pawley reflections'): 321 G2frame.PawleyRefl = G2gd.GSGrid(G2frame.dataDisplay) 322 G2frame.dataDisplay.AddPage(G2frame.PawleyRefl,'Pawley reflections') 323 323 else: 324 324 TypeTxt.SetValue(generalData['Type']) … … 591 591 592 592 dataDisplay.SetSizer(mainSizer) 593 Size = mainSizer.Fit( self.dataFrame)593 Size = mainSizer.Fit(G2frame.dataFrame) 594 594 Size[1] += 26 #compensate for status bar 595 595 dataDisplay.SetSize(Size) 596 self.dataFrame.setSizePosLeft(Size)596 G2frame.dataFrame.setSizePosLeft(Size) 597 597 598 598 def FillAtomsGrid(): 599 599 600 self.dataFrame.setSizePosLeft([700,300])600 G2frame.dataFrame.setSizePosLeft([700,300]) 601 601 generalData = data['General'] 602 602 atomData = data['Atoms'] … … 605 605 if atomData: 606 606 for item in Items: 607 self.dataFrame.AtomsMenu.Enable(item,True)607 G2frame.dataFrame.AtomsMenu.Enable(item,True) 608 608 else: 609 609 for item in Items: 610 self.dataFrame.AtomsMenu.Enable(item,False)610 G2frame.dataFrame.AtomsMenu.Enable(item,False) 611 611 612 612 AAchoice = ": ,ALA,ARG,ASN,ASP,CYS,GLN,GLU,GLY,HIS,ILE,LEU,LYS,MET,PHE,PRO,SER,THR,TRP,TYR,VAL,MSE,HOH,UNK" … … 644 644 elif Type in ['magnetic',]: 645 645 choice = ['F - site fraction','X - coordinates','U - thermal parameters','M - magnetic moment'] 646 dlg = wx.MultiChoiceDialog( self,'Select','Refinement controls',choice)646 dlg = wx.MultiChoiceDialog(G2frame,'Select','Refinement controls',choice) 647 647 if dlg.ShowModal() == wx.ID_OK: 648 648 sel = dlg.GetSelections() … … 653 653 elif Atoms.GetColLabelValue(c) == 'I/A': 654 654 choice = ['Isotropic','Anisotropic'] 655 dlg = wx.SingleChoiceDialog( self,'Select','Thermal Motion',choice)655 dlg = wx.SingleChoiceDialog(G2frame,'Select','Thermal Motion',choice) 656 656 if dlg.ShowModal() == wx.ID_OK: 657 657 sel = dlg.GetSelection() … … 660 660 elif Atoms.GetColLabelValue(c) == 'Type': 661 661 choice = generalData['AtomTypes'] 662 dlg = wx.SingleChoiceDialog( self,'Select','Atom types',choice)662 dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom types',choice) 663 663 if dlg.ShowModal() == wx.ID_OK: 664 664 sel = dlg.GetSelection() … … 675 675 choice.append(str(atomData[r][c])) 676 676 choice.sort() 677 dlg = wx.SingleChoiceDialog( self,'Select','Residue',choice)677 dlg = wx.SingleChoiceDialog(G2frame,'Select','Residue',choice) 678 678 if dlg.ShowModal() == wx.ID_OK: 679 679 sel = dlg.GetSelection() … … 689 689 if str(atomData[r][c]) not in choice: 690 690 choice.append(str(atomData[r][c])) 691 dlg = wx.SingleChoiceDialog( self,'Select','Residue no.',choice)691 dlg = wx.SingleChoiceDialog(G2frame,'Select','Residue no.',choice) 692 692 if dlg.ShowModal() == wx.ID_OK: 693 693 sel = dlg.GetSelection() … … 703 703 if atomData[r][c] not in choice: 704 704 choice.append(atomData[r][c]) 705 dlg = wx.SingleChoiceDialog( self,'Select','Chain',choice)705 dlg = wx.SingleChoiceDialog(G2frame,'Select','Chain',choice) 706 706 if dlg.ShowModal() == wx.ID_OK: 707 707 sel = dlg.GetSelection() … … 815 815 r,c = event.GetRow(),event.GetCol() 816 816 if Atoms.GetColLabelValue(c) == 'Type': 817 PE = G2elem.PickElement( self)817 PE = G2elem.PickElement(G2frame) 818 818 if PE.ShowModal() == wx.ID_OK: 819 819 atomData[r][c] = PE.Elem.strip() … … 869 869 SGData = data['General']['SGData'] 870 870 if SGData['SGPolax']: 871 self.dataFrame.SetStatusText('Warning: The location of the origin is arbitrary in '+SGData['SGPolax'])871 G2frame.dataFrame.SetStatusText('Warning: The location of the origin is arbitrary in '+SGData['SGPolax']) 872 872 table = [] 873 873 rowLabels = [] … … 944 944 if 'Atoms' in data['Drawing']: 945 945 DrawAtomAdd(data['Drawing'],atomData[-1]) 946 G2plt.PlotStructure( self,data)946 G2plt.PlotStructure(G2frame,data) 947 947 948 948 def OnAtomInsert(event): … … 990 990 DrawAtomsDeleteByIDs(IDs) 991 991 FillAtomsGrid() 992 G2plt.PlotStructure( self,data)992 G2plt.PlotStructure(G2frame,data) 993 993 event.StopPropagation() 994 994 … … 1005 1005 elif Type == 'magnetic': 1006 1006 choice = ['F - site fraction','X - coordinates','U - thermal parameters','M - magnetic moment'] 1007 dlg = wx.MultiChoiceDialog( self,'Select','Refinement controls',choice)1007 dlg = wx.MultiChoiceDialog(G2frame,'Select','Refinement controls',choice) 1008 1008 if dlg.ShowModal() == wx.ID_OK: 1009 1009 sel = dlg.GetSelections() … … 1034 1034 generalData = data['General'] 1035 1035 SGData = generalData['SGData'] 1036 dlg = SymOpDialog( self,SGData,True)1036 dlg = SymOpDialog(G2frame,SGData,True) 1037 1037 try: 1038 1038 if dlg.ShowModal() == wx.ID_OK: … … 1080 1080 if 'DisAglCtls' in generalData: 1081 1081 DisAglCtls = generalData['DisAglCtls'] 1082 dlg = DisAglDialog( self,DisAglCtls,generalData)1082 dlg = DisAglDialog(G2frame,DisAglCtls,generalData) 1083 1083 if dlg.ShowModal() == wx.ID_OK: 1084 1084 DisAglCtls = dlg.GetData() … … 1100 1100 if 'pId' in data: 1101 1101 DisAglData['pId'] = data['pId'] 1102 DisAglData['covData'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root, 'Covariance'))1102 DisAglData['covData'] = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.root, 'Covariance')) 1103 1103 G2str.DistAngle(DisAglCtls,DisAglData) 1104 1104 … … 1230 1230 choice.sort() 1231 1231 1232 dlg = wx.MultiChoiceDialog( self,'Select',name,choice)1232 dlg = wx.MultiChoiceDialog(G2frame,'Select',name,choice) 1233 1233 if dlg.ShowModal() == wx.ID_OK: 1234 1234 sel = dlg.GetSelections() … … 1246 1246 drawAtoms.SelectRow(row,True) 1247 1247 drawingData['selectedAtoms'].append(row) 1248 G2plt.PlotStructure( self,data)1248 G2plt.PlotStructure(G2frame,data) 1249 1249 dlg.Destroy() 1250 1250 … … 1259 1259 noSkip = True 1260 1260 if drawAtoms.GetColLabelValue(c) == 'Style': 1261 dlg = wx.SingleChoiceDialog( self,'Select','Atom drawing style',styleChoice)1261 dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom drawing style',styleChoice) 1262 1262 if dlg.ShowModal() == wx.ID_OK: 1263 1263 sel = dlg.GetSelection() … … 1267 1267 drawAtoms.SetCellValue(r,c,parms) 1268 1268 FindBondsDraw() 1269 G2plt.PlotStructure( self,data)1269 G2plt.PlotStructure(G2frame,data) 1270 1270 dlg.Destroy() 1271 1271 elif drawAtoms.GetColLabelValue(c) == 'Label': 1272 dlg = wx.SingleChoiceDialog( self,'Select','Atom labelling style',labelChoice)1272 dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom labelling style',labelChoice) 1273 1273 if dlg.ShowModal() == wx.ID_OK: 1274 1274 sel = dlg.GetSelection() … … 1279 1279 dlg.Destroy() 1280 1280 elif drawAtoms.GetColLabelValue(c) == 'Color': 1281 dlg = wx.ColourDialog( self)1281 dlg = wx.ColourDialog(G2frame) 1282 1282 if dlg.ShowModal() == wx.ID_OK: 1283 1283 color = dlg.GetColourData().GetColour() … … 1315 1315 colors.SetCustomColour(0,color) 1316 1316 colors.SetColour(color) 1317 dlg = wx.ColourDialog( self,colors)1317 dlg = wx.ColourDialog(G2frame,colors) 1318 1318 dlg.GetColourData().SetCustomColour(0,color) 1319 1319 if dlg.ShowModal() == wx.ID_OK: … … 1328 1328 event.StopPropagation() 1329 1329 UpdateDrawAtoms() 1330 G2plt.PlotStructure( self,data)1330 G2plt.PlotStructure(G2frame,data) 1331 1331 1332 1332 def RowSelect(event): … … 1349 1349 drawingData['selectedAtoms'] = [] 1350 1350 drawingData['selectedAtoms'] = drawAtoms.GetSelectedRows() 1351 G2plt.PlotStructure( self,data)1351 G2plt.PlotStructure(G2frame,data) 1352 1352 1353 1353 table = [] … … 1384 1384 if colLabels[c] not in ['Style','Label','Color']: 1385 1385 drawAtoms.SetColAttr(c,attr) 1386 self.dataFrame.setSizePosLeft([600,300])1386 G2frame.dataFrame.setSizePosLeft([600,300]) 1387 1387 1388 1388 FindBondsDraw() 1389 1389 drawAtoms.ClearSelection() 1390 G2plt.PlotStructure( self,data)1390 G2plt.PlotStructure(G2frame,data) 1391 1391 1392 1392 def DrawAtomStyle(event): … … 1400 1400 styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids', 1401 1401 'backbone','ribbons','schematic'] 1402 dlg = wx.SingleChoiceDialog( self,'Select','Atom drawing style',styleChoice)1402 dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom drawing style',styleChoice) 1403 1403 if dlg.ShowModal() == wx.ID_OK: 1404 1404 sel = dlg.GetSelection() … … 1410 1410 FindBondsDraw() 1411 1411 drawAtoms.ClearSelection() 1412 G2plt.PlotStructure( self,data)1412 G2plt.PlotStructure(G2frame,data) 1413 1413 1414 1414 def DrawAtomLabel(event): … … 1421 1421 if generalData['Type'] == 'macromolecular': 1422 1422 styleChoice = [' ','type','name','number','residue','1-letter','chain'] 1423 dlg = wx.SingleChoiceDialog( self,'Select','Atom label style',styleChoice)1423 dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom label style',styleChoice) 1424 1424 if dlg.ShowModal() == wx.ID_OK: 1425 1425 sel = dlg.GetSelection() … … 1430 1430 dlg.Destroy() 1431 1431 drawAtoms.ClearSelection() 1432 G2plt.PlotStructure( self,data)1432 G2plt.PlotStructure(G2frame,data) 1433 1433 1434 1434 def DrawAtomColor(event): … … 1437 1437 if indx: 1438 1438 if len(indx) > 1: 1439 self.dataFrame.SetStatusText('Select Custom Color, change color, Add to Custom Colors, then OK')1439 G2frame.dataFrame.SetStatusText('Select Custom Color, change color, Add to Custom Colors, then OK') 1440 1440 else: 1441 self.dataFrame.SetStatusText('Change color, Add to Custom Colors, then OK')1441 G2frame.dataFrame.SetStatusText('Change color, Add to Custom Colors, then OK') 1442 1442 generalData = data['General'] 1443 1443 atomData = data['Drawing']['Atoms'] … … 1455 1455 for i,color in enumerate(atmColors): 1456 1456 colors.SetCustomColour(i,color) 1457 dlg = wx.ColourDialog( self,colors)1457 dlg = wx.ColourDialog(G2frame,colors) 1458 1458 if dlg.ShowModal() == wx.ID_OK: 1459 1459 for i in range(len(atmColors)): … … 1469 1469 drawAtoms.ClearSelection() 1470 1470 dlg.Destroy() 1471 self.dataFrame.SetStatusText('')1471 G2frame.dataFrame.SetStatusText('') 1472 1472 1473 1473 def ResetAtomColors(event): … … 1480 1480 UpdateDrawAtoms() 1481 1481 drawAtoms.ClearSelection() 1482 G2plt.PlotStructure( self,data)1482 G2plt.PlotStructure(G2frame,data) 1483 1483 1484 1484 def SetViewPoint(event): … … 1489 1489 data['Drawing']['viewPoint'] = [atomData[indx[0]][cx:cx+3],[indx[0],0]] 1490 1490 drawAtoms.ClearSelection() #do I really want to do this? 1491 G2plt.PlotStructure( self,data)1491 G2plt.PlotStructure(G2frame,data) 1492 1492 1493 1493 def noDuplicate(xyz,atomData): #be careful where this is used - it's slow … … 1509 1509 generalData = data['General'] 1510 1510 SGData = generalData['SGData'] 1511 dlg = SymOpDialog( self,SGData,False)1511 dlg = SymOpDialog(G2frame,SGData,False) 1512 1512 try: 1513 1513 if dlg.ShowModal() == wx.ID_OK: … … 1540 1540 UpdateDrawAtoms() 1541 1541 drawAtoms.ClearSelection() 1542 G2plt.PlotStructure( self,data)1542 G2plt.PlotStructure(G2frame,data) 1543 1543 1544 1544 def TransformSymEquiv(event): … … 1554 1554 generalData = data['General'] 1555 1555 SGData = generalData['SGData'] 1556 dlg = SymOpDialog( self,SGData,False)1556 dlg = SymOpDialog(G2frame,SGData,False) 1557 1557 try: 1558 1558 if dlg.ShowModal() == wx.ID_OK: … … 1584 1584 UpdateDrawAtoms() 1585 1585 drawAtoms.ClearSelection() 1586 G2plt.PlotStructure( self,data)1586 G2plt.PlotStructure(G2frame,data) 1587 1587 1588 1588 def FillCoordSphere(event): … … 1627 1627 UpdateDrawAtoms() 1628 1628 drawAtoms.ClearSelection() 1629 G2plt.PlotStructure( self,data)1629 G2plt.PlotStructure(G2frame,data) 1630 1630 1631 1631 def FillUnitCell(event): … … 1680 1680 UpdateDrawAtoms() 1681 1681 drawAtoms.ClearSelection() 1682 G2plt.PlotStructure( self,data)1682 G2plt.PlotStructure(G2frame,data) 1683 1683 1684 1684 def FindBondsToo(): #works but slow for large structures - keep as reference … … 1752 1752 if atomA[2] in ['lines','sticks','ellipsoids','balls & sticks','polyhedra']: 1753 1753 Dx = Atoms-atomA[1] 1754 dist = ma.masked_less(np.sqrt(np.sum(np.inner(Amat,Dx)**2,axis=0)),0.5) #gets rid of self& disorder "bonds" < 0.5A1754 dist = ma.masked_less(np.sqrt(np.sum(np.inner(Amat,Dx)**2,axis=0)),0.5) #gets rid of G2frame & disorder "bonds" < 0.5A 1755 1755 sumR = atomA[3]+Radii 1756 1756 IndB = ma.nonzero(ma.masked_greater(dist-data['Drawing']['radiusFactor']*sumR,0.)) #get indices of bonded atoms … … 1789 1789 UpdateDrawAtoms() 1790 1790 drawAtoms.ClearSelection() 1791 G2plt.PlotStructure( self,data)1791 G2plt.PlotStructure(G2frame,data) 1792 1792 event.StopPropagation() 1793 1793 … … 1796 1796 UpdateDrawAtoms() 1797 1797 drawAtoms.ClearSelection() 1798 G2plt.PlotStructure( self,data)1798 G2plt.PlotStructure(G2frame,data) 1799 1799 event.StopPropagation() 1800 1800 … … 1848 1848 if 'pId' in data: 1849 1849 TorsionData['pId'] = data['pId'] 1850 TorsionData['covData'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root, 'Covariance'))1850 TorsionData['covData'] = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.root, 'Covariance')) 1851 1851 G2str.Torsion(TorsionData) 1852 1852 … … 1890 1890 drawingData['Zclip'] = Zclip.GetValue() 1891 1891 ZclipTxt.SetLabel('Z clipping: '+'%.2fA'%(drawingData['Zclip']*drawingData['cameraPos']/100.)) 1892 G2plt.PlotStructure( self,data)1892 G2plt.PlotStructure(G2frame,data) 1893 1893 1894 1894 def OnCameraPos(event): … … 1896 1896 cameraPosTxt.SetLabel('Camera Distance: '+'%.2f'%(drawingData['cameraPos'])) 1897 1897 ZclipTxt.SetLabel('Z clipping: '+'%.2fA'%(drawingData['Zclip']*drawingData['cameraPos']/100.)) 1898 G2plt.PlotStructure( self,data)1898 G2plt.PlotStructure(G2frame,data) 1899 1899 1900 1900 def OnBackColor(event): 1901 1901 drawingData['backColor'] = event.GetValue() 1902 G2plt.PlotStructure( self,data)1902 G2plt.PlotStructure(G2frame,data) 1903 1903 1904 1904 def OnBallScale(event): 1905 1905 drawingData['ballScale'] = ballScale.GetValue()/100. 1906 1906 ballScaleTxt.SetLabel('Ball scale: '+'%.2f'%(drawingData['ballScale'])) 1907 G2plt.PlotStructure( self,data)1907 G2plt.PlotStructure(G2frame,data) 1908 1908 1909 1909 def OnVdWScale(event): 1910 1910 drawingData['vdwScale'] = vdwScale.GetValue()/100. 1911 1911 vdwScaleTxt.SetLabel('van der Waals scale: '+'%.2f'%(drawingData['vdwScale'])) 1912 G2plt.PlotStructure( self,data)1912 G2plt.PlotStructure(G2frame,data) 1913 1913 1914 1914 def OnEllipseProb(event): 1915 1915 drawingData['ellipseProb'] = ellipseProb.GetValue() 1916 1916 ellipseProbTxt.SetLabel('Ellipsoid probability: '+'%d%%'%(drawingData['ellipseProb'])) 1917 G2plt.PlotStructure( self,data)1917 G2plt.PlotStructure(G2frame,data) 1918 1918 1919 1919 def OnBondRadius(event): 1920 1920 drawingData['bondRadius'] = bondRadius.GetValue()/100. 1921 1921 bondRadiusTxt.SetLabel('Bond radius, A: '+'%.2f'%(drawingData['bondRadius'])) 1922 G2plt.PlotStructure( self,data)1922 G2plt.PlotStructure(G2frame,data) 1923 1923 1924 1924 def OnShowABC(event): 1925 1925 drawingData['showABC'] = showABC.GetValue() 1926 G2plt.PlotStructure( self,data)1926 G2plt.PlotStructure(G2frame,data) 1927 1927 1928 1928 def OnShowUnitCell(event): 1929 1929 drawingData['unitCellBox'] = unitCellBox.GetValue() 1930 G2plt.PlotStructure( self,data)1930 G2plt.PlotStructure(G2frame,data) 1931 1931 1932 1932 def OnShowHyd(event): 1933 1933 drawingData['showHydrogen'] = showHydrogen.GetValue() 1934 1934 FindBondsDraw() 1935 G2plt.PlotStructure( self,data)1935 G2plt.PlotStructure(G2frame,data) 1936 1936 1937 1937 def OnSizeHatoms(event): … … 1942 1942 drawingData['sizeH'] = value 1943 1943 sizeH.SetValue("%.2f"%(value)) 1944 G2plt.PlotStructure( self,data)1944 G2plt.PlotStructure(G2frame,data) 1945 1945 1946 1946 def OnRadFactor(event): … … 1952 1952 radFactor.SetValue("%.2f"%(value)) 1953 1953 FindBondsDraw() 1954 G2plt.PlotStructure( self,data)1954 G2plt.PlotStructure(G2frame,data) 1955 1955 1956 1956 dataDisplay = wx.Panel(drawOptions) … … 2055 2055 2056 2056 dataDisplay.SetSizer(mainSizer) 2057 Size = mainSizer.Fit( self.dataFrame)2057 Size = mainSizer.Fit(G2frame.dataFrame) 2058 2058 Size[1] += 26 #compensate for status bar 2059 2059 dataDisplay.SetSize(Size) 2060 self.dataFrame.setSizePosLeft(Size)2060 G2frame.dataFrame.setSizePosLeft(Size) 2061 2061 2062 2062 def UpdateTexture(): … … 2078 2078 shModels = ['cylindrical','none','shear - 2/m','rolling - mmm'] 2079 2079 SamSym = dict(zip(shModels,['0','-1','2/m','mmm'])) 2080 if generalData['Type'] == 'Pawley' and G2gd.GetPatternTreeItemId( self,self.root,'Sequental results'):2081 self.dataFrame.RefineTexture.Enable(True)2080 if generalData['Type'] == 'Pawley' and G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequental results'): 2081 G2frame.dataFrame.RefineTexture.Enable(True) 2082 2082 shAngles = ['omega','chi','phi'] 2083 2083 … … 2096 2096 textureData['SH Coeff'][1] = SetSHCoef() 2097 2097 wx.CallAfter(UpdateTexture) 2098 G2plt.PlotTexture( self,data,newPlot=False)2098 G2plt.PlotTexture(G2frame,data,newPlot=False) 2099 2099 2100 2100 def OnShModel(event): … … 2103 2103 textureData['SH Coeff'][1] = SetSHCoef() 2104 2104 wx.CallAfter(UpdateTexture) 2105 G2plt.PlotTexture( self,data,newPlot=False)2105 G2plt.PlotTexture(G2frame,data,newPlot=False) 2106 2106 2107 2107 def OnSHRefine(event): … … 2116 2116 def OnProjSel(event): 2117 2117 Obj = event.GetEventObject() 2118 self.Projection = Obj.GetValue()2119 G2plt.PlotTexture( self,data,newPlot=False)2118 G2frame.Projection = Obj.GetValue() 2119 G2plt.PlotTexture(G2frame,data,newPlot=False) 2120 2120 2121 2121 def OnColorSel(event): 2122 2122 Obj = event.GetEventObject() 2123 self.ContourColor = Obj.GetValue()2124 G2plt.PlotTexture( self,data,newPlot=False)2123 G2frame.ContourColor = Obj.GetValue() 2124 G2plt.PlotTexture(G2frame,data,newPlot=False) 2125 2125 2126 2126 def OnAngRef(event): … … 2145 2145 Obj.SetValue('%8.3f'%(value)) 2146 2146 textureData['SH Coeff'][1][ODFIndx[Obj.GetId()]] = value 2147 G2plt.PlotTexture( self,data,newPlot=False)2147 G2plt.PlotTexture(G2frame,data,newPlot=False) 2148 2148 2149 2149 def OnPfType(event): … … 2151 2151 textureData['PlotType'] = Obj.GetValue() 2152 2152 wx.CallAfter(UpdateTexture) 2153 G2plt.PlotTexture( self,data)2153 G2plt.PlotTexture(G2frame,data) 2154 2154 2155 2155 def OnPFValue(event): … … 2174 2174 Obj.SetValue('%3.1f %3.1f %3.1f'%(xyz[0],xyz[1],xyz[2])) 2175 2175 textureData['PFxyz'] = xyz 2176 G2plt.PlotTexture( self,data)2176 G2plt.PlotTexture(G2frame,data) 2177 2177 2178 2178 if Texture.GetSizer(): … … 2216 2216 if 'Axial' not in textureData['PlotType']: 2217 2217 PTSizer.Add(wx.StaticText(Texture,-1,' Projection type: '),0,wx.ALIGN_CENTER_VERTICAL) 2218 projSel = wx.ComboBox(Texture,-1,value= self.Projection,choices=['equal area','stereographic','3D display'],2218 projSel = wx.ComboBox(Texture,-1,value=G2frame.Projection,choices=['equal area','stereographic','3D display'], 2219 2219 style=wx.CB_READONLY|wx.CB_DROPDOWN) 2220 2220 projSel.Bind(wx.EVT_COMBOBOX,OnProjSel) … … 2235 2235 choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")] 2236 2236 choice.sort() 2237 colorSel = wx.ComboBox(Texture,-1,value= self.ContourColor,choices=choice,2237 colorSel = wx.ComboBox(Texture,-1,value=G2frame.ContourColor,choices=choice, 2238 2238 style=wx.CB_READONLY|wx.CB_DROPDOWN) 2239 2239 colorSel.Bind(wx.EVT_COMBOBOX,OnColorSel) … … 2277 2277 mainSizer.Add(angSizer,0,wx.ALIGN_CENTER_VERTICAL) 2278 2278 Texture.SetSizer(mainSizer,True) 2279 mainSizer.Fit( self.dataFrame)2279 mainSizer.Fit(G2frame.dataFrame) 2280 2280 Size = mainSizer.GetMinSize() 2281 2281 Size[0] += 40 … … 2284 2284 Texture.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1) 2285 2285 Size[1] = min(Size[1],450) 2286 self.dataFrame.setSizePosLeft(Size)2286 G2frame.dataFrame.setSizePosLeft(Size) 2287 2287 2288 2288 def UpdateDData(): 2289 2289 UseList = data['Histograms'] 2290 2290 if UseList: 2291 self.dataFrame.DataMenu.Enable(G2gd.wxID_DATADELETE,True)2292 self.Refine.Enable(True)2291 G2frame.dataFrame.DataMenu.Enable(G2gd.wxID_DATADELETE,True) 2292 G2frame.Refine.Enable(True) 2293 2293 else: 2294 self.dataFrame.DataMenu.Enable(G2gd.wxID_DATADELETE,False)2295 self.Refine.Enable(False)2294 G2frame.dataFrame.DataMenu.Enable(G2gd.wxID_DATADELETE,False) 2295 G2frame.Refine.Enable(False) 2296 2296 generalData = data['General'] 2297 2297 SGData = generalData['SGData'] … … 2304 2304 generalData['Data plot type'] = Obj.GetStringSelection() 2305 2305 wx.CallAfter(UpdateDData) 2306 G2plt.PlotSizeStrainPO( self,data)2306 G2plt.PlotSizeStrainPO(G2frame,data) 2307 2307 2308 2308 def OnPOhkl(event): … … 2318 2318 h,k,l = hkl 2319 2319 Obj.SetValue('%3d %3d %3d'%(h,k,l)) 2320 G2plt.PlotSizeStrainPO( self,data)2320 G2plt.PlotSizeStrainPO(G2frame,data) 2321 2321 2322 2322 def OnShowData(event): … … 2325 2325 UseList[hist]['Show'] = Obj.GetValue() 2326 2326 wx.CallAfter(UpdateDData) 2327 G2plt.PlotSizeStrainPO( self,data)2327 G2plt.PlotSizeStrainPO(G2frame,data) 2328 2328 2329 2329 def OnCopyData(event): … … 2339 2339 if UseList: 2340 2340 copyList = [] 2341 dlg = wx.MultiChoiceDialog( self,2341 dlg = wx.MultiChoiceDialog(G2frame, 2342 2342 'Copy parameters to which histograms?', 'Copy parameters', 2343 2343 keyList, wx.CHOICEDLG_STYLE) … … 2373 2373 hist = Indx[Obj.GetId()] 2374 2374 UseList[hist]['Size'][0] = Obj.GetValue() 2375 G2plt.PlotSizeStrainPO( self,data)2375 G2plt.PlotSizeStrainPO(G2frame,data) 2376 2376 wx.CallAfter(UpdateDData) 2377 2377 … … 2405 2405 pass 2406 2406 Obj.SetValue("%.3f"%(UseList[hist]['Size'][1][pid])) #reset in case of error 2407 G2plt.PlotSizeStrainPO( self,data)2407 G2plt.PlotSizeStrainPO(G2frame,data) 2408 2408 2409 2409 def OnSizeAxis(event): … … 2425 2425 hist = Indx[Obj.GetId()] 2426 2426 UseList[hist]['Mustrain'][0] = Obj.GetValue() 2427 G2plt.PlotSizeStrainPO( self,data)2427 G2plt.PlotSizeStrainPO(G2frame,data) 2428 2428 wx.CallAfter(UpdateDData) 2429 2429 … … 2456 2456 else: 2457 2457 Obj.SetValue("%.1f"%(UseList[hist]['Mustrain'][1][pid])) #reset in case of error 2458 G2plt.PlotSizeStrainPO( self,data)2458 G2plt.PlotSizeStrainPO(G2frame,data) 2459 2459 2460 2460 def OnStrainAxis(event): … … 2471 2471 h,k,l = hkl 2472 2472 Obj.SetValue('%3d %3d %3d'%(h,k,l)) 2473 G2plt.PlotSizeStrainPO( self,data)2473 G2plt.PlotSizeStrainPO(G2frame,data) 2474 2474 2475 2475 def OnHstrainRef(event): … … 2889 2889 2890 2890 DData.SetSizer(mainSizer,True) 2891 mainSizer.FitInside( self.dataFrame)2891 mainSizer.FitInside(G2frame.dataFrame) 2892 2892 Size = mainSizer.GetMinSize() 2893 2893 Size[0] += 40 … … 2896 2896 DData.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1) 2897 2897 Size[1] = min(Size[1],450) 2898 self.dataFrame.setSizePosLeft(Size)2898 G2frame.dataFrame.setSizePosLeft(Size) 2899 2899 2900 2900 def OnHklfAdd(event): … … 2902 2902 keyList = UseList.keys() 2903 2903 TextList = [] 2904 if self.PatternTree.GetCount():2905 item, cookie = self.PatternTree.GetFirstChild(self.root)2904 if G2frame.PatternTree.GetCount(): 2905 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 2906 2906 while item: 2907 name = self.PatternTree.GetItemText(item)2907 name = G2frame.PatternTree.GetItemText(item) 2908 2908 if name not in keyList and 'HKLF' in name: 2909 2909 TextList.append(name) 2910 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)2911 dlg = wx.MultiChoiceDialog( self, 'Which new data to use?', 'Use data', TextList, wx.CHOICEDLG_STYLE)2910 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 2911 dlg = wx.MultiChoiceDialog(G2frame, 'Which new data to use?', 'Use data', TextList, wx.CHOICEDLG_STYLE) 2912 2912 try: 2913 2913 if dlg.ShowModal() == wx.ID_OK: … … 2931 2931 keyList = UseList.keys() 2932 2932 TextList = ['All PWDR'] 2933 if self.PatternTree.GetCount():2934 item, cookie = self.PatternTree.GetFirstChild(self.root)2933 if G2frame.PatternTree.GetCount(): 2934 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 2935 2935 while item: 2936 name = self.PatternTree.GetItemText(item)2936 name = G2frame.PatternTree.GetItemText(item) 2937 2937 if name not in keyList and 'PWDR' in name: 2938 2938 TextList.append(name) 2939 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)2940 dlg = wx.MultiChoiceDialog( self, 'Which new data to use?', 'Use data', TextList, wx.CHOICEDLG_STYLE)2939 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 2940 dlg = wx.MultiChoiceDialog(G2frame, 'Which new data to use?', 'Use data', TextList, wx.CHOICEDLG_STYLE) 2941 2941 try: 2942 2942 if dlg.ShowModal() == wx.ID_OK: … … 2946 2946 newList = TextList[1:] 2947 2947 for histoName in newList: 2948 pId = G2gd.GetPatternTreeItemId( self,self.root,histoName)2948 pId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,histoName) 2949 2949 UseList[histoName] = {'Histogram':histoName,'Show':False, 2950 2950 'Scale':[1.0,False],'Pref.Ori.':['MD',1.0,False,[0,0,1],0,{}], … … 2954 2954 'HStrain':[NDij*[0.0,],NDij*[False,]], 2955 2955 'Extinction':[0.0,False]} 2956 refList = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,pId,'Reflection Lists'))2956 refList = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,pId,'Reflection Lists')) 2957 2957 refList[generalData['Name']] = [] 2958 2958 data['Histograms'] = UseList … … 2968 2968 if UseList: 2969 2969 DelList = [] 2970 dlg = wx.MultiChoiceDialog( self,2970 dlg = wx.MultiChoiceDialog(G2frame, 2971 2971 'Which histogram to delete from this phase?', 'Delete histogram', 2972 2972 keyList, wx.CHOICEDLG_STYLE) … … 2987 2987 2988 2988 def KeyEditPawleyGrid(event): 2989 colList = self.PawleyRefl.GetSelectedCols()2989 colList = G2frame.PawleyRefl.GetSelectedCols() 2990 2990 PawleyPeaks = data['Pawley ref'] 2991 2991 if event.GetKeyCode() == wx.WXK_RETURN: … … 2996 2996 event.Skip(True) 2997 2997 elif colList: 2998 self.PawleyRefl.ClearSelection()2998 G2frame.PawleyRefl.ClearSelection() 2999 2999 key = event.GetKeyCode() 3000 3000 for col in colList: … … 3014 3014 2*[wg.GRID_VALUE_FLOAT+':10,2',] 3015 3015 PawleyTable = G2gd.Table(PawleyPeaks,rowLabels=rowLabels,colLabels=colLabels,types=Types) 3016 self.PawleyRefl.SetTable(PawleyTable, True)3017 self.PawleyRefl.Bind(wx.EVT_KEY_DOWN, KeyEditPawleyGrid)3018 self.PawleyRefl.SetMargins(0,0)3019 self.PawleyRefl.AutoSizeColumns(False)3020 self.dataFrame.setSizePosLeft([500,300])3016 G2frame.PawleyRefl.SetTable(PawleyTable, True) 3017 G2frame.PawleyRefl.Bind(wx.EVT_KEY_DOWN, KeyEditPawleyGrid) 3018 G2frame.PawleyRefl.SetMargins(0,0) 3019 G2frame.PawleyRefl.AutoSizeColumns(False) 3020 G2frame.dataFrame.setSizePosLeft([500,300]) 3021 3021 3022 3022 def OnPawleyLoad(event): … … 3047 3047 return 3048 3048 HistoNames = Histograms.keys() 3049 PatternId = G2gd.GetPatternTreeItemId( self,self.root,HistoNames[0])3050 xdata = self.PatternTree.GetItemPyData(PatternId)[1]3051 Inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId,'Instrument Parameters'))3049 PatternId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,HistoNames[0]) 3050 xdata = G2frame.PatternTree.GetItemPyData(PatternId)[1] 3051 Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Instrument Parameters')) 3052 3052 Inst = dict(zip(Inst[3],Inst[1])) 3053 Sample = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId,'Sample Parameters'))3053 Sample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Sample Parameters')) 3054 3054 if 'Lam' in Inst: 3055 3055 wave = Inst['Lam'] … … 3075 3075 3076 3076 def OnPawleyDelete(event): 3077 dlg = wx.MessageDialog( self,'Do you really want to delete Pawley reflections?','Delete',3077 dlg = wx.MessageDialog(G2frame,'Do you really want to delete Pawley reflections?','Delete', 3078 3078 wx.YES_NO | wx.ICON_QUESTION) 3079 3079 try: … … 3093 3093 def OnPageChanged(event): 3094 3094 page = event.GetSelection() 3095 text = self.dataDisplay.GetPageText(page)3095 text = G2frame.dataDisplay.GetPageText(page) 3096 3096 if text == 'Atoms': 3097 self.dataFrame.SetMenuBar(self.dataFrame.AtomsMenu)3098 self.dataFrame.Bind(wx.EVT_MENU, OnAtomAdd, id=G2gd.wxID_ATOMSEDITADD)3099 self.dataFrame.Bind(wx.EVT_MENU, OnAtomTestAdd, id=G2gd.wxID_ATOMSTESTADD)3100 self.dataFrame.Bind(wx.EVT_MENU, OnAtomInsert, id=G2gd.wxID_ATOMSEDITINSERT)3101 self.dataFrame.Bind(wx.EVT_MENU, OnAtomTestInsert, id=G2gd.wxID_ATONTESTINSERT)3102 self.dataFrame.Bind(wx.EVT_MENU, AtomDelete, id=G2gd.wxID_ATOMSEDITDELETE)3103 self.dataFrame.Bind(wx.EVT_MENU, AtomRefine, id=G2gd.wxID_ATOMSREFINE)3104 self.dataFrame.Bind(wx.EVT_MENU, AtomModify, id=G2gd.wxID_ATOMSMODIFY)3105 self.dataFrame.Bind(wx.EVT_MENU, AtomTransform, id=G2gd.wxID_ATOMSTRANSFORM)3106 self.dataFrame.Bind(wx.EVT_MENU, OnReloadDrawAtoms, id=G2gd.wxID_RELOADDRAWATOMS)3107 self.dataFrame.Bind(wx.EVT_MENU, OnDistAngle, id=G2gd.wxID_ATOMSDISAGL)3097 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.AtomsMenu) 3098 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomAdd, id=G2gd.wxID_ATOMSEDITADD) 3099 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomTestAdd, id=G2gd.wxID_ATOMSTESTADD) 3100 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomInsert, id=G2gd.wxID_ATOMSEDITINSERT) 3101 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomTestInsert, id=G2gd.wxID_ATONTESTINSERT) 3102 G2frame.dataFrame.Bind(wx.EVT_MENU, AtomDelete, id=G2gd.wxID_ATOMSEDITDELETE) 3103 G2frame.dataFrame.Bind(wx.EVT_MENU, AtomRefine, id=G2gd.wxID_ATOMSREFINE) 3104 G2frame.dataFrame.Bind(wx.EVT_MENU, AtomModify, id=G2gd.wxID_ATOMSMODIFY) 3105 G2frame.dataFrame.Bind(wx.EVT_MENU, AtomTransform, id=G2gd.wxID_ATOMSTRANSFORM) 3106 G2frame.dataFrame.Bind(wx.EVT_MENU, OnReloadDrawAtoms, id=G2gd.wxID_RELOADDRAWATOMS) 3107 G2frame.dataFrame.Bind(wx.EVT_MENU, OnDistAngle, id=G2gd.wxID_ATOMSDISAGL) 3108 3108 FillAtomsGrid() 3109 3109 elif text == 'General': 3110 3110 UpdateGeneral() 3111 3111 elif text == 'Data': 3112 self.dataFrame.SetMenuBar(self.dataFrame.DataMenu)3113 self.dataFrame.Bind(wx.EVT_MENU, OnPwdrAdd, id=G2gd.wxID_PWDRADD)3114 self.dataFrame.Bind(wx.EVT_MENU, OnHklfAdd, id=G2gd.wxID_HKLFADD)3115 self.dataFrame.Bind(wx.EVT_MENU, OnDataDelete, id=G2gd.wxID_DATADELETE)3112 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataMenu) 3113 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPwdrAdd, id=G2gd.wxID_PWDRADD) 3114 G2frame.dataFrame.Bind(wx.EVT_MENU, OnHklfAdd, id=G2gd.wxID_HKLFADD) 3115 G2frame.dataFrame.Bind(wx.EVT_MENU, OnDataDelete, id=G2gd.wxID_DATADELETE) 3116 3116 UpdateDData() 3117 G2plt.PlotSizeStrainPO( self,data,Start=True)3117 G2plt.PlotSizeStrainPO(G2frame,data,Start=True) 3118 3118 elif text == 'Draw Options': 3119 self.dataFrame.SetMenuBar(self.dataFrame.DataDrawOptions)3119 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataDrawOptions) 3120 3120 UpdateDrawOptions() 3121 G2plt.PlotStructure( self,data)3121 G2plt.PlotStructure(G2frame,data) 3122 3122 elif text == 'Draw Atoms': 3123 self.dataFrame.SetMenuBar(self.dataFrame.DrawAtomsMenu)3124 self.dataFrame.Bind(wx.EVT_MENU, DrawAtomStyle, id=G2gd.wxID_DRAWATOMSTYLE)3125 self.dataFrame.Bind(wx.EVT_MENU, DrawAtomLabel, id=G2gd.wxID_DRAWATOMLABEL)3126 self.dataFrame.Bind(wx.EVT_MENU, DrawAtomColor, id=G2gd.wxID_DRAWATOMCOLOR)3127 self.dataFrame.Bind(wx.EVT_MENU, ResetAtomColors, id=G2gd.wxID_DRAWATOMRESETCOLOR)3128 self.dataFrame.Bind(wx.EVT_MENU, SetViewPoint, id=G2gd.wxID_DRAWVIEWPOINT)3129 self.dataFrame.Bind(wx.EVT_MENU, AddSymEquiv, id=G2gd.wxID_DRAWADDEQUIV)3130 self.dataFrame.Bind(wx.EVT_MENU, TransformSymEquiv, id=G2gd.wxID_DRAWTRANSFORM)3131 self.dataFrame.Bind(wx.EVT_MENU, FillCoordSphere, id=G2gd.wxID_DRAWFILLCOORD)3132 self.dataFrame.Bind(wx.EVT_MENU, FillUnitCell, id=G2gd.wxID_DRAWFILLCELL)3133 self.dataFrame.Bind(wx.EVT_MENU, DrawAtomsDelete, id=G2gd.wxID_DRAWDELETE)3134 self.dataFrame.Bind(wx.EVT_MENU, OnDrawDistAngle, id=G2gd.wxID_DRAWDISAGL)3135 self.dataFrame.Bind(wx.EVT_MENU, OnDrawTorsion, id=G2gd.wxID_DRAWTORSION)3136 self.dataFrame.Bind(wx.EVT_MENU, OnDrawPlane, id=G2gd.wxID_DRAWPLANE)3123 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DrawAtomsMenu) 3124 G2frame.dataFrame.Bind(wx.EVT_MENU, DrawAtomStyle, id=G2gd.wxID_DRAWATOMSTYLE) 3125 G2frame.dataFrame.Bind(wx.EVT_MENU, DrawAtomLabel, id=G2gd.wxID_DRAWATOMLABEL) 3126 G2frame.dataFrame.Bind(wx.EVT_MENU, DrawAtomColor, id=G2gd.wxID_DRAWATOMCOLOR) 3127 G2frame.dataFrame.Bind(wx.EVT_MENU, ResetAtomColors, id=G2gd.wxID_DRAWATOMRESETCOLOR) 3128 G2frame.dataFrame.Bind(wx.EVT_MENU, SetViewPoint, id=G2gd.wxID_DRAWVIEWPOINT) 3129 G2frame.dataFrame.Bind(wx.EVT_MENU, AddSymEquiv, id=G2gd.wxID_DRAWADDEQUIV) 3130 G2frame.dataFrame.Bind(wx.EVT_MENU, TransformSymEquiv, id=G2gd.wxID_DRAWTRANSFORM) 3131 G2frame.dataFrame.Bind(wx.EVT_MENU, FillCoordSphere, id=G2gd.wxID_DRAWFILLCOORD) 3132 G2frame.dataFrame.Bind(wx.EVT_MENU, FillUnitCell, id=G2gd.wxID_DRAWFILLCELL) 3133 G2frame.dataFrame.Bind(wx.EVT_MENU, DrawAtomsDelete, id=G2gd.wxID_DRAWDELETE) 3134 G2frame.dataFrame.Bind(wx.EVT_MENU, OnDrawDistAngle, id=G2gd.wxID_DRAWDISAGL) 3135 G2frame.dataFrame.Bind(wx.EVT_MENU, OnDrawTorsion, id=G2gd.wxID_DRAWTORSION) 3136 G2frame.dataFrame.Bind(wx.EVT_MENU, OnDrawPlane, id=G2gd.wxID_DRAWPLANE) 3137 3137 UpdateDrawAtoms() 3138 G2plt.PlotStructure( self,data)3138 G2plt.PlotStructure(G2frame,data) 3139 3139 elif text == 'Pawley reflections': 3140 self.dataFrame.SetMenuBar(self.dataFrame.PawleyMenu)3141 self.dataFrame.Bind(wx.EVT_MENU, OnPawleyLoad, id=G2gd.wxID_PAWLEYLOAD)3142 self.dataFrame.Bind(wx.EVT_MENU, OnPawleyEstimate, id=G2gd.wxID_PAWLEYESTIMATE)3143 self.dataFrame.Bind(wx.EVT_MENU, OnPawleyDelete, id=G2gd.wxID_PAWLEYDELETE)3140 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.PawleyMenu) 3141 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPawleyLoad, id=G2gd.wxID_PAWLEYLOAD) 3142 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPawleyEstimate, id=G2gd.wxID_PAWLEYESTIMATE) 3143 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPawleyDelete, id=G2gd.wxID_PAWLEYDELETE) 3144 3144 FillPawleyReflectionsGrid() 3145 3145 elif text == 'Texture': 3146 self.dataFrame.SetMenuBar(self.dataFrame.TextureMenu)3147 self.dataFrame.Bind(wx.EVT_MENU, OnTextureRefine, id=G2gd.wxID_REFINETEXTURE)3148 self.dataFrame.Bind(wx.EVT_MENU, OnTextureClear, id=G2gd.wxID_CLEARTEXTURE)3146 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.TextureMenu) 3147 G2frame.dataFrame.Bind(wx.EVT_MENU, OnTextureRefine, id=G2gd.wxID_REFINETEXTURE) 3148 G2frame.dataFrame.Bind(wx.EVT_MENU, OnTextureClear, id=G2gd.wxID_CLEARTEXTURE) 3149 3149 UpdateTexture() 3150 G2plt.PlotTexture( self,data,Start=True)3150 G2plt.PlotTexture(G2frame,data,Start=True) 3151 3151 else: 3152 self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)3152 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu) 3153 3153 event.Skip() 3154 3154 3155 General = wx.Window( self.dataDisplay)3156 self.dataDisplay.AddPage(General,'General')3155 General = wx.Window(G2frame.dataDisplay) 3156 G2frame.dataDisplay.AddPage(General,'General') 3157 3157 SetupGeneral() 3158 3158 GeneralData = data['General'] … … 3160 3160 3161 3161 if GeneralData['Type'] == 'Pawley': 3162 DData = wx.ScrolledWindow( self.dataDisplay)3163 self.dataDisplay.AddPage(DData,'Data')3164 self.PawleyRefl = G2gd.GSGrid(self.dataDisplay)3165 self.dataDisplay.AddPage(self.PawleyRefl,'Pawley reflections')3166 Texture = wx.ScrolledWindow( self.dataDisplay)3167 self.dataDisplay.AddPage(Texture,'Texture')3162 DData = wx.ScrolledWindow(G2frame.dataDisplay) 3163 G2frame.dataDisplay.AddPage(DData,'Data') 3164 G2frame.PawleyRefl = G2gd.GSGrid(G2frame.dataDisplay) 3165 G2frame.dataDisplay.AddPage(G2frame.PawleyRefl,'Pawley reflections') 3166 Texture = wx.ScrolledWindow(G2frame.dataDisplay) 3167 G2frame.dataDisplay.AddPage(Texture,'Texture') 3168 3168 else: 3169 DData = wx.ScrolledWindow( self.dataDisplay)3170 self.dataDisplay.AddPage(DData,'Data')3171 Texture = wx.ScrolledWindow( self.dataDisplay)3172 self.dataDisplay.AddPage(Texture,'Texture')3173 Atoms = G2gd.GSGrid( self.dataDisplay)3174 self.dataDisplay.AddPage(Atoms,'Atoms')3175 drawOptions = wx.Window( self.dataDisplay)3176 self.dataDisplay.AddPage(drawOptions,'Draw Options')3177 drawAtoms = G2gd.GSGrid( self.dataDisplay)3178 self.dataDisplay.AddPage(drawAtoms,'Draw Atoms')3179 3180 self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)3181 self.dataDisplay.SetSelection(oldPage)3169 DData = wx.ScrolledWindow(G2frame.dataDisplay) 3170 G2frame.dataDisplay.AddPage(DData,'Data') 3171 Texture = wx.ScrolledWindow(G2frame.dataDisplay) 3172 G2frame.dataDisplay.AddPage(Texture,'Texture') 3173 Atoms = G2gd.GSGrid(G2frame.dataDisplay) 3174 G2frame.dataDisplay.AddPage(Atoms,'Atoms') 3175 drawOptions = wx.Window(G2frame.dataDisplay) 3176 G2frame.dataDisplay.AddPage(drawOptions,'Draw Options') 3177 drawAtoms = G2gd.GSGrid(G2frame.dataDisplay) 3178 G2frame.dataDisplay.AddPage(drawAtoms,'Draw Atoms') 3179 3180 G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged) 3181 G2frame.dataDisplay.SetSelection(oldPage) 3182 3182 3183 3183 -
TabularUnified trunk/GSASIIplot.py ¶
r466 r468 301 301 Page.canvas.draw() 302 302 303 def PlotPatterns( self,newPlot=False):303 def PlotPatterns(G2frame,newPlot=False): 304 304 '''Powder pattern plotting package - displays single or multiple powder patterns as intensity vs 305 305 2-theta or q (future TOF). Can display multiple patterns as "waterfall plots" or contour plots. Log I … … 309 309 310 310 def OnKeyBox(event): 311 if self.G2plotNB.nb.GetSelection() == self.G2plotNB.plotList.index('Powder Patterns'):311 if G2frame.G2plotNB.nb.GetSelection() == G2frame.G2plotNB.plotList.index('Powder Patterns'): 312 312 event.key = cb.GetValue()[0] 313 313 cb.SetValue(' key press') … … 317 317 newPlot = False 318 318 if event.key == 'w': 319 if self.Weight:320 self.Weight = False319 if G2frame.Weight: 320 G2frame.Weight = False 321 321 else: 322 self.Weight = True323 print 'plot weighting:', self.Weight322 G2frame.Weight = True 323 print 'plot weighting:',G2frame.Weight 324 324 elif event.key == 'n': 325 if self.Contour:325 if G2frame.Contour: 326 326 pass 327 327 else: 328 if self.logPlot:329 self.logPlot = False328 if G2frame.logPlot: 329 G2frame.logPlot = False 330 330 else: 331 self.Offset[0] = 0332 self.logPlot = True331 G2frame.Offset[0] = 0 332 G2frame.logPlot = True 333 333 elif event.key == 'u': 334 if self.Contour:335 self.Cmax = min(1.0,self.Cmax*1.2)336 elif self.logPlot:334 if G2frame.Contour: 335 G2frame.Cmax = min(1.0,G2frame.Cmax*1.2) 336 elif G2frame.logPlot: 337 337 pass 338 elif self.Offset[0] < 100.:339 self.Offset[0] += 1.338 elif G2frame.Offset[0] < 100.: 339 G2frame.Offset[0] += 1. 340 340 elif event.key == 'd': 341 if self.Contour:342 self.Cmax = max(0.0,self.Cmax*0.8)343 elif self.logPlot:341 if G2frame.Contour: 342 G2frame.Cmax = max(0.0,G2frame.Cmax*0.8) 343 elif G2frame.logPlot: 344 344 pass 345 elif self.Offset[0] > 0.:346 self.Offset[0] -= 1.345 elif G2frame.Offset[0] > 0.: 346 G2frame.Offset[0] -= 1. 347 347 elif event.key == 'l': 348 self.Offset[1] -= 1.348 G2frame.Offset[1] -= 1. 349 349 elif event.key == 'r': 350 self.Offset[1] += 1.350 G2frame.Offset[1] += 1. 351 351 elif event.key == 'o': 352 self.Offset = [0,0]352 G2frame.Offset = [0,0] 353 353 elif event.key == 'c': 354 354 newPlot = True 355 if self.Contour:356 self.Contour = False355 if G2frame.Contour: 356 G2frame.Contour = False 357 357 else: 358 self.Contour = True359 self.SinglePlot = False360 self.Offset = [0.,0.]358 G2frame.Contour = True 359 G2frame.SinglePlot = False 360 G2frame.Offset = [0.,0.] 361 361 elif event.key == 'q': 362 362 newPlot = True 363 if self.qPlot:364 self.qPlot = False363 if G2frame.qPlot: 364 G2frame.qPlot = False 365 365 else: 366 self.qPlot = True366 G2frame.qPlot = True 367 367 elif event.key == 's': 368 if self.Contour:368 if G2frame.Contour: 369 369 choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")] 370 370 choice.sort() 371 dlg = wx.SingleChoiceDialog( self,'Select','Color scheme',choice)371 dlg = wx.SingleChoiceDialog(G2frame,'Select','Color scheme',choice) 372 372 if dlg.ShowModal() == wx.ID_OK: 373 373 sel = dlg.GetSelection() 374 self.ContourColor = choice[sel]374 G2frame.ContourColor = choice[sel] 375 375 else: 376 self.ContourColor = 'Paired'376 G2frame.ContourColor = 'Paired' 377 377 dlg.Destroy() 378 378 else: 379 if self.SinglePlot:380 self.SinglePlot = False379 if G2frame.SinglePlot: 380 G2frame.SinglePlot = False 381 381 else: 382 self.SinglePlot = True382 G2frame.SinglePlot = True 383 383 elif event.key == '+': 384 if self.PickId:385 self.PickId = False384 if G2frame.PickId: 385 G2frame.PickId = False 386 386 elif event.key == 'i': #for smoothing contour plot 387 387 choice = ['nearest','bilinear','bicubic','spline16','spline36','hanning', 388 388 'hamming','hermite','kaiser','quadric','catrom','gaussian','bessel', 389 389 'mitchell','sinc','lanczos'] 390 dlg = wx.SingleChoiceDialog( self,'Select','Interpolation',choice)390 dlg = wx.SingleChoiceDialog(G2frame,'Select','Interpolation',choice) 391 391 if dlg.ShowModal() == wx.ID_OK: 392 392 sel = dlg.GetSelection() 393 self.Interpolate = choice[sel]393 G2frame.Interpolate = choice[sel] 394 394 else: 395 self.Interpolate = 'nearest'395 G2frame.Interpolate = 'nearest' 396 396 dlg.Destroy() 397 397 398 PlotPatterns( self,newPlot=newPlot)398 PlotPatterns(G2frame,newPlot=newPlot) 399 399 400 400 def OnMotion(event): … … 404 404 Page.canvas.SetCursor(wx.CROSS_CURSOR) 405 405 try: 406 Values,Names = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Instrument Parameters'))[1::2]406 Values,Names = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[1::2] 407 407 Parms = dict(zip(Names,Values)) 408 408 try: … … 410 410 except KeyError: 411 411 wave = Parms['Lam1'] 412 if self.qPlot:412 if G2frame.qPlot: 413 413 xpos = 2.0*asind(xpos*wave/(4*math.pi)) 414 414 dsp = 0.0 415 415 if abs(xpos) > 0.: #avoid possible singularity at beam center 416 416 dsp = wave/(2.*sind(abs(xpos)/2.0)) 417 if self.Contour:418 self.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f pattern ID =%5d'%(xpos,dsp,int(ypos)),1)417 if G2frame.Contour: 418 G2frame.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f pattern ID =%5d'%(xpos,dsp,int(ypos)),1) 419 419 else: 420 self.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),1)421 if self.itemPicked:420 G2frame.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),1) 421 if G2frame.itemPicked: 422 422 Page.canvas.SetToolTipString('%9.3f'%(xpos)) 423 if self.PickId:423 if G2frame.PickId: 424 424 found = [] 425 if self.PatternTree.GetItemText(self.PickId) in ['Index Peak List','Unit Cells List','Reflection Lists']:425 if G2frame.PatternTree.GetItemText(G2frame.PickId) in ['Index Peak List','Unit Cells List','Reflection Lists']: 426 426 if len(HKL): 427 427 view = Page.toolbar._views.forward()[0][:2] … … 435 435 436 436 except TypeError: 437 self.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',1)437 G2frame.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',1) 438 438 439 439 def OnPick(event): 440 if self.itemPicked is not None: return441 PatternId = self.PatternId440 if G2frame.itemPicked is not None: return 441 PatternId = G2frame.PatternId 442 442 try: 443 Values,Names = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Instrument Parameters'))[1::2]443 Values,Names = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[1::2] 444 444 except TypeError: 445 445 return … … 449 449 except KeyError: 450 450 wave = Parms['Lam1'] 451 PickId = self.PickId451 PickId = G2frame.PickId 452 452 pick = event.artist 453 453 mouse = event.mouseevent … … 456 456 ind = event.ind 457 457 xy = list(zip(np.take(xpos,ind),np.take(ypos,ind))[0]) 458 if self.PatternTree.GetItemText(PickId) == 'Peak List':458 if G2frame.PatternTree.GetItemText(PickId) == 'Peak List': 459 459 if ind.all() != [0]: #picked a data point 460 460 if 'C' in Parms['Type']: #CW data - TOF later in an elif 461 461 ins = [Parms[x] for x in ['U','V','W','X','Y']] 462 if self.qPlot: #qplot - convert back to 2-theta462 if G2frame.qPlot: #qplot - convert back to 2-theta 463 463 xy[0] = 2.0*asind(xy[0]*wave/(4*math.pi)) 464 464 sig = ins[0]*tand(xy[0]/2.0)**2+ins[1]*tand(xy[0]/2.0)+ins[2] 465 465 gam = ins[3]/cosd(xy[0]/2.0)+ins[4]*tand(xy[0]/2.0) 466 data = self.PatternTree.GetItemPyData(self.PickId)466 data = G2frame.PatternTree.GetItemPyData(G2frame.PickId) 467 467 XY = [xy[0],0, xy[1],1, sig,0, gam,0] #default refine intensity 1st 468 468 data.append(XY) 469 G2pdG.UpdatePeakGrid( self,data)470 PlotPatterns( self)469 G2pdG.UpdatePeakGrid(G2frame,data) 470 PlotPatterns(G2frame) 471 471 else: #picked a peak list line 472 self.itemPicked = pick473 elif self.PatternTree.GetItemText(PickId) == 'Limits':472 G2frame.itemPicked = pick 473 elif G2frame.PatternTree.GetItemText(PickId) == 'Limits': 474 474 if ind.all() != [0]: #picked a data point 475 LimitId = G2gd.GetPatternTreeItemId( self,PatternId, 'Limits')476 data = self.PatternTree.GetItemPyData(LimitId)475 LimitId = G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits') 476 data = G2frame.PatternTree.GetItemPyData(LimitId) 477 477 if 'C' in Parms['Type']: #CW data - TOF later in an elif 478 if self.qPlot: #qplot - convert back to 2-theta478 if G2frame.qPlot: #qplot - convert back to 2-theta 479 479 xy[0] = 2.0*asind(xy[0]*wave/(4*math.pi)) 480 480 if mouse.button==1: … … 482 482 if mouse.button==3: 483 483 data[1][1] = max(xy[0],data[1][0]) 484 self.PatternTree.SetItemPyData(LimitId,data)485 G2pdG.UpdateLimitsGrid( self,data)486 PlotPatterns( self)484 G2frame.PatternTree.SetItemPyData(LimitId,data) 485 G2pdG.UpdateLimitsGrid(G2frame,data) 486 PlotPatterns(G2frame) 487 487 else: #picked a limit line 488 self.itemPicked = pick489 elif self.PatternTree.GetItemText(PickId) == 'Reflection Lists':490 self.itemPicked = pick488 G2frame.itemPicked = pick 489 elif G2frame.PatternTree.GetItemText(PickId) == 'Reflection Lists': 490 G2frame.itemPicked = pick 491 491 pick = str(pick) 492 492 493 493 def OnRelease(event): 494 if self.itemPicked is None: return495 Values,Names = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Instrument Parameters'))[1::2]494 if G2frame.itemPicked is None: return 495 Values,Names = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[1::2] 496 496 Parms = dict(zip(Names,Values)) 497 497 try: … … 500 500 wave = Parms['Lam1'] 501 501 xpos = event.xdata 502 PickId = self.PickId503 if self.PatternTree.GetItemText(PickId) in ['Peak List','Limits'] and xpos:502 PickId = G2frame.PickId 503 if G2frame.PatternTree.GetItemText(PickId) in ['Peak List','Limits'] and xpos: 504 504 lines = [] 505 for line in self.Lines: lines.append(line.get_xdata()[0])506 lineNo = lines.index( self.itemPicked.get_xdata()[0])505 for line in G2frame.Lines: lines.append(line.get_xdata()[0]) 506 lineNo = lines.index(G2frame.itemPicked.get_xdata()[0]) 507 507 if lineNo in [0,1]: 508 LimitId = G2gd.GetPatternTreeItemId( self,self.PatternId, 'Limits')509 data = self.PatternTree.GetItemPyData(LimitId)510 if self.qPlot:508 LimitId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Limits') 509 data = G2frame.PatternTree.GetItemPyData(LimitId) 510 if G2frame.qPlot: 511 511 data[1][lineNo] = 2.0*asind(wave*xpos/(4*math.pi)) 512 512 else: 513 513 data[1][lineNo] = xpos 514 self.PatternTree.SetItemPyData(LimitId,data)515 if self.PatternTree.GetItemText(self.PickId) == 'Limits':516 G2pdG.UpdateLimitsGrid( self,data)514 G2frame.PatternTree.SetItemPyData(LimitId,data) 515 if G2frame.PatternTree.GetItemText(G2frame.PickId) == 'Limits': 516 G2pdG.UpdateLimitsGrid(G2frame,data) 517 517 else: 518 PeakId = G2gd.GetPatternTreeItemId( self,self.PatternId, 'Peak List')519 data = self.PatternTree.GetItemPyData(PeakId)518 PeakId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Peak List') 519 data = G2frame.PatternTree.GetItemPyData(PeakId) 520 520 # print 'peaks',xpos 521 521 if event.button == 3: 522 522 del data[lineNo-2] 523 523 else: 524 if self.qPlot:524 if G2frame.qPlot: 525 525 data[lineNo-2][0] = 2.0*asind(wave*xpos/(4*math.pi)) 526 526 else: 527 527 data[lineNo-2][0] = xpos 528 self.PatternTree.SetItemPyData(PeakId,data)529 G2pdG.UpdatePeakGrid( self,data)530 elif self.PatternTree.GetItemText(PickId) == 'Reflection Lists' and xpos:531 Phases = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId,'Reflection Lists'))532 pick = str( self.itemPicked).split('(')[1].strip(')')528 G2frame.PatternTree.SetItemPyData(PeakId,data) 529 G2pdG.UpdatePeakGrid(G2frame,data) 530 elif G2frame.PatternTree.GetItemText(PickId) == 'Reflection Lists' and xpos: 531 Phases = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Reflection Lists')) 532 pick = str(G2frame.itemPicked).split('(')[1].strip(')') 533 533 if 'Line' not in pick: #avoid data points, etc. 534 534 num = Phases.keys().index(pick) 535 535 if num: 536 self.refDelt = -(event.ydata-self.refOffset)/(num*Ymax)536 G2frame.refDelt = -(event.ydata-G2frame.refOffset)/(num*Ymax) 537 537 else: #1st row of refl ticks 538 self.refOffset = event.ydata539 PlotPatterns( self)540 self.itemPicked = None538 G2frame.refOffset = event.ydata 539 PlotPatterns(G2frame) 540 G2frame.itemPicked = None 541 541 542 542 xylim = [] 543 543 try: 544 plotNum = self.G2plotNB.plotList.index('Powder Patterns')545 Page = self.G2plotNB.nb.GetPage(plotNum)544 plotNum = G2frame.G2plotNB.plotList.index('Powder Patterns') 545 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 546 546 if not newPlot: 547 547 Plot = Page.figure.gca() #get previous powder plot & get limits … … 551 551 except ValueError: 552 552 newPlot = True 553 self.Cmax = 1.0554 Plot = self.G2plotNB.addMpl('Powder Patterns').gca()555 plotNum = self.G2plotNB.plotList.index('Powder Patterns')556 Page = self.G2plotNB.nb.GetPage(plotNum)553 G2frame.Cmax = 1.0 554 Plot = G2frame.G2plotNB.addMpl('Powder Patterns').gca() 555 plotNum = G2frame.G2plotNB.plotList.index('Powder Patterns') 556 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 557 557 Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress) 558 558 Page.canvas.mpl_connect('motion_notify_event', OnMotion) … … 560 560 Page.canvas.mpl_connect('button_release_event', OnRelease) 561 561 Page.SetFocus() 562 self.G2plotNB.status.DestroyChildren()563 if self.Contour:562 G2frame.G2plotNB.status.DestroyChildren() 563 if G2frame.Contour: 564 564 Choice = (' key press','d: lower contour max','u: raise contour max', 565 565 'i: interpolation method','s: color scheme','c: contour off') 566 566 else: 567 if self.logPlot:567 if G2frame.logPlot: 568 568 Choice = (' key press','n: log(I) off','l: offset left','r: offset right', 569 569 'c: contour on','q: toggle q plot','s: toggle single plot','+: no selection') … … 572 572 'u: offset up','o: reset offset','n: log(I) on','c: contour on', 573 573 'q: toggle q plot','s: toggle single plot','+: no selection') 574 cb = wx.ComboBox( self.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,574 cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY, 575 575 choices=Choice) 576 576 cb.Bind(wx.EVT_COMBOBOX, OnKeyBox) 577 577 cb.SetValue(' key press') 578 578 579 PickId = self.PickId580 PatternId = self.PatternId579 PickId = G2frame.PickId 580 PatternId = G2frame.PatternId 581 581 colors=['b','g','r','c','m','k'] 582 582 Lines = [] 583 if self.SinglePlot:584 Pattern = self.PatternTree.GetItemPyData(PatternId)585 Pattern.append( self.PatternTree.GetItemText(PatternId))583 if G2frame.SinglePlot: 584 Pattern = G2frame.PatternTree.GetItemPyData(PatternId) 585 Pattern.append(G2frame.PatternTree.GetItemText(PatternId)) 586 586 PlotList = [Pattern,] 587 ParmList = [ self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,588 self.PatternId, 'Instrument Parameters'))[1],]587 ParmList = [G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, 588 G2frame.PatternId, 'Instrument Parameters'))[1],] 589 589 else: 590 590 PlotList = [] 591 591 ParmList = [] 592 item, cookie = self.PatternTree.GetFirstChild(self.root)592 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 593 593 while item: 594 if 'PWDR' in self.PatternTree.GetItemText(item):595 Pattern = self.PatternTree.GetItemPyData(item)594 if 'PWDR' in G2frame.PatternTree.GetItemText(item): 595 Pattern = G2frame.PatternTree.GetItemPyData(item) 596 596 if len(Pattern) < 3: # put name on end if needed 597 Pattern.append( self.PatternTree.GetItemText(item))597 Pattern.append(G2frame.PatternTree.GetItemText(item)) 598 598 PlotList.append(Pattern) 599 ParmList.append( self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,599 ParmList.append(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, 600 600 item,'Instrument Parameters'))[1]) 601 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)601 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 602 602 Ymax = 1.0 603 603 lenX = 0 604 if self.PatternTree.GetItemText(PickId) in ['Reflection Lists']:605 Phases = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId,'Reflection Lists'))604 if G2frame.PatternTree.GetItemText(PickId) in ['Reflection Lists']: 605 Phases = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Reflection Lists')) 606 606 HKL = [] 607 607 if Phases: 608 for peak in Phases[ self.RefList]:608 for peak in Phases[G2frame.RefList]: 609 609 HKL.append(peak[:6]) 610 610 HKL = np.array(HKL) 611 611 else: 612 HKL = np.array( self.HKL)612 HKL = np.array(G2frame.HKL) 613 613 for Pattern in PlotList: 614 614 xye = Pattern[1] 615 615 Ymax = max(Ymax,max(xye[1])) 616 offset = self.Offset[0]*Ymax/100.0617 Title = 'Powder Patterns: '+os.path.split( self.GSASprojectfile)[1]618 if self.logPlot:616 offset = G2frame.Offset[0]*Ymax/100.0 617 Title = 'Powder Patterns: '+os.path.split(G2frame.GSASprojectfile)[1] 618 if G2frame.logPlot: 619 619 Title = 'log('+Title+')' 620 620 Plot.set_title(Title) 621 if self.qPlot:621 if G2frame.qPlot: 622 622 Plot.set_xlabel(r'$q, \AA^{-1}$',fontsize=14) 623 623 else: 624 624 Plot.set_xlabel(r'$\mathsf{2\theta}$',fontsize=14) 625 625 Plot.set_ylabel('Intensity',fontsize=12) 626 if self.Contour:626 if G2frame.Contour: 627 627 ContourZ = [] 628 628 ContourY = [] 629 629 Nseq = 0 630 630 if len(PlotList) < 2: 631 self.Contour = False631 G2frame.Contour = False 632 632 for N,Pattern in enumerate(PlotList): 633 633 Parms = ParmList[N] … … 636 636 xye = np.array(Pattern[1]) 637 637 if PickId: 638 ifpicked = Pattern[2] == self.PatternTree.GetItemText(PatternId)639 LimitId = G2gd.GetPatternTreeItemId( self,PatternId, 'Limits')640 if self.qPlot:641 Id = G2gd.GetPatternTreeItemId( self,self.root, Pattern[2])638 ifpicked = Pattern[2] == G2frame.PatternTree.GetItemText(PatternId) 639 LimitId = G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits') 640 if G2frame.qPlot: 641 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root, Pattern[2]) 642 642 X = 4*np.pi*npsind(xye[0]/2.0)/Parms[1] 643 643 else: … … 647 647 Y = xye[1]+offset*N 648 648 if LimitId: 649 limits = np.array( self.PatternTree.GetItemPyData(LimitId))650 if self.qPlot:649 limits = np.array(G2frame.PatternTree.GetItemPyData(LimitId)) 650 if G2frame.qPlot: 651 651 limits = 4*np.pi*npsind(limits/2.0)/Parms[1] 652 652 Lines.append(Plot.axvline(limits[1][0],color='g',dashes=(5,5),picker=3.)) 653 653 Lines.append(Plot.axvline(limits[1][1],color='r',dashes=(5,5),picker=3.)) 654 if self.Contour:654 if G2frame.Contour: 655 655 656 656 if lenX == len(X): … … 661 661 Plot.set_ylabel('Data sequence',fontsize=12) 662 662 else: 663 X += self.Offset[1]*.005*N663 X += G2frame.Offset[1]*.005*N 664 664 if ifpicked: 665 665 Z = xye[3]+offset*N 666 666 W = xye[4]+offset*N 667 D = xye[5]-Ymax* self.delOffset668 if self.Weight:667 D = xye[5]-Ymax*G2frame.delOffset 668 if G2frame.Weight: 669 669 W2 = np.sqrt(xye[2]) 670 D *= W2-Ymax* self.delOffset671 if self.logPlot:670 D *= W2-Ymax*G2frame.delOffset 671 if G2frame.logPlot: 672 672 Plot.semilogy(X,Y,colors[N%6]+'+',picker=3.,clip_on=False,nonposy='mask') 673 673 Plot.semilogy(X,Z,colors[(N+1)%6],picker=False,nonposy='mask') … … 680 680 Plot.axhline(0.,color=wx.BLACK) 681 681 Page.canvas.SetToolTipString('') 682 if self.PatternTree.GetItemText(PickId) == 'Peak List':682 if G2frame.PatternTree.GetItemText(PickId) == 'Peak List': 683 683 tip = 'On data point: Pick peak - L or R MB. On line: L-move, R-delete' 684 684 Page.canvas.SetToolTipString(tip) 685 data = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Peak List'))685 data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List')) 686 686 for item in data: 687 if self.qPlot:687 if G2frame.qPlot: 688 688 Lines.append(Plot.axvline(4*math.pi*sind(item[0]/2.)/Parms[1],color=colors[N%6],picker=2.)) 689 689 else: 690 690 Lines.append(Plot.axvline(item[0],color=colors[N%6],picker=2.)) 691 if self.PatternTree.GetItemText(PickId) == 'Limits':691 if G2frame.PatternTree.GetItemText(PickId) == 'Limits': 692 692 tip = 'On data point: Lower limit - L MB; Upper limit - R MB. On limit: MB down to move' 693 693 Page.canvas.SetToolTipString(tip) 694 data = self.LimitsTable.GetData()694 data = G2frame.LimitsTable.GetData() 695 695 else: 696 if self.logPlot:696 if G2frame.logPlot: 697 697 Plot.semilogy(X,Y,colors[N%6],picker=False,nonposy='clip') 698 698 else: 699 699 Plot.plot(X,Y,colors[N%6],picker=False) 700 if PickId and not self.Contour:701 Values,Names = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))[1::2]700 if PickId and not G2frame.Contour: 701 Values,Names = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))[1::2] 702 702 Parms = dict(zip(Names,Values)) 703 703 try: … … 705 705 except KeyError: 706 706 wave = Parms['Lam1'] 707 if self.PatternTree.GetItemText(PickId) in ['Index Peak List','Unit Cells List']:708 peaks = np.array(( self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Index Peak List'))))707 if G2frame.PatternTree.GetItemText(PickId) in ['Index Peak List','Unit Cells List']: 708 peaks = np.array((G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List')))) 709 709 for peak in peaks: 710 if self.qPlot:710 if G2frame.qPlot: 711 711 Plot.axvline(4*np.pi*sind(peak[0]/2.0)/wave,color='b') 712 712 else: 713 713 Plot.axvline(peak[0],color='b') 714 for hkl in self.HKL:715 if self.qPlot:714 for hkl in G2frame.HKL: 715 if G2frame.qPlot: 716 716 Plot.axvline(4*np.pi*sind(hkl[5]/2.0)/wave,color='r',dashes=(5,5)) 717 717 else: 718 718 Plot.axvline(hkl[5],color='r',dashes=(5,5)) 719 elif self.PatternTree.GetItemText(PickId) in ['Reflection Lists']:720 Phases = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId,'Reflection Lists'))719 elif G2frame.PatternTree.GetItemText(PickId) in ['Reflection Lists']: 720 Phases = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Reflection Lists')) 721 721 for pId,phase in enumerate(Phases): 722 722 peaks = Phases[phase] 723 723 peak = np.array([[peak[4],peak[5]] for peak in peaks]) 724 pos = self.refOffset-pId*Ymax*self.refDelt*np.ones_like(peak)725 if self.qPlot:724 pos = G2frame.refOffset-pId*Ymax*G2frame.refDelt*np.ones_like(peak) 725 if G2frame.qPlot: 726 726 Plot.plot(2*np.pi/peak.T[0],pos,colors[pId%6]+'|',mew=1,ms=8,picker=3.,label=phase) 727 727 else: … … 730 730 Plot.legend(handles[::2],legends[::2],title='Phases',loc='best') #skip every other one 731 731 732 if self.Contour:733 acolor = mpl.cm.get_cmap( self.ContourColor)734 Img = Plot.imshow(ContourZ,cmap=acolor,vmin=0,vmax=Ymax* self.Cmax,interpolation=self.Interpolate,732 if G2frame.Contour: 733 acolor = mpl.cm.get_cmap(G2frame.ContourColor) 734 Img = Plot.imshow(ContourZ,cmap=acolor,vmin=0,vmax=Ymax*G2frame.Cmax,interpolation=G2frame.Interpolate, 735 735 extent=[ContourX[0],ContourX[-1],ContourY[0],ContourY[-1]],aspect='auto',origin='lower') 736 736 Page.figure.colorbar(Img) 737 737 else: 738 self.Lines = Lines738 G2frame.Lines = Lines 739 739 if not newPlot: 740 740 Page.toolbar.push_current() … … 746 746 else: 747 747 Page.canvas.draw() 748 self.Pwdr = True748 G2frame.Pwdr = True 749 749 750 def PlotISFG( self,newPlot=False,type=''):750 def PlotISFG(G2frame,newPlot=False,type=''): 751 751 ''' PLotting package for PDF analysis; displays I(q), S(q), F(q) and G(r) as single 752 752 or multiple plots with waterfall and contour plots as options 753 753 ''' 754 754 if not type: 755 type = self.G2plotNB.plotList[self.G2plotNB.nb.GetSelection()]755 type = G2frame.G2plotNB.plotList[G2frame.G2plotNB.nb.GetSelection()] 756 756 if type not in ['I(Q)','S(Q)','F(Q)','G(R)']: 757 757 return … … 761 761 newPlot = False 762 762 if event.key == 'u': 763 if self.Contour:764 self.Cmax = min(1.0,self.Cmax*1.2)765 elif self.Offset[0] < 100.:766 self.Offset[0] += 1.763 if G2frame.Contour: 764 G2frame.Cmax = min(1.0,G2frame.Cmax*1.2) 765 elif G2frame.Offset[0] < 100.: 766 G2frame.Offset[0] += 1. 767 767 elif event.key == 'd': 768 if self.Contour:769 self.Cmax = max(0.0,self.Cmax*0.8)770 elif self.Offset[0] > 0.:771 self.Offset[0] -= 1.768 if G2frame.Contour: 769 G2frame.Cmax = max(0.0,G2frame.Cmax*0.8) 770 elif G2frame.Offset[0] > 0.: 771 G2frame.Offset[0] -= 1. 772 772 elif event.key == 'l': 773 self.Offset[1] -= 1.773 G2frame.Offset[1] -= 1. 774 774 elif event.key == 'r': 775 self.Offset[1] += 1.775 G2frame.Offset[1] += 1. 776 776 elif event.key == 'o': 777 self.Offset = [0,0]777 G2frame.Offset = [0,0] 778 778 elif event.key == 'c': 779 779 newPlot = True 780 if self.Contour:781 self.Contour = False780 if G2frame.Contour: 781 G2frame.Contour = False 782 782 else: 783 self.Contour = True784 self.SinglePlot = False785 self.Offset = [0.,0.]783 G2frame.Contour = True 784 G2frame.SinglePlot = False 785 G2frame.Offset = [0.,0.] 786 786 elif event.key == 's': 787 if self.Contour:787 if G2frame.Contour: 788 788 choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")] 789 789 choice.sort() 790 dlg = wx.SingleChoiceDialog( self,'Select','Color scheme',choice)790 dlg = wx.SingleChoiceDialog(G2frame,'Select','Color scheme',choice) 791 791 if dlg.ShowModal() == wx.ID_OK: 792 792 sel = dlg.GetSelection() 793 self.ContourColor = choice[sel]793 G2frame.ContourColor = choice[sel] 794 794 else: 795 self.ContourColor = 'Paired'795 G2frame.ContourColor = 'Paired' 796 796 dlg.Destroy() 797 797 else: 798 if self.SinglePlot:799 self.SinglePlot = False798 if G2frame.SinglePlot: 799 G2frame.SinglePlot = False 800 800 else: 801 self.SinglePlot = True801 G2frame.SinglePlot = True 802 802 elif event.key == 'i': #for smoothing contour plot 803 803 choice = ['nearest','bilinear','bicubic','spline16','spline36','hanning', 804 804 'hamming','hermite','kaiser','quadric','catrom','gaussian','bessel', 805 805 'mitchell','sinc','lanczos'] 806 dlg = wx.SingleChoiceDialog( self,'Select','Interpolation',choice)806 dlg = wx.SingleChoiceDialog(G2frame,'Select','Interpolation',choice) 807 807 if dlg.ShowModal() == wx.ID_OK: 808 808 sel = dlg.GetSelection() 809 self.Interpolate = choice[sel]809 G2frame.Interpolate = choice[sel] 810 810 else: 811 self.Interpolate = 'nearest'811 G2frame.Interpolate = 'nearest' 812 812 dlg.Destroy() 813 elif event.key == 't' and not self.Contour:814 if self.Legend:815 self.Legend = False813 elif event.key == 't' and not G2frame.Contour: 814 if G2frame.Legend: 815 G2frame.Legend = False 816 816 else: 817 self.Legend = True817 G2frame.Legend = True 818 818 819 819 820 PlotISFG( self,newPlot=newPlot,type=type)820 PlotISFG(G2frame,newPlot=newPlot,type=type) 821 821 822 822 def OnKeyBox(event): 823 if self.G2plotNB.nb.GetSelection() == self.G2plotNB.plotList.index(type):823 if G2frame.G2plotNB.nb.GetSelection() == G2frame.G2plotNB.plotList.index(type): 824 824 event.key = cb.GetValue()[0] 825 825 cb.SetValue(' key press') … … 832 832 Page.canvas.SetCursor(wx.CROSS_CURSOR) 833 833 try: 834 if self.Contour:835 self.G2plotNB.status.SetStatusText('R =%.3fA pattern ID =%5d'%(xpos,int(ypos)),1)834 if G2frame.Contour: 835 G2frame.G2plotNB.status.SetStatusText('R =%.3fA pattern ID =%5d'%(xpos,int(ypos)),1) 836 836 else: 837 self.G2plotNB.status.SetStatusText('R =%.3fA %s =%.2f'%(xpos,type,ypos),1)837 G2frame.G2plotNB.status.SetStatusText('R =%.3fA %s =%.2f'%(xpos,type,ypos),1) 838 838 except TypeError: 839 self.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1)839 G2frame.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1) 840 840 841 841 xylim = [] 842 842 try: 843 plotNum = self.G2plotNB.plotList.index(type)844 Page = self.G2plotNB.nb.GetPage(plotNum)843 plotNum = G2frame.G2plotNB.plotList.index(type) 844 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 845 845 if not newPlot: 846 846 Plot = Page.figure.gca() #get previous plot & get limits … … 850 850 except ValueError: 851 851 newPlot = True 852 self.Cmax = 1.0853 Plot = self.G2plotNB.addMpl(type).gca()854 plotNum = self.G2plotNB.plotList.index(type)855 Page = self.G2plotNB.nb.GetPage(plotNum)852 G2frame.Cmax = 1.0 853 Plot = G2frame.G2plotNB.addMpl(type).gca() 854 plotNum = G2frame.G2plotNB.plotList.index(type) 855 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 856 856 Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress) 857 857 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 858 858 859 859 Page.SetFocus() 860 self.G2plotNB.status.DestroyChildren()861 if self.Contour:860 G2frame.G2plotNB.status.DestroyChildren() 861 if G2frame.Contour: 862 862 Choice = (' key press','d: lower contour max','u: raise contour max', 863 863 'i: interpolation method','s: color scheme','c: contour off') … … 865 865 Choice = (' key press','l: offset left','r: offset right','d: offset down','u: offset up', 866 866 'o: reset offset','t: toggle legend','c: contour on','s: toggle single plot') 867 cb = wx.ComboBox( self.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,867 cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY, 868 868 choices=Choice) 869 869 cb.Bind(wx.EVT_COMBOBOX, OnKeyBox) 870 870 cb.SetValue(' key press') 871 PatternId = self.PatternId872 PickId = self.PickId871 PatternId = G2frame.PatternId 872 PickId = G2frame.PickId 873 873 Plot.set_title(type) 874 874 if type == 'G(R)': … … 878 878 Plot.set_ylabel(r''+type,fontsize=14) 879 879 colors=['b','g','r','c','m','k'] 880 name = self.PatternTree.GetItemText(PatternId)[4:]880 name = G2frame.PatternTree.GetItemText(PatternId)[4:] 881 881 Pattern = [] 882 if self.SinglePlot:883 name = self.PatternTree.GetItemText(PatternId)882 if G2frame.SinglePlot: 883 name = G2frame.PatternTree.GetItemText(PatternId) 884 884 name = type+name[4:] 885 Id = G2gd.GetPatternTreeItemId( self,PatternId,name)886 Pattern = self.PatternTree.GetItemPyData(Id)885 Id = G2gd.GetPatternTreeItemId(G2frame,PatternId,name) 886 Pattern = G2frame.PatternTree.GetItemPyData(Id) 887 887 if Pattern: 888 888 Pattern.append(name) … … 890 890 else: 891 891 PlotList = [] 892 item, cookie = self.PatternTree.GetFirstChild(self.root)892 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 893 893 while item: 894 if 'PDF' in self.PatternTree.GetItemText(item):895 name = type+ self.PatternTree.GetItemText(item)[4:]896 Id = G2gd.GetPatternTreeItemId( self,item,name)897 Pattern = self.PatternTree.GetItemPyData(Id)894 if 'PDF' in G2frame.PatternTree.GetItemText(item): 895 name = type+G2frame.PatternTree.GetItemText(item)[4:] 896 Id = G2gd.GetPatternTreeItemId(G2frame,item,name) 897 Pattern = G2frame.PatternTree.GetItemPyData(Id) 898 898 if Pattern: 899 899 Pattern.append(name) 900 900 PlotList.append(Pattern) 901 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)902 PDFdata = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'PDF Controls'))901 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 902 PDFdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'PDF Controls')) 903 903 numbDen = G2pwd.GetNumDensity(PDFdata['ElList'],PDFdata['Form Vol']) 904 904 Xb = [0.,10.] … … 909 909 xye = Pattern[1] 910 910 Ymax = max(Ymax,max(xye[1])) 911 offset = self.Offset[0]*Ymax/100.0912 if self.Contour:911 offset = G2frame.Offset[0]*Ymax/100.0 912 if G2frame.Contour: 913 913 ContourZ = [] 914 914 ContourY = [] … … 917 917 xye = Pattern[1] 918 918 if PickId: 919 ifpicked = Pattern[2] == self.PatternTree.GetItemText(PatternId)919 ifpicked = Pattern[2] == G2frame.PatternTree.GetItemText(PatternId) 920 920 X = xye[0] 921 921 if not lenX: 922 922 lenX = len(X) 923 923 Y = xye[1]+offset*N 924 if self.Contour:924 if G2frame.Contour: 925 925 if lenX == len(X): 926 926 ContourY.append(N) … … 930 930 Plot.set_ylabel('Data sequence',fontsize=12) 931 931 else: 932 X = xye[0]+ self.Offset[1]*.005*N932 X = xye[0]+G2frame.Offset[1]*.005*N 933 933 if ifpicked: 934 934 Plot.plot(X,Y,colors[N%6]+'+',picker=3.,clip_on=False) 935 935 Page.canvas.SetToolTipString('') 936 936 else: 937 if self.Legend:937 if G2frame.Legend: 938 938 Plot.plot(X,Y,colors[N%6],picker=False,label='Azm:'+Pattern[2].split('=')[1]) 939 939 else: … … 945 945 elif type == 'S(Q)': 946 946 Plot.axhline(1.,color=wx.BLACK) 947 if self.Contour:948 acolor = mpl.cm.get_cmap( self.ContourColor)949 Img = Plot.imshow(ContourZ,cmap=acolor,vmin=0,vmax=Ymax* self.Cmax,interpolation=self.Interpolate,947 if G2frame.Contour: 948 acolor = mpl.cm.get_cmap(G2frame.ContourColor) 949 Img = Plot.imshow(ContourZ,cmap=acolor,vmin=0,vmax=Ymax*G2frame.Cmax,interpolation=G2frame.Interpolate, 950 950 extent=[ContourX[0],ContourX[-1],ContourY[0],ContourY[-1]],aspect='auto',origin='lower') 951 951 Page.figure.colorbar(Img) 952 elif self.Legend:952 elif G2frame.Legend: 953 953 Plot.legend(loc='best') 954 954 if not newPlot: … … 962 962 Page.canvas.draw() 963 963 964 def PlotXY( self,XY,newPlot=False,type=''):964 def PlotXY(G2frame,XY,newPlot=False,type=''): 965 965 '''simple plot of xy data, used for diagnostic purposes 966 966 ''' … … 971 971 Page.canvas.SetCursor(wx.CROSS_CURSOR) 972 972 try: 973 self.G2plotNB.status.SetStatusText('X =%9.3f %s =%9.3f'%(xpos,type,ypos),1)973 G2frame.G2plotNB.status.SetStatusText('X =%9.3f %s =%9.3f'%(xpos,type,ypos),1) 974 974 except TypeError: 975 self.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1)975 G2frame.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1) 976 976 977 977 try: 978 plotNum = self.G2plotNB.plotList.index(type)979 Page = self.G2plotNB.nb.GetPage(plotNum)978 plotNum = G2frame.G2plotNB.plotList.index(type) 979 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 980 980 if not newPlot: 981 981 Plot = Page.figure.gca() … … 985 985 except ValueError: 986 986 newPlot = True 987 Plot = self.G2plotNB.addMpl(type).gca()988 plotNum = self.G2plotNB.plotList.index(type)989 Page = self.G2plotNB.nb.GetPage(plotNum)987 Plot = G2frame.G2plotNB.addMpl(type).gca() 988 plotNum = G2frame.G2plotNB.plotList.index(type) 989 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 990 990 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 991 991 992 992 Page.SetFocus() 993 self.G2plotNB.status.DestroyChildren()993 G2frame.G2plotNB.status.DestroyChildren() 994 994 Plot.set_title(type) 995 995 Plot.set_xlabel(r'X',fontsize=14) … … 1011 1011 Page.canvas.draw() 1012 1012 1013 def PlotPowderLines( self):1013 def PlotPowderLines(G2frame): 1014 1014 ''' plotting of powder lines (i.e. no powder pattern) as sticks 1015 1015 ''' … … 1020 1020 if xpos: #avoid out of frame mouse position 1021 1021 Page.canvas.SetCursor(wx.CROSS_CURSOR) 1022 self.G2plotNB.status.SetFields(['','2-theta =%9.3f '%(xpos,)])1023 if self.PickId and self.PatternTree.GetItemText(self.PickId) in ['Index Peak List','Unit Cells List']:1022 G2frame.G2plotNB.status.SetFields(['','2-theta =%9.3f '%(xpos,)]) 1023 if G2frame.PickId and G2frame.PatternTree.GetItemText(G2frame.PickId) in ['Index Peak List','Unit Cells List']: 1024 1024 found = [] 1025 1025 if len(HKL): … … 1034 1034 1035 1035 try: 1036 plotNum = self.G2plotNB.plotList.index('Powder Lines')1037 Page = self.G2plotNB.nb.GetPage(plotNum)1036 plotNum = G2frame.G2plotNB.plotList.index('Powder Lines') 1037 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1038 1038 Page.figure.clf() 1039 1039 Plot = Page.figure.gca() 1040 1040 except ValueError: 1041 Plot = self.G2plotNB.addMpl('Powder Lines').gca()1042 plotNum = self.G2plotNB.plotList.index('Powder Lines')1043 Page = self.G2plotNB.nb.GetPage(plotNum)1041 Plot = G2frame.G2plotNB.addMpl('Powder Lines').gca() 1042 plotNum = G2frame.G2plotNB.plotList.index('Powder Lines') 1043 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1044 1044 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 1045 1045 … … 1047 1047 Plot.set_title('Powder Pattern Lines') 1048 1048 Plot.set_xlabel(r'$\mathsf{2\theta}$',fontsize=14) 1049 PickId = self.PickId1050 PatternId = self.PatternId1051 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Index Peak List'))1049 PickId = G2frame.PickId 1050 PatternId = G2frame.PatternId 1051 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List')) 1052 1052 for peak in peaks: 1053 1053 Plot.axvline(peak[0],color='b') 1054 HKL = np.array( self.HKL)1055 for hkl in self.HKL:1054 HKL = np.array(G2frame.HKL) 1055 for hkl in G2frame.HKL: 1056 1056 Plot.axvline(hkl[5],color='r',dashes=(5,5)) 1057 1057 xmin = peaks[0][0] … … 1063 1063 Page.toolbar.push_current() 1064 1064 1065 def PlotPeakWidths( self):1065 def PlotPeakWidths(G2frame): 1066 1066 ''' Plotting of instrument broadening terms as function of 2-theta (future TOF) 1067 1067 Seen when "Instrument Parameters" chosen from powder pattern data tree 1068 1068 ''' 1069 PatternId = self.PatternId1070 limitID = G2gd.GetPatternTreeItemId( self,PatternId, 'Limits')1069 PatternId = G2frame.PatternId 1070 limitID = G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits') 1071 1071 if limitID: 1072 limits = self.PatternTree.GetItemPyData(limitID)1072 limits = G2frame.PatternTree.GetItemPyData(limitID) 1073 1073 else: 1074 1074 return 1075 instParms = self.PatternTree.GetItemPyData( \1076 G2gd.GetPatternTreeItemId( self,PatternId, 'Instrument Parameters'))1075 instParms = G2frame.PatternTree.GetItemPyData( \ 1076 G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters')) 1077 1077 if instParms[0][0] in ['PXC','PNC']: 1078 1078 lam = instParms[1][1] … … 1081 1081 else: 1082 1082 GU,GV,GW,LX,LY = instParms[0][4:9] 1083 peakID = G2gd.GetPatternTreeItemId( self,PatternId, 'Peak List')1083 peakID = G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List') 1084 1084 if peakID: 1085 peaks = self.PatternTree.GetItemPyData(peakID)1085 peaks = G2frame.PatternTree.GetItemPyData(peakID) 1086 1086 else: 1087 1087 peaks = [] 1088 1088 1089 1089 try: 1090 plotNum = self.G2plotNB.plotList.index('Peak Widths')1091 Page = self.G2plotNB.nb.GetPage(plotNum)1090 plotNum = G2frame.G2plotNB.plotList.index('Peak Widths') 1091 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1092 1092 Page.figure.clf() 1093 1093 Plot = Page.figure.gca() 1094 1094 except ValueError: 1095 Plot = self.G2plotNB.addMpl('Peak Widths').gca()1096 plotNum = self.G2plotNB.plotList.index('Peak Widths')1097 Page = self.G2plotNB.nb.GetPage(plotNum)1095 Plot = G2frame.G2plotNB.addMpl('Peak Widths').gca() 1096 plotNum = G2frame.G2plotNB.plotList.index('Peak Widths') 1097 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1098 1098 Page.SetFocus() 1099 1099 … … 1153 1153 Page.canvas.draw() 1154 1154 1155 def PlotSizeStrainPO( self,data,Start=False):1155 def PlotSizeStrainPO(G2frame,data,Start=False): 1156 1156 '''Plot 3D mustrain/size/preferred orientation figure. In this instance data is for a phase 1157 1157 ''' 1158 1158 1159 PatternId = self.PatternId1159 PatternId = G2frame.PatternId 1160 1160 generalData = data['General'] 1161 1161 SGData = generalData['SGData'] … … 1173 1173 plotDict = {'Mustrain':'Mustrain','Size':'Size','Preferred orientation':'Pref.Ori.'} 1174 1174 for ptype in plotDict: 1175 self.G2plotNB.Delete(ptype)1175 G2frame.G2plotNB.Delete(ptype) 1176 1176 1177 1177 for item in useList: … … 1184 1184 1185 1185 if plotType in ['Mustrain','Size']: 1186 Plot = mp3d.Axes3D( self.G2plotNB.add3D(plotType))1186 Plot = mp3d.Axes3D(G2frame.G2plotNB.add3D(plotType)) 1187 1187 else: 1188 Plot = self.G2plotNB.addMpl(plotType).gca()1189 plotNum = self.G2plotNB.plotList.index(plotType)1190 Page = self.G2plotNB.nb.GetPage(plotNum)1188 Plot = G2frame.G2plotNB.addMpl(plotType).gca() 1189 plotNum = G2frame.G2plotNB.plotList.index(plotType) 1190 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1191 1191 Page.SetFocus() 1192 self.G2plotNB.status.SetStatusText('Adjust frame size to get desired aspect ratio',1)1192 G2frame.G2plotNB.status.SetStatusText('Adjust frame size to get desired aspect ratio',1) 1193 1193 if not Page.IsShown(): 1194 1194 Page.Show() … … 1307 1307 Page.canvas.draw() 1308 1308 1309 def PlotTexture( self,data,newPlot=False,Start=False):1309 def PlotTexture(G2frame,data,newPlot=False,Start=False): 1310 1310 '''Pole figure, inverse pole figure, 3D pole distribution and 3D inverse pole distribution 1311 1311 plotting. … … 1315 1315 shModels = ['cylindrical','none','shear - 2/m','rolling - mmm'] 1316 1316 SamSym = dict(zip(shModels,['0','-1','2/m','mmm'])) 1317 PatternId = self.PatternId1317 PatternId = G2frame.PatternId 1318 1318 generalData = data['General'] 1319 1319 SGData = generalData['SGData'] 1320 1320 textureData = generalData['SH Texture'] 1321 self.G2plotNB.Delete('Texture')1321 G2frame.G2plotNB.Delete('Texture') 1322 1322 if not textureData['Order']: 1323 1323 return #no plot!! … … 1341 1341 r = xpos**2+ypos**2 1342 1342 if r <= 1.0: 1343 if 'equal' in self.Projection:1343 if 'equal' in G2frame.Projection: 1344 1344 r,p = 2.*npasind(np.sqrt(r)*sq2),npatan2d(ypos,xpos) 1345 1345 else: … … 1349 1349 y,x,z = list(xyz/np.max(np.abs(xyz))) 1350 1350 1351 self.G2plotNB.status.SetFields(['',1351 G2frame.G2plotNB.status.SetFields(['', 1352 1352 'psi =%9.3f, beta =%9.3f, MRD =%9.3f hkl=%5.2f,%5.2f,%5.2f'%(r,p,ipf,x,y,z)]) 1353 1353 … … 1359 1359 if z <= 1.0: 1360 1360 z = np.sqrt(z) 1361 if 'equal' in self.Projection:1361 if 'equal' in G2frame.Projection: 1362 1362 r,p = 2.*npasind(z*sq2),npatan2d(ypos,xpos) 1363 1363 else: 1364 1364 r,p = 2.*npatand(z),npatan2d(ypos,xpos) 1365 1365 pf = G2lat.polfcal(ODFln,SamSym[textureData['Model']],np.array([r,]),np.array([p,])) 1366 self.G2plotNB.status.SetFields(['','phi =%9.3f, gam =%9.3f, MRD =%9.3f'%(r,p,pf)])1366 G2frame.G2plotNB.status.SetFields(['','phi =%9.3f, gam =%9.3f, MRD =%9.3f'%(r,p,pf)]) 1367 1367 1368 if self.Projection == '3D display' and 'Axial' not in SHData['PlotType']:1369 Plot = mp3d.Axes3D( self.G2plotNB.add3D('Texture'))1368 if G2frame.Projection == '3D display' and 'Axial' not in SHData['PlotType']: 1369 Plot = mp3d.Axes3D(G2frame.G2plotNB.add3D('Texture')) 1370 1370 else: 1371 Plot = self.G2plotNB.addMpl('Texture').gca()1372 plotNum = self.G2plotNB.plotList.index('Texture')1373 Page = self.G2plotNB.nb.GetPage(plotNum)1374 if self.Projection == '3D display':1371 Plot = G2frame.G2plotNB.addMpl('Texture').gca() 1372 plotNum = G2frame.G2plotNB.plotList.index('Texture') 1373 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1374 if G2frame.Projection == '3D display': 1375 1375 pass 1376 1376 else: … … 1378 1378 1379 1379 Page.SetFocus() 1380 self.G2plotNB.status.SetFields(['',''])1380 G2frame.G2plotNB.status.SetFields(['','']) 1381 1381 PH = np.array(SHData['PFhkl']) 1382 1382 phi,beta = G2lat.CrsAng(PH,cell,SGData) … … 1402 1402 X,Y = np.meshgrid(np.linspace(1.,-1.,npts),np.linspace(-1.,1.,npts)) 1403 1403 R,P = np.sqrt(X**2+Y**2).flatten(),npatan2d(X,Y).flatten() 1404 if 'equal' in self.Projection:1404 if 'equal' in G2frame.Projection: 1405 1405 R = np.where(R <= 1.,2.*npasind(R*sq2),0.0) 1406 1406 else: … … 1412 1412 Plot.clabel(CS,fontsize=9,inline=1) 1413 1413 try: 1414 Img = Plot.imshow(Z.T,aspect='equal',cmap= self.ContourColor,extent=[-1,1,-1,1])1414 Img = Plot.imshow(Z.T,aspect='equal',cmap=G2frame.ContourColor,extent=[-1,1,-1,1]) 1415 1415 except ValueError: 1416 1416 pass … … 1419 1419 newPlot = False 1420 1420 Plot.set_title('Inverse pole figure for XYZ='+str(SHData['PFxyz'])) 1421 Plot.set_xlabel( self.Projection.capitalize()+' projection')1421 Plot.set_xlabel(G2frame.Projection.capitalize()+' projection') 1422 1422 1423 1423 else: 1424 1424 X,Y = np.meshgrid(np.linspace(1.,-1.,npts),np.linspace(-1.,1.,npts)) 1425 1425 R,P = np.sqrt(X**2+Y**2).flatten(),npatan2d(X,Y).flatten() 1426 if 'equal' in self.Projection:1426 if 'equal' in G2frame.Projection: 1427 1427 R = np.where(R <= 1.,2.*npasind(R*sq2),0.0) 1428 1428 else: … … 1436 1436 except ValueError: 1437 1437 pass 1438 Img = Plot.imshow(Z.T,aspect='equal',cmap= self.ContourColor,extent=[-1,1,-1,1])1438 Img = Plot.imshow(Z.T,aspect='equal',cmap=G2frame.ContourColor,extent=[-1,1,-1,1]) 1439 1439 if newPlot: 1440 1440 # Page.figure.colorbar(Img) #colorbar fails - crashes gsasii 1441 1441 newPlot = False 1442 1442 Plot.set_title('Pole figure for HKL='+str(SHData['PFhkl'])) 1443 Plot.set_xlabel( self.Projection.capitalize()+' projection')1443 Plot.set_xlabel(G2frame.Projection.capitalize()+' projection') 1444 1444 Page.canvas.draw() 1445 1445 1446 def PlotCovariance( self,Data={}):1446 def PlotCovariance(G2frame,Data={}): 1447 1447 if not Data: 1448 Data = self.PatternTree.GetItemPyData(1449 G2gd.GetPatternTreeItemId( self,self.root, 'Covariance'))1448 Data = G2frame.PatternTree.GetItemPyData( 1449 G2gd.GetPatternTreeItemId(G2frame,G2frame.root, 'Covariance')) 1450 1450 if not Data: 1451 1451 print 'No covariance matrix available' … … 1466 1466 choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")] 1467 1467 choice.sort() 1468 dlg = wx.SingleChoiceDialog( self,'Select','Color scheme',choice)1468 dlg = wx.SingleChoiceDialog(G2frame,'Select','Color scheme',choice) 1469 1469 if dlg.ShowModal() == wx.ID_OK: 1470 1470 sel = dlg.GetSelection() 1471 self.VcovColor = choice[sel]1471 G2frame.VcovColor = choice[sel] 1472 1472 else: 1473 self.VcovColor = 'RdYlGn'1473 G2frame.VcovColor = 'RdYlGn' 1474 1474 dlg.Destroy() 1475 PlotCovariance( self)1475 PlotCovariance(G2frame) 1476 1476 1477 1477 def OnMotion(event): … … 1495 1495 msg = '%s - %s: %5.3f'%(varyList[xpos],varyList[ypos],covArray[xpos][ypos]) 1496 1496 Page.canvas.SetToolTipString(msg) 1497 self.G2plotNB.status.SetFields(['Key: s to change colors',msg])1497 G2frame.G2plotNB.status.SetFields(['Key: s to change colors',msg]) 1498 1498 try: 1499 plotNum = self.G2plotNB.plotList.index('Covariance')1500 Page = self.G2plotNB.nb.GetPage(plotNum)1499 plotNum = G2frame.G2plotNB.plotList.index('Covariance') 1500 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1501 1501 Page.figure.clf() 1502 1502 Plot = Page.figure.gca() … … 1504 1504 Page.Show() 1505 1505 except ValueError: 1506 Plot = self.G2plotNB.addMpl('Covariance').gca()1507 plotNum = self.G2plotNB.plotList.index('Covariance')1508 Page = self.G2plotNB.nb.GetPage(plotNum)1506 Plot = G2frame.G2plotNB.addMpl('Covariance').gca() 1507 plotNum = G2frame.G2plotNB.plotList.index('Covariance') 1508 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1509 1509 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 1510 1510 Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress) 1511 1511 1512 1512 Page.SetFocus() 1513 self.G2plotNB.status.SetFields(['',''])1514 acolor = mpl.cm.get_cmap( self.VcovColor)1513 G2frame.G2plotNB.status.SetFields(['','']) 1514 acolor = mpl.cm.get_cmap(G2frame.VcovColor) 1515 1515 Img = Plot.imshow(covArray,aspect='equal',cmap=acolor,interpolation='nearest',origin='lower') 1516 1516 imgAx = Img.get_axes() … … 1524 1524 Page.canvas.draw() 1525 1525 1526 def PlotSeq( self,SeqData,SeqSig,SeqNames,sampleParm):1526 def PlotSeq(G2frame,SeqData,SeqSig,SeqNames,sampleParm): 1527 1527 1528 1528 def OnKeyPress(event): 1529 1529 if event.key == 's' and sampleParm: 1530 if self.xAxis:1531 self.xAxis = False1530 if G2frame.xAxis: 1531 G2frame.xAxis = False 1532 1532 else: 1533 self.xAxis = True1533 G2frame.xAxis = True 1534 1534 Draw(False) 1535 1535 try: 1536 plotNum = self.G2plotNB.plotList.index('Sequential refinement')1537 Page = self.G2plotNB.nb.GetPage(plotNum)1536 plotNum = G2frame.G2plotNB.plotList.index('Sequential refinement') 1537 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1538 1538 Page.figure.clf() 1539 1539 Plot = Page.figure.gca() … … 1541 1541 Page.Show() 1542 1542 except ValueError: 1543 Plot = self.G2plotNB.addMpl('Sequential refinement').gca()1544 plotNum = self.G2plotNB.plotList.index('Sequential refinement')1545 Page = self.G2plotNB.nb.GetPage(plotNum)1543 Plot = G2frame.G2plotNB.addMpl('Sequential refinement').gca() 1544 plotNum = G2frame.G2plotNB.plotList.index('Sequential refinement') 1545 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1546 1546 Page.canvas.mpl_connect('key_press_event', OnKeyPress) 1547 self.xAxis = False1547 G2frame.xAxis = False 1548 1548 1549 1549 def Draw(newPlot): 1550 1550 Page.SetFocus() 1551 self.G2plotNB.status.SetFields(['','press s to toggle x-axis = sample environment parameter'])1551 G2frame.G2plotNB.status.SetFields(['','press s to toggle x-axis = sample environment parameter']) 1552 1552 if len(SeqData): 1553 1553 Plot.clear() 1554 if self.xAxis:1554 if G2frame.xAxis: 1555 1555 xName = sampleParm.keys()[0] 1556 1556 X = sampleParm[xName] … … 1566 1566 Draw(True) 1567 1567 1568 def PlotExposedImage( self,newPlot=False,event=None):1568 def PlotExposedImage(G2frame,newPlot=False,event=None): 1569 1569 '''General access module for 2D image plotting 1570 1570 ''' 1571 plotNo = self.G2plotNB.nb.GetSelection()1572 if self.G2plotNB.nb.GetPageText(plotNo) == '2D Powder Image':1573 PlotImage( self,newPlot,event,newImage=True)1574 elif self.G2plotNB.nb.GetPageText(plotNo) == '2D Integration':1575 PlotIntegration( self,newPlot,event)1571 plotNo = G2frame.G2plotNB.nb.GetSelection() 1572 if G2frame.G2plotNB.nb.GetPageText(plotNo) == '2D Powder Image': 1573 PlotImage(G2frame,newPlot,event,newImage=True) 1574 elif G2frame.G2plotNB.nb.GetPageText(plotNo) == '2D Integration': 1575 PlotIntegration(G2frame,newPlot,event) 1576 1576 1577 def PlotImage( self,newPlot=False,event=None,newImage=True):1577 def PlotImage(G2frame,newPlot=False,event=None,newImage=True): 1578 1578 '''Plot of 2D detector images as contoured plot. Also plot calibration ellipses, 1579 1579 masks, etc. … … 1584 1584 global Data,Masks 1585 1585 colors=['b','g','r','c','m','k'] 1586 Data = self.PatternTree.GetItemPyData(1587 G2gd.GetPatternTreeItemId( self,self.Image, 'Image Controls'))1588 Masks = self.PatternTree.GetItemPyData(1589 G2gd.GetPatternTreeItemId( self,self.Image, 'Masks'))1586 Data = G2frame.PatternTree.GetItemPyData( 1587 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Image Controls')) 1588 Masks = G2frame.PatternTree.GetItemPyData( 1589 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks')) 1590 1590 1591 1591 def OnImMotion(event): … … 1594 1594 if event.xdata and event.ydata: #avoid out of frame errors 1595 1595 Page.canvas.SetCursor(wx.CROSS_CURSOR) 1596 item = self.itemPicked1596 item = G2frame.itemPicked 1597 1597 pixelSize = Data['pixelSize'] 1598 1598 scalex = 1000./pixelSize[0] 1599 1599 scaley = 1000./pixelSize[1] 1600 if item and self.PatternTree.GetItemText(self.PickId) == 'Image Controls':1600 if item and G2frame.PatternTree.GetItemText(G2frame.PickId) == 'Image Controls': 1601 1601 if 'Text' in str(item): 1602 1602 Page.canvas.SetToolTipString('%8.3f %8.3fmm'%(event.xdata,event.ydata)) … … 1617 1617 Int = 0 1618 1618 if (0 <= xpix <= sizexy[0]) and (0 <= ypix <= sizexy[1]): 1619 Int = self.ImageZ[ypix][xpix]1619 Int = G2frame.ImageZ[ypix][xpix] 1620 1620 tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data) 1621 1621 Q = 2.*math.pi/dsp 1622 if self.setPoly:1623 self.G2plotNB.status.SetFields(['','Polygon mask pick - LB next point, RB close polygon'])1622 if G2frame.setPoly: 1623 G2frame.G2plotNB.status.SetFields(['','Polygon mask pick - LB next point, RB close polygon']) 1624 1624 else: 1625 self.G2plotNB.status.SetFields(\1625 G2frame.G2plotNB.status.SetFields(\ 1626 1626 ['','Detector 2-th =%9.3fdeg, dsp =%9.3fA, Q = %6.5fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int)]) 1627 1627 1628 1628 def OnImPlotKeyPress(event): 1629 1629 try: 1630 PickName = self.PatternTree.GetItemText(self.PickId)1630 PickName = G2frame.PatternTree.GetItemText(G2frame.PickId) 1631 1631 except TypeError: 1632 1632 return … … 1646 1646 Masks['Arcs'].append([tth,[azm-5,azm+5],0.1]) 1647 1647 elif event.key == 'p': 1648 self.setPoly = True1648 G2frame.setPoly = True 1649 1649 Masks['Polygons'].append([]) 1650 self.G2plotNB.status.SetFields(['','Polygon mask active - LB pick next point, RB close polygon'])1651 G2imG.UpdateMasks( self,Masks)1650 G2frame.G2plotNB.status.SetFields(['','Polygon mask active - LB pick next point, RB close polygon']) 1651 G2imG.UpdateMasks(G2frame,Masks) 1652 1652 elif PickName == 'Image Controls': 1653 1653 if event.key == 'c': … … 1656 1656 return 1657 1657 Ypos = event.ydata 1658 dlg = wx.MessageDialog( self,'Are you sure you want to change the center?',1658 dlg = wx.MessageDialog(G2frame,'Are you sure you want to change the center?', 1659 1659 'Center change',style=wx.OK|wx.CANCEL) 1660 1660 try: … … 1662 1662 print 'move center to: ',Xpos,Ypos 1663 1663 Data['center'] = [Xpos,Ypos] 1664 G2imG.UpdateImageControls( self,Data,Masks)1664 G2imG.UpdateImageControls(G2frame,Data,Masks) 1665 1665 finally: 1666 1666 dlg.Destroy() 1667 1667 elif event.key == 'l': 1668 if self.logPlot:1669 self.logPlot = False1668 if G2frame.logPlot: 1669 G2frame.logPlot = False 1670 1670 else: 1671 self.logPlot = True1672 PlotImage( self,newImage=True)1671 G2frame.logPlot = True 1672 PlotImage(G2frame,newImage=True) 1673 1673 1674 1674 def OnKeyBox(event): 1675 if self.G2plotNB.nb.GetSelection() == self.G2plotNB.plotList.index('2D Powder Image'):1675 if G2frame.G2plotNB.nb.GetSelection() == G2frame.G2plotNB.plotList.index('2D Powder Image'): 1676 1676 event.key = cb.GetValue()[0] 1677 1677 cb.SetValue(' key press') … … 1680 1680 1681 1681 def OnImPick(event): 1682 if self.PatternTree.GetItemText(self.PickId) not in ['Image Controls','Masks']:1682 if G2frame.PatternTree.GetItemText(G2frame.PickId) not in ['Image Controls','Masks']: 1683 1683 return 1684 if self.setPoly:1684 if G2frame.setPoly: 1685 1685 polygon = Masks['Polygons'][-1] 1686 1686 xpos,ypos = event.mouseevent.xdata,event.mouseevent.ydata … … 1689 1689 x0,y0 = polygon[0] 1690 1690 polygon.append([x0,y0]) 1691 self.setPoly = False1692 self.G2plotNB.status.SetFields(['','Polygon closed - RB drag a vertex to change shape'])1691 G2frame.setPoly = False 1692 G2frame.G2plotNB.status.SetFields(['','Polygon closed - RB drag a vertex to change shape']) 1693 1693 else: 1694 self.G2plotNB.status.SetFields(['','New polygon point: %.1f,%.1f'%(xpos,ypos)])1694 G2frame.G2plotNB.status.SetFields(['','New polygon point: %.1f,%.1f'%(xpos,ypos)]) 1695 1695 polygon.append([xpos,ypos]) 1696 G2imG.UpdateMasks( self,Masks)1696 G2imG.UpdateMasks(G2frame,Masks) 1697 1697 else: 1698 if self.itemPicked is not None: return1699 self.itemPicked = event.artist1700 self.mousePicked = event.mouseevent1698 if G2frame.itemPicked is not None: return 1699 G2frame.itemPicked = event.artist 1700 G2frame.mousePicked = event.mouseevent 1701 1701 1702 1702 def OnImRelease(event): 1703 1703 try: 1704 PickName = self.PatternTree.GetItemText(self.PickId)1704 PickName = G2frame.PatternTree.GetItemText(G2frame.PickId) 1705 1705 except TypeError: 1706 1706 return … … 1711 1711 scaley = 1000./pixelSize[1] 1712 1712 pixLimit = Data['pixLimit'] 1713 if self.itemPicked is None and PickName == 'Image Controls':1713 if G2frame.itemPicked is None and PickName == 'Image Controls': 1714 1714 # sizexy = Data['size'] 1715 1715 Xpos = event.xdata 1716 if not (Xpos and self.ifGetRing): #got point out of frame1716 if not (Xpos and G2frame.ifGetRing): #got point out of frame 1717 1717 return 1718 1718 Ypos = event.ydata … … 1721 1721 Xpix = Xpos*scalex 1722 1722 Ypix = Ypos*scaley 1723 xpos,ypos,I,J = G2img.ImageLocalMax( self.ImageZ,pixLimit,Xpix,Ypix)1723 xpos,ypos,I,J = G2img.ImageLocalMax(G2frame.ImageZ,pixLimit,Xpix,Ypix) 1724 1724 if I and J: 1725 1725 xpos += .5 #shift to pixel center … … 1729 1729 Data['ring'].append([xpos,ypos]) 1730 1730 elif event.button == 3: 1731 self.dataFrame.GetStatusBar().SetStatusText('Calibrating...')1732 if G2img.ImageCalibrate( self,Data):1733 self.dataFrame.GetStatusBar().SetStatusText('Calibration successful - Show ring picks to check')1731 G2frame.dataFrame.GetStatusBar().SetStatusText('Calibrating...') 1732 if G2img.ImageCalibrate(G2frame,Data): 1733 G2frame.dataFrame.GetStatusBar().SetStatusText('Calibration successful - Show ring picks to check') 1734 1734 print 'Calibration successful' 1735 1735 else: 1736 self.dataFrame.GetStatusBar().SetStatusText('Calibration failed - Show ring picks to diagnose')1736 G2frame.dataFrame.GetStatusBar().SetStatusText('Calibration failed - Show ring picks to diagnose') 1737 1737 print 'Calibration failed' 1738 self.ifGetRing = False1739 G2imG.UpdateImageControls( self,Data,Masks)1738 G2frame.ifGetRing = False 1739 G2imG.UpdateImageControls(G2frame,Data,Masks) 1740 1740 return 1741 PlotImage( self,newImage=False)1741 PlotImage(G2frame,newImage=False) 1742 1742 return 1743 1743 else: … … 1745 1745 if xpos: #avoid out of frame mouse position 1746 1746 ypos = event.ydata 1747 if self.ifGetRing: #delete a calibration ring pick1747 if G2frame.ifGetRing: #delete a calibration ring pick 1748 1748 xypos = [xpos,ypos] 1749 1749 rings = Data['ring'] … … 1753 1753 else: 1754 1754 tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data) 1755 itemPicked = str( self.itemPicked)1755 itemPicked = str(G2frame.itemPicked) 1756 1756 if 'Line2D' in itemPicked and PickName == 'Image Controls': 1757 1757 if 'line1' in itemPicked: … … 1777 1777 Data['IOtth'][0],Data['IOtth'][1] = Data['IOtth'][1],Data['IOtth'][0] 1778 1778 1779 self.InnerTth.SetValue("%8.2f" % (Data['IOtth'][0]))1780 self.OuterTth.SetValue("%8.2f" % (Data['IOtth'][1]))1781 self.Lazim.SetValue("%6d" % (Data['LRazimuth'][0]))1782 self.Razim.SetValue("%6d" % (Data['LRazimuth'][1]))1779 G2frame.InnerTth.SetValue("%8.2f" % (Data['IOtth'][0])) 1780 G2frame.OuterTth.SetValue("%8.2f" % (Data['IOtth'][1])) 1781 G2frame.Lazim.SetValue("%6d" % (Data['LRazimuth'][0])) 1782 G2frame.Razim.SetValue("%6d" % (Data['LRazimuth'][1])) 1783 1783 elif 'Circle' in itemPicked and PickName == 'Masks': 1784 1784 spots = Masks['Points'] … … 1788 1788 if np.allclose(np.array([spot[:2]]),newPos): 1789 1789 spot[:2] = xpos,ypos 1790 G2imG.UpdateMasks( self,Masks)1790 G2imG.UpdateMasks(G2frame,Masks) 1791 1791 elif 'Line2D' in itemPicked and PickName == 'Masks': 1792 Obj = self.itemPicked.findobj()1792 Obj = G2frame.itemPicked.findobj() 1793 1793 rings = Masks['Rings'] 1794 1794 arcs = Masks['Arcs'] 1795 1795 polygons = Masks['Polygons'] 1796 for ring in self.ringList:1796 for ring in G2frame.ringList: 1797 1797 if Obj == ring[0]: 1798 1798 rN = ring[1] … … 1801 1801 else: 1802 1802 rings[rN][0] = G2img.GetTth(xpos,ypos,Data)+rings[rN][1]/2. 1803 for arc in self.arcList:1803 for arc in G2frame.arcList: 1804 1804 if Obj == arc[0]: 1805 1805 aN = arc[1] … … 1812 1812 else: 1813 1813 arcs[aN][1][1] = int(G2img.GetAzm(xpos,ypos,Data)) 1814 for poly in self.polyList:1814 for poly in G2frame.polyList: 1815 1815 if Obj == poly[0]: 1816 ind = self.itemPicked.contains(self.mousePicked)[1]['ind'][0]1817 oldPos = np.array([ self.mousePicked.xdata,self.mousePicked.ydata])1816 ind = G2frame.itemPicked.contains(G2frame.mousePicked)[1]['ind'][0] 1817 oldPos = np.array([G2frame.mousePicked.xdata,G2frame.mousePicked.ydata]) 1818 1818 pN = poly[1] 1819 1819 for i,xy in enumerate(polygons[pN]): 1820 1820 if np.allclose(np.array([xy]),oldPos,atol=1.0): 1821 1821 polygons[pN][i] = xpos,ypos 1822 G2imG.UpdateMasks( self,Masks)1822 G2imG.UpdateMasks(G2frame,Masks) 1823 1823 # else: #keep for future debugging 1824 # print str( self.itemPicked),event.xdata,event.ydata,event.button1825 PlotImage( self,newImage=True)1826 self.itemPicked = None1824 # print str(G2frame.itemPicked),event.xdata,event.ydata,event.button 1825 PlotImage(G2frame,newImage=True) 1826 G2frame.itemPicked = None 1827 1827 1828 1828 try: 1829 plotNum = self.G2plotNB.plotList.index('2D Powder Image')1830 Page = self.G2plotNB.nb.GetPage(plotNum)1829 plotNum = G2frame.G2plotNB.plotList.index('2D Powder Image') 1830 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1831 1831 if not newPlot: 1832 1832 Plot = Page.figure.gca() #get previous powder plot & get limits … … 1837 1837 1838 1838 except ValueError: 1839 Plot = self.G2plotNB.addMpl('2D Powder Image').gca()1840 plotNum = self.G2plotNB.plotList.index('2D Powder Image')1841 Page = self.G2plotNB.nb.GetPage(plotNum)1839 Plot = G2frame.G2plotNB.addMpl('2D Powder Image').gca() 1840 plotNum = G2frame.G2plotNB.plotList.index('2D Powder Image') 1841 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1842 1842 Page.canvas.mpl_connect('key_press_event', OnImPlotKeyPress) 1843 1843 Page.canvas.mpl_connect('motion_notify_event', OnImMotion) … … 1847 1847 if not event: #event from GUI TextCtrl - don't want focus to change to plot!!! 1848 1848 Page.SetFocus() 1849 Title = self.PatternTree.GetItemText(self.Image)[4:]1850 self.G2plotNB.status.DestroyChildren()1851 if self.logPlot:1849 Title = G2frame.PatternTree.GetItemText(G2frame.Image)[4:] 1850 G2frame.G2plotNB.status.DestroyChildren() 1851 if G2frame.logPlot: 1852 1852 Title = 'log('+Title+')' 1853 1853 Plot.set_title(Title) 1854 1854 try: 1855 if self.PatternTree.GetItemText(self.PickId) in ['Image Controls',]:1855 if G2frame.PatternTree.GetItemText(G2frame.PickId) in ['Image Controls',]: 1856 1856 Choice = (' key press','l: log(I) on',) 1857 if self.logPlot:1857 if G2frame.logPlot: 1858 1858 Choice[1] = 'l: log(I) off' 1859 cb = wx.ComboBox( self.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,1859 cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY, 1860 1860 choices=Choice) 1861 1861 cb.Bind(wx.EVT_COMBOBOX, OnKeyBox) … … 1863 1863 except TypeError: 1864 1864 pass 1865 size,imagefile = self.PatternTree.GetItemPyData(self.Image)1866 if imagefile != self.oldImagefile:1867 imagefile = G2IO.CheckImageFile( self,imagefile)1865 size,imagefile = G2frame.PatternTree.GetItemPyData(G2frame.Image) 1866 if imagefile != G2frame.oldImagefile: 1867 imagefile = G2IO.CheckImageFile(G2frame,imagefile) 1868 1868 if not imagefile: 1869 self.G2plotNB.Delete('2D Powder Image')1869 G2frame.G2plotNB.Delete('2D Powder Image') 1870 1870 return 1871 self.PatternTree.SetItemPyData(self.Image,[size,imagefile])1872 self.ImageZ = G2IO.GetImageData(self,imagefile,imageOnly=True)1873 # print self.ImageZ.shape,self.ImageZ.size,Data['size'] #might be useful debugging line1874 self.oldImagefile = imagefile1871 G2frame.PatternTree.SetItemPyData(G2frame.Image,[size,imagefile]) 1872 G2frame.ImageZ = G2IO.GetImageData(G2frame,imagefile,imageOnly=True) 1873 # print G2frame.ImageZ.shape,G2frame.ImageZ.size,Data['size'] #might be useful debugging line 1874 G2frame.oldImagefile = imagefile 1875 1875 1876 1876 imScale = 1 1877 if len( self.ImageZ) > 1024:1878 imScale = len( self.ImageZ)/10241877 if len(G2frame.ImageZ) > 1024: 1878 imScale = len(G2frame.ImageZ)/1024 1879 1879 sizexy = Data['size'] 1880 1880 pixelSize = Data['pixelSize'] … … 1896 1896 1897 1897 if newImage: 1898 MA = ma.masked_greater(ma.masked_less( self.ImageZ,Zlim[0]),Zlim[1])1898 MA = ma.masked_greater(ma.masked_less(G2frame.ImageZ,Zlim[0]),Zlim[1]) 1899 1899 MaskA = ma.getmaskarray(MA) 1900 1900 A = G2img.ImageCompress(MA,imScale) 1901 1901 AM = G2img.ImageCompress(MaskA,imScale) 1902 if self.logPlot:1902 if G2frame.logPlot: 1903 1903 A = np.where(A>0,np.log(A),0) 1904 1904 AM = np.where(AM>0,np.log(AM),0) … … 1908 1908 Img = Plot.imshow(A,aspect='equal',cmap=acolor, 1909 1909 interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Ymax,0]) 1910 if self.setPoly:1910 if G2frame.setPoly: 1911 1911 Img.set_picker(True) 1912 1912 … … 1966 1966 for x,y,d in spots: 1967 1967 Plot.add_artist(Circle((x,y),radius=d/2,fc='none',ec='r',picker=3)) 1968 self.ringList = []1968 G2frame.ringList = [] 1969 1969 for iring,(tth,thick) in enumerate(rings): 1970 1970 wave = Data['wavelength'] 1971 1971 x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data))),2) 1972 1972 x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth-thick/2.,wave),Data))),2) 1973 self.ringList.append([Plot.plot(x1,y1,'r',picker=3),iring,'o'])1974 self.ringList.append([Plot.plot(x2,y2,'r',picker=3),iring,'i'])1975 self.arcList = []1973 G2frame.ringList.append([Plot.plot(x1,y1,'r',picker=3),iring,'o']) 1974 G2frame.ringList.append([Plot.plot(x2,y2,'r',picker=3),iring,'i']) 1975 G2frame.arcList = [] 1976 1976 for iarc,(tth,azm,thick) in enumerate(arcs): 1977 1977 wave = Data['wavelength'] 1978 1978 x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data),azm)),2) 1979 1979 x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(max(0.01,tth-thick/2.),wave),Data),azm)),2) 1980 self.arcList.append([Plot.plot(x1,y1,'r',picker=3),iarc,'o'])1981 self.arcList.append([Plot.plot(x2,y2,'r',picker=3),iarc,'i'])1982 self.arcList.append([Plot.plot([x1[0],x2[0]],[y1[0],y2[0]],'r',picker=3),iarc,'l'])1983 self.arcList.append([Plot.plot([x1[-1],x2[-1]],[y1[-1],y2[-1]],'r',picker=3),iarc,'u'])1984 self.polyList = []1980 G2frame.arcList.append([Plot.plot(x1,y1,'r',picker=3),iarc,'o']) 1981 G2frame.arcList.append([Plot.plot(x2,y2,'r',picker=3),iarc,'i']) 1982 G2frame.arcList.append([Plot.plot([x1[0],x2[0]],[y1[0],y2[0]],'r',picker=3),iarc,'l']) 1983 G2frame.arcList.append([Plot.plot([x1[-1],x2[-1]],[y1[-1],y2[-1]],'r',picker=3),iarc,'u']) 1984 G2frame.polyList = [] 1985 1985 for ipoly,polygon in enumerate(polygons): 1986 1986 x,y = np.hsplit(np.array(polygon),2) 1987 self.polyList.append([Plot.plot(x,y,'r+',picker=10),ipoly])1987 G2frame.polyList.append([Plot.plot(x,y,'r+',picker=10),ipoly]) 1988 1988 Plot.plot(x,y,'r') 1989 1989 if newImage: … … 2004 2004 wx.EndBusyCursor() 2005 2005 2006 def PlotIntegration( self,newPlot=False,event=None):2006 def PlotIntegration(G2frame,newPlot=False,event=None): 2007 2007 '''Plot of 2D image after image integration with 2-theta and azimuth as coordinates 2008 2008 ''' … … 2014 2014 tth = event.xdata 2015 2015 if azm and tth: 2016 self.G2plotNB.status.SetFields(\2016 G2frame.G2plotNB.status.SetFields(\ 2017 2017 ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)]) 2018 2018 2019 2019 try: 2020 plotNum = self.G2plotNB.plotList.index('2D Integration')2021 Page = self.G2plotNB.nb.GetPage(plotNum)2020 plotNum = G2frame.G2plotNB.plotList.index('2D Integration') 2021 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 2022 2022 if not newPlot: 2023 2023 Plot = Page.figure.gca() #get previous plot & get limits … … 2027 2027 2028 2028 except ValueError: 2029 Plot = self.G2plotNB.addMpl('2D Integration').gca()2030 plotNum = self.G2plotNB.plotList.index('2D Integration')2031 Page = self.G2plotNB.nb.GetPage(plotNum)2029 Plot = G2frame.G2plotNB.addMpl('2D Integration').gca() 2030 plotNum = G2frame.G2plotNB.plotList.index('2D Integration') 2031 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 2032 2032 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 2033 2033 Page.views = False … … 2036 2036 Page.SetFocus() 2037 2037 2038 Data = self.PatternTree.GetItemPyData(2039 G2gd.GetPatternTreeItemId( self,self.Image, 'Image Controls'))2040 image = self.Integrate[0]2041 xsc = self.Integrate[1]2042 ysc = self.Integrate[2]2038 Data = G2frame.PatternTree.GetItemPyData( 2039 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Image Controls')) 2040 image = G2frame.Integrate[0] 2041 xsc = G2frame.Integrate[1] 2042 ysc = G2frame.Integrate[2] 2043 2043 Imin,Imax = Data['range'][1] 2044 2044 acolor = mpl.cm.get_cmap(Data['color']) 2045 Plot.set_title( self.PatternTree.GetItemText(self.Image)[4:])2045 Plot.set_title(G2frame.PatternTree.GetItemText(G2frame.Image)[4:]) 2046 2046 Plot.set_ylabel('azimuth',fontsize=12) 2047 2047 Plot.set_xlabel('2-theta',fontsize=12) … … 2066 2066 Page.canvas.draw() 2067 2067 2068 def PlotTRImage( self,tax,tay,taz,newPlot=False):2068 def PlotTRImage(G2frame,tax,tay,taz,newPlot=False): 2069 2069 '''a test plot routine - not normally used 2070 2070 ''' … … 2076 2076 tth = event.ydata 2077 2077 if azm and tth: 2078 self.G2plotNB.status.SetFields(\2078 G2frame.G2plotNB.status.SetFields(\ 2079 2079 ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)]) 2080 2080 2081 2081 try: 2082 plotNum = self.G2plotNB.plotList.index('2D Transformed Powder Image')2083 Page = self.G2plotNB.nb.GetPage(plotNum)2082 plotNum = G2frame.G2plotNB.plotList.index('2D Transformed Powder Image') 2083 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 2084 2084 if not newPlot: 2085 2085 Plot = Page.figure.gca() #get previous plot & get limits … … 2089 2089 2090 2090 except ValueError: 2091 Plot = self.G2plotNB.addMpl('2D Transformed Powder Image').gca()2092 plotNum = self.G2plotNB.plotList.index('2D Transformed Powder Image')2093 Page = self.G2plotNB.nb.GetPage(plotNum)2091 Plot = G2frame.G2plotNB.addMpl('2D Transformed Powder Image').gca() 2092 plotNum = G2frame.G2plotNB.plotList.index('2D Transformed Powder Image') 2093 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 2094 2094 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 2095 2095 Page.views = False … … 2097 2097 Page.SetFocus() 2098 2098 2099 Data = self.PatternTree.GetItemPyData(2100 G2gd.GetPatternTreeItemId( self,self.Image, 'Image Controls'))2099 Data = G2frame.PatternTree.GetItemPyData( 2100 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Image Controls')) 2101 2101 Imin,Imax = Data['range'][1] 2102 2102 step = (Imax-Imin)/5. 2103 2103 V = np.arange(Imin,Imax,step) 2104 2104 acolor = mpl.cm.get_cmap(Data['color']) 2105 Plot.set_title( self.PatternTree.GetItemText(self.Image)[4:])2105 Plot.set_title(G2frame.PatternTree.GetItemText(G2frame.Image)[4:]) 2106 2106 Plot.set_xlabel('azimuth',fontsize=12) 2107 2107 Plot.set_ylabel('2-theta',fontsize=12) … … 2139 2139 Page.canvas.draw() 2140 2140 2141 def PlotStructure( self,data):2141 def PlotStructure(G2frame,data): 2142 2142 '''Crystal structure plotting package. Can show structures as balls, sticks, lines, 2143 2143 thermal motion ellipsoids and polyhedra … … 2183 2183 im.save(Fname,mode) 2184 2184 cb.SetValue(' Save as:') 2185 self.G2plotNB.status.SetStatusText('Drawing saved to: '+Fname,1)2185 G2frame.G2plotNB.status.SetStatusText('Drawing saved to: '+Fname,1) 2186 2186 2187 2187 def GetTruePosition(xy,Add=False): … … 2230 2230 SetTestRotZ(newxy) 2231 2231 x,y,z = drawingData['testPos'][0] 2232 self.G2plotNB.status.SetStatusText('moving test point %.4f,%.4f,%.4f'%(x,y,z),1)2232 G2frame.G2plotNB.status.SetStatusText('moving test point %.4f,%.4f,%.4f'%(x,y,z),1) 2233 2233 2234 2234 if event.Dragging() and not event.ControlDown(): … … 2236 2236 SetRotation(newxy) 2237 2237 angX,angY,angZ = drawingData['Rotation'][:3] 2238 self.G2plotNB.status.SetStatusText('New rotation: %.2f, %.2f ,%.2f'%(angX,angY,angZ),1)2238 G2frame.G2plotNB.status.SetStatusText('New rotation: %.2f, %.2f ,%.2f'%(angX,angY,angZ),1) 2239 2239 elif event.RightIsDown(): 2240 2240 SetTranslation(newxy) 2241 2241 Tx,Ty,Tz = drawingData['viewPoint'][0] 2242 self.G2plotNB.status.SetStatusText('New view point: %.4f, %.4f, %.4f'%(Tx,Ty,Tz),1)2242 G2frame.G2plotNB.status.SetStatusText('New view point: %.4f, %.4f, %.4f'%(Tx,Ty,Tz),1) 2243 2243 elif event.MiddleIsDown(): 2244 2244 SetRotationZ(newxy) 2245 2245 angX,angY,angZ = drawingData['Rotation'][:3] 2246 self.G2plotNB.status.SetStatusText('New rotation: %.2f, %.2f, %.2f'%(angX,angY,angZ),1)2246 G2frame.G2plotNB.status.SetStatusText('New rotation: %.2f, %.2f, %.2f'%(angX,angY,angZ),1) 2247 2247 Draw() 2248 2248 … … 2252 2252 drawingData['cameraPos'] += event.GetWheelRotation()/24 2253 2253 drawingData['cameraPos'] = max(10,min(500,drawingData['cameraPos'])) 2254 self.G2plotNB.status.SetStatusText('New camera distance: %.2f'%(drawingData['cameraPos']),1)2254 G2frame.G2plotNB.status.SetStatusText('New camera distance: %.2f'%(drawingData['cameraPos']),1) 2255 2255 page = getSelection() 2256 2256 if page: 2257 if self.dataDisplay.GetPageText(page) == 'Draw Options':2258 panel = self.dataDisplay.GetPage(page).GetChildren()[0].GetChildren()2257 if G2frame.dataDisplay.GetPageText(page) == 'Draw Options': 2258 panel = G2frame.dataDisplay.GetPage(page).GetChildren()[0].GetChildren() 2259 2259 names = [child.GetName() for child in panel] 2260 2260 panel[names.index('cameraPos')].SetLabel('Camera Position: '+'%.2f'%(drawingData['cameraPos'])) … … 2264 2264 def getSelection(): 2265 2265 try: 2266 return self.dataDisplay.GetSelection()2266 return G2frame.dataDisplay.GetSelection() 2267 2267 except AttributeError: 2268 print self.dataDisplay.GetLabel()2269 self.G2plotNB.status.SetStatusText('Select this from Phase data window!')2268 print G2frame.dataDisplay.GetLabel() 2269 G2frame.G2plotNB.status.SetStatusText('Select this from Phase data window!') 2270 2270 return 0 2271 2271 … … 2273 2273 page = getSelection() 2274 2274 if page: 2275 if self.dataDisplay.GetPageText(page) == 'Draw Options':2276 panel = self.dataDisplay.GetPage(page).GetChildren()[0].GetChildren()2275 if G2frame.dataDisplay.GetPageText(page) == 'Draw Options': 2276 panel = G2frame.dataDisplay.GetPage(page).GetChildren()[0].GetChildren() 2277 2277 names = [child.GetName() for child in panel] 2278 2278 panel[names.index('viewPoint')].SetValue('%.3f, %.3f, %.3f'%(VP[0],VP[1],VP[2])) … … 2281 2281 page = getSelection() 2282 2282 if page: 2283 if self.dataDisplay.GetPageText(page) == 'Draw Atoms':2284 self.dataDisplay.GetPage(page).ClearSelection() #this is the Atoms grid in Draw Atoms2285 elif self.dataDisplay.GetPageText(page) == 'Atoms':2286 self.dataDisplay.GetPage(page).ClearSelection() #this is the Atoms grid in Atoms2283 if G2frame.dataDisplay.GetPageText(page) == 'Draw Atoms': 2284 G2frame.dataDisplay.GetPage(page).ClearSelection() #this is the Atoms grid in Draw Atoms 2285 elif G2frame.dataDisplay.GetPageText(page) == 'Atoms': 2286 G2frame.dataDisplay.GetPage(page).ClearSelection() #this is the Atoms grid in Atoms 2287 2287 2288 2288 def SetSelectedAtoms(ind,Add=False): 2289 2289 page = getSelection() 2290 2290 if page: 2291 if self.dataDisplay.GetPageText(page) == 'Draw Atoms':2292 self.dataDisplay.GetPage(page).SelectRow(ind,Add) #this is the Atoms grid in Draw Atoms2293 elif self.dataDisplay.GetPageText(page) == 'Atoms':2291 if G2frame.dataDisplay.GetPageText(page) == 'Draw Atoms': 2292 G2frame.dataDisplay.GetPage(page).SelectRow(ind,Add) #this is the Atoms grid in Draw Atoms 2293 elif G2frame.dataDisplay.GetPageText(page) == 'Atoms': 2294 2294 Id = drawAtoms[ind][-2] 2295 2295 for i,atom in enumerate(atomData): 2296 2296 if atom[-1] == Id: 2297 self.dataDisplay.GetPage(page).SelectRow(i) #this is the Atoms grid in Atoms2297 G2frame.dataDisplay.GetPage(page).SelectRow(i) #this is the Atoms grid in Atoms 2298 2298 2299 2299 def GetSelectedAtoms(): … … 2301 2301 Ind = [] 2302 2302 if page: 2303 if self.dataDisplay.GetPageText(page) == 'Draw Atoms':2304 Ind = self.dataDisplay.GetPage(page).GetSelectedRows() #this is the Atoms grid in Draw Atoms2305 elif self.dataDisplay.GetPageText(page) == 'Atoms':2306 Ind = self.dataDisplay.GetPage(page).GetSelectedRows() #this is the Atoms grid in Atoms2303 if G2frame.dataDisplay.GetPageText(page) == 'Draw Atoms': 2304 Ind = G2frame.dataDisplay.GetPage(page).GetSelectedRows() #this is the Atoms grid in Draw Atoms 2305 elif G2frame.dataDisplay.GetPageText(page) == 'Atoms': 2306 Ind = G2frame.dataDisplay.GetPage(page).GetSelectedRows() #this is the Atoms grid in Atoms 2307 2307 return Ind 2308 2308 … … 2612 2612 x,y,z = drawingData['testPos'][0] 2613 2613 # if altDown: 2614 # self.G2plotNB.status.SetStatusText('moving test point %.4f,%.4f,%.4f'%(x,y,z),1)2614 # G2frame.G2plotNB.status.SetStatusText('moving test point %.4f,%.4f,%.4f'%(x,y,z),1) 2615 2615 # else: 2616 # self.G2plotNB.status.SetStatusText('test point %.4f,%.4f,%.4f'%(x,y,z),1)2616 # G2frame.G2plotNB.status.SetStatusText('test point %.4f,%.4f,%.4f'%(x,y,z),1) 2617 2617 RenderUnitVectors(x,y,z) 2618 2618 Backbone = [] … … 2712 2712 2713 2713 try: 2714 plotNum = self.G2plotNB.plotList.index(generalData['Name'])2715 Page = self.G2plotNB.nb.GetPage(plotNum)2714 plotNum = G2frame.G2plotNB.plotList.index(generalData['Name']) 2715 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 2716 2716 except ValueError: 2717 Plot = self.G2plotNB.addOgl(generalData['Name'])2718 plotNum = self.G2plotNB.plotList.index(generalData['Name'])2719 Page = self.G2plotNB.nb.GetPage(plotNum)2717 Plot = G2frame.G2plotNB.addOgl(generalData['Name']) 2718 plotNum = G2frame.G2plotNB.plotList.index(generalData['Name']) 2719 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 2720 2720 Page.views = False 2721 2721 view = False 2722 2722 altDown = False 2723 2723 Page.SetFocus() 2724 cb = wx.ComboBox( self.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,2724 cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY, 2725 2725 choices=(' save as:','jpeg','tiff','bmp')) 2726 2726 cb.Bind(wx.EVT_COMBOBOX, OnKeyBox) -
TabularUnified trunk/GSASIIpwdGUI.py ¶
r447 r468 31 31 asind = lambda x: 180.*math.asin(x)/math.pi 32 32 33 def IsHistogramInAnyPhase( self,histoName):34 phases = G2gd.GetPatternTreeItemId( self,self.root,'Phases')33 def IsHistogramInAnyPhase(G2frame,histoName): 34 phases = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases') 35 35 if phases: 36 item, cookie = self.PatternTree.GetFirstChild(phases)36 item, cookie = G2frame.PatternTree.GetFirstChild(phases) 37 37 while item: 38 data = self.PatternTree.GetItemPyData(item)38 data = G2frame.PatternTree.GetItemPyData(item) 39 39 histoList = data['Histograms'].keys() 40 40 if histoName in histoList: 41 41 return True 42 item, cookie = self.PatternTree.GetNextChild(phases, cookie)42 item, cookie = G2frame.PatternTree.GetNextChild(phases, cookie) 43 43 return False 44 44 else: … … 52 52 'Omega':0.0,'Chi':0.0,'Phi':0.0} 53 53 54 def UpdatePeakGrid( self, data):55 if self.dataDisplay:56 self.dataFrame.Clear()54 def UpdatePeakGrid(G2frame, data): 55 if G2frame.dataDisplay: 56 G2frame.dataFrame.Clear() 57 57 58 58 def OnUnDo(event): 59 59 DoUnDo() 60 self.dataFrame.UnDo.Enable(False)60 G2frame.dataFrame.UnDo.Enable(False) 61 61 62 62 def DoUnDo(): 63 63 print 'Undo last refinement' 64 file = open( self.undofile,'rb')65 PatternId = self.PatternId64 file = open(G2frame.undofile,'rb') 65 PatternId = G2frame.PatternId 66 66 for item in ['Background','Instrument Parameters','Peak List']: 67 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, item),cPickle.load(file))68 if self.dataDisplay.GetName() == item:67 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, item),cPickle.load(file)) 68 if G2frame.dataDisplay.GetName() == item: 69 69 if item == 'Background': 70 UpdateBackground( self,self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, item)))70 UpdateBackground(G2frame,G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, item))) 71 71 elif item == 'Instrument Parameters': 72 UpdateInstrumentGrid( self,self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, item)))72 UpdateInstrumentGrid(G2frame,G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, item))) 73 73 elif item == 'Peak List': 74 UpdatePeakGrid( self,self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, item)))74 UpdatePeakGrid(G2frame,G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, item))) 75 75 print item,' recovered' 76 76 file.close() 77 77 78 78 def SaveState(): 79 self.undofile = self.dirname+'\\GSASII.save'80 file = open( self.undofile,'wb')81 PatternId = self.PatternId79 G2frame.undofile = G2frame.dirname+'\\GSASII.save' 80 file = open(G2frame.undofile,'wb') 81 PatternId = G2frame.PatternId 82 82 for item in ['Background','Instrument Parameters','Peak List']: 83 cPickle.dump( self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId,item)),file,1)83 cPickle.dump(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,item)),file,1) 84 84 file.close() 85 self.dataFrame.UnDo.Enable(True)85 G2frame.dataFrame.UnDo.Enable(True) 86 86 87 87 def OnLSQPeakFit(event): 88 if not G2frame.GSASprojectfile: #force a save of the gpx file so SaveState can wirte in the same directory 89 G2frame.OnFileSaveas(event) 88 90 OnPeakFit('LSQ') 89 91 … … 92 94 93 95 def OnClearPeaks(event): 94 dlg = wx.MessageDialog( self,'Delete all peaks?','Clear peak list',wx.OK|wx.CANCEL)96 dlg = wx.MessageDialog(G2frame,'Delete all peaks?','Clear peak list',wx.OK|wx.CANCEL) 95 97 try: 96 98 if dlg.ShowModal() == wx.ID_OK: … … 98 100 finally: 99 101 dlg.Destroy() 100 UpdatePeakGrid( self,peaks)101 G2plt.PlotPatterns( self)102 UpdatePeakGrid(G2frame,peaks) 103 G2plt.PlotPatterns(G2frame) 102 104 103 105 def OnPeakFit(FitPgm,oneCycle=False): 104 106 SaveState() 105 controls = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root, 'Controls'))107 controls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.root, 'Controls')) 106 108 if not controls: 107 109 controls = {'deriv type':'analytic','min dM/M':0.0001,} #fill in defaults if needed 108 110 print 'Peak Fitting with '+controls['deriv type']+' derivatives:' 109 PatternId = self.PatternId110 PickId = self.PickId111 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Peak List'))111 PatternId = G2frame.PatternId 112 PickId = G2frame.PickId 113 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List')) 112 114 if not peaks: 113 self.ErrorDialog('No peaks!','Nothing to fit!')115 G2frame.ErrorDialog('No peaks!','Nothing to fit!') 114 116 return 115 background = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Background'))116 limits = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Limits'))[1]117 inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))118 data = self.PatternTree.GetItemPyData(PatternId)[1]117 background = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Background')) 118 limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits'))[1] 119 inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters')) 120 data = G2frame.PatternTree.GetItemPyData(PatternId)[1] 119 121 wx.BeginBusyCursor() 120 122 try: … … 122 124 finally: 123 125 wx.EndBusyCursor() 124 UpdatePeakGrid( self,peaks)125 G2plt.PlotPatterns( self)126 UpdatePeakGrid(G2frame,peaks) 127 G2plt.PlotPatterns(G2frame) 126 128 print 'finished' 127 129 return 128 130 129 131 def OnResetSigGam(event): 130 PatternId = self.PatternId131 PickId = self.PickId132 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Peak List'))132 PatternId = G2frame.PatternId 133 PickId = G2frame.PickId 134 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List')) 133 135 if not peaks: 134 self.ErrorDialog('No peaks!','Nothing to do!')136 G2frame.ErrorDialog('No peaks!','Nothing to do!') 135 137 return 136 inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))138 inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters')) 137 139 Inst = dict(zip(inst[3],inst[1])) 138 140 print len(Inst['Type']) … … 141 143 peak[4] = Inst['U']*tand(peak[0]/2.0)**2+Inst['V']*tand(peak[0]/2.0)+Inst['W'] 142 144 peak[6] = Inst['X']/cosd(peak[0]/2.0)+Inst['Y']*tand(peak[0]/2.0) 143 UpdatePeakGrid( self,peaks)145 UpdatePeakGrid(G2frame,peaks) 144 146 145 147 def RefreshPeakGrid(event): … … 147 149 148 150 event.StopPropagation() 149 data = self.PeakTable.GetData()151 data = G2frame.PeakTable.GetData() 150 152 T = [] 151 153 for peak in data:T.append(peak[0]) … … 157 159 158 160 def setBackgroundColors(): 159 for r in range( self.dataDisplay.GetNumberRows()):160 for c in range( self.dataDisplay.GetNumberCols()):161 if self.dataDisplay.GetColLabelValue(c) in ['position','intensity','sigma','gamma']:162 if float( self.dataDisplay.GetCellValue(r,c)) < 0.:163 self.dataDisplay.SetCellBackgroundColour(r,c,wx.RED)161 for r in range(G2frame.dataDisplay.GetNumberRows()): 162 for c in range(G2frame.dataDisplay.GetNumberCols()): 163 if G2frame.dataDisplay.GetColLabelValue(c) in ['position','intensity','sigma','gamma']: 164 if float(G2frame.dataDisplay.GetCellValue(r,c)) < 0.: 165 G2frame.dataDisplay.SetCellBackgroundColour(r,c,wx.RED) 164 166 else: 165 self.dataDisplay.SetCellBackgroundColour(r,c,wx.WHITE)167 G2frame.dataDisplay.SetCellBackgroundColour(r,c,wx.WHITE) 166 168 167 169 def KeyEditPeakGrid(event): 168 rowList = self.dataDisplay.GetSelectedRows()169 colList = self.dataDisplay.GetSelectedCols()170 selectList = self.dataDisplay.GetSelectedCells()171 data = self.PatternTree.GetItemPyData(self.PickId)170 rowList = G2frame.dataDisplay.GetSelectedRows() 171 colList = G2frame.dataDisplay.GetSelectedCols() 172 selectList = G2frame.dataDisplay.GetSelectedCells() 173 data = G2frame.PatternTree.GetItemPyData(G2frame.PickId) 172 174 if event.GetKeyCode() == wx.WXK_RETURN: 173 175 event.Skip(True) … … 177 179 event.Skip(True) 178 180 elif rowList: 179 self.dataDisplay.ClearSelection()181 G2frame.dataDisplay.ClearSelection() 180 182 if event.GetKeyCode() == wx.WXK_DELETE: 181 self.dataDisplay.ClearGrid()183 G2frame.dataDisplay.ClearGrid() 182 184 rowList.reverse() 183 185 nDel = 0 184 186 for row in rowList: 185 self.PeakTable.DeleteRow(row)187 G2frame.PeakTable.DeleteRow(row) 186 188 nDel += 1 187 189 if nDel: 188 msg = wg.GridTableMessage( self.PeakTable,190 msg = wg.GridTableMessage(G2frame.PeakTable, 189 191 wg.GRIDTABLE_NOTIFY_ROWS_DELETED,0,nDel) 190 self.dataDisplay.ProcessTableMessage(msg)191 data = self.PeakTable.GetData()192 self.PatternTree.SetItemPyData(self.PickId,data[:-nDel])193 self.dataDisplay.ForceRefresh()192 G2frame.dataDisplay.ProcessTableMessage(msg) 193 data = G2frame.PeakTable.GetData() 194 G2frame.PatternTree.SetItemPyData(G2frame.PickId,data[:-nDel]) 195 G2frame.dataDisplay.ForceRefresh() 194 196 setBackgroundColors() 195 if not len( self.PatternTree.GetItemPyData(self.PickId)):196 self.dataFrame.PeakFit.Enable(False)197 if not len(G2frame.PatternTree.GetItemPyData(G2frame.PickId)): 198 G2frame.dataFrame.PeakFit.Enable(False) 197 199 198 200 elif colList: 199 self.dataDisplay.ClearSelection()201 G2frame.dataDisplay.ClearSelection() 200 202 key = event.GetKeyCode() 201 203 for col in colList: 202 if self.PeakTable.GetTypeName(0,col) == wg.GRID_VALUE_BOOL:204 if G2frame.PeakTable.GetTypeName(0,col) == wg.GRID_VALUE_BOOL: 203 205 if key == 89: #'Y' 204 for row in range( self.PeakTable.GetNumberRows()): data[row][col]=True206 for row in range(G2frame.PeakTable.GetNumberRows()): data[row][col]=True 205 207 elif key == 78: #'N' 206 for row in range( self.PeakTable.GetNumberRows()): data[row][col]=False208 for row in range(G2frame.PeakTable.GetNumberRows()): data[row][col]=False 207 209 elif selectList: 208 self.dataDisplay.ClearSelection()210 G2frame.dataDisplay.ClearSelection() 209 211 key = event.GetKeyCode() 210 212 for row,col in selectList: 211 if self.PeakTable.GetTypeName(row,col) == wg.GRID_VALUE_BOOL:213 if G2frame.PeakTable.GetTypeName(row,col) == wg.GRID_VALUE_BOOL: 212 214 if key == 89: #'Y' 213 215 data[row][col]=True 214 216 elif key == 78: #'N' 215 217 data[row][col]=False 216 G2plt.PlotPatterns( self)218 G2plt.PlotPatterns(G2frame) 217 219 218 self.dataFrame.SetMenuBar(self.dataFrame.PeakMenu)219 if not self.dataFrame.GetStatusBar():220 Status = self.dataFrame.CreateStatusBar()221 self.Bind(wx.EVT_MENU, OnUnDo, id=G2gd.wxID_UNDO)222 self.Bind(wx.EVT_MENU, OnLSQPeakFit, id=G2gd.wxID_LSQPEAKFIT)223 self.Bind(wx.EVT_MENU, OnOneCycle, id=G2gd.wxID_LSQONECYCLE)224 self.Bind(wx.EVT_MENU, OnClearPeaks, id=G2gd.wxID_CLEARPEAKS)225 self.Bind(wx.EVT_MENU, OnResetSigGam, id=G2gd.wxID_RESETSIGGAM)226 self.dataFrame.PeakFit.Enable(False)220 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.PeakMenu) 221 if not G2frame.dataFrame.GetStatusBar(): 222 Status = G2frame.dataFrame.CreateStatusBar() 223 G2frame.Bind(wx.EVT_MENU, OnUnDo, id=G2gd.wxID_UNDO) 224 G2frame.Bind(wx.EVT_MENU, OnLSQPeakFit, id=G2gd.wxID_LSQPEAKFIT) 225 G2frame.Bind(wx.EVT_MENU, OnOneCycle, id=G2gd.wxID_LSQONECYCLE) 226 G2frame.Bind(wx.EVT_MENU, OnClearPeaks, id=G2gd.wxID_CLEARPEAKS) 227 G2frame.Bind(wx.EVT_MENU, OnResetSigGam, id=G2gd.wxID_RESETSIGGAM) 228 G2frame.dataFrame.PeakFit.Enable(False) 227 229 if data: 228 self.dataFrame.PeakFit.Enable(True)229 self.dataFrame.PFOneCycle.Enable(True)230 self.PickTable = []230 G2frame.dataFrame.PeakFit.Enable(True) 231 G2frame.dataFrame.PFOneCycle.Enable(True) 232 G2frame.PickTable = [] 231 233 rowLabels = [] 232 234 for i in range(len(data)): rowLabels.append(str(i+1)) … … 244 246 for key in T: X.append(D[key]) 245 247 data = X 246 self.PatternTree.SetItemPyData(self.PickId,data)247 self.PeakTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)248 self.dataFrame.SetLabel('Peak List')249 self.dataDisplay = G2gd.GSGrid(parent=self.dataFrame)250 self.dataDisplay.SetTable(self.PeakTable, True)248 G2frame.PatternTree.SetItemPyData(G2frame.PickId,data) 249 G2frame.PeakTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types) 250 G2frame.dataFrame.SetLabel('Peak List') 251 G2frame.dataDisplay = G2gd.GSGrid(parent=G2frame.dataFrame) 252 G2frame.dataDisplay.SetTable(G2frame.PeakTable, True) 251 253 setBackgroundColors() 252 self.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshPeakGrid)253 self.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)254 self.dataDisplay.SetMargins(0,0)255 self.dataDisplay.AutoSizeColumns(False)256 self.dataFrame.setSizePosLeft([535,350])257 258 def UpdateBackground( self,data):254 G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshPeakGrid) 255 G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid) 256 G2frame.dataDisplay.SetMargins(0,0) 257 G2frame.dataDisplay.AutoSizeColumns(False) 258 G2frame.dataFrame.setSizePosLeft([535,350]) 259 260 def UpdateBackground(G2frame,data): 259 261 if len(data) < 2: #add Debye diffuse & peaks scattering here 260 262 data.append({'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]}) … … 264 266 265 267 def OnBackCopy(event): 266 histList = ['All',]+G2gd.GetPatternTreeDataNames( self,['PWDR',])268 histList = ['All',]+G2gd.GetPatternTreeDataNames(G2frame,['PWDR',]) 267 269 copyList = [] 268 dlg = wx.MultiChoiceDialog( self,270 dlg = wx.MultiChoiceDialog(G2frame, 269 271 'Copy parameters to which histograms?', 'Copy parameters', 270 272 histList, wx.CHOICEDLG_STYLE) … … 277 279 copyList = histList[1:] 278 280 for item in copyList: 279 Id = G2gd.GetPatternTreeItemId( self,self.root,item)280 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Background'),281 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item) 282 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Background'), 281 283 copy.copy(data)) 282 284 finally: … … 302 304 for i in range(N,M): 303 305 del(item[-1]) 304 self.PatternTree.SetItemPyData(BackId,data)305 UpdateBackground( self,data)306 G2frame.PatternTree.SetItemPyData(BackId,data) 307 UpdateBackground(G2frame,data) 306 308 307 309 def OnBakVal(event): … … 317 319 backSizer = wx.BoxSizer(wx.VERTICAL) 318 320 topSizer = wx.BoxSizer(wx.HORIZONTAL) 319 topSizer.Add(wx.StaticText( self.dataDisplay,-1,' Background function: '),0,wx.ALIGN_CENTER_VERTICAL)320 bakType = wx.ComboBox( self.dataDisplay,value=data[0][0],321 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Background function: '),0,wx.ALIGN_CENTER_VERTICAL) 322 bakType = wx.ComboBox(G2frame.dataDisplay,value=data[0][0], 321 323 choices=Choices,style=wx.CB_READONLY|wx.CB_DROPDOWN) 322 324 bakType.Bind(wx.EVT_COMBOBOX, OnNewType) 323 325 topSizer.Add(bakType) 324 326 topSizer.Add((5,0),0) 325 bakRef = wx.CheckBox( self.dataDisplay,label=' Refine?')327 bakRef = wx.CheckBox(G2frame.dataDisplay,label=' Refine?') 326 328 bakRef.SetValue(bool(data[0][1])) 327 329 bakRef.Bind(wx.EVT_CHECKBOX, OnBakRef) 328 330 topSizer.Add(bakRef,0,wx.ALIGN_CENTER_VERTICAL) 329 topSizer.Add(wx.StaticText( self.dataDisplay,-1,' No. coeff.: '),0,wx.ALIGN_CENTER_VERTICAL)330 bakTerms = wx.ComboBox( self.dataDisplay,-1,value=str(data[0][2]),choices=[str(i+1) for i in range(36)],331 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' No. coeff.: '),0,wx.ALIGN_CENTER_VERTICAL) 332 bakTerms = wx.ComboBox(G2frame.dataDisplay,-1,value=str(data[0][2]),choices=[str(i+1) for i in range(36)], 331 333 style=wx.CB_READONLY|wx.CB_DROPDOWN) 332 334 bakTerms.Bind(wx.EVT_COMBOBOX,OnBakTerms) … … 334 336 topSizer.Add((5,0),0) 335 337 backSizer.Add(topSizer) 336 backSizer.Add(wx.StaticText( self.dataDisplay,-1,' Background coefficients:'),0,wx.ALIGN_CENTER_VERTICAL)338 backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Background coefficients:'),0,wx.ALIGN_CENTER_VERTICAL) 337 339 bakSizer = wx.FlexGridSizer(1,5,5,5) 338 340 for i,value in enumerate(data[0][3:]): 339 bakVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,'%10.4f'%(value),style=wx.TE_PROCESS_ENTER)341 bakVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.4f'%(value),style=wx.TE_PROCESS_ENTER) 340 342 bakSizer.Add(bakVal,0,wx.ALIGN_CENTER_VERTICAL) 341 343 ValObj[bakVal.GetId()] = [i+3] … … 357 359 for i in range(N,M): 358 360 del(data[1]['debyeTerms'][-1]) 359 UpdateBackground( self,data)361 UpdateBackground(G2frame,data) 360 362 361 363 def KeyEditPeakGrid(event): … … 380 382 debSizer = wx.BoxSizer(wx.VERTICAL) 381 383 topSizer = wx.BoxSizer(wx.HORIZONTAL) 382 topSizer.Add(wx.StaticText( self.dataDisplay,-1,' Debye scattering: '),0,wx.ALIGN_CENTER_VERTICAL)383 topSizer.Add(wx.StaticText( self.dataDisplay,-1,' No. coeff.: '),0,wx.ALIGN_CENTER_VERTICAL)384 debTerms = wx.ComboBox( self.dataDisplay,-1,value=str(data[1]['nDebye']),choices=[str(i) for i in range(12)],384 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Debye scattering: '),0,wx.ALIGN_CENTER_VERTICAL) 385 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' No. coeff.: '),0,wx.ALIGN_CENTER_VERTICAL) 386 debTerms = wx.ComboBox(G2frame.dataDisplay,-1,value=str(data[1]['nDebye']),choices=[str(i) for i in range(12)], 385 387 style=wx.CB_READONLY|wx.CB_DROPDOWN) 386 388 debTerms.Bind(wx.EVT_COMBOBOX,OnDebTerms) … … 389 391 debSizer.Add(topSizer) 390 392 if data[1]['nDebye']: 391 debSizer.Add(wx.StaticText( self.dataDisplay,-1,' Debye diffuse terms:'),0,wx.ALIGN_CENTER_VERTICAL)393 debSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Debye diffuse terms:'),0,wx.ALIGN_CENTER_VERTICAL) 392 394 rowLabels = [] 393 395 for i in range(len(data[1]['debyeTerms'])): rowLabels.append(str(i)) … … 397 399 wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_BOOL] 398 400 debyeTable = G2gd.Table(data[1]['debyeTerms'],rowLabels=rowLabels,colLabels=colLabels,types=Types) 399 debyeGrid = G2gd.GSGrid(parent= self.dataDisplay)401 debyeGrid = G2gd.GSGrid(parent=G2frame.dataDisplay) 400 402 debyeGrid.SetTable(debyeTable, True) 401 403 debyeGrid.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid) … … 416 418 for i in range(N,M): 417 419 del(data[1]['peaksList'][-1]) 418 UpdateBackground( self,data)420 UpdateBackground(G2frame,data) 419 421 420 422 def KeyEditPeakGrid(event): … … 438 440 peaksSizer = wx.BoxSizer(wx.VERTICAL) 439 441 topSizer = wx.BoxSizer(wx.HORIZONTAL) 440 topSizer.Add(wx.StaticText( self.dataDisplay,-1,' Peaks in background: '),0,wx.ALIGN_CENTER_VERTICAL)441 topSizer.Add(wx.StaticText( self.dataDisplay,-1,' No. peaks: '),0,wx.ALIGN_CENTER_VERTICAL)442 peaks = wx.ComboBox( self.dataDisplay,-1,value=str(data[1]['nPeaks']),choices=[str(i) for i in range(12)],442 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Peaks in background: '),0,wx.ALIGN_CENTER_VERTICAL) 443 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' No. peaks: '),0,wx.ALIGN_CENTER_VERTICAL) 444 peaks = wx.ComboBox(G2frame.dataDisplay,-1,value=str(data[1]['nPeaks']),choices=[str(i) for i in range(12)], 443 445 style=wx.CB_READONLY|wx.CB_DROPDOWN) 444 446 peaks.Bind(wx.EVT_COMBOBOX,OnPeaks) … … 447 449 peaksSizer.Add(topSizer) 448 450 if data[1]['nPeaks']: 449 peaksSizer.Add(wx.StaticText( self.dataDisplay,-1,' Peak list:'),0,wx.ALIGN_CENTER_VERTICAL)451 peaksSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Peak list:'),0,wx.ALIGN_CENTER_VERTICAL) 450 452 rowLabels = [] 451 453 for i in range(len(data[1]['peaksList'])): rowLabels.append(str(i)) … … 456 458 wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_BOOL] 457 459 peaksTable = G2gd.Table(data[1]['peaksList'],rowLabels=rowLabels,colLabels=colLabels,types=Types) 458 peaksGrid = G2gd.GSGrid(parent= self.dataDisplay)460 peaksGrid = G2gd.GSGrid(parent=G2frame.dataDisplay) 459 461 peaksGrid.SetTable(peaksTable, True) 460 462 peaksGrid.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid) … … 463 465 return peaksSizer 464 466 465 if self.dataDisplay:466 self.dataFrame.Clear()467 self.dataDisplay = wx.Panel(self.dataFrame)468 self.dataFrame.SetMenuBar(self.dataFrame.BackMenu)469 self.dataFrame.SetLabel('Background')470 if not self.dataFrame.GetStatusBar():471 Status = self.dataFrame.CreateStatusBar()472 self.Bind(wx.EVT_MENU,OnBackCopy,id=G2gd.wxID_BACKCOPY)473 BackId = G2gd.GetPatternTreeItemId( self,self.PatternId, 'Background')467 if G2frame.dataDisplay: 468 G2frame.dataFrame.Clear() 469 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 470 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BackMenu) 471 G2frame.dataFrame.SetLabel('Background') 472 if not G2frame.dataFrame.GetStatusBar(): 473 Status = G2frame.dataFrame.CreateStatusBar() 474 G2frame.Bind(wx.EVT_MENU,OnBackCopy,id=G2gd.wxID_BACKCOPY) 475 BackId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Background') 474 476 Choices = ['chebyschev','cosine','lin interpolate','inv interpolate','log interpolate'] 475 477 mainSizer = wx.BoxSizer(wx.VERTICAL) … … 480 482 mainSizer.Add(PeaksSizer()) 481 483 mainSizer.Layout() 482 self.dataDisplay.SetSizer(mainSizer)483 self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))484 485 def UpdateLimitsGrid( self, data):486 if self.dataDisplay:487 self.dataFrame.Clear()484 G2frame.dataDisplay.SetSizer(mainSizer) 485 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame)) 486 487 def UpdateLimitsGrid(G2frame, data): 488 if G2frame.dataDisplay: 489 G2frame.dataFrame.Clear() 488 490 489 491 def RefreshLimitsGrid(event): 490 492 event.StopPropagation() 491 data = self.LimitsTable.GetData()493 data = G2frame.LimitsTable.GetData() 492 494 old = data[0] 493 495 new = data[1] … … 495 497 new[1] = max(new[0],min(old[1],new[1])) 496 498 data = [old,new] 497 G2plt.PlotPatterns( self)499 G2plt.PlotPatterns(G2frame) 498 500 499 501 def OnLimitCopy(event): 500 histList = ['All',]+G2gd.GetPatternTreeDataNames( self,['PWDR',])502 histList = ['All',]+G2gd.GetPatternTreeDataNames(G2frame,['PWDR',]) 501 503 copyList = [] 502 dlg = wx.MultiChoiceDialog( self,504 dlg = wx.MultiChoiceDialog(G2frame, 503 505 'Copy limits to which histograms?', 'Copy limits', 504 506 histList, wx.CHOICEDLG_STYLE) … … 511 513 copyList = histList[1:] 512 514 for item in copyList: 513 Id = G2gd.GetPatternTreeItemId( self,self.root,item)514 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Limits'),515 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item) 516 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Limits'), 515 517 copy.copy(data)) 516 518 finally: 517 519 dlg.Destroy() 518 520 519 self.LimitsTable = []521 G2frame.LimitsTable = [] 520 522 colLabels = ['Tmin','Tmax'] 521 523 rowLabels = ['original','changed'] 522 524 Types = 2*[wg.GRID_VALUE_FLOAT+':10,3',] 523 self.LimitsTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)524 self.dataFrame.SetLabel('Limits')525 self.dataFrame.SetMenuBar(self.dataFrame.LimitMenu)526 if not self.dataFrame.GetStatusBar():527 Status = self.dataFrame.CreateStatusBar()528 self.Bind(wx.EVT_MENU,OnLimitCopy,id=G2gd.wxID_LIMITCOPY)529 self.dataDisplay = G2gd.GSGrid(parent=self.dataFrame)530 self.dataDisplay.SetTable(self.LimitsTable, True)531 self.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshLimitsGrid)532 self.dataDisplay.SetMargins(0,0)533 self.dataDisplay.AutoSizeColumns(False)534 self.dataFrame.setSizePosLeft([230,160])525 G2frame.LimitsTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types) 526 G2frame.dataFrame.SetLabel('Limits') 527 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.LimitMenu) 528 if not G2frame.dataFrame.GetStatusBar(): 529 Status = G2frame.dataFrame.CreateStatusBar() 530 G2frame.Bind(wx.EVT_MENU,OnLimitCopy,id=G2gd.wxID_LIMITCOPY) 531 G2frame.dataDisplay = G2gd.GSGrid(parent=G2frame.dataFrame) 532 G2frame.dataDisplay.SetTable(G2frame.LimitsTable, True) 533 G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshLimitsGrid) 534 G2frame.dataDisplay.SetMargins(0,0) 535 G2frame.dataDisplay.AutoSizeColumns(False) 536 G2frame.dataFrame.setSizePosLeft([230,160]) 535 537 536 def UpdateInstrumentGrid( self,data):538 def UpdateInstrumentGrid(G2frame,data): 537 539 if len(data) > 3: #powder data 538 540 insVal = dict(zip(data[3],data[1])) … … 568 570 569 571 def updateData(inst,ref): 570 return inst2data(inst,ref, self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,571 self.PatternId,'Instrument Parameters')))572 return inst2data(inst,ref,G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, 573 G2frame.PatternId,'Instrument Parameters'))) 572 574 573 575 def RefreshInstrumentGrid(event,doAnyway=False): 574 576 if doAnyway or event.GetRow() == 1: 575 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Peak List'))577 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Peak List')) 576 578 if 'P' in insVal['Type']: #update powder peak parameters 577 579 for peak in peaks: … … 583 585 data = updateData(insVal,insRef) 584 586 RefreshInstrumentGrid(event,doAnyway=True) #to get peaks updated 585 UpdateInstrumentGrid( self,data)587 UpdateInstrumentGrid(G2frame,data) 586 588 587 589 def OnInstCopy(event): 588 histList = ['All',]+G2gd.GetPatternTreeDataNames( self,['PWDR',])590 histList = ['All',]+G2gd.GetPatternTreeDataNames(G2frame,['PWDR',]) 589 591 copyList = [] 590 dlg = wx.MultiChoiceDialog( self,592 dlg = wx.MultiChoiceDialog(G2frame, 591 593 'Copy parameters to which histograms?', 'Copy parameters', 592 594 histList, wx.CHOICEDLG_STYLE) … … 599 601 copyList = histList[1:] 600 602 for item in copyList: 601 Id = G2gd.GetPatternTreeItemId( self,self.root,item)602 instData = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Instrument Parameters'))603 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item) 604 instData = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Instrument Parameters')) 603 605 if len(data) == len(instData): #don't mix lam & lam1/lam2 parms! 604 606 for i,item in enumerate(data[1:]): #skip default values in tuple … … 620 622 data[2] = data[2][:2]+data[2][4:] 621 623 data[3] = data[3][:1]+['Lam',]+data[3][4:] 622 UpdateInstrumentGrid( self,data)624 UpdateInstrumentGrid(G2frame,data) 623 625 624 626 def OnNewType(event): 625 627 insVal['Type'] = typePick.GetValue() 626 628 data = updateData(insVal,insRef) 627 UpdateInstrumentGrid( self,data)629 UpdateInstrumentGrid(G2frame,data) 628 630 629 631 def OnLamPick(event): … … 632 634 insVal['Lam2'] = waves[lamType][1] 633 635 data = updateData(insVal,insRef) 634 UpdateInstrumentGrid( self,data)636 UpdateInstrumentGrid(G2frame,data) 635 637 636 638 def OnRatValue(event): … … 681 683 data = updateData(insVal,insRef) 682 684 683 if self.dataDisplay:684 self.dataFrame.Clear()685 histoName = self.PatternTree.GetItemPyData(self.PatternId)[-1]686 ifHisto = IsHistogramInAnyPhase( self,histoName)687 self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)688 self.dataFrame.SetLabel('Instrument Parameters')689 self.dataDisplay = wx.Panel(self.dataFrame)685 if G2frame.dataDisplay: 686 G2frame.dataFrame.Clear() 687 histoName = G2frame.PatternTree.GetItemPyData(G2frame.PatternId)[-1] 688 ifHisto = IsHistogramInAnyPhase(G2frame,histoName) 689 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu) 690 G2frame.dataFrame.SetLabel('Instrument Parameters') 691 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 690 692 instSizer = wx.FlexGridSizer(2,6,5,5) 691 instSizer.Add(wx.StaticText( self.dataDisplay,-1,' Histogram Type:'),0,wx.ALIGN_CENTER_VERTICAL)693 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Histogram Type:'),0,wx.ALIGN_CENTER_VERTICAL) 692 694 if 'P' in insVal['Type']: #powder data 693 self.dataFrame.SetMenuBar(self.dataFrame.InstMenu)694 if not self.dataFrame.GetStatusBar():695 Status = self.dataFrame.CreateStatusBar()696 self.Bind(wx.EVT_MENU,OnReset,id=G2gd.wxID_INSTPRMRESET)697 self.Bind(wx.EVT_MENU,OnInstCopy,id=G2gd.wxID_INSTCOPY)698 self.Bind(wx.EVT_MENU,OnWaveChange,id=G2gd.wxID_CHANGEWAVETYPE)699 typePick = wx.ComboBox( self.dataDisplay,value=insVal['Type'],695 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.InstMenu) 696 if not G2frame.dataFrame.GetStatusBar(): 697 Status = G2frame.dataFrame.CreateStatusBar() 698 G2frame.Bind(wx.EVT_MENU,OnReset,id=G2gd.wxID_INSTPRMRESET) 699 G2frame.Bind(wx.EVT_MENU,OnInstCopy,id=G2gd.wxID_INSTCOPY) 700 G2frame.Bind(wx.EVT_MENU,OnWaveChange,id=G2gd.wxID_CHANGEWAVETYPE) 701 typePick = wx.ComboBox(G2frame.dataDisplay,value=insVal['Type'], 700 702 choices=['PXC','PNC','PNT'],style=wx.CB_READONLY|wx.CB_DROPDOWN) 701 703 typePick.Bind(wx.EVT_COMBOBOX, OnNewType) … … 708 710 insRef['Azimuth'] = False 709 711 #end of patch 710 instSizer.Add(wx.StaticText( self.dataDisplay,-1,' Azimuth: %7.2f'%(insVal['Azimuth'])),0,wx.ALIGN_CENTER_VERTICAL)712 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Azimuth: %7.2f'%(insVal['Azimuth'])),0,wx.ALIGN_CENTER_VERTICAL) 711 713 if 'Lam1' in insVal: 712 714 instSizer.Add((5,5),0) 713 715 instSizer.Add((5,5),0) 714 716 instSizer.Add((5,5),0) 715 instSizer.Add(wx.StaticText( self.dataDisplay,-1,' Ka1/Ka2:'),717 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Ka1/Ka2:'), 716 718 0,wx.ALIGN_CENTER_VERTICAL) 717 instSizer.Add(wx.StaticText( self.dataDisplay,-1,'%8.6f/%8.6f'%(insVal['Lam1'],insVal['Lam2'])),719 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,'%8.6f/%8.6f'%(insVal['Lam1'],insVal['Lam2'])), 718 720 0,wx.ALIGN_CENTER_VERTICAL) 719 721 waveSizer = wx.BoxSizer(wx.HORIZONTAL) 720 waveSizer.Add(wx.StaticText( self.dataDisplay,-1,'Select:'),0,wx.ALIGN_CENTER_VERTICAL)722 waveSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,'Select:'),0,wx.ALIGN_CENTER_VERTICAL) 721 723 choice = ['TiKa','CrKa','FeKa','CoKa','CuKa','MoKa','AgKa'] 722 lamPick = wx.ComboBox( self.dataDisplay,value=' ',choices=choice,style=wx.CB_READONLY|wx.CB_DROPDOWN)724 lamPick = wx.ComboBox(G2frame.dataDisplay,value=' ',choices=choice,style=wx.CB_READONLY|wx.CB_DROPDOWN) 723 725 lamPick.Bind(wx.EVT_COMBOBOX, OnLamPick) 724 726 waveSizer.Add(lamPick,0) 725 727 instSizer.Add(waveSizer,0) 726 instSizer.Add(wx.StaticText( self.dataDisplay,-1,' I(L2)/I(L1): (%10.4f)'%(insDef['I(L2)/I(L1)'])),728 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' I(L2)/I(L1): (%10.4f)'%(insDef['I(L2)/I(L1)'])), 727 729 0,wx.ALIGN_CENTER_VERTICAL) 728 ratVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,'%10.4f'%(insVal['I(L2)/I(L1)']),style=wx.TE_PROCESS_ENTER)730 ratVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.4f'%(insVal['I(L2)/I(L1)']),style=wx.TE_PROCESS_ENTER) 729 731 ratVal.Bind(wx.EVT_TEXT_ENTER,OnRatValue) 730 732 ratVal.Bind(wx.EVT_KILL_FOCUS,OnRatValue) 731 733 instSizer.Add(ratVal,0) 732 ratRef = wx.CheckBox( self.dataDisplay,label=' Refine?')734 ratRef = wx.CheckBox(G2frame.dataDisplay,label=' Refine?') 733 735 ratRef.SetValue(bool(insRef['I(L2)/I(L1)'])) 734 736 ratRef.Bind(wx.EVT_CHECKBOX, OnRatRef) … … 736 738 737 739 else: 738 instSizer.Add(wx.StaticText( self.dataDisplay,-1,' Lam: (%10.6f)'%(insDef['Lam'])),740 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Lam: (%10.6f)'%(insDef['Lam'])), 739 741 0,wx.ALIGN_CENTER_VERTICAL) 740 waveVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,'%10.6f'%(insVal['Lam']),style=wx.TE_PROCESS_ENTER)742 waveVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.6f'%(insVal['Lam']),style=wx.TE_PROCESS_ENTER) 741 743 waveVal.Bind(wx.EVT_TEXT_ENTER,OnWaveValue) 742 744 waveVal.Bind(wx.EVT_KILL_FOCUS,OnWaveValue) 743 745 instSizer.Add(waveVal,0,wx.ALIGN_CENTER_VERTICAL) 744 746 if ifHisto: 745 waveRef = wx.CheckBox( self.dataDisplay,label=' Refine?')747 waveRef = wx.CheckBox(G2frame.dataDisplay,label=' Refine?') 746 748 waveRef.SetValue(bool(insRef['Lam'])) 747 749 waveRef.Bind(wx.EVT_CHECKBOX, OnWaveRef) … … 753 755 Fmt = ' %s: ('+fmt+')' 754 756 if item in insDef: 755 instSizer.Add(wx.StaticText( self.dataDisplay,-1,Fmt%(item,insDef[item])),757 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,Fmt%(item,insDef[item])), 756 758 0,wx.ALIGN_CENTER_VERTICAL) 757 itemVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,fmt%(insVal[item]),style=wx.TE_PROCESS_ENTER)759 itemVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,fmt%(insVal[item]),style=wx.TE_PROCESS_ENTER) 758 760 ValObj[itemVal.GetId()] = [item,fmt] 759 761 itemVal.Bind(wx.EVT_TEXT_ENTER,OnItemValue) … … 761 763 instSizer.Add(itemVal,0,wx.ALIGN_CENTER_VERTICAL) 762 764 if ifHisto: 763 itemRef = wx.CheckBox( self.dataDisplay,wx.ID_ANY,label=' Refine?')765 itemRef = wx.CheckBox(G2frame.dataDisplay,wx.ID_ANY,label=' Refine?') 764 766 itemRef.SetValue(bool(insRef[item])) 765 767 RefObj[itemRef.GetId()] = item … … 777 779 fmt = '%10.5f' 778 780 Fmt = ' %s: ('+fmt+')' 779 instSizer.Add(wx.StaticText( self.dataDisplay,-1,Fmt%(item,insDef[item])),781 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,Fmt%(item,insDef[item])), 780 782 0,wx.ALIGN_CENTER_VERTICAL) 781 itemVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,fmt%(insVal[item]),style=wx.TE_PROCESS_ENTER)783 itemVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,fmt%(insVal[item]),style=wx.TE_PROCESS_ENTER) 782 784 ValObj[itemVal.GetId()] = [item,fmt] 783 785 itemVal.Bind(wx.EVT_TEXT_ENTER,OnItemValue) 784 786 itemVal.Bind(wx.EVT_KILL_FOCUS,OnItemValue) 785 787 instSizer.Add(itemVal,0,wx.ALIGN_CENTER_VERTICAL) 786 itemRef = wx.CheckBox( self.dataDisplay,wx.ID_ANY,label=' Refine?')788 itemRef = wx.CheckBox(G2frame.dataDisplay,wx.ID_ANY,label=' Refine?') 787 789 itemRef.SetValue(bool(insRef[item])) 788 790 RefObj[itemRef.GetId()] = item … … 795 797 796 798 else: #single crystal data 797 typePick = wx.ComboBox( self.dataDisplay,value=insVal['Type'],799 typePick = wx.ComboBox(G2frame.dataDisplay,value=insVal['Type'], 798 800 choices=['SXC','SNC','SNT'],style=wx.CB_READONLY|wx.CB_DROPDOWN) 799 801 typePick.Bind(wx.EVT_COMBOBOX, OnNewType) 800 802 instSizer.Add(typePick,0,wx.ALIGN_CENTER_VERTICAL) 801 803 if 'C' in insVal['Type']: #constant wavelength 802 instSizer.Add(wx.StaticText( self.dataDisplay,-1,' Lam: %10.6f'%(insDef['Lam'])),804 instSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Lam: %10.6f'%(insDef['Lam'])), 803 805 0,wx.ALIGN_CENTER_VERTICAL) 804 806 else: #time of flight (neutrons) … … 808 810 mainSizer.Add(instSizer,0) 809 811 mainSizer.Layout() 810 self.dataDisplay.SetSizer(mainSizer)811 self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))812 G2frame.dataDisplay.SetSizer(mainSizer) 813 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame)) 812 814 813 def UpdateSampleGrid( self,data):815 def UpdateSampleGrid(G2frame,data): 814 816 815 817 def OnSampleCopy(event): 816 histName = self.PatternTree.GetItemText(self.PatternId)818 histName = G2frame.PatternTree.GetItemText(G2frame.PatternId) 817 819 copyNames = ['Scale',] 818 820 dataType = data['Type'] … … 829 831 copyDict[parm] = data[parm] 830 832 histList = ['All '+histType,] 831 item, cookie = self.PatternTree.GetFirstChild(self.root)833 item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 832 834 while item: 833 name = self.PatternTree.GetItemText(item)835 name = G2frame.PatternTree.GetItemText(item) 834 836 if histType in name and name != histName: 835 837 histList.append(name) 836 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)838 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 837 839 if len(histList) == 1: #nothing to copy to! 838 840 return 839 841 copyList = [] 840 dlg = wx.MultiChoiceDialog( self,'Copy parameters from\n'+histName,842 dlg = wx.MultiChoiceDialog(G2frame,'Copy parameters from\n'+histName, 841 843 'Copy parameters to which histograms?',histList,wx.CHOICEDLG_STYLE) 842 844 try: … … 848 850 copyList = histList[1:] 849 851 for item in copyList: 850 Id = G2gd.GetPatternTreeItemId( self,self.root,item)851 sampleData = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Sample Parameters'))852 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item) 853 sampleData = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Sample Parameters')) 852 854 sampleData.update(copy.deepcopy(copyDict)) 853 855 finally: 854 856 dlg.Destroy() 855 857 856 if self.dataDisplay:857 self.dataFrame.Clear()858 self.dataFrame.SetMenuBar(self.dataFrame.SampleMenu)859 self.dataFrame.SetLabel('Sample Parameters')860 self.Bind(wx.EVT_MENU, OnSampleCopy, id=G2gd.wxID_SAMPLECOPY)861 if not self.dataFrame.GetStatusBar():862 Status = self.dataFrame.CreateStatusBar()863 self.dataDisplay = wx.Panel(self.dataFrame)858 if G2frame.dataDisplay: 859 G2frame.dataFrame.Clear() 860 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.SampleMenu) 861 G2frame.dataFrame.SetLabel('Sample Parameters') 862 G2frame.Bind(wx.EVT_MENU, OnSampleCopy, id=G2gd.wxID_SAMPLECOPY) 863 if not G2frame.dataFrame.GetStatusBar(): 864 Status = G2frame.dataFrame.CreateStatusBar() 865 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 864 866 865 867 #patch … … 908 910 data['Shift'] = [0.0,False] 909 911 data['Transparency'] = [0.0,False] 910 self.dataDisplay.Destroy()911 UpdateSampleGrid( self,data)912 G2frame.dataDisplay.Destroy() 913 UpdateSampleGrid(G2frame,data) 912 914 913 915 def OnParmRef(event): … … 932 934 933 935 mainSizer = wx.BoxSizer(wx.VERTICAL) 934 mainSizer.Add(wx.StaticText( self.dataDisplay,label=' Sample parameters: '),0,wx.ALIGN_CENTER_VERTICAL)936 mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample parameters: '),0,wx.ALIGN_CENTER_VERTICAL) 935 937 mainSizer.Add((5,5),0) 936 938 parmSizer = wx.FlexGridSizer(9,2,5,0) 937 scaleRef = wx.CheckBox( self.dataDisplay,label=' Histogram scale factor: ')939 scaleRef = wx.CheckBox(G2frame.dataDisplay,label=' Histogram scale factor: ') 938 940 scaleRef.SetValue(data['Scale'][1]) 939 941 scaleRef.Bind(wx.EVT_CHECKBOX, OnScaleRef) 940 942 parmSizer.Add(scaleRef,0,wx.ALIGN_CENTER_VERTICAL) 941 scaleVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,943 scaleVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY, 942 944 '%.4f'%(data['Scale'][0]),style=wx.TE_PROCESS_ENTER) 943 945 scaleVal.Bind(wx.EVT_TEXT_ENTER,OnScaleVal) … … 946 948 typeSizer = wx.BoxSizer(wx.HORIZONTAL) 947 949 choices = ['Debye-Scherrer','Bragg-Brentano',] 948 histoType = wx.ComboBox( self.dataDisplay,wx.ID_ANY,value=data['Type'],choices=choices,950 histoType = wx.ComboBox(G2frame.dataDisplay,wx.ID_ANY,value=data['Type'],choices=choices, 949 951 style=wx.CB_READONLY|wx.CB_DROPDOWN) 950 952 histoType.Bind(wx.EVT_COMBOBOX, OnHistoType) … … 954 956 for parm in parms: 955 957 if 'list' in str(type(data[parm[0]])): 956 parmRef = wx.CheckBox( self.dataDisplay,label=parm[1])958 parmRef = wx.CheckBox(G2frame.dataDisplay,label=parm[1]) 957 959 objList[parmRef.GetId()] = parm[0] 958 960 parmRef.SetValue(data[parm[0]][1]) 959 961 parmRef.Bind(wx.EVT_CHECKBOX, OnParmRef) 960 962 parmSizer.Add(parmRef,0,wx.ALIGN_CENTER_VERTICAL) 961 parmVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,963 parmVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY, 962 964 parm[2]%(data[parm[0]][0]),style=wx.TE_PROCESS_ENTER) 963 965 else: 964 parmSizer.Add(wx.StaticText( self.dataDisplay,label=parm[1]),966 parmSizer.Add(wx.StaticText(G2frame.dataDisplay,label=parm[1]), 965 967 0,wx.ALIGN_CENTER_VERTICAL) 966 parmVal = wx.TextCtrl( self.dataDisplay,wx.ID_ANY,968 parmVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY, 967 969 parm[2]%(data[parm[0]]),style=wx.TE_PROCESS_ENTER) 968 970 objList[parmVal.GetId()] = parm … … 974 976 975 977 mainSizer.Layout() 976 self.dataDisplay.SetSizer(mainSizer)977 Size = mainSizer.Fit( self.dataFrame)978 self.dataDisplay.SetSize(Size)979 self.dataFrame.setSizePosLeft(Size)978 G2frame.dataDisplay.SetSizer(mainSizer) 979 Size = mainSizer.Fit(G2frame.dataFrame) 980 G2frame.dataDisplay.SetSize(Size) 981 G2frame.dataFrame.setSizePosLeft(Size) 980 982 981 def UpdateIndexPeaksGrid( self, data):982 IndexId = G2gd.GetPatternTreeItemId( self,self.PatternId, 'Index Peak List')983 inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Instrument Parameters'))983 def UpdateIndexPeaksGrid(G2frame, data): 984 IndexId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List') 985 inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters')) 984 986 Inst = dict(zip(inst[3],inst[1])) 985 987 try: … … 990 992 def RefreshIndexPeaksGrid(event): 991 993 r,c = event.GetRow(),event.GetCol() 992 data = self.IndexPeaksTable.GetData()994 data = G2frame.IndexPeaksTable.GetData() 993 995 if c == 2: 994 996 if data[r][c]: … … 996 998 else: 997 999 data[r][c] = True 998 self.IndexPeaksTable.SetData(data)999 self.PatternTree.SetItemPyData(IndexId,data)1000 self.dataDisplay.ForceRefresh()1000 G2frame.IndexPeaksTable.SetData(data) 1001 G2frame.PatternTree.SetItemPyData(IndexId,data) 1002 G2frame.dataDisplay.ForceRefresh() 1001 1003 1002 1004 def OnReload(event): 1003 1005 data = [] 1004 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Peak List'))1006 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Peak List')) 1005 1007 for peak in peaks: 1006 1008 dsp = wave/(2.0*sind((peak[0]-Inst['Zero'])/2.0)) 1007 1009 data.append([peak[0],peak[2],True,False,0,0,0,dsp,0.0]) 1008 self.PatternTree.SetItemPyData(IndexId,data)1009 UpdateIndexPeaksGrid( self,data)1010 G2frame.PatternTree.SetItemPyData(IndexId,data) 1011 UpdateIndexPeaksGrid(G2frame,data) 1010 1012 1011 1013 def KeyEditPickGrid(event): 1012 colList = self.dataDisplay.GetSelectedCols()1013 rowList = self.dataDisplay.GetSelectedRows()1014 data = self.PatternTree.GetItemPyData(IndexId)1014 colList = G2frame.dataDisplay.GetSelectedCols() 1015 rowList = G2frame.dataDisplay.GetSelectedRows() 1016 data = G2frame.PatternTree.GetItemPyData(IndexId) 1015 1017 if event.GetKeyCode() == wx.WXK_RETURN: 1016 1018 event.Skip(True) … … 1020 1022 event.Skip(True) 1021 1023 elif colList: 1022 self.dataDisplay.ClearSelection()1024 G2frame.dataDisplay.ClearSelection() 1023 1025 key = event.GetKeyCode() 1024 1026 for col in colList: 1025 if self.IndexPeaksTable.GetColLabelValue(col) in ['use','refine']:1027 if G2frame.IndexPeaksTable.GetColLabelValue(col) in ['use','refine']: 1026 1028 if key == 89: #'Y' 1027 for row in range( self.IndexPeaksTable.GetNumberRows()): data[row][col]=True1029 for row in range(G2frame.IndexPeaksTable.GetNumberRows()): data[row][col]=True 1028 1030 elif key == 78: #'N' 1029 for row in range( self.IndexPeaksTable.GetNumberRows()): data[row][col]=False1031 for row in range(G2frame.IndexPeaksTable.GetNumberRows()): data[row][col]=False 1030 1032 1031 if self.dataDisplay:1032 self.dataFrame.Clear()1033 if not self.dataFrame.GetStatusBar():1034 Status = self.dataFrame.CreateStatusBar()1035 if 'PWD' in self.PatternTree.GetItemText(self.PatternId):1036 self.dataFrame.SetMenuBar(self.dataFrame.IndPeaksMenu)1037 self.Bind(wx.EVT_MENU, OnReload, id=G2gd.wxID_INDXRELOAD)1038 self.dataFrame.IndexPeaks.Enable(False)1039 self.IndexPeaksTable = []1033 if G2frame.dataDisplay: 1034 G2frame.dataFrame.Clear() 1035 if not G2frame.dataFrame.GetStatusBar(): 1036 Status = G2frame.dataFrame.CreateStatusBar() 1037 if 'PWD' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1038 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.IndPeaksMenu) 1039 G2frame.Bind(wx.EVT_MENU, OnReload, id=G2gd.wxID_INDXRELOAD) 1040 G2frame.dataFrame.IndexPeaks.Enable(False) 1041 G2frame.IndexPeaksTable = [] 1040 1042 if data: 1041 self.dataFrame.IndexPeaks.Enable(True)1042 cells = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Unit Cells List'))1043 G2frame.dataFrame.IndexPeaks.Enable(True) 1044 cells = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List')) 1043 1045 if cells: 1044 1046 cellist = cells[2] 1045 1047 dmin = cells[3] 1046 self.HKL = []1048 G2frame.HKL = [] 1047 1049 for i,cell in enumerate(cellist): 1048 1050 if cell[-1]: 1049 1051 ibrav = cell[2] 1050 1052 A = G2lat.cell2A(cell[3:9]) 1051 self.HKL = G2lat.GenHBravais(dmin,ibrav,A)1052 G2indx.IndexPeaks(data, self.HKL)1053 for hkl in self.HKL:1053 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 1054 G2indx.IndexPeaks(data,G2frame.HKL) 1055 for hkl in G2frame.HKL: 1054 1056 hkl.append(2.0*asind(wave/(2.*hkl[3]))+Inst['Zero']) 1055 1057 rowLabels = [] … … 1059 1061 wg.GRID_VALUE_BOOL,wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG, 1060 1062 wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_FLOAT+':10,5'] 1061 self.PatternTree.SetItemPyData(IndexId,data)1062 self.IndexPeaksTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)1063 self.dataFrame.SetLabel('Index Peak List')1064 self.dataDisplay = G2gd.GSGrid(parent=self.dataFrame)1065 self.dataDisplay.SetTable(self.IndexPeaksTable, True)1066 for r in range( self.dataDisplay.GetNumberRows()):1067 for c in range( self.dataDisplay.GetNumberCols()):1063 G2frame.PatternTree.SetItemPyData(IndexId,data) 1064 G2frame.IndexPeaksTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types) 1065 G2frame.dataFrame.SetLabel('Index Peak List') 1066 G2frame.dataDisplay = G2gd.GSGrid(parent=G2frame.dataFrame) 1067 G2frame.dataDisplay.SetTable(G2frame.IndexPeaksTable, True) 1068 for r in range(G2frame.dataDisplay.GetNumberRows()): 1069 for c in range(G2frame.dataDisplay.GetNumberCols()): 1068 1070 if c == 2: 1069 self.dataDisplay.SetReadOnly(r,c,isReadOnly=False)1071 G2frame.dataDisplay.SetReadOnly(r,c,isReadOnly=False) 1070 1072 else: 1071 self.dataDisplay.SetReadOnly(r,c,isReadOnly=True)1072 self.dataDisplay.Bind(wg.EVT_GRID_CELL_LEFT_CLICK, RefreshIndexPeaksGrid)1073 self.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPickGrid)1074 self.dataDisplay.SetMargins(0,0)1075 self.dataDisplay.AutoSizeColumns(False)1076 self.dataFrame.setSizePosLeft([490,300])1073 G2frame.dataDisplay.SetReadOnly(r,c,isReadOnly=True) 1074 G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_LEFT_CLICK, RefreshIndexPeaksGrid) 1075 G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPickGrid) 1076 G2frame.dataDisplay.SetMargins(0,0) 1077 G2frame.dataDisplay.AutoSizeColumns(False) 1078 G2frame.dataFrame.setSizePosLeft([490,300]) 1077 1079 1078 def UpdateUnitCellsGrid( self, data):1079 UnitCellsId = G2gd.GetPatternTreeItemId( self,self.PatternId, 'Unit Cells List')1080 def UpdateUnitCellsGrid(G2frame, data): 1081 UnitCellsId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List') 1080 1082 bravaisSymb = ['Fm3m','Im3m','Pm3m','R3-H','P6/mmm','I4/mmm', 1081 1083 'P4/mmm','Fmmm','Immm','Cmmm','Pmmm','C2/m','P2/m','P1'] 1082 1084 spaceGroups = ['F m 3 m','I m 3 m','P m 3 m','R -3 H','P 6/m m m','I 4/m m m', 1083 1085 'P 4/m m m','F m m m','I m m m','C m m m','P m m m','C 2/m','P 2/m','P -1'] 1084 inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Instrument Parameters'))1086 inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters')) 1085 1087 Inst = dict(zip(inst[3],inst[1])) 1086 1088 if 'Lam' in Inst: … … 1137 1139 def OnBravSel(event): 1138 1140 controls[5] = bravSel.GetString(bravSel.GetSelection()) 1139 UpdateUnitCellsGrid( self,data)1141 UpdateUnitCellsGrid(G2frame,data) 1140 1142 1141 1143 def OnCellChange(event): … … 1186 1188 1187 1189 def OnHklShow(event): 1188 PatternId = self.PatternId1189 PickId = self.PickId1190 limits = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Limits'))[1]1191 controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Unit Cells List'))1190 PatternId = G2frame.PatternId 1191 PickId = G2frame.PickId 1192 limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits'))[1] 1193 controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List')) 1192 1194 cell = controls[6:12] 1193 1195 A = G2lat.cell2A(cell) 1194 1196 ibrav = bravaisSymb.index(controls[5]) 1195 1197 dmin = wave/(2.0*sind(limits[1]/2.0)) 1196 self.HKL = G2lat.GenHBravais(dmin,ibrav,A)1197 for hkl in self.HKL:1198 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 1199 for hkl in G2frame.HKL: 1198 1200 hkl.append(2.0*asind(wave/(2.*hkl[3]))+controls[1]+Inst['Zero']) 1199 if 'PKS' in self.PatternTree.GetItemText(self.PatternId):1200 G2plt.PlotPowderLines( self)1201 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1202 G2plt.PlotPowderLines(G2frame) 1201 1203 else: 1202 G2plt.PlotPatterns( self)1204 G2plt.PlotPatterns(G2frame) 1203 1205 1204 1206 def OnSortCells(event): 1205 controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(UnitCellsId)1207 controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(UnitCellsId) 1206 1208 c = event.GetCol() 1207 1209 if colLabels[c] == 'M20': … … 1212 1214 return 1213 1215 data = [controls,bravais,cells,dmin] 1214 self.PatternTree.SetItemPyData(UnitCellsId,data)1215 UpdateUnitCellsGrid( self,data)1216 G2frame.PatternTree.SetItemPyData(UnitCellsId,data) 1217 UpdateUnitCellsGrid(G2frame,data) 1216 1218 1217 1219 def CopyUnitCell(event): 1218 controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(UnitCellsId)1220 controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(UnitCellsId) 1219 1221 for Cell in cells: 1220 1222 if Cell[-1]: … … 1225 1227 controls[6:12] = cell[1:8] 1226 1228 controls[12] = G2lat.calc_V(G2lat.cell2A(controls[6:12])) 1227 self.PatternTree.SetItemPyData(UnitCellsId,[controls,bravais,cells,dmin])1228 UpdateUnitCellsGrid( self,data)1229 1230 self.dataFrame.RefineCell.Enable(True)1229 G2frame.PatternTree.SetItemPyData(UnitCellsId,[controls,bravais,cells,dmin]) 1230 UpdateUnitCellsGrid(G2frame,data) 1231 1232 G2frame.dataFrame.RefineCell.Enable(True) 1231 1233 1232 1234 def RefineCell(event): … … 1246 1248 print "%s%8.3f %s%8.3f %s%8.3f %s%12.3f" % ('alpha =',cell[3],'beta =',cell[4],'gamma =',cell[5],' volume =',Vol) 1247 1249 1248 PatternId = self.PatternId1249 PickId = self.PickId1250 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Index Peak List'))1250 PatternId = G2frame.PatternId 1251 PickId = G2frame.PickId 1252 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List')) 1251 1253 if not peaks: 1252 self.ErrorDialog('No peaks!', 'Nothing to refine!')1254 G2frame.ErrorDialog('No peaks!', 'Nothing to refine!') 1253 1255 return 1254 1256 print 'Refine cell' 1255 controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Unit Cells List'))1257 controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List')) 1256 1258 cell = controls[6:12] 1257 1259 A = G2lat.cell2A(cell) 1258 1260 ibrav = bravaisSymb.index(controls[5]) 1259 1261 dmin = G2indx.getDmin(peaks)-0.005 1260 self.HKL = G2lat.GenHBravais(dmin,ibrav,A)1261 G2indx.IndexPeaks(peaks, self.HKL)1262 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 1263 G2indx.IndexPeaks(peaks,G2frame.HKL) 1262 1264 Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksZ(peaks,wave,ibrav,A,controls[1],controls[0]) 1263 1265 controls[1] = Zero … … 1265 1267 controls[12] = G2lat.calc_V(Aref) 1266 1268 data = [controls,bravais,cells,dmin] 1267 cells = self.PatternTree.GetItemPyData(UnitCellsId)[2]1269 cells = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2] 1268 1270 for cell in cells: 1269 1271 cell[-1] = False 1270 1272 cells.insert(0,[M20,X20,ibrav]+controls[6:13]+[True,]) 1271 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Unit Cells List'),data)1272 self.HKL = G2lat.GenHBravais(dmin,ibrav,Aref)1273 UpdateUnitCellsGrid( self,data)1273 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data) 1274 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,Aref) 1275 UpdateUnitCellsGrid(G2frame,data) 1274 1276 print "%s%10.3f" % ('refinement M20 = ',M20) 1275 1277 print 'unindexed lines = ',X20 1276 1278 cellPrint(ibrav,Aref) 1277 for hkl in self.HKL:1279 for hkl in G2frame.HKL: 1278 1280 hkl.append(2.0*asind(wave/(2.*hkl[3]))+controls[1]+Inst['Zero']) 1279 if 'PKS' in self.PatternTree.GetItemText(self.PatternId):1280 G2plt.PlotPowderLines( self)1281 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1282 G2plt.PlotPowderLines(G2frame) 1281 1283 else: 1282 G2plt.PlotPatterns( self)1284 G2plt.PlotPatterns(G2frame) 1283 1285 1284 1286 def IndexPeaks(event): 1285 PatternId = self.PatternId1287 PatternId = G2frame.PatternId 1286 1288 print 'Peak Indexing' 1287 1289 try: 1288 controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Unit Cells List'))1290 controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List')) 1289 1291 cells = [] 1290 1292 except ValueError: 1291 self.ErrorDialog('Error','Need to set controls in Unit Cell List first')1293 G2frame.ErrorDialog('Error','Need to set controls in Unit Cell List first') 1292 1294 return 1293 1295 if True not in bravais: 1294 self.ErrorDialog('Error','No Bravais lattices selected')1296 G2frame.ErrorDialog('Error','No Bravais lattices selected') 1295 1297 return 1296 self.dataFrame.CopyCell.Enable(False)1297 self.dataFrame.RefineCell.Enable(False)1298 G2frame.dataFrame.CopyCell.Enable(False) 1299 G2frame.dataFrame.RefineCell.Enable(False) 1298 1300 OK,dmin,cells = G2indx.DoIndexPeaks(peaks,inst[1],controls,bravais) 1299 1301 if OK: 1300 1302 data = [controls,bravais,cells,dmin] 1301 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Unit Cells List'),data)1302 UpdateUnitCellsGrid( self,data)1303 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data) 1304 UpdateUnitCellsGrid(G2frame,data) 1303 1305 bestCell = cells[0] 1304 1306 if bestCell[0] > 10.: 1305 self.HKL = G2lat.GenHBravais(dmin,bestCell[2],G2lat.cell2A(bestCell[3:9]))1306 for hkl in self.HKL:1307 G2frame.HKL = G2lat.GenHBravais(dmin,bestCell[2],G2lat.cell2A(bestCell[3:9])) 1308 for hkl in G2frame.HKL: 1307 1309 hkl.append(2.0*asind(wave/(2.*hkl[3]))+controls[1]+Inst['Zero']) 1308 if 'PKS' in self.PatternTree.GetItemText(self.PatternId):1309 G2plt.PlotPowderLines( self)1310 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1311 G2plt.PlotPowderLines(G2frame) 1310 1312 else: 1311 G2plt.PlotPatterns( self)1312 self.dataFrame.CopyCell.Enable(True)1313 self.dataFrame.IndexPeaks.Enable(True)1314 self.dataFrame.MakeNewPhase.Enable(True)1315 UpdateUnitCellsGrid( self,data)1313 G2plt.PlotPatterns(G2frame) 1314 G2frame.dataFrame.CopyCell.Enable(True) 1315 G2frame.dataFrame.IndexPeaks.Enable(True) 1316 G2frame.dataFrame.MakeNewPhase.Enable(True) 1317 UpdateUnitCellsGrid(G2frame,data) 1316 1318 1317 1319 def RefreshUnitCellsGrid(event): 1318 cells,dmin = self.PatternTree.GetItemPyData(UnitCellsId)[2:]1320 cells,dmin = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2:] 1319 1321 r,c = event.GetRow(),event.GetCol() 1320 1322 if cells: … … 1328 1330 ibrav = cells[r][2] 1329 1331 A = G2lat.cell2A(cells[r][3:9]) 1330 self.HKL = G2lat.GenHBravais(dmin,ibrav,A)1331 for hkl in self.HKL:1332 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 1333 for hkl in G2frame.HKL: 1332 1334 hkl.append(2.0*asind(wave/(2.*hkl[3]))+controls[1]+Inst['Zero']) 1333 if 'PKS' in self.PatternTree.GetItemText(self.PatternId):1334 G2plt.PlotPowderLines( self)1335 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 1336 G2plt.PlotPowderLines(G2frame) 1335 1337 else: 1336 G2plt.PlotPatterns( self)1338 G2plt.PlotPatterns(G2frame) 1337 1339 1338 1340 def MakeNewPhase(event): 1339 if not G2gd.GetPatternTreeItemId( self,self.root,'Phases'):1340 sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')1341 if not G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases'): 1342 sub = G2frame.PatternTree.AppendItem(parent=G2frame.root,text='Phases') 1341 1343 else: 1342 sub = G2gd.GetPatternTreeItemId( self,self.root,'Phases')1344 sub = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases') 1343 1345 PhaseName = '' 1344 1346 dlg = wx.TextEntryDialog(None,'Enter a name for this phase','Phase Name Entry','New phase', … … 1347 1349 if dlg.ShowModal() == wx.ID_OK: 1348 1350 PhaseName = dlg.GetValue() 1349 cells = self.PatternTree.GetItemPyData(UnitCellsId)[2]1351 cells = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2] 1350 1352 for Cell in cells: 1351 1353 if Cell[-1]: 1352 1354 break 1353 1355 cell = Cell[2:10] 1354 sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)1356 sub = G2frame.PatternTree.AppendItem(parent=sub,text=PhaseName) 1355 1357 E,SGData = G2spc.SpcGroup(spaceGroups[cell[0]]) 1356 self.PatternTree.SetItemPyData(sub, \1358 G2frame.PatternTree.SetItemPyData(sub, \ 1357 1359 {'General':{'Name':PhaseName,'Type':'nuclear','SGData':SGData, 1358 1360 'Cell':[False,]+cell[1:], … … 1362 1364 dlg.Destroy() 1363 1365 1364 if self.dataDisplay:1365 self.dataFrame.Clear()1366 self.dataFrame.SetMenuBar(self.dataFrame.IndexMenu)1367 if not self.dataFrame.GetStatusBar():1368 Status = self.dataFrame.CreateStatusBar()1369 self.Bind(wx.EVT_MENU, IndexPeaks, id=G2gd.wxID_INDEXPEAKS)1370 self.Bind(wx.EVT_MENU, CopyUnitCell, id=G2gd.wxID_COPYCELL)1371 self.Bind(wx.EVT_MENU, RefineCell, id=G2gd.wxID_REFINECELL)1372 self.Bind(wx.EVT_MENU, MakeNewPhase, id=G2gd.wxID_MAKENEWPHASE)1366 if G2frame.dataDisplay: 1367 G2frame.dataFrame.Clear() 1368 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.IndexMenu) 1369 if not G2frame.dataFrame.GetStatusBar(): 1370 Status = G2frame.dataFrame.CreateStatusBar() 1371 G2frame.Bind(wx.EVT_MENU, IndexPeaks, id=G2gd.wxID_INDEXPEAKS) 1372 G2frame.Bind(wx.EVT_MENU, CopyUnitCell, id=G2gd.wxID_COPYCELL) 1373 G2frame.Bind(wx.EVT_MENU, RefineCell, id=G2gd.wxID_REFINECELL) 1374 G2frame.Bind(wx.EVT_MENU, MakeNewPhase, id=G2gd.wxID_MAKENEWPHASE) 1373 1375 1374 1376 controls,bravais,cells,dmin = data 1375 1377 if len(controls) < 13: #add cell volume if missing 1376 1378 controls.append(G2lat.calc_V(G2lat.cell2A(controls[6:12]))) 1377 self.PatternTree.SetItemPyData(UnitCellsId,data) #update with volume1379 G2frame.PatternTree.SetItemPyData(UnitCellsId,data) #update with volume 1378 1380 bravaisNames = ['Cubic-F','Cubic-I','Cubic-P','Trigonal-R','Trigonal/Hexagonal-P', 1379 1381 'Tetragonal-I','Tetragonal-P','Orthorhombic-F','Orthorhombic-I','Orthorhombic-C', … … 1389 1391 [True,True,True,False,True,True,True],[0,1,2,0,3,4,5])]] 1390 1392 1391 self.dataFrame.SetLabel('Unit Cells List')1392 self.sp = wx.SplitterWindow(self.dataFrame)1393 self.dataDisplay = wx.Panel(self.sp, style=wx.SUNKEN_BORDER)1394 self.dataFrame.IndexPeaks.Enable(False)1395 peaks = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.PatternId, 'Index Peak List'))1393 G2frame.dataFrame.SetLabel('Unit Cells List') 1394 G2frame.sp = wx.SplitterWindow(G2frame.dataFrame) 1395 G2frame.dataDisplay = wx.Panel(G2frame.sp, style=wx.SUNKEN_BORDER) 1396 G2frame.dataFrame.IndexPeaks.Enable(False) 1397 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List')) 1396 1398 if peaks: 1397 self.dataFrame.IndexPeaks.Enable(True)1398 self.dataFrame.RefineCell.Enable(False)1399 G2frame.dataFrame.IndexPeaks.Enable(True) 1400 G2frame.dataFrame.RefineCell.Enable(False) 1399 1401 if controls[12] > 1.0: #if a "real" volume (i.e. not default) 1400 self.dataFrame.RefineCell.Enable(True)1401 self.dataFrame.CopyCell.Enable(False)1402 self.dataFrame.MakeNewPhase.Enable(False)1402 G2frame.dataFrame.RefineCell.Enable(True) 1403 G2frame.dataFrame.CopyCell.Enable(False) 1404 G2frame.dataFrame.MakeNewPhase.Enable(False) 1403 1405 if cells: 1404 self.bottom = wx.Panel(self.sp, style=wx.SUNKEN_BORDER)1405 self.sp.SplitHorizontally(self.dataDisplay,self.bottom,0)1406 self.dataFrame.CopyCell.Enable(True)1407 self.dataFrame.MakeNewPhase.Enable(True)1406 G2frame.bottom = wx.Panel(G2frame.sp, style=wx.SUNKEN_BORDER) 1407 G2frame.sp.SplitHorizontally(G2frame.dataDisplay,G2frame.bottom,0) 1408 G2frame.dataFrame.CopyCell.Enable(True) 1409 G2frame.dataFrame.MakeNewPhase.Enable(True) 1408 1410 mainSizer = wx.BoxSizer(wx.VERTICAL) 1409 mainSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Indexing controls: '),0,wx.ALIGN_CENTER_VERTICAL)1411 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Indexing controls: '),0,wx.ALIGN_CENTER_VERTICAL) 1410 1412 mainSizer.Add((5,5),0) 1411 1413 littleSizer = wx.FlexGridSizer(2,5,5,5) 1412 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Max Nc/Nobs '),0,wx.ALIGN_CENTER_VERTICAL)1413 NcNo = wx.SpinCtrl( self.dataDisplay)1414 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Max Nc/Nobs '),0,wx.ALIGN_CENTER_VERTICAL) 1415 NcNo = wx.SpinCtrl(G2frame.dataDisplay) 1414 1416 NcNo.SetRange(1,6) 1415 1417 NcNo.SetValue(controls[2]) 1416 1418 NcNo.Bind(wx.EVT_SPINCTRL,OnNcNo) 1417 1419 littleSizer.Add(NcNo,0,wx.ALIGN_CENTER_VERTICAL) 1418 littleSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Start Volume '),0,wx.ALIGN_CENTER_VERTICAL)1419 startVol = wx.TextCtrl( self.dataDisplay,value=str('%d'%(controls[3])),style=wx.TE_PROCESS_ENTER)1420 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Start Volume '),0,wx.ALIGN_CENTER_VERTICAL) 1421 startVol = wx.TextCtrl(G2frame.dataDisplay,value=str('%d'%(controls[3])),style=wx.TE_PROCESS_ENTER) 1420 1422 startVol.Bind(wx.EVT_TEXT_ENTER,OnStartVol) 1421 1423 startVol.Bind(wx.EVT_KILL_FOCUS,OnStartVol) … … 1423 1425 mainSizer.Add(littleSizer,0) 1424 1426 mainSizer.Add((5,5),0) 1425 mainSizer.Add(wx.StaticText( self.dataDisplay,label=' Select Bravais Lattices for indexing: '),1427 mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Select Bravais Lattices for indexing: '), 1426 1428 0,wx.ALIGN_CENTER_VERTICAL) 1427 1429 mainSizer.Add((5,5),0) … … 1430 1432 bravs = zip(bravais,bravaisNames) 1431 1433 for brav,bravName in bravs: 1432 bravCk = wx.CheckBox( self.dataDisplay,label=bravName)1434 bravCk = wx.CheckBox(G2frame.dataDisplay,label=bravName) 1433 1435 bravList.append(bravCk.GetId()) 1434 1436 bravCk.SetValue(brav) … … 1438 1440 mainSizer.Add((5,5),0) 1439 1441 1440 mainSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' Cell Refinement: '),0,wx.ALIGN_CENTER_VERTICAL)1442 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Cell Refinement: '),0,wx.ALIGN_CENTER_VERTICAL) 1441 1443 mainSizer.Add((5,5),0) 1442 1444 littleSizer = wx.BoxSizer(wx.HORIZONTAL) 1443 littleSizer.Add(wx.StaticText( self.dataDisplay,label=" Bravais lattice "),0,wx.ALIGN_CENTER_VERTICAL)1444 bravSel = wx.Choice( self.dataDisplay,choices=bravaisSymb)1445 littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=" Bravais lattice "),0,wx.ALIGN_CENTER_VERTICAL) 1446 bravSel = wx.Choice(G2frame.dataDisplay,choices=bravaisSymb) 1445 1447 bravSel.SetSelection(bravaisSymb.index(controls[5])) 1446 1448 bravSel.Bind(wx.EVT_CHOICE,OnBravSel) 1447 1449 littleSizer.Add(bravSel,0,wx.ALIGN_CENTER_VERTICAL) 1448 littleSizer.Add(wx.StaticText( self.dataDisplay,label=" Zero offset"),0,wx.ALIGN_CENTER_VERTICAL)1449 zero = wx.TextCtrl( self.dataDisplay,value="%.4f"%(controls[1]),style=wx.TE_PROCESS_ENTER)1450 littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=" Zero offset"),0,wx.ALIGN_CENTER_VERTICAL) 1451 zero = wx.TextCtrl(G2frame.dataDisplay,value="%.4f"%(controls[1]),style=wx.TE_PROCESS_ENTER) 1450 1452 zero.Bind(wx.EVT_TEXT_ENTER,OnZero) 1451 1453 zero.Bind(wx.EVT_KILL_FOCUS,OnZero) 1452 1454 littleSizer.Add(zero,0,wx.ALIGN_CENTER_VERTICAL) 1453 zeroVar = wx.CheckBox( self.dataDisplay,label="Refine?")1455 zeroVar = wx.CheckBox(G2frame.dataDisplay,label="Refine?") 1454 1456 zeroVar.SetValue(controls[0]) 1455 1457 zeroVar.Bind(wx.EVT_CHECKBOX,OnZeroVar) 1456 1458 littleSizer.Add(zeroVar,0,wx.ALIGN_CENTER_VERTICAL) 1457 hklShow = wx.Button( self.dataDisplay,label="Show refined hkl positions + Zero offset")1459 hklShow = wx.Button(G2frame.dataDisplay,label="Show refined hkl positions + Zero offset") 1458 1460 hklShow.Bind(wx.EVT_BUTTON,OnHklShow) 1459 1461 littleSizer.Add(hklShow,0,wx.ALIGN_CENTER_VERTICAL) … … 1468 1470 littleSizer = wx.FlexGridSizer(2,useGUI[1],5,5) 1469 1471 for txt,fmt,ifEdit,Id in useGUI[2]: 1470 littleSizer.Add(wx.StaticText( self.dataDisplay,label=txt),0,wx.ALIGN_CENTER_VERTICAL)1472 littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=txt),0,wx.ALIGN_CENTER_VERTICAL) 1471 1473 if ifEdit: #a,b,c,etc. 1472 cellVal = wx.TextCtrl( self.dataDisplay,value=(fmt%(controls[6+Id])),style=wx.TE_PROCESS_ENTER)1474 cellVal = wx.TextCtrl(G2frame.dataDisplay,value=(fmt%(controls[6+Id])),style=wx.TE_PROCESS_ENTER) 1473 1475 cellVal.Bind(wx.EVT_TEXT_ENTER,OnCellChange) 1474 1476 cellVal.Bind(wx.EVT_KILL_FOCUS,OnCellChange) … … 1476 1478 cellList.append(cellVal.GetId()) 1477 1479 else: #volume 1478 volVal = wx.TextCtrl( self.dataDisplay,value=(fmt%(controls[12])),style=wx.TE_READONLY)1480 volVal = wx.TextCtrl(G2frame.dataDisplay,value=(fmt%(controls[12])),style=wx.TE_READONLY) 1479 1481 volVal.SetBackgroundColour(VERY_LIGHT_GREY) 1480 1482 littleSizer.Add(volVal,0,wx.ALIGN_CENTER_VERTICAL) … … 1482 1484 1483 1485 mainSizer.Layout() 1484 self.dataDisplay.SetSizer(mainSizer)1485 topSize = mainSizer.Fit( self.dataFrame)1486 self.dataDisplay.SetSize(topSize)1486 G2frame.dataDisplay.SetSizer(mainSizer) 1487 topSize = mainSizer.Fit(G2frame.dataFrame) 1488 G2frame.dataDisplay.SetSize(topSize) 1487 1489 if cells: 1488 1490 if ibrav == 13: … … 1490 1492 else: 1491 1493 topSize[1] += 200 1492 self.dataFrame.setSizePosLeft(topSize)1494 G2frame.dataFrame.setSizePosLeft(topSize) 1493 1495 1494 1496 if cells: 1495 bottomSize = self.bottom.GetSize()1497 bottomSize = G2frame.bottom.GetSize() 1496 1498 if ibrav == 13: 1497 1499 bottomSize[1] -= 240 1498 1500 else: 1499 1501 bottomSize[1] -= 210 1500 wx.StaticText(parent= self.bottom,label=' Indexing Result ')1502 wx.StaticText(parent=G2frame.bottom,label=' Indexing Result ') 1501 1503 rowLabels = [] 1502 1504 colLabels = ['M20','X20','use','Bravais','a','b','c','alpha','beta','gamma','Volume'] … … 1511 1513 if cell[-1]: 1512 1514 A = G2lat.cell2A(cell[3:9]) 1513 self.HKL = G2lat.GenHBravais(dmin,cell[2],A)1514 for hkl in self.HKL:1515 G2frame.HKL = G2lat.GenHBravais(dmin,cell[2],A) 1516 for hkl in G2frame.HKL: 1515 1517 hkl.append(2.0*asind(wave/(2.*hkl[3]))+controls[1]+Inst['Zero']) 1516 1518 table.append(row) 1517 1519 UnitCellsTable = G2gd.Table(table,rowLabels=rowLabels,colLabels=colLabels,types=Types) 1518 gridDisplay = G2gd.GSGrid( self.bottom)1520 gridDisplay = G2gd.GSGrid(G2frame.bottom) 1519 1521 gridDisplay.SetPosition(wx.Point(0,20)) 1520 1522 gridDisplay.SetTable(UnitCellsTable, True) 1521 self.dataFrame.CopyCell.Enable(True)1523 G2frame.dataFrame.CopyCell.Enable(True) 1522 1524 gridDisplay.Bind(wg.EVT_GRID_CELL_LEFT_CLICK,RefreshUnitCellsGrid) 1523 1525 gridDisplay.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK,OnSortCells) … … 1533 1535 gridDisplay.SetSize(bottomSize) 1534 1536 1535 def UpdateReflectionGrid( self,data):1537 def UpdateReflectionGrid(G2frame,data): 1536 1538 if not data: 1537 1539 print 'No phases, no reflections' … … 1540 1542 1541 1543 def OnSelectPhase(event): 1542 dlg = wx.SingleChoiceDialog( self,'Select','Phase',phases)1544 dlg = wx.SingleChoiceDialog(G2frame,'Select','Phase',phases) 1543 1545 try: 1544 1546 if dlg.ShowModal() == wx.ID_OK: 1545 1547 sel = dlg.GetSelection() 1546 self.RefList = phases[sel]1547 UpdateReflectionGrid( self,data)1548 G2frame.RefList = phases[sel] 1549 UpdateReflectionGrid(G2frame,data) 1548 1550 finally: 1549 1551 dlg.Destroy() 1550 G2plt.PlotPatterns( self)1551 1552 1553 if self.dataDisplay:1554 self.dataFrame.Clear()1555 self.dataFrame.SetMenuBar(self.dataFrame.ReflMenu)1556 if not self.dataFrame.GetStatusBar():1557 Status = self.dataFrame.CreateStatusBar()1558 self.Bind(wx.EVT_MENU, OnSelectPhase, id=G2gd.wxID_SELECTPHASE)1559 self.dataFrame.SelectPhase.Enable(False)1552 G2plt.PlotPatterns(G2frame) 1553 1554 1555 if G2frame.dataDisplay: 1556 G2frame.dataFrame.Clear() 1557 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.ReflMenu) 1558 if not G2frame.dataFrame.GetStatusBar(): 1559 Status = G2frame.dataFrame.CreateStatusBar() 1560 G2frame.Bind(wx.EVT_MENU, OnSelectPhase, id=G2gd.wxID_SELECTPHASE) 1561 G2frame.dataFrame.SelectPhase.Enable(False) 1560 1562 if len(data) > 1: 1561 self.dataFrame.SelectPhase.Enable(True)1563 G2frame.dataFrame.SelectPhase.Enable(True) 1562 1564 rowLabels = [] 1563 refList = [refl[:11] for refl in data[ self.RefList]]1565 refList = [refl[:11] for refl in data[G2frame.RefList]] 1564 1566 for i in range(len(refList)): rowLabels.append(str(i)) 1565 1567 colLabels = ['H','K','L','mul','d','pos','sig','gam','Fosq','Fcsq','phase',] 1566 1568 Types = 4*[wg.GRID_VALUE_LONG,]+4*[wg.GRID_VALUE_FLOAT+':10,4',]+2*[wg.GRID_VALUE_FLOAT+':10,2',]+[wg.GRID_VALUE_FLOAT+':10,3',] 1567 self.PeakTable = G2gd.Table(refList,rowLabels=rowLabels,colLabels=colLabels,types=Types)1568 self.dataFrame.SetLabel('Reflection List for '+self.RefList)1569 self.dataDisplay = G2gd.GSGrid(parent=self.dataFrame)1570 self.dataDisplay.SetTable(self.PeakTable, True)1571 self.dataDisplay.EnableEditing(False)1572 self.dataDisplay.SetMargins(0,0)1573 self.dataDisplay.AutoSizeColumns(False)1574 self.dataFrame.setSizePosLeft([555,350])1569 G2frame.PeakTable = G2gd.Table(refList,rowLabels=rowLabels,colLabels=colLabels,types=Types) 1570 G2frame.dataFrame.SetLabel('Reflection List for '+G2frame.RefList) 1571 G2frame.dataDisplay = G2gd.GSGrid(parent=G2frame.dataFrame) 1572 G2frame.dataDisplay.SetTable(G2frame.PeakTable, True) 1573 G2frame.dataDisplay.EnableEditing(False) 1574 G2frame.dataDisplay.SetMargins(0,0) 1575 G2frame.dataDisplay.AutoSizeColumns(False) 1576 G2frame.dataFrame.setSizePosLeft([555,350]) 1575 1577 1576 def UpdatePDFGrid( self,data):1578 def UpdatePDFGrid(G2frame,data): 1577 1579 global inst 1578 1580 tth2q = lambda t,w:4.0*math.pi*sind(t/2.0)/w 1579 dataFile = self.PatternTree.GetItemText(self.PatternId)1581 dataFile = G2frame.PatternTree.GetItemText(G2frame.PatternId) 1580 1582 powName = 'PWDR'+dataFile[4:] 1581 powId = G2gd.GetPatternTreeItemId( self,self.root, powName)1582 fullLimits,limits = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,powId, 'Limits'))1583 inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,powId, 'Instrument Parameters'))1583 powId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root, powName) 1584 fullLimits,limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Limits')) 1585 inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Instrument Parameters')) 1584 1586 inst = dict(zip(inst[3],inst[1])) 1585 1587 if 'Lam' in inst: … … 1608 1610 Obj.SetValue(fmt%(value)) 1609 1611 data[fileKey][itemKey] = value 1610 UpdatePDFGrid( self,data)1612 UpdatePDFGrid(G2frame,data) 1611 1613 1612 1614 def OnValueChange(event): … … 1620 1622 data[fileKey][itemKey] = value 1621 1623 auxPlot = ComputePDF(data) 1622 G2plt.PlotISFG( self,newPlot=True)1624 G2plt.PlotISFG(G2frame,newPlot=True) 1623 1625 1624 1626 item = data[key] 1625 1627 fileList = np.array(GetFileList('PWDR')).T[1] 1626 fileSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' '+key+' file:'),0,wx.ALIGN_CENTER_VERTICAL)1627 fileName = wx.ComboBox( self.dataDisplay,value=item['Name'],choices=fileList,1628 fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' '+key+' file:'),0,wx.ALIGN_CENTER_VERTICAL) 1629 fileName = wx.ComboBox(G2frame.dataDisplay,value=item['Name'],choices=fileList, 1628 1630 style=wx.CB_READONLY|wx.CB_DROPDOWN) 1629 1631 itemDict[fileName.GetId()] = [key,'Name','%s'] 1630 1632 fileName.Bind(wx.EVT_COMBOBOX,OnSelectFile) 1631 1633 fileSizer.Add(fileName,0,) 1632 fileSizer.Add(wx.StaticText(parent= self.dataDisplay,label='Multiplier:'),0,wx.ALIGN_CENTER_VERTICAL)1633 mult = wx.TextCtrl( self.dataDisplay,value='%.3f'%(item['Mult']),style=wx.TE_PROCESS_ENTER)1634 fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Multiplier:'),0,wx.ALIGN_CENTER_VERTICAL) 1635 mult = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(item['Mult']),style=wx.TE_PROCESS_ENTER) 1634 1636 itemDict[mult.GetId()] = [key,'Mult','%.3f'] 1635 1637 mult.Bind(wx.EVT_TEXT_ENTER,OnValueChange) 1636 1638 mult.Bind(wx.EVT_KILL_FOCUS,OnValueChange) 1637 1639 fileSizer.Add(mult,0,) 1638 fileSizer.Add(wx.StaticText(parent= self.dataDisplay,label='Add:'),0,wx.ALIGN_CENTER_VERTICAL)1639 add = wx.TextCtrl( self.dataDisplay,value='%.0f'%(item['Add']),style=wx.TE_PROCESS_ENTER)1640 fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Add:'),0,wx.ALIGN_CENTER_VERTICAL) 1641 add = wx.TextCtrl(G2frame.dataDisplay,value='%.0f'%(item['Add']),style=wx.TE_PROCESS_ENTER) 1640 1642 itemDict[add.GetId()] = [key,'Add','%.0f'] 1641 1643 add.Bind(wx.EVT_TEXT_ENTER,OnValueChange) … … 1651 1653 return sumVol 1652 1654 auxPlot = ComputePDF(data) 1653 G2plt.PlotISFG( self,newPlot=True)1655 G2plt.PlotISFG(G2frame,newPlot=True) 1654 1656 1655 1657 def FillElemSizer(elemSizer,ElData): … … 1664 1666 data['Form Vol'] = max(10.0,SumElementVolumes()) 1665 1667 formVol.SetValue('%.2f'%(data['Form Vol'])) 1666 UpdatePDFGrid( self,data)1668 UpdatePDFGrid(G2frame,data) 1667 1669 auxPlot = ComputePDF(data) 1668 G2plt.PlotISFG( self,newPlot=True)1669 1670 elemSizer.Add(wx.StaticText(parent= self.dataDisplay,1670 G2plt.PlotISFG(G2frame,newPlot=True) 1671 1672 elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay, 1671 1673 label=' Element: '+'%2s'%(ElData['Symbol'])+' * '),0,wx.ALIGN_CENTER_VERTICAL) 1672 num = wx.TextCtrl( self.dataDisplay,value='%.3f'%(ElData['FormulaNo']),style=wx.TE_PROCESS_ENTER)1674 num = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(ElData['FormulaNo']),style=wx.TE_PROCESS_ENTER) 1673 1675 num.Bind(wx.EVT_TEXT_ENTER,OnFractionChange) 1674 1676 num.Bind(wx.EVT_KILL_FOCUS,OnFractionChange) 1675 1677 elemSizer.Add(num,0,wx.ALIGN_CENTER_VERTICAL) 1676 elemSizer.Add(wx.StaticText(parent= self.dataDisplay,1678 elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay, 1677 1679 label="f': %.3f"%(ElData['fp'])+' f": %.3f'%(ElData['fpp'])+' mu: %.2f barns'%(ElData['mu']) ), 1678 1680 0,wx.ALIGN_CENTER_VERTICAL) … … 1680 1682 def OnGeometry(event): 1681 1683 data['Geometry'] = geometry.GetValue() 1682 UpdatePDFGrid( self,data)1684 UpdatePDFGrid(G2frame,data) 1683 1685 auxPlot = ComputePDF(data) 1684 G2plt.PlotISFG( self,newPlot=True)1686 G2plt.PlotISFG(G2frame,newPlot=True) 1685 1687 1686 1688 def OnDetType(event): 1687 1689 data['DetType'] = detType.GetValue() 1688 UpdatePDFGrid( self,data)1690 UpdatePDFGrid(G2frame,data) 1689 1691 auxPlot = ComputePDF(data) 1690 G2plt.PlotISFG( self,newPlot=True)1692 G2plt.PlotISFG(G2frame,newPlot=True) 1691 1693 1692 1694 def OnFormVol(event): … … 1698 1700 value = data['Form Vol'] 1699 1701 data['Form Vol'] = value 1700 UpdatePDFGrid( self,data)1702 UpdatePDFGrid(G2frame,data) 1701 1703 auxPlot = ComputePDF(data) 1702 G2plt.PlotISFG( self,newPlot=False)1704 G2plt.PlotISFG(G2frame,newPlot=False) 1703 1705 1704 1706 def OnDiameter(event): … … 1710 1712 value = data['Diam'] 1711 1713 data['Diam'] = value 1712 UpdatePDFGrid( self,data)1714 UpdatePDFGrid(G2frame,data) 1713 1715 auxPlot = ComputePDF(data) 1714 G2plt.PlotISFG( self,newPlot=False)1716 G2plt.PlotISFG(G2frame,newPlot=False) 1715 1717 1716 1718 def OnPolaVal(event): … … 1723 1725 inst['Polariz.'] = value 1724 1726 polaVal.SetValue('%.2f'%(inst['Polariz.'])) 1725 UpdatePDFGrid( self,data)1727 UpdatePDFGrid(G2frame,data) 1726 1728 auxPlot = ComputePDF(data) 1727 G2plt.PlotISFG( self,newPlot=False)1729 G2plt.PlotISFG(G2frame,newPlot=False) 1728 1730 1729 1731 def OnAzimVal(event): … … 1736 1738 inst['Azimuth'] = value 1737 1739 azimVal.SetValue('%.1f'%(inst['Azimuth'])) 1738 UpdatePDFGrid( self,data)1740 UpdatePDFGrid(G2frame,data) 1739 1741 auxPlot = ComputePDF(data) 1740 G2plt.PlotISFG( self,newPlot=False)1742 G2plt.PlotISFG(G2frame,newPlot=False) 1741 1743 1742 1744 def OnObliqCoeff(event): … … 1752 1754 obliqCoeff.SetValue('%.3f'%(value)) 1753 1755 auxPlot = ComputePDF(data) 1754 G2plt.PlotISFG( self,newPlot=False)1756 G2plt.PlotISFG(G2frame,newPlot=False) 1755 1757 1756 1758 def OnRulandWdt(event): … … 1766 1768 rulandWdt.SetValue('%.3f'%(value)) 1767 1769 auxPlot = ComputePDF(data) 1768 G2plt.PlotISFG( self,newPlot=False)1770 G2plt.PlotISFG(G2frame,newPlot=False) 1769 1771 1770 1772 def OnRulSlider(event): … … 1773 1775 rulandWdt.SetValue('%.3f'%(data['Ruland'])) 1774 1776 auxPlot = ComputePDF(data) 1775 G2plt.PlotISFG( self,newPlot=False)1777 G2plt.PlotISFG(G2frame,newPlot=False) 1776 1778 1777 1779 def OnLorch(event): 1778 1780 data['Lorch'] = lorch.GetValue() 1779 1781 auxPlot = ComputePDF(data) 1780 G2plt.PlotISFG( self,newPlot=False)1782 G2plt.PlotISFG(G2frame,newPlot=False) 1781 1783 1782 1784 def OnPacking(event): … … 1788 1790 value = data['Pack'] 1789 1791 data['Pack'] = value 1790 UpdatePDFGrid( self,data)1792 UpdatePDFGrid(G2frame,data) 1791 1793 auxPlot = ComputePDF(data) 1792 G2plt.PlotISFG( self,newPlot=False)1794 G2plt.PlotISFG(G2frame,newPlot=False) 1793 1795 1794 1796 def OnSQmin(event): … … 1802 1804 SQmin.SetValue('%.1f'%(value)) 1803 1805 auxPlot = ComputePDF(data) 1804 G2plt.PlotISFG( self,newPlot=True)1806 G2plt.PlotISFG(G2frame,newPlot=True) 1805 1807 1806 1808 def OnSQmax(event): … … 1817 1819 SQmax.SetValue('%.1f'%(value)) 1818 1820 auxPlot = ComputePDF(data) 1819 G2plt.PlotISFG( self,newPlot=True)1821 G2plt.PlotISFG(G2frame,newPlot=True) 1820 1822 1821 1823 def OnResetQ(event): … … 1826 1828 SQmin.SetValue('%.1f'%(data['QScaleLim'][0])) 1827 1829 auxPlot = ComputePDF(data) 1828 G2plt.PlotISFG( self,newPlot=True)1830 G2plt.PlotISFG(G2frame,newPlot=True) 1829 1831 1830 1832 def GetFileList(fileType,skip=None): 1831 1833 fileList = [[False,'',0]] 1832 1834 Source = '' 1833 id, cookie = self.PatternTree.GetFirstChild(self.root)1835 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 1834 1836 while id: 1835 name = self.PatternTree.GetItemText(id)1837 name = G2frame.PatternTree.GetItemText(id) 1836 1838 if fileType in name: 1837 1839 if id == skip: … … 1839 1841 else: 1840 1842 fileList.append([False,name,id]) 1841 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)1843 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 1842 1844 if skip: 1843 1845 return fileList,Source … … 1847 1849 def OnCopyPDFControls(event): 1848 1850 import copy 1849 TextList,Source = GetFileList('PDF',skip= self.PatternId)1851 TextList,Source = GetFileList('PDF',skip=G2frame.PatternId) 1850 1852 TextList[0] = [False,'All PDF',0] 1851 1853 if len(TextList) == 1: 1852 self.ErrorDialog('Nothing to copy controls to','There must be more than one "PDF" pattern')1854 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "PDF" pattern') 1853 1855 return 1854 dlg = self.CopyDialog(self,'Copy PDF controls','Copy controls from '+Source+' to:',TextList)1856 dlg = G2frame.CopyDialog(G2frame,'Copy PDF controls','Copy controls from '+Source+' to:',TextList) 1855 1857 try: 1856 1858 if dlg.ShowModal() == wx.ID_OK: … … 1862 1864 ifcopy,name,id = item 1863 1865 if ifcopy: 1864 olddata = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'PDF Controls'))1866 olddata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'PDF Controls')) 1865 1867 sample = olddata['Sample'] 1866 1868 olddata.update(copy.deepcopy(data)) 1867 1869 olddata['Sample'] = sample 1868 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'PDF Controls'),olddata)1870 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'PDF Controls'),olddata) 1869 1871 Status.SetStatusText('PDF controls copied') 1870 1872 finally: … … 1879 1881 def OnAddElement(event): 1880 1882 ElList = data['ElList'] 1881 PE = G2elem.PickElement( self,oneOnly=True)1883 PE = G2elem.PickElement(G2frame,oneOnly=True) 1882 1884 if PE.ShowModal() == wx.ID_OK: 1883 1885 El = PE.Elem … … 1893 1895 data['Form Vol'] = max(10.0,SumElementVolumes()) 1894 1896 PE.Destroy() 1895 UpdatePDFGrid( self,data)1897 UpdatePDFGrid(G2frame,data) 1896 1898 1897 1899 def OnDeleteElement(event): 1898 1900 ElList = data['ElList'] 1899 1901 choice = ElList.keys() 1900 dlg = G2elem.DeleteElement( self,choice=choice)1902 dlg = G2elem.DeleteElement(G2frame,choice=choice) 1901 1903 if dlg.ShowModal() == wx.ID_OK: 1902 1904 del ElList[dlg.GetDeleteElement()] 1903 1905 dlg.Destroy() 1904 UpdatePDFGrid( self,data)1906 UpdatePDFGrid(G2frame,data) 1905 1907 1906 1908 def ComputePDF(Data): … … 1909 1911 name = Data[key]['Name'] 1910 1912 if name: 1911 xydata[key] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root,name))1913 xydata[key] = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name)) 1912 1914 PDFname = name 1913 1915 powName = xydata['Sample'][2] 1914 powId = G2gd.GetPatternTreeItemId( self,self.root,powName)1915 inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,powId,'Instrument Parameters'))1916 powId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,powName) 1917 inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId,'Instrument Parameters')) 1916 1918 inst = dict(zip(inst[3],inst[1])) 1917 1919 auxPlot = G2pwd.CalcPDF(Data,inst,xydata) 1918 PDFId = G2gd.GetPatternTreeItemId( self,self.root,'PDF '+powName[4:])1919 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PDFId,'I(Q)'+powName[4:]),xydata['IofQ'])1920 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PDFId,'S(Q)'+powName[4:]),xydata['SofQ'])1921 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PDFId,'F(Q)'+powName[4:]),xydata['FofQ'])1922 self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,PDFId,'G(R)'+powName[4:]),xydata['GofR'])1920 PDFId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'PDF '+powName[4:]) 1921 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PDFId,'I(Q)'+powName[4:]),xydata['IofQ']) 1922 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PDFId,'S(Q)'+powName[4:]),xydata['SofQ']) 1923 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PDFId,'F(Q)'+powName[4:]),xydata['FofQ']) 1924 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PDFId,'G(R)'+powName[4:]),xydata['GofR']) 1923 1925 return auxPlot 1924 1926 … … 1929 1931 Status.SetStatusText('PDF computed') 1930 1932 for plot in auxPlot: 1931 G2plt.PlotXY( self,plot[:2],type=plot[2])1932 1933 G2plt.PlotISFG( self,newPlot=True,type='I(Q)')1934 G2plt.PlotISFG( self,newPlot=True,type='S(Q)')1935 G2plt.PlotISFG( self,newPlot=True,type='F(Q)')1936 G2plt.PlotISFG( self,newPlot=True,type='G(R)')1933 G2plt.PlotXY(G2frame,plot[:2],type=plot[2]) 1934 1935 G2plt.PlotISFG(G2frame,newPlot=True,type='I(Q)') 1936 G2plt.PlotISFG(G2frame,newPlot=True,type='S(Q)') 1937 G2plt.PlotISFG(G2frame,newPlot=True,type='F(Q)') 1938 G2plt.PlotISFG(G2frame,newPlot=True,type='G(R)') 1937 1939 1938 1940 def OnComputeAllPDF(event): 1939 1941 print 'Calculating PDFs:' 1940 if self.PatternTree.GetCount():1941 id, cookie = self.PatternTree.GetFirstChild(self.root)1942 if G2frame.PatternTree.GetCount(): 1943 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 1942 1944 while id: 1943 Name = self.PatternTree.GetItemText(id)1945 Name = G2frame.PatternTree.GetItemText(id) 1944 1946 if 'PDF' in Name: 1945 Data = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id,'PDF Controls'))1947 Data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id,'PDF Controls')) 1946 1948 auxPlot = ComputePDF(Data) 1947 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)1949 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 1948 1950 Status.SetStatusText('All PDFs computed') 1949 G2plt.PlotISFG( self,newPlot=True,type='G(R)')1951 G2plt.PlotISFG(G2frame,newPlot=True,type='G(R)') 1950 1952 print ' Done calculating PDFs:' 1951 1953 1952 def OnShowTip( self,tip):1954 def OnShowTip(G2frame,tip): 1953 1955 print tip 1954 1956 1955 if self.dataDisplay:1956 self.dataFrame.Clear()1957 self.dataFrame.SetMenuBar(self.dataFrame.PDFMenu)1958 if not self.dataFrame.GetStatusBar():1959 Status = self.dataFrame.CreateStatusBar()1960 self.dataDisplay = wx.Panel(self.dataFrame)1961 self.dataFrame.Bind(wx.EVT_MENU, OnCopyPDFControls, id=G2gd.wxID_PDFCOPYCONTROLS)1962 self.dataFrame.Bind(wx.EVT_MENU, OnSavePDFControls, id=G2gd.wxID_PDFSAVECONTROLS)1963 self.dataFrame.Bind(wx.EVT_MENU, OnLoadPDFControls, id=G2gd.wxID_PDFLOADCONTROLS)1964 self.dataFrame.Bind(wx.EVT_MENU, OnAddElement, id=G2gd.wxID_PDFADDELEMENT)1965 self.dataFrame.Bind(wx.EVT_MENU, OnDeleteElement, id=G2gd.wxID_PDFDELELEMENT)1966 self.dataFrame.Bind(wx.EVT_MENU, OnComputePDF, id=G2gd.wxID_PDFCOMPUTE)1967 self.dataFrame.Bind(wx.EVT_MENU, OnComputeAllPDF, id=G2gd.wxID_PDFCOMPUTEALL)1957 if G2frame.dataDisplay: 1958 G2frame.dataFrame.Clear() 1959 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.PDFMenu) 1960 if not G2frame.dataFrame.GetStatusBar(): 1961 Status = G2frame.dataFrame.CreateStatusBar() 1962 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 1963 G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyPDFControls, id=G2gd.wxID_PDFCOPYCONTROLS) 1964 G2frame.dataFrame.Bind(wx.EVT_MENU, OnSavePDFControls, id=G2gd.wxID_PDFSAVECONTROLS) 1965 G2frame.dataFrame.Bind(wx.EVT_MENU, OnLoadPDFControls, id=G2gd.wxID_PDFLOADCONTROLS) 1966 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddElement, id=G2gd.wxID_PDFADDELEMENT) 1967 G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteElement, id=G2gd.wxID_PDFDELELEMENT) 1968 G2frame.dataFrame.Bind(wx.EVT_MENU, OnComputePDF, id=G2gd.wxID_PDFCOMPUTE) 1969 G2frame.dataFrame.Bind(wx.EVT_MENU, OnComputeAllPDF, id=G2gd.wxID_PDFCOMPUTEALL) 1968 1970 mainSizer = wx.BoxSizer(wx.VERTICAL) 1969 mainSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' PDF data files: '),0,wx.ALIGN_CENTER_VERTICAL)1971 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' PDF data files: '),0,wx.ALIGN_CENTER_VERTICAL) 1970 1972 mainSizer.Add((5,5),0) 1971 1973 str = ' Sample file: PWDR %s Wavelength, A: %.5f Energy, keV: %.3f Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz) 1972 mainSizer.Add(wx.StaticText(parent= self.dataDisplay,label=str),0,wx.ALIGN_CENTER_VERTICAL)1974 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,wx.ALIGN_CENTER_VERTICAL) 1973 1975 # dataSizer = wx.BoxSizer(wx.HORIZONTAL) 1974 # dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label='Azimuth'),0,wx.ALIGN_CENTER_VERTICAL)1975 # azimVal = wx.TextCtrl( self.dataDisplay,value='%.2f'%(inst['Azimuth']))1976 # dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Azimuth'),0,wx.ALIGN_CENTER_VERTICAL) 1977 # azimVal = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(inst['Azimuth'])) 1976 1978 # azimVal.Bind(wx.EVT_TEXT_ENTER,OnAzimVal) 1977 1979 # azimVal.Bind(wx.EVT_KILL_FOCUS,OnAzimVal) 1978 1980 # dataSizer.Add(azimVal,0) 1979 # dataSizer.Add(wx.StaticText(parent= self.dataDisplay,label='Polarization'),0,wx.ALIGN_CENTER_VERTICAL)1980 # polaVal = wx.TextCtrl( self.dataDisplay,value='%.2f'%(inst['Polariz.']))1981 # dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Polarization'),0,wx.ALIGN_CENTER_VERTICAL) 1982 # polaVal = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(inst['Polariz.'])) 1981 1983 # polaVal.Bind(wx.EVT_TEXT_ENTER,OnPolaVal) 1982 1984 # polaVal.Bind(wx.EVT_KILL_FOCUS,OnPolaVal) … … 1992 1994 mainSizer.Add(fileSizer,0) 1993 1995 mainSizer.Add((5,5),0) 1994 mainSizer.Add(wx.StaticText( self.dataDisplay,label=' Sample information: '),0,wx.ALIGN_CENTER_VERTICAL)1996 mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample information: '),0,wx.ALIGN_CENTER_VERTICAL) 1995 1997 mainSizer.Add((5,5),0) 1996 1998 … … 2004 2006 mainSizer.Add((5,5),0) 2005 2007 midSizer = wx.BoxSizer(wx.HORIZONTAL) 2006 midSizer.Add(wx.StaticText( self.dataDisplay,label=' Formula volume: '),0,wx.ALIGN_CENTER_VERTICAL)2007 formVol = wx.TextCtrl( self.dataDisplay,value='%.2f'%(data['Form Vol']))2008 midSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Formula volume: '),0,wx.ALIGN_CENTER_VERTICAL) 2009 formVol = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(data['Form Vol'])) 2008 2010 formVol.Bind(wx.EVT_TEXT_ENTER,OnFormVol) 2009 2011 formVol.Bind(wx.EVT_KILL_FOCUS,OnFormVol) 2010 2012 midSizer.Add(formVol,0) 2011 midSizer.Add(wx.StaticText( self.dataDisplay,2013 midSizer.Add(wx.StaticText(G2frame.dataDisplay, 2012 2014 label=' Theoretical absorption: %.4f cm-1 Sample absorption: %.4f cm-1'%(Abs,Abs*data['Pack'])), 2013 2015 0,wx.ALIGN_CENTER_VERTICAL) … … 2016 2018 2017 2019 geoBox = wx.BoxSizer(wx.HORIZONTAL) 2018 geoBox.Add(wx.StaticText( self.dataDisplay,label=' Sample geometry: '),0,wx.ALIGN_CENTER_VERTICAL)2020 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample geometry: '),0,wx.ALIGN_CENTER_VERTICAL) 2019 2021 choice = ['Cylinder','Bragg-Brentano','Tilting flat plate in transmission','Fixed flat plate'] 2020 geometry = wx.ComboBox( self.dataDisplay,value=data['Geometry'],choices=choice,2022 geometry = wx.ComboBox(G2frame.dataDisplay,value=data['Geometry'],choices=choice, 2021 2023 style=wx.CB_READONLY|wx.CB_DROPDOWN) 2022 2024 geometry.Bind(wx.EVT_COMBOBOX, OnGeometry) 2023 2025 geoBox.Add(geometry,0) 2024 geoBox.Add(wx.StaticText( self.dataDisplay,label=' Sample diameter/thickness, mm: '),0,wx.ALIGN_CENTER_VERTICAL)2025 diam = wx.TextCtrl( self.dataDisplay,value='%.3f'%(data['Diam']))2026 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample diameter/thickness, mm: '),0,wx.ALIGN_CENTER_VERTICAL) 2027 diam = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Diam'])) 2026 2028 diam.Bind(wx.EVT_TEXT_ENTER,OnDiameter) 2027 2029 diam.Bind(wx.EVT_KILL_FOCUS,OnDiameter) 2028 # diam.Bind(wx.EVT_SET_FOCUS,OnShowTip( self,'tip')) #this doesn't work - what would????2030 # diam.Bind(wx.EVT_SET_FOCUS,OnShowTip(G2frame,'tip')) #this doesn't work - what would???? 2029 2031 geoBox.Add(diam,0) 2030 2032 mainSizer.Add(geoBox,0) 2031 2033 mainSizer.Add((5,5),0) 2032 2034 geoBox = wx.BoxSizer(wx.HORIZONTAL) 2033 geoBox.Add(wx.StaticText( self.dataDisplay,label=' Packing: '),0,wx.ALIGN_CENTER_VERTICAL)2034 pack = wx.TextCtrl( self.dataDisplay,value='%.2f'%(data['Pack']))2035 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Packing: '),0,wx.ALIGN_CENTER_VERTICAL) 2036 pack = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(data['Pack'])) 2035 2037 pack.Bind(wx.EVT_TEXT_ENTER,OnPacking) 2036 2038 pack.Bind(wx.EVT_KILL_FOCUS,OnPacking) 2037 2039 geoBox.Add(pack,0) 2038 geoBox.Add(wx.StaticText( self.dataDisplay,label=' Sample transmission: %.3f %%'%(Trans)),0,wx.ALIGN_CENTER_VERTICAL)2040 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample transmission: %.3f %%'%(Trans)),0,wx.ALIGN_CENTER_VERTICAL) 2039 2041 mainSizer.Add(geoBox,0) 2040 2042 mainSizer.Add((5,5),0) 2041 2043 2042 mainSizer.Add(wx.StaticText(parent= self.dataDisplay,label=' S(Q)->F(Q)->G(R) controls: '),0,wx.ALIGN_CENTER_VERTICAL)2044 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' S(Q)->F(Q)->G(R) controls: '),0,wx.ALIGN_CENTER_VERTICAL) 2043 2045 mainSizer.Add((5,5),0) 2044 2046 sqBox = wx.BoxSizer(wx.HORIZONTAL) 2045 sqBox.Add(wx.StaticText( self.dataDisplay,label=' Detector type: '),0,wx.ALIGN_CENTER_VERTICAL)2047 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Detector type: '),0,wx.ALIGN_CENTER_VERTICAL) 2046 2048 choice = ['Image plate','Point detector'] 2047 detType = wx.ComboBox( self.dataDisplay,value=data['DetType'],choices=choice,2049 detType = wx.ComboBox(G2frame.dataDisplay,value=data['DetType'],choices=choice, 2048 2050 style=wx.CB_READONLY|wx.CB_DROPDOWN) 2049 2051 detType.Bind(wx.EVT_COMBOBOX, OnDetType) 2050 2052 sqBox.Add(detType,0) 2051 2053 if data['DetType'] == 'Image plate': 2052 sqBox.Add(wx.StaticText( self.dataDisplay,label=' IP transmission coeff.: '),0,wx.ALIGN_CENTER_VERTICAL)2053 obliqCoeff = wx.TextCtrl( self.dataDisplay,value='%.3f'%(data['ObliqCoeff']))2054 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' IP transmission coeff.: '),0,wx.ALIGN_CENTER_VERTICAL) 2055 obliqCoeff = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['ObliqCoeff'])) 2054 2056 obliqCoeff.Bind(wx.EVT_TEXT_ENTER,OnObliqCoeff) 2055 2057 obliqCoeff.Bind(wx.EVT_KILL_FOCUS,OnObliqCoeff) … … 2058 2060 2059 2061 sqBox = wx.BoxSizer(wx.HORIZONTAL) 2060 sqBox.Add(wx.StaticText( self.dataDisplay,label=' Ruland width: '),0,wx.ALIGN_CENTER_VERTICAL)2061 rulandSldr = wx.Slider(parent= self.dataDisplay,style=wx.SL_HORIZONTAL,2062 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Ruland width: '),0,wx.ALIGN_CENTER_VERTICAL) 2063 rulandSldr = wx.Slider(parent=G2frame.dataDisplay,style=wx.SL_HORIZONTAL, 2062 2064 value=int(1000*data['Ruland'])) 2063 2065 sqBox.Add(rulandSldr,1,wx.EXPAND) 2064 2066 rulandSldr.Bind(wx.EVT_SLIDER, OnRulSlider) 2065 rulandWdt = wx.TextCtrl( self.dataDisplay,value='%.3f'%(data['Ruland']))2067 rulandWdt = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Ruland'])) 2066 2068 rulandWdt.Bind(wx.EVT_TEXT_ENTER,OnRulandWdt) 2067 2069 rulandWdt.Bind(wx.EVT_KILL_FOCUS,OnRulandWdt) … … 2070 2072 2071 2073 sqBox = wx.BoxSizer(wx.HORIZONTAL) 2072 lorch = wx.CheckBox(parent= self.dataDisplay,label='Lorch damping?')2074 lorch = wx.CheckBox(parent=G2frame.dataDisplay,label='Lorch damping?') 2073 2075 lorch.SetValue(data['Lorch']) 2074 2076 lorch.Bind(wx.EVT_CHECKBOX, OnLorch) 2075 2077 sqBox.Add(lorch,0,wx.ALIGN_CENTER_VERTICAL) 2076 sqBox.Add(wx.StaticText( self.dataDisplay,label=' Scaling q-range: '),0,wx.ALIGN_CENTER_VERTICAL)2077 SQmin = wx.TextCtrl( self.dataDisplay,value='%.1f'%(data['QScaleLim'][0]))2078 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Scaling q-range: '),0,wx.ALIGN_CENTER_VERTICAL) 2079 SQmin = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['QScaleLim'][0])) 2078 2080 SQmin.Bind(wx.EVT_TEXT_ENTER,OnSQmin) 2079 2081 SQmin.Bind(wx.EVT_KILL_FOCUS,OnSQmin) 2080 2082 sqBox.Add(SQmin,0) 2081 sqBox.Add(wx.StaticText( self.dataDisplay,label=' to '),0,wx.ALIGN_CENTER_VERTICAL)2082 SQmax = wx.TextCtrl( self.dataDisplay,value='%.1f'%(data['QScaleLim'][1]))2083 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' to '),0,wx.ALIGN_CENTER_VERTICAL) 2084 SQmax = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['QScaleLim'][1])) 2083 2085 SQmax.Bind(wx.EVT_TEXT_ENTER,OnSQmax) 2084 2086 SQmax.Bind(wx.EVT_KILL_FOCUS,OnSQmax) 2085 2087 sqBox.Add(SQmax,0) 2086 resetQ = wx.CheckBox(parent= self.dataDisplay,label='Reset?')2088 resetQ = wx.CheckBox(parent=G2frame.dataDisplay,label='Reset?') 2087 2089 sqBox.Add(resetQ,0) 2088 2090 resetQ.Bind(wx.EVT_CHECKBOX, OnResetQ) … … 2091 2093 2092 2094 mainSizer.Layout() 2093 self.dataDisplay.SetSizer(mainSizer)2094 Size = mainSizer.Fit( self.dataFrame)2095 self.dataDisplay.SetSize(Size)2096 self.dataFrame.setSizePosLeft(Size)2095 G2frame.dataDisplay.SetSizer(mainSizer) 2096 Size = mainSizer.Fit(G2frame.dataFrame) 2097 G2frame.dataDisplay.SetSize(Size) 2098 G2frame.dataFrame.setSizePosLeft(Size) 2097 2099
Note: See TracChangeset
for help on using the changeset viewer.