Changeset 468 for trunk


Ignore:
Timestamp:
Feb 2, 2012 11:27:53 AM (13 years ago)
Author:
vondreele
Message:

changed self to G2frame everywhere in all "sub" files that use it
fixed creation of 'bak' files
now force save of a new gpx file before 1st peak fit so
GSAS.save is put in a sensible directory

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/GSASII.py

    r467 r468  
    11391139        dlg = wx.FileDialog(self, 'Choose GSAS-II project file name', '.', '',
    11401140            '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)
    11431141        try:
    11441142            if dlg.ShowModal() == wx.ID_OK:
  • TabularUnified trunk/GSASIIIO.py

    r467 r468  
    3636        return 0
    3737
    38 def SelectPowderData(self, filename):
     38def SelectPowderData(G2frame, filename):
    3939    """Selects banks of data from a filename of any GSAS powder data format
    4040    Input - filename: any GSAS powder data formatted file (currently STD, FXYE, FXY & ESD)
     
    4848First line of this file:
    4949'''+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?',
    5151        wx.YES_NO | wx.ICON_QUESTION)
    5252    try:
     
    5858   
    5959    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?
    6161(No = 0.6A wavelength synchrotron data)
    6262Change wavelength in Instrument Parameters if needed''','Data type?',
     
    8484       
    8585    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)
    8989        else:
    9090            Iparm = {}                                               #Assume CuKa lab data if no iparm file
     
    124124        result = [0]
    125125        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)
    127127            try:
    128128                if dlg.ShowModal() == wx.ID_OK:
     
    135135            FoundData.append((filename,Pos[i],Banks[i]))
    136136    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)
    138138        try:
    139139            result = dlg.ShowModal()
     
    142142    return FoundData,Iparm,Comments,Temperature
    143143
    144 def GetInstrumentFile(self,filename):
     144def GetInstrumentFile(G2frame,filename):
    145145    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(*.*)|*.*',
    147147        wx.OPEN|wx.CHANGE_DIR)
    148148    Tname = filename[:filename.index('.')]+'.prm'
    149149    if op.exists(Tname):
    150         self.IparmName = Tname       
    151     if self.IparmName: dlg.SetFilename(self.IparmName)
     150        G2frame.IparmName = Tname       
     151    if G2frame.IparmName: dlg.SetFilename(G2frame.IparmName)
    152152    filename = ''
    153153    try:
     
    472472    return [np.array(x),np.array(y),np.array(w),np.zeros(N),np.zeros(N),np.zeros(N)]
    473473   
    474 def CheckImageFile(self,imagefile):
     474def CheckImageFile(G2frame,imagefile):
    475475    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', '.', '',\
    477477        'Any image file (*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img)\
    478478        |*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img|\
     
    492492    return imagefile
    493493       
    494 def GetImageData(self,imagefile,imageOnly=False):       
     494def GetImageData(G2frame,imagefile,imageOnly=False):       
    495495    ext = ospath.splitext(imagefile)[1]
    496496    Comments = []
     
    795795        return head,data,Npix,image
    796796   
    797 def ProjFileOpen(self):
    798     file = open(self.GSASprojectfile,'rb')
    799     print 'load from file: ',self.GSASprojectfile
     797def ProjFileOpen(G2frame):
     798    file = open(G2frame.GSASprojectfile,'rb')
     799    print 'load from file: ',G2frame.GSASprojectfile
    800800    wx.BeginBusyCursor()
    801801    try:
     
    807807            datum = data[0]
    808808           
    809             Id = self.PatternTree.AppendItem(parent=self.root,text=datum[0])
     809            Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text=datum[0])
    810810            if 'PWDR' in datum[0]:               
    811                 self.PatternTree.SetItemPyData(Id,datum[1][:3])     #temp. trim off junk
     811                G2frame.PatternTree.SetItemPyData(Id,datum[1][:3])     #temp. trim off junk
    812812            else:
    813                 self.PatternTree.SetItemPyData(Id,datum[1])
     813                G2frame.PatternTree.SetItemPyData(Id,datum[1])
    814814            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])
    817817            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'))
    819819                if Data['setDefault']:
    820                     self.imageDefault = Data               
     820                    G2frame.imageDefault = Data               
    821821        file.close()
    822822       
     
    824824        wx.EndBusyCursor()
    825825    print 'project load successful'
    826     self.NewPlot = True
    827    
    828 def ProjFileSave(self):
    829     if not self.PatternTree.IsEmpty():
    830         file = open(self.GSASprojectfile,'wb')
    831         print 'save to file: ',self.GSASprojectfile
     826    G2frame.NewPlot = True
     827   
     828def ProjFileSave(G2frame):
     829    if not G2frame.PatternTree.IsEmpty():
     830        file = open(G2frame.GSASprojectfile,'wb')
     831        print 'save to file: ',G2frame.GSASprojectfile
    832832        wx.BeginBusyCursor()
    833833        try:
    834             item, cookie = self.PatternTree.GetFirstChild(self.root)
     834            item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
    835835            while item:
    836836                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)
    840840                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)                           
    845845                cPickle.dump(data,file,1)
    846846            file.close()
     
    10471047    for name in files:
    10481048        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]:
    10501050            if makeBack:
    1051                 last = max(last,int(name[1].strip('bak'))+1)
     1051                last = max(last,int(name[-2].strip('bak'))+1)
    10521052            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')
    10551055    dfu.copy_file(GPXfile,GPXback)
    10561056    return GPXback
     
    11861186    return HKLFdata
    11871187   
    1188 def SaveIntegration(self,PickId,data):
    1189     azms = self.Integrate[1]
    1190     X = self.Integrate[2][:-1]
     1188def SaveIntegration(G2frame,PickId,data):
     1189    azms = G2frame.Integrate[1]
     1190    X = G2frame.Integrate[2][:-1]
    11911191    Xminmax = [X[0],X[-1]]
    11921192    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)
    11951195    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'))
    11971197    names = ['Type','Lam','Zero','Polariz.','U','V','W','X','Y','SH/L','Azimuth']
    11981198    codes = [0 for i in range(11)]
     
    12051205            Azms.append((azms[i+1]+azm)/2.)
    12061206    for i,azm in enumerate(azms[:-1]):
    1207         item, cookie = self.PatternTree.GetFirstChild(self.root)
     1207        item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
    12081208        Id = 0
    12091209        while item:
    1210             Name = self.PatternTree.GetItemText(item)
     1210            Name = G2frame.PatternTree.GetItemText(item)
    12111211            if name == Name:
    12121212                Id = item
    1213             item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     1213            item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    12141214        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]
    12161216        W = 1./Y                    #probably not true
    12171217        Sample = G2pdG.SetDefaultSample()
    12181218        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],
    12221222                            {'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'),{})             
    12281228        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],
    12331233                            {'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 = Id
     1234            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
    12441244           
    1245 def powderFxyeSave(self,exports,powderfile):
     1245def powderFxyeSave(G2frame,exports,powderfile):
    12461246    head,tail = ospath.split(powderfile)
    12471247    name,ext = tail.split('.')
     
    12511251        prmname = filename.strip(ext)+'prm'
    12521252        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, \
    12551255            PickId, 'Instrument Parameters'))[1::2]     #get values & names
    12561256        Inst = dict(zip(Names,Values))
     
    12741274        print 'save powder pattern to file: ',filename
    12751275        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]
    12771277            file.write(powderfile+'\n')
    12781278            file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\
     
    12871287        print 'powder pattern file written'
    12881288       
    1289 def powderXyeSave(self,exports,powderfile):
     1289def powderXyeSave(G2frame,exports,powderfile):
    12901290    head,tail = ospath.split(powderfile)
    12911291    name,ext = tail.split('.')
    12921292    for i,export in enumerate(exports):
    12931293        filename = ospath.join(head,name+'-%03d.'%(i)+ext)
    1294         PickId = G2gd.GetPatternTreeItemId(self, self.root, export)
     1294        PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
    12951295        file = open(filename,'w')
    12961296        file.write('#%s\n'%(export))
     
    12981298        wx.BeginBusyCursor()
    12991299        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]
    13011301            s = list(np.sqrt(1./np.array(w)))       
    13021302            XYW = zip(x,y,s)
     
    13081308        print 'powder pattern file written'
    13091309       
    1310 def PDFSave(self,exports):   
     1310def PDFSave(G2frame,exports):   
    13111311    for export in exports:
    1312         PickId = G2gd.GetPatternTreeItemId(self, self.root, export)
     1312        PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
    13131313        SQname = 'S(Q)'+export[4:]
    13141314        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]).T
    1320         grdata = np.array(self.PatternTree.GetItemPyData(grId)[1][:2]).T
     1315        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
    13211321        sqfile = open(sqfilename,'w')
    13221322        grfile = open(grfilename,'w')
     
    13321332        grfile.close()
    13331333   
    1334 def PeakListSave(self,file,peaks):
    1335     print 'save peak list to file: ',self.peaklistfile
     1334def PeakListSave(G2frame,file,peaks):
     1335    print 'save peak list to file: ',G2frame.peaklistfile
    13361336    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)
    13381338        try:
    13391339            result = dlg.ShowModal()
     
    13461346    print 'peak list saved'
    13471347             
    1348 def IndexPeakListSave(self,peaks):
    1349     file = open(self.peaklistfile,'wa')
    1350     print 'save index peak list to file: ',self.peaklistfile
     1348def IndexPeakListSave(G2frame,peaks):
     1349    file = open(G2frame.peaklistfile,'wa')
     1350    print 'save index peak list to file: ',G2frame.peaklistfile
    13511351    wx.BeginBusyCursor()
    13521352    try:
    13531353        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)
    13551355            try:
    13561356                result = dlg.ShowModal()
     
    13651365    print 'index peak list saved'
    13661366   
    1367 def ReadEXPPhase(self,filename):
     1367def ReadEXPPhase(G2frame,filename):
    13681368    shModels = ['cylindrical','none','shear - 2/m','rolling - mmm']
    13691369    textureData = {'Order':0,'Model':'cylindrical','Sample omega':[False,0.0],
     
    13901390            PNames.append(Expr[n][key])
    13911391    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)
    13931393        try:
    13941394            if dlg.ShowModal() == wx.ID_OK:
  • TabularUnified trunk/GSASIIgrid.py

    r467 r468  
    708708        innerSetValue(row, col, value)
    709709               
    710 def UpdateNotebook(self,data):       
     710def UpdateNotebook(G2frame,data):       
    711711    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(),
    714714            style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP)
    715715        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           
     719def UpdateControls(G2frame,data):
    720720    #patch
    721721    if 'deriv type' not in data:
     
    737737       
    738738        def OnSelectData(event):
    739             choices = ['All',]+GetPatternTreeDataNames(self,['PWDR',])
     739            choices = ['All',]+GetPatternTreeDataNames(G2frame,['PWDR',])
    740740            sel = []
    741741            if 'Seq Data' in data:
     
    743743                    sel.append(choices.index(item))
    744744            names = []
    745             dlg = wx.MultiChoiceDialog(self,'Select data:','Sequential refinement',choices)
     745            dlg = wx.MultiChoiceDialog(G2frame,'Select data:','Sequential refinement',choices)
    746746            dlg.SetSelections(sel)
    747747            if dlg.ShowModal() == wx.ID_OK:
     
    758758                   
    759759        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')
    762762        selSeqData.Bind(wx.EVT_BUTTON,OnSelectData)
    763763        seqSizer.Add(selSeqData,0,wx.ALIGN_CENTER_VERTICAL)
    764764        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?')
    766766        reverseSel.Bind(wx.EVT_CHECKBOX,OnReverse)
    767767        if 'Seq Data' not in data:
     
    777777            data['deriv type'] = derivSel.GetValue()
    778778            derivSel.SetValue(data['deriv type'])
    779             wx.CallAfter(UpdateControls,self,data)
     779            wx.CallAfter(UpdateControls,G2frame,data)
    780780           
    781781        def OnConvergence(event):
     
    800800       
    801801        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)
    803803        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,
    805805            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    806806        derivSel.SetValue(data['deriv type'])
     
    808808           
    809809        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)
    812812        Cnvrg.Bind(wx.EVT_TEXT_ENTER,OnConvergence)
    813813        Cnvrg.Bind(wx.EVT_KILL_FOCUS,OnConvergence)
    814814        LSSizer.Add(Cnvrg,0,wx.ALIGN_CENTER_VERTICAL)
    815815        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)
    817817            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,
    819819                style=wx.CB_READONLY|wx.CB_DROPDOWN)
    820820            maxCyc.SetValue(str(data['max cyc']))
     
    822822            LSSizer.Add(maxCyc,0,wx.ALIGN_CENTER_VERTICAL)
    823823        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)
    826826            Factr.Bind(wx.EVT_TEXT_ENTER,OnFactor)
    827827            Factr.Bind(wx.EVT_KILL_FOCUS,OnFactor)
     
    829829        return LSSizer
    830830       
    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()
    835835        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)
    839839    mainSizer = wx.BoxSizer(wx.VERTICAL)
    840840    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)   
    842842    mainSizer.Add(LSSizer())
    843843    mainSizer.Add((5,5),0)
     
    845845    mainSizer.Add((5,5),0)
    846846       
    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)
    848848
    849849    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))
    853853     
    854 def UpdateComments(self,data):                   
    855     self.dataFrame.SetLabel('Comments')
    856     self.dataDisplay = wx.TextCtrl(parent=self.dataFrame,size=self.dataFrame.GetClientSize(),
     854def UpdateComments(G2frame,data):                   
     855    G2frame.dataFrame.SetLabel('Comments')
     856    G2frame.dataDisplay = wx.TextCtrl(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize(),
    857857        style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP)
    858858    for line in data:
    859859        if line[-1] == '\n':
    860             self.dataDisplay.AppendText(line)
     860            G2frame.dataDisplay.AppendText(line)
    861861        else:
    862             self.dataDisplay.AppendText(line+'\n')
    863            
    864 def UpdateSeqResults(self,data):
     862            G2frame.dataDisplay.AppendText(line+'\n')
     863           
     864def UpdateSeqResults(G2frame,data):
    865865    """
    866866    input:
     
    886886        sampleParm = {}
    887887        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'))
    890890            for item in sampleParmDict:
    891891                sampleParmDict[item].append(sampleData[item])
     
    909909   
    910910    def Select(event):
    911         cols = self.dataDisplay.GetSelectedCols()
    912         rows = self.dataDisplay.GetSelectedRows()
     911        cols = G2frame.dataDisplay.GetSelectedCols()
     912        rows = G2frame.dataDisplay.GetSelectedRows()
    913913        if cols:
    914914            plotData = []
     
    916916            plotNames = []
    917917            for col in cols:
    918                 plotData.append(self.SeqTable.GetColValues(col))
     918                plotData.append(G2frame.SeqTable.GetColValues(col))
    919919                plotSig.append(GetSigData(col))
    920                 plotNames.append(self.SeqTable.GetColLabelValue(col))
     920                plotNames.append(G2frame.SeqTable.GetColLabelValue(col))
    921921            plotData = np.array(plotData)
    922             G2plt.PlotSeq(self,plotData,plotSig,plotNames,sampleParms)
     922            G2plt.PlotSeq(G2frame,plotData,plotSig,plotNames,sampleParms)
    923923        elif rows:
    924924            name = histNames[rows[0]]
    925             G2plt.PlotCovariance(self,Data=data[name])
     925            G2plt.PlotCovariance(G2frame,Data=data[name])
    926926               
    927     if self.dataDisplay:
    928         self.dataDisplay.Destroy()
     927    if G2frame.dataDisplay:
     928        G2frame.dataDisplay.Destroy()
    929929    cellList = {}
    930930    newCellDict = data[histNames[0]]['newCellDict']
     
    938938            atomList[newAtomDict[item][0]] = item
    939939    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()
    943943    colLabels = data['varyList']+atomList.keys()+cellList.keys()
    944944    Types = len(data['varyList']+atomList.keys()+cellList.keys())*[wg.GRID_VALUE_FLOAT,]
     
    950950        item += [newAtomDict[atomList[parm]][1] for parm in atomList.keys()]
    951951        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 8
    958     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])
    961961   
    962 def UpdateConstraints(self,data):             
     962def UpdateConstraints(G2frame,data):             
    963963#    data.update({'Hist':[],'HAP':[],'Phase':[]})       #empty dict - fill it
    964964    if not data:
    965965        data.update({'Hist':[],'HAP':[],'Phase':[]})       #empty dict - fill it
    966     Histograms,Phases = self.GetUsedHistogramsAndPhasesfromTree()
     966    Histograms,Phases = G2frame.GetUsedHistogramsAndPhasesfromTree()
    967967    AtomDict = dict([Phases[phase]['pId'],Phases[phase]['Atoms']] for phase in Phases)
    968968    Natoms,phaseVary,phaseDict,pawleyLookup,FFtable,BLtable = G2str.GetPhaseData(Phases,Print=False)
     
    991991    Indx = {}
    992992    scope = {}                          #filled out later
    993     self.Page = [0,'phs']
     993    G2frame.Page = [0,'phs']
    994994   
    995995    def GetPHlegends(Phases,Histograms):
     
    10341034        if page[1] == 'phs':
    10351035            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)
    10371037        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)
    10391039        varbs = [FrstVarb,]
    10401040        if dlg.ShowModal() == wx.ID_OK:
     
    10621062            Atoms = Phase['Atoms']
    10631063        constr = []
    1064         page = self.Page
     1064        page = G2frame.Page
    10651065        choice = scope[page[1]]
    10661066        if page[1] == 'phs':
    10671067            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)
    10691069        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])
    10711071        if dlg.ShowModal() == wx.ID_OK:
    10721072            sel = dlg.GetSelection()
     
    10781078    def OnAddEquivalence(event):
    10791079        constr = []
    1080         page = self.Page
     1080        page = G2frame.Page
    10811081        choice = scope[page[1]]
    10821082        if page[1] == 'phs':
    10831083            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)
    10851085        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])
    10871087        if dlg.ShowModal() == wx.ID_OK:
    10881088            sel = dlg.GetSelection()
     
    10971097    def OnAddFunction(event):
    10981098        constr = []
    1099         page = self.Page
     1099        page = G2frame.Page
    11001100        choice = scope[page[1]]
    11011101        if page[1] == 'phs':
    11021102            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)
    11041104        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])
    11061106        if dlg.ShowModal() == wx.ID_OK:
    11071107            sel = dlg.GetSelection()
     
    11161116    def OnAddConstraint(event):
    11171117        constr = []
    1118         page = self.Page
     1118        page = G2frame.Page
    11191119        choice = scope[page[1]]
    11201120        if page[1] == 'phs':
    11211121            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)
    11231123        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])
    11251125        if dlg.ShowModal() == wx.ID_OK:
    11261126            sel = dlg.GetSelection()
     
    11981198            constType = 'Equivalence'
    11991199            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)
    12011201        try:
    12021202            if dlg.ShowModal() == wx.ID_OK:
     
    12241224        HAPConstr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
    12251225        Size[1] = min(Size[1],250)
    1226         self.dataFrame.setSizePosLeft(Size)
     1226        G2frame.dataFrame.setSizePosLeft(Size)
    12271227       
    12281228    def UpdateHistConstr():
     
    12391239        HistConstr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
    12401240        Size[1] = min(Size[1],250)
    1241         self.dataFrame.setSizePosLeft(Size)
     1241        G2frame.dataFrame.setSizePosLeft(Size)
    12421242       
    12431243    def UpdatePhaseConstr():
     
    12541254        PhaseConstr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
    12551255        Size[1] = min(Size[1],250)
    1256         self.dataFrame.setSizePosLeft(Size)
     1256        G2frame.dataFrame.setSizePosLeft(Size)
    12571257   
    12581258    def OnPageChanged(event):
     
    12601260            page = event.GetSelection()
    12611261        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)
    12651265        if text == 'Histogram/Phase constraints':
    1266             self.Page = [page,'hap']
     1266            G2frame.Page = [page,'hap']
    12671267            UpdateHAPConstr()
    12681268        elif text == 'Histogram constraints':
    1269             self.Page = [page,'hst']
     1269            G2frame.Page = [page,'hst']
    12701270            UpdateHistConstr()
    12711271        elif text == 'Phase constraints':
    1272             self.Page = [page,'phs']
     1272            G2frame.Page = [page,'phs']
    12731273            UpdatePhaseConstr()
    12741274
     
    12801280        'hap':['HAP variables:',phlegend,hapList,'HAP',UpdateHAPConstr],
    12811281        '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()
    12881288    SetStatusLine('')
    12891289   
    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())
    12961296   
    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')
    13031303    UpdatePhaseConstr()
    13041304
    1305     self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)
     1305    G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)
    13061306   
    13071307   
    1308 def UpdateRestraints(self,data):
     1308def UpdateRestraints(G2frame,data):
    13091309
    13101310    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)
    13131313
    13141314    def UpdateAtomRestr():
     
    13221322
    13231323        dataDisplay.SetSizer(mainSizer)
    1324         Size = mainSizer.Fit(self.dataFrame)
     1324        Size = mainSizer.Fit(G2frame.dataFrame)
    13251325        Size[1] += 26                           #compensate for status bar
    13261326        dataDisplay.SetSize(Size)
    1327         self.dataFrame.setSizePosLeft(Size)
     1327        G2frame.dataFrame.setSizePosLeft(Size)
    13281328       
    13291329    def UpdatePhaseRestr():
     
    13371337
    13381338        dataDisplay.SetSizer(mainSizer)
    1339         Size = mainSizer.Fit(self.dataFrame)
     1339        Size = mainSizer.Fit(G2frame.dataFrame)
    13401340        Size[1] += 26                           #compensate for status bar
    13411341        dataDisplay.SetSize(Size)
    1342         self.dataFrame.setSizePosLeft(Size)
     1342        G2frame.dataFrame.setSizePosLeft(Size)
    13431343   
    13441344    def OnPageChanged(event):
    13451345        page = event.GetSelection()
    1346         text = self.dataDisplay.GetPageText(page)
     1346        text = G2frame.dataDisplay.GetPageText(page)
    13471347        if text == 'Atom restraints':
    1348             self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)
     1348            G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu)
    13491349            UpdateAtomRestr()
    13501350        elif text == 'Phase restraints':
    13511351            UpdatePhaseRestr()
    1352             self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)
     1352            G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu)
    13531353        event.Skip()
    13541354
    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())
    13621362   
    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')
    13671367    UpdatePhaseRestr()
    13681368#    AtomRestrData = data['AtomRestr']
    13691369
    1370     self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)       
     1370    G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)       
    13711371             
    1372 def UpdateHKLControls(self,data):
     1372def UpdateHKLControls(G2frame,data):
    13731373   
    13741374    def OnScaleSlider(event):
     
    13761376        scaleSel.SetValue(int(scale*1000.))
    13771377        data['Scale'] = scale*10.
    1378         G2plt.PlotSngl(self)
     1378        G2plt.PlotSngl(G2frame)
    13791379       
    13801380    def OnLayerSlider(event):
    13811381        layer = layerSel.GetValue()
    13821382        data['Layer'] = layer
    1383         G2plt.PlotSngl(self)
     1383        G2plt.PlotSngl(G2frame)
    13841384       
    13851385    def OnSelZone(event):
    13861386        data['Zone'] = zoneSel.GetValue()
    1387         G2plt.PlotSngl(self,newPlot=True)
     1387        G2plt.PlotSngl(G2frame,newPlot=True)
    13881388       
    13891389    def OnSelType(event):
    13901390        data['Type'] = typeSel.GetValue()
    1391         G2plt.PlotSngl(self)
     1391        G2plt.PlotSngl(G2frame)
    13921392       
    13931393    def SetStatusLine():
    13941394        Status.SetStatusText("look at me!!!")
    13951395                                     
    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()
    14001400    SetStatusLine()
    14011401    zones = ['100','010','001']
     
    14061406    else:
    14071407        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)
    14101410    mainSizer = wx.BoxSizer(wx.VERTICAL)
    14111411    mainSizer.Add((5,10),0)
    14121412   
    14131413    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,
    14151415        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,
    14171417        style=wx.SL_HORIZONTAL,value=int(data['Scale']*100))
    14181418    scaleSizer.Add(scaleSel,1,wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
     
    14231423   
    14241424    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,
    14261426        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'],
    14281428        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    14291429    zoneSel.Bind(wx.EVT_COMBOBOX, OnSelZone)
    14301430    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,
    14321432        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,
    14341434        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    14351435    typeSel.Bind(wx.EVT_COMBOBOX, OnSelType)
     
    14401440    izone = zones.index(data['Zone'])
    14411441    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,
    14431443        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],
    14451445        style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS,value=0)
    14461446    layerSel.SetLineSize(1)
     
    14531453       
    14541454    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
     1459def GetPatternTreeDataNames(G2frame,dataTypes):
    14601460    names = []
    1461     item, cookie = self.PatternTree.GetFirstChild(self.root)       
     1461    item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)       
    14621462    while item:
    1463         name = self.PatternTree.GetItemText(item)
     1463        name = G2frame.PatternTree.GetItemText(item)
    14641464        if name[:4] in dataTypes:
    14651465            names.append(name)
    1466         item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     1466        item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    14671467    return names
    14681468                         
    1469 def GetPatternTreeItemId(self, parentId, itemText):
    1470     item, cookie = self.PatternTree.GetFirstChild(parentId)
     1469def GetPatternTreeItemId(G2frame, parentId, itemText):
     1470    item, cookie = G2frame.PatternTree.GetFirstChild(parentId)
    14711471    while item:
    1472         if self.PatternTree.GetItemText(item) == itemText:
     1472        if G2frame.PatternTree.GetItemText(item) == itemText:
    14731473            return item
    1474         item, cookie = self.PatternTree.GetNextChild(parentId, cookie)
     1474        item, cookie = G2frame.PatternTree.GetNextChild(parentId, cookie)
    14751475    return 0               
    14761476
    1477 def MovePatternTreeToGrid(self,item):
     1477def MovePatternTreeToGrid(G2frame,item):
    14781478   
    1479 #    print self.PatternTree.GetItemText(item)
     1479#    print G2frame.PatternTree.GetItemText(item)
    14801480   
    14811481    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('')
    14991499    else:
    15001500        #create the frame for the data item window
    1501         self.dataFrame = DataFrame(parent=self.mainPanel)
    1502 
    1503     self.dataFrame.Raise()           
    1504     self.PickId = 0
    1505     parentID = self.root
    1506     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)
    15071507    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 = item
    1512         self.PickId = item
    1513         if self.PatternTree.GetItemText(item) == 'Notebook':
    1514             self.dataFrame.SetMenuBar(self.dataFrame.DataNotebookMenu)
    1515             self.PatternId = 0
    1516             self.ExportPattern.Enable(False)
    1517             data = self.PatternTree.GetItemPyData(item)
    1518             UpdateNotebook(self,data)
    1519         elif self.PatternTree.GetItemText(item) == 'Controls':
    1520             self.PatternId = 0
    1521             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)
    15231523            if not data:           #fill in defaults
    15241524                data = {
     
    15301530                    #distance/angle controls
    15311531                    '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(),
    15431543                        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 = item
    1553             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(),
    15601560                style=wx.TE_MULTILINE,
    15611561                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 = item
    1565             G2plt.PlotSngl(self,newPlot=True)
    1566         elif 'PDF' in self.PatternTree.GetItemText(item):
    1567             self.PatternId = item
    1568             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(),
    15731573                value='Select one phase to see its parameters')           
    1574     elif 'I(Q)' in self.PatternTree.GetItemText(item):
    1575         self.PickId = item
    1576         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 = item
    1580         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 = item
    1584         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 = item
    1588         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 = item
    1592         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 = item
    1598         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 = item
    1603         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 = item
    1612         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 = item
    1618         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 = item
    1626         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 = item
    1636         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 = item
    1642         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 = item
    1648         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 = item
    1654         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 = item
    1660         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)
    16611661
    16621662        if 'Temperature' not in data:           #temp fix for old gpx files
     
    16641664                'DisplaceY':[0.0,False],'Diffuse':[],'Temperature':300.,'Pressure':1.0,'Humidity':0.0,'Voltage':0.0,
    16651665                'Force':0.0,'Gonio. radius':200.0}
    1666             self.PatternTree.SetItemPyData(item,data)
     1666            G2frame.PatternTree.SetItemPyData(item,data)
    16671667   
    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 = item
    1674         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)
    16781678        else:
    1679             G2plt.PlotPatterns(self)
    1680     elif self.PatternTree.GetItemText(item) == 'Unit Cells List':
    1681         self.PatternId = self.PatternTree.GetItemParent(item)
    1682         self.PickId = item
    1683         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)
    16841684        if not data:
    16851685            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
     
    16871687            data.append([])                                 #empty cell list
    16881688            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)
    16931693        else:
    1694             G2plt.PlotPatterns(self)
    1695     elif self.PatternTree.GetItemText(item) == 'Reflection Lists':
    1696         self.PatternId = self.PatternTree.GetItemParent(item)
    1697         self.PickId = item
    1698         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 = ''
    17001700        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  
    2929
    3030                   
    31 def UpdateImageControls(self,data,masks):
     31def UpdateImageControls(G2frame,data,masks):
    3232    import ImageCalibrants as calFile
    3333   
     
    3737    def OnNewColorBar(event):
    3838        data['color'] = colSel.GetValue()
    39         G2plt.PlotExposedImage(self,event=event)
     39        G2plt.PlotExposedImage(G2frame,event=event)
    4040       
    4141    def OnNewCalibrant(event):
     
    6060        else:
    6161            data['setRings'] = True
    62         G2plt.PlotExposedImage(self,event=event)
     62        G2plt.PlotExposedImage(G2frame,event=event)
    6363
    6464    def OnCalibDmin(event):
     
    103103        maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero))
    104104        minSel.SetValue(int(100*(data['range'][1][0]/DeltOne)))
    105         G2plt.PlotExposedImage(self,event=event)
     105        G2plt.PlotExposedImage(G2frame,event=event)
    106106       
    107107    def OnMinVal(event):
     
    115115        minVal.SetValue('%.0f'%(data['range'][1][0]))
    116116        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)
    118118       
    119119    def OnMaxSlider(event):
     
    125125        minSel.SetValue(int(100*(data['range'][1][0]/DeltOne)))
    126126        maxVal.SetValue('%.0f'%(data['range'][1][1]))
    127         G2plt.PlotExposedImage(self,event=event)
     127        G2plt.PlotExposedImage(G2frame,event=event)
    128128       
    129129    def OnMinSlider(event):
     
    132132        data['range'][1][0] = max(0.0,min(data['range'][1][1]-1,imin))
    133133        minVal.SetValue('%.0f'%(data['range'][1][0]))
    134         G2plt.PlotExposedImage(self,event=event)
     134        G2plt.PlotExposedImage(G2frame,event=event)
    135135       
    136136    def OnNumOutChans(event):
     
    153153            pass
    154154        outAzim.SetValue(str(data['outAzimuths']))          #reset in case of error       
    155         G2plt.PlotExposedImage(self,event=event)
     155        G2plt.PlotExposedImage(G2frame,event=event)
    156156       
    157157    def OnWavelength(event):
     
    170170        else:
    171171            data['showLines'] = True
    172         G2plt.PlotExposedImage(self,event=event)
     172        G2plt.PlotExposedImage(G2frame,event=event)
    173173       
    174174    def OnSetDefault(event):
    175175        import copy
    176176        if data['setDefault']:
    177             self.imageDefault = {}
     177            G2frame.imageDefault = {}
    178178            data['setDefault'] = False
    179179        else:
    180             self.imageDefault = copy.copy(data)
     180            G2frame.imageDefault = copy.copy(data)
    181181            data['setDefault'] = True
    182182           
    183183    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())
    186186        if Ltth > Utth:
    187187            Ltth,Utth = Utth,Ltth
    188188        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)
    192192       
    193193    def OnFullIntegrate(event):
    194         Lazm =int(self.Lazim.GetValue())
     194        Lazm =int(G2frame.Lazim.GetValue())
    195195        if data['fullIntegrate']:
    196196            data['fullIntegrate'] = False
     
    199199            data['fullIntegrate'] = True
    200200            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)
    203203       
    204204    def OnLRazim(event):
    205         Lazm =int(self.Lazim.GetValue())
     205        Lazm =int(G2frame.Lazim.GetValue())
    206206        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())
    209209        if Lazm > Razm:
    210210            Lazm -= 360
    211211        data['LRazimuth'] = [Lazm,Razm]
    212         G2plt.PlotExposedImage(self,event=event)
     212        G2plt.PlotExposedImage(G2frame,event=event)
    213213       
    214214    def OnBackImage(event):
     
    227227        data['rings'] = []
    228228        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)
    231231           
    232232    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 = True
     233        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
    236236       
    237237    def OnRecalibrate(event):
    238         G2img.ImageRecalibrate(self,data)
    239         UpdateImageControls(self,data,masks)
     238        G2img.ImageRecalibrate(G2frame,data)
     239        UpdateImageControls(G2frame,data,masks)
    240240       
    241241    def OnIntegrate(event):
     
    245245            backImg = data['background image'][0]
    246246            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)*backScale
    250             sumImage = self.ImageZ+backImage
     247            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
    251251            sumMin = np.min(sumImage)
    252252            sumMax = np.max(sumImage)
    253253            maskCopy['Thresholds'] = [(sumMin,sumMax),[sumMin,sumMax]]
    254             self.Integrate = G2img.ImageIntegrate(sumImage,data,maskCopy)
     254            G2frame.Integrate = G2img.ImageIntegrate(sumImage,data,maskCopy)
    255255        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)
    260260       
    261261    def OnIntegrateAll(event):
     
    263263        TextList = [[False,'All IMG',0]]
    264264        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)
    267267            while id:
    268                 name = self.PatternTree.GetItemText(id)
     268                name = G2frame.PatternTree.GetItemText(id)
    269269                Names.append(name)
    270270                if 'IMG' in name:
    271271                    TextList.append([False,name,id])
    272                 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     272                id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    273273            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')
    275275                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)
    277277            try:
    278278                if dlg.ShowModal() == wx.ID_OK:
     
    284284                        ifintegrate,name,id = item
    285285                        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)
    291291                            backImage = []
    292292                            if Data['background image'][0]:
    293293                                backImg = Data['background image'][0]
    294294                                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)*backScale
     295                                id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg)
     296                                Npix,imagefile = G2frame.PatternTree.GetItemPyData(id)
     297                                backImage = G2IO.GetImageData(G2frame,imagefile,True)*backScale
    298298                            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'))
    301301                            except TypeError:       #missing Masks
    302302                                Imin,Imax = Data['Range']
    303303                                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)
    306306                            if len(backImage):                               
    307                                 self.Integrate = G2img.ImageIntegrate(image+backImage,Data,Masks)
     307                                G2frame.Integrate = G2img.ImageIntegrate(image+backImage,Data,Masks)
    308308                            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)
    312312            finally:
    313313                dlg.Destroy()
     
    317317        TextList = [[False,'All IMG',0]]
    318318        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)
    321321            while id:
    322                 name = self.PatternTree.GetItemText(id)
     322                name = G2frame.PatternTree.GetItemText(id)
    323323                Names.append(name)
    324324                if 'IMG' in name:
    325                     if id == self.Image:
     325                    if id == G2frame.Image:
    326326                        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')))
    328328                        Data['showLines'] = True
    329329                        Data['ring'] = []
     
    333333                    else:
    334334                        TextList.append([False,name,id])
    335                 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     335                id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    336336            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')
    338338                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)
    340340            try:
    341341                if dlg.ShowModal() == wx.ID_OK:
     
    347347                        ifcopy,name,id = item
    348348                        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')))
    350350                            Data['range'] = oldData['range']
    351351                            Data['size'] = oldData['size']                               
     
    353353                            Data['rings'] = []
    354354                            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))
    356356            finally:
    357357                dlg.Destroy()
    358358               
    359359    def OnSaveControls(event):
    360         dlg = wx.FileDialog(self, 'Choose image controls file', '.', '',
     360        dlg = wx.FileDialog(G2frame, 'Choose image controls file', '.', '',
    361361            'image control files (*.imctrl)|*.imctrl',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR)
    362362        try:
     
    377377        cntlList = ['wavelength','distance','tilt','rotation',
    378378            'fullIntegrate','outAzimuths','LRazimuth','IOtth']
    379         dlg = wx.FileDialog(self, 'Choose image controls file', '.', '',
     379        dlg = wx.FileDialog(G2frame, 'Choose image controls file', '.', '',
    380380            'image control files (*.imctrl)|*.imctrl',wx.OPEN|wx.CHANGE_DIR)
    381381        try:
     
    402402                    S = File.readline()
    403403                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)
    406406               
    407407                File.close()
     
    423423        data['type'] = 'PWDR'
    424424    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)
    433433    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)
    441441    mainSizer = wx.BoxSizer(wx.VERTICAL)
    442442    mainSizer.Add((5,10),0)
    443443   
    444444    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,
    448448        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    449449    typeSel.SetValue(data['type'])
    450450    typeSel.Bind(wx.EVT_COMBOBOX, OnDataType)
    451451    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,
    455455        style=wx.CB_READONLY|wx.CB_DROPDOWN|wx.CB_SORT)
    456456    colSel.Bind(wx.EVT_COMBOBOX, OnNewColorBar)
    457457    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'])),
    461461        style=wx.TE_PROCESS_ENTER)
    462462    azmthOff.Bind(wx.EVT_TEXT_ENTER,OnAzmthOff)
     
    472472    DeltOne = data['range'][1][1]-max(0.0,data['range'][0][0])
    473473    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,
    477477        value=int(100*sqrtDeltOne/sqrtDeltZero))
    478478    maxSizer.Add(maxSel,1,wx.EXPAND)
    479479    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]))
    481481    maxVal.Bind(wx.EVT_TEXT_ENTER,OnMaxVal)   
    482482    maxVal.Bind(wx.EVT_KILL_FOCUS,OnMaxVal)
    483483    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,
    487487        value=int(100*(data['range'][1][0]-max(0.0,data['range'][0][0]))/DeltOne))
    488488    maxSizer.Add(minSel,1,wx.EXPAND)
    489489    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]))
    491491    minVal.Bind(wx.EVT_TEXT_ENTER,OnMinVal)   
    492492    minVal.Bind(wx.EVT_KILL_FOCUS,OnMinVal)
     
    495495   
    496496    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,
    498498        wx.ALIGN_CENTER_VERTICAL)   
    499499    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,
    501501        wx.ALIGN_CENTER_VERTICAL)   
    502502    dataSizer.Add((5,0),0)
    503503   
    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,
    505505        wx.ALIGN_CENTER_VERTICAL)
    506506    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)
    508508    centText.SetBackgroundColour(VERY_LIGHT_GREY)
    509509    dataSizer.Add(centText,0,wx.ALIGN_CENTER_VERTICAL)
    510510   
    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,
    512512        wx.ALIGN_CENTER_VERTICAL)
    513513       
    514514    IOtth = data['IOtth']
    515515    littleSizer = wx.BoxSizer(wx.HORIZONTAL)
    516     self.InnerTth = wx.TextCtrl(parent=self.dataDisplay,
     516    G2frame.InnerTth = wx.TextCtrl(parent=G2frame.dataDisplay,
    517517        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,
    522522        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)
    526526    dataSizer.Add(littleSizer,0,)
    527527       
    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'])),
    531531        style=wx.TE_PROCESS_ENTER)
    532532    waveSel.Bind(wx.EVT_TEXT_ENTER,OnWavelength)
     
    534534    dataSizer.Add(waveSel,0,wx.ALIGN_CENTER_VERTICAL)
    535535         
    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,
    537537        wx.ALIGN_CENTER_VERTICAL)
    538538    LRazim = data['LRazimuth']
    539539    littleSizer = wx.BoxSizer(wx.HORIZONTAL)
    540     self.Lazim = wx.TextCtrl(parent=self.dataDisplay,
     540    G2frame.Lazim = wx.TextCtrl(parent=G2frame.dataDisplay,
    541541        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,
    546546        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)
    549549    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)
    554554    dataSizer.Add(littleSizer,0,)
    555555       
    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)
    559559    distSel.SetBackgroundColour(VERY_LIGHT_GREY)
    560560    dataSizer.Add(distSel,0,wx.ALIGN_CENTER_VERTICAL)
    561561
    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,
    563563        wx.ALIGN_CENTER_VERTICAL)
    564564    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)
    566566    outChan.Bind(wx.EVT_TEXT_ENTER,OnNumOutChans)
    567567    outChan.Bind(wx.EVT_KILL_FOCUS,OnNumOutChans)
    568568    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)
    570570    outAzim.Bind(wx.EVT_TEXT_ENTER,OnNumOutAzms)
    571571    outAzim.Bind(wx.EVT_KILL_FOCUS,OnNumOutAzms)
     
    573573    dataSizer.Add(littleSizer,0,)
    574574
    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)
    578578    tiltSel.SetBackgroundColour(VERY_LIGHT_GREY)
    579579    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?')
    581581    dataSizer.Add(showLines,0,wx.ALIGN_CENTER_VERTICAL)
    582582    showLines.Bind(wx.EVT_CHECKBOX, OnShowLines)
    583583    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?')
    585585    dataSizer.Add(fullIntegrate,0,wx.ALIGN_CENTER_VERTICAL)
    586586    fullIntegrate.Bind(wx.EVT_CHECKBOX, OnFullIntegrate)
    587587    fullIntegrate.SetValue(data['fullIntegrate'])
    588588   
    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 GSASIIimage
     589    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
    592592    rotSel.SetBackgroundColour(VERY_LIGHT_GREY)
    593593    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?')
    595595    dataSizer.Add(setDefault,0,wx.ALIGN_CENTER_VERTICAL)
    596596    setDefault.Bind(wx.EVT_CHECKBOX, OnSetDefault)
     
    598598    dataSizer.Add((5,5),0)
    599599   
    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,
    603603        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    604604    backImage.Bind(wx.EVT_COMBOBOX,OnBackImage)
    605605    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])),
    608608        style=wx.TE_PROCESS_ENTER)
    609609    backMult.Bind(wx.EVT_TEXT_ENTER,OnBackMult)
     
    613613    mainSizer.Add((5,5),0)       
    614614    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,
    616616        wx.ALIGN_CENTER_VERTICAL)
    617617    mainSizer.Add((5,5),0)
    618618    calibSizer = wx.FlexGridSizer(2,3,5,5)
    619619    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,
    623623        style=wx.CB_READONLY|wx.CB_DROPDOWN|wx.CB_SORT)
    624624    calSel.Bind(wx.EVT_COMBOBOX, OnNewCalibrant)
     
    627627   
    628628    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)],
    632632        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    633633    calibSkip.Bind(wx.EVT_COMBOBOX, OnCalibSkip)
     
    636636   
    637637    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'])),
    641641        style=wx.TE_PROCESS_ENTER)
    642642    calibDmin.Bind(wx.EVT_TEXT_ENTER,OnCalibDmin)
     
    646646   
    647647    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'])),
    651651        style=wx.TE_PROCESS_ENTER)
    652652    cutOff.Bind(wx.EVT_TEXT_ENTER,OnCutOff)
     
    656656   
    657657    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'],
    661661        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    662662    pixLimit.Bind(wx.EVT_COMBOBOX, OnPixLimit)
     
    665665   
    666666    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?')
    668668    comboSizer.Add(setRings,0)
    669669    setRings.Bind(wx.EVT_CHECKBOX, OnSetRings)
     
    674674       
    675675    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   
     681def UpdateMasks(G2frame,data):
    682682   
    683683    def OnTextMsg(event):
     
    697697        lowerThreshold.SetValue("%8d" % (lower))
    698698        upperThreshold.SetValue("%8d" % (upper))
    699         G2plt.PlotExposedImage(self,event=event)
     699        G2plt.PlotExposedImage(G2frame,event=event)
    700700       
    701701    def OnSpotDiameter(event):
     
    707707        Obj.SetValue("%.2f"%(diameter))
    708708        data['Points'][spotIds.index(Obj.GetId())][2] = diameter
    709         G2plt.PlotExposedImage(self,event=event)
     709        G2plt.PlotExposedImage(G2frame,event=event)
    710710       
    711711    def OnDeleteSpot(event):
    712712        Obj = event.GetEventObject()
    713713        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)
    716716       
    717717    def OnRingThickness(event):
     
    723723        Obj.SetValue("%.3f"%(thick))
    724724        data['Rings'][ringIds.index(Obj.GetId())][1] = thick
    725         G2plt.PlotExposedImage(self,event=event)
     725        G2plt.PlotExposedImage(G2frame,event=event)
    726726       
    727727    def OnDeleteRing(event):
    728728        Obj = event.GetEventObject()
    729729        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)
    732732
    733733    def OnArcThickness(event):
     
    739739        Obj.SetValue("%.3f"%(thick))
    740740        data['Arcs'][arcIds.index(Obj.GetId())][2] = thick
    741         G2plt.PlotExposedImage(self,event=event)
     741        G2plt.PlotExposedImage(G2frame,event=event)
    742742       
    743743    def OnDeleteArc(event):
    744744        Obj = event.GetEventObject()
    745745        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)
    748748
    749749    def OnDeletePoly(event):
    750750        Obj = event.GetEventObject()
    751751        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)
    754754
    755755    def OnCopyMask(event):
     
    757757        TextList = [[False,'All IMG',0]]
    758758        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)
    761761            while id:
    762                 name = self.PatternTree.GetItemText(id)
     762                name = G2frame.PatternTree.GetItemText(id)
    763763                Names.append(name)
    764764                if 'IMG' in name:
    765                     if id == self.Image:
     765                    if id == G2frame.Image:
    766766                        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')))
    768768                        del Mask['Thresholds']
    769769                    else:
    770770                        TextList.append([False,name,id])
    771                 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     771                id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    772772            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')
    774774                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)
    776776            try:
    777777                if dlg.ShowModal() == wx.ID_OK:
     
    783783                        ifcopy,name,id = item
    784784                        if ifcopy:
    785                             mask = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks'))
     785                            mask = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks'))
    786786                            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))
    788788            finally:
    789789                dlg.Destroy()
    790790               
    791791    def OnSaveMask(event):
    792         dlg = wx.FileDialog(self, 'Choose image mask file', '.', '',
     792        dlg = wx.FileDialog(G2frame, 'Choose image mask file', '.', '',
    793793            'image mask files (*.immask)|*.immask',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR)
    794794        try:
     
    805805       
    806806    def OnLoadMask(event):
    807         dlg = wx.FileDialog(self, 'Choose image mask file', '.', '',
     807        dlg = wx.FileDialog(G2frame, 'Choose image mask file', '.', '',
    808808            'image mask files (*.immask)|*.immask',wx.OPEN|wx.CHANGE_DIR)
    809809        try:
     
    822822                    S = File.readline()
    823823                data.update(save)
    824                 UpdateMasks(self,data)
    825                 G2plt.PlotExposedImage(self,event=event)
     824                UpdateMasks(G2frame,data)
     825                G2plt.PlotExposedImage(G2frame,event=event)
    826826               
    827827                File.close()
     
    829829            dlg.Destroy()
    830830       
    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()
    839839        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)
    841841    mainSizer = wx.BoxSizer(wx.VERTICAL)
    842842    mainSizer.Add((5,10),0)
     
    849849   
    850850    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)
    854854    littleSizer.Add(Text,0,wx.ALIGN_CENTER_VERTICAL)
    855855    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)
    857857    littleSizer.Add(Text,0,wx.ALIGN_CENTER_VERTICAL)
    858858    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 '),
    860860        0,wx.ALIGN_CENTER_VERTICAL)
    861     lowerThreshold = wx.TextCtrl(parent=self.dataDisplay,
     861    lowerThreshold = wx.TextCtrl(parent=G2frame.dataDisplay,
    862862        value=("%8d" % (thresh[1][0])),style=wx.TE_PROCESS_ENTER)
    863863    lowerThreshold.Bind(wx.EVT_TEXT_ENTER,OnThreshold)
    864864    lowerThreshold.Bind(wx.EVT_KILL_FOCUS,OnThreshold)
    865865    littleSizer.Add(lowerThreshold,0,wx.ALIGN_CENTER_VERTICAL)
    866     upperThreshold = wx.TextCtrl(parent=self.dataDisplay,
     866    upperThreshold = wx.TextCtrl(parent=G2frame.dataDisplay,
    867867        value=("%8d" % (thresh[1][1])),style=wx.TE_PROCESS_ENTER)
    868868    upperThreshold.Bind(wx.EVT_TEXT_ENTER,OnThreshold)
     
    874874    if spots:
    875875        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,
    883883            wx.ALIGN_CENTER_VERTICAL)
    884884        littleSizer.Add((5,0),0)
    885885        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)),
    887887                style=wx.TE_READONLY)
    888888            spotText.SetBackgroundColour(VERY_LIGHT_GREY)
    889889            littleSizer.Add(spotText,0,wx.ALIGN_CENTER_VERTICAL)
    890890            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)),
    892892                style=wx.TE_PROCESS_ENTER)
    893893            littleSizer.Add(spotDiameter,0,wx.ALIGN_CENTER_VERTICAL)
     
    895895            spotDiameter.Bind(wx.EVT_KILL_FOCUS,OnSpotDiameter)
    896896            spotIds.append(spotDiameter.GetId())
    897             spotDelete = wx.CheckBox(parent=self.dataDisplay,label='delete?')
     897            spotDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?')
    898898            spotDelete.Bind(wx.EVT_CHECKBOX,OnDeleteSpot)
    899899            delSpotId.append(spotDelete)
     
    904904    if rings:
    905905        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,
    913913            wx.ALIGN_CENTER_VERTICAL)
    914914        littleSizer.Add((5,0),0)
    915915        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)),
    917917                style=wx.TE_READONLY)
    918918            ringText.SetBackgroundColour(VERY_LIGHT_GREY)
    919919            ringText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg)
    920920            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)),
    922922                style=wx.TE_PROCESS_ENTER)
    923923            littleSizer.Add(ringThick,0,wx.ALIGN_CENTER_VERTICAL)
     
    925925            ringThick.Bind(wx.EVT_KILL_FOCUS,OnRingThickness)
    926926            ringIds.append(ringThick.GetId())
    927             ringDelete = wx.CheckBox(parent=self.dataDisplay,label='delete?')
     927            ringDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?')
    928928            ringDelete.Bind(wx.EVT_CHECKBOX,OnDeleteRing)
    929929            delRingId.append(ringDelete)
     
    934934    if arcs:
    935935        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,
    946946            wx.ALIGN_CENTER_VERTICAL)
    947947        littleSizer.Add((5,0),0)
    948948        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)),
    950950                style=wx.TE_READONLY)
    951951            arcText.SetBackgroundColour(VERY_LIGHT_GREY)
    952952            arcText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg)
    953953            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])),
    955955                style=wx.TE_READONLY)
    956956            azmText.SetBackgroundColour(VERY_LIGHT_GREY)
    957957            azmText.Bind(wx.EVT_ENTER_WINDOW,OnTextMsg)
    958958            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)),
    960960                style=wx.TE_PROCESS_ENTER)
    961961            littleSizer.Add(arcThick,0,wx.ALIGN_CENTER_VERTICAL)
     
    963963            arcThick.Bind(wx.EVT_KILL_FOCUS,OnArcThickness)
    964964            arcIds.append(arcThick.GetId())
    965             arcDelete = wx.CheckBox(parent=self.dataDisplay,label='delete?')
     965            arcDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?')
    966966            arcDelete.Bind(wx.EVT_CHECKBOX,OnDeleteArc)
    967967            delArcId.append(arcDelete)
     
    972972    if polygons:
    973973        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,
    975975            wx.ALIGN_CENTER_VERTICAL)
    976976        littleSizer.Add((5,0),0)
     
    980980                for x,y in polygon:
    981981                    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)
    983983                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?')
    985985                polyDelete.Bind(wx.EVT_CHECKBOX,OnDeletePoly)
    986986                delPolyId.append(polyDelete)
     
    988988        mainSizer.Add(littleSizer,0,)
    989989    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  
    228228        self.Draw(self.data)
    229229       
    230 def UpdatePhaseData(self,Item,data,oldPage):
     230def UpdatePhaseData(G2frame,Item,data,oldPage):
    231231
    232232    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())
    240240
    241241    def SetupGeneral():
     
    256256        generalData['AtomMass'] = []
    257257        generalData['Color'] = []
    258         generalData['Mydir'] = self.dirname
     258        generalData['Mydir'] = G2frame.dirname
    259259        cx,ct,cs,cia = [3,1,7,9]
    260260        generalData['AtomPtrs'] = [cx,ct,cs,cia]
     
    294294        'Drawing':{}
    295295        '''
    296         self.dataFrame.SetMenuBar(self.dataFrame.DataGeneral) # do this here, since this is called from all over
     296        G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataGeneral) # do this here, since this is called from all over
    297297       
    298298        phaseTypes = ['nuclear','modulated','magnetic','macromolecular','Pawley']
     
    303303            oldName = generalData['Name']
    304304            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'])
    308308            #Hmm, need to change phase name key in Reflection Lists for each histogram
    309309                       
     
    314314                UpdateGeneral()         #must use this way!
    315315                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')
    323323            else:
    324324                TypeTxt.SetValue(generalData['Type'])               
     
    591591
    592592        dataDisplay.SetSizer(mainSizer)
    593         Size = mainSizer.Fit(self.dataFrame)
     593        Size = mainSizer.Fit(G2frame.dataFrame)
    594594        Size[1] += 26                           #compensate for status bar
    595595        dataDisplay.SetSize(Size)
    596         self.dataFrame.setSizePosLeft(Size)
     596        G2frame.dataFrame.setSizePosLeft(Size)
    597597
    598598    def FillAtomsGrid():
    599599
    600         self.dataFrame.setSizePosLeft([700,300])
     600        G2frame.dataFrame.setSizePosLeft([700,300])
    601601        generalData = data['General']
    602602        atomData = data['Atoms']
     
    605605        if atomData:
    606606            for item in Items:   
    607                 self.dataFrame.AtomsMenu.Enable(item,True)
     607                G2frame.dataFrame.AtomsMenu.Enable(item,True)
    608608        else:
    609609            for item in Items:
    610                 self.dataFrame.AtomsMenu.Enable(item,False)           
     610                G2frame.dataFrame.AtomsMenu.Enable(item,False)           
    611611           
    612612        AAchoice = ": ,ALA,ARG,ASN,ASP,CYS,GLN,GLU,GLY,HIS,ILE,LEU,LYS,MET,PHE,PRO,SER,THR,TRP,TYR,VAL,MSE,HOH,UNK"
     
    644644                    elif Type in ['magnetic',]:
    645645                        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)
    647647                    if dlg.ShowModal() == wx.ID_OK:
    648648                        sel = dlg.GetSelections()
     
    653653                elif Atoms.GetColLabelValue(c) == 'I/A':
    654654                    choice = ['Isotropic','Anisotropic']
    655                     dlg = wx.SingleChoiceDialog(self,'Select','Thermal Motion',choice)
     655                    dlg = wx.SingleChoiceDialog(G2frame,'Select','Thermal Motion',choice)
    656656                    if dlg.ShowModal() == wx.ID_OK:
    657657                        sel = dlg.GetSelection()
     
    660660                elif Atoms.GetColLabelValue(c) == 'Type':
    661661                    choice = generalData['AtomTypes']
    662                     dlg = wx.SingleChoiceDialog(self,'Select','Atom types',choice)
     662                    dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom types',choice)
    663663                    if dlg.ShowModal() == wx.ID_OK:
    664664                        sel = dlg.GetSelection()
     
    675675                            choice.append(str(atomData[r][c]))
    676676                    choice.sort()
    677                     dlg = wx.SingleChoiceDialog(self,'Select','Residue',choice)
     677                    dlg = wx.SingleChoiceDialog(G2frame,'Select','Residue',choice)
    678678                    if dlg.ShowModal() == wx.ID_OK:
    679679                        sel = dlg.GetSelection()
     
    689689                        if str(atomData[r][c]) not in choice:
    690690                            choice.append(str(atomData[r][c]))
    691                     dlg = wx.SingleChoiceDialog(self,'Select','Residue no.',choice)
     691                    dlg = wx.SingleChoiceDialog(G2frame,'Select','Residue no.',choice)
    692692                    if dlg.ShowModal() == wx.ID_OK:
    693693                        sel = dlg.GetSelection()
     
    703703                        if atomData[r][c] not in choice:
    704704                            choice.append(atomData[r][c])
    705                     dlg = wx.SingleChoiceDialog(self,'Select','Chain',choice)
     705                    dlg = wx.SingleChoiceDialog(G2frame,'Select','Chain',choice)
    706706                    if dlg.ShowModal() == wx.ID_OK:
    707707                        sel = dlg.GetSelection()
     
    815815            r,c =  event.GetRow(),event.GetCol()
    816816            if Atoms.GetColLabelValue(c) == 'Type':
    817                 PE = G2elem.PickElement(self)
     817                PE = G2elem.PickElement(G2frame)
    818818                if PE.ShowModal() == wx.ID_OK:
    819819                    atomData[r][c] = PE.Elem.strip()
     
    869869        SGData = data['General']['SGData']
    870870        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'])
    872872        table = []
    873873        rowLabels = []
     
    944944        if 'Atoms' in data['Drawing']:           
    945945            DrawAtomAdd(data['Drawing'],atomData[-1])
    946             G2plt.PlotStructure(self,data)
     946            G2plt.PlotStructure(G2frame,data)
    947947
    948948    def OnAtomInsert(event):
     
    990990                DrawAtomsDeleteByIDs(IDs)
    991991                FillAtomsGrid()
    992                 G2plt.PlotStructure(self,data)
     992                G2plt.PlotStructure(G2frame,data)
    993993        event.StopPropagation()
    994994
     
    10051005            elif Type == 'magnetic':
    10061006                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)
    10081008            if dlg.ShowModal() == wx.ID_OK:
    10091009                sel = dlg.GetSelections()
     
    10341034            generalData = data['General']
    10351035            SGData = generalData['SGData']
    1036             dlg = SymOpDialog(self,SGData,True)
     1036            dlg = SymOpDialog(G2frame,SGData,True)
    10371037            try:
    10381038                if dlg.ShowModal() == wx.ID_OK:
     
    10801080            if 'DisAglCtls' in generalData:
    10811081                DisAglCtls = generalData['DisAglCtls']
    1082             dlg = DisAglDialog(self,DisAglCtls,generalData)
     1082            dlg = DisAglDialog(G2frame,DisAglCtls,generalData)
    10831083            if dlg.ShowModal() == wx.ID_OK:
    10841084                DisAglCtls = dlg.GetData()
     
    11001100            if 'pId' in data:
    11011101                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'))
    11031103            G2str.DistAngle(DisAglCtls,DisAglData)
    11041104           
     
    12301230                choice.sort()
    12311231
    1232                 dlg = wx.MultiChoiceDialog(self,'Select',name,choice)
     1232                dlg = wx.MultiChoiceDialog(G2frame,'Select',name,choice)
    12331233                if dlg.ShowModal() == wx.ID_OK:
    12341234                    sel = dlg.GetSelections()
     
    12461246                            drawAtoms.SelectRow(row,True)
    12471247                            drawingData['selectedAtoms'].append(row)
    1248                     G2plt.PlotStructure(self,data)                   
     1248                    G2plt.PlotStructure(G2frame,data)                   
    12491249                dlg.Destroy()
    12501250               
     
    12591259                noSkip = True
    12601260                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)
    12621262                    if dlg.ShowModal() == wx.ID_OK:
    12631263                        sel = dlg.GetSelection()
     
    12671267                            drawAtoms.SetCellValue(r,c,parms)
    12681268                        FindBondsDraw()
    1269                         G2plt.PlotStructure(self,data)
     1269                        G2plt.PlotStructure(G2frame,data)
    12701270                    dlg.Destroy()
    12711271                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)
    12731273                    if dlg.ShowModal() == wx.ID_OK:
    12741274                        sel = dlg.GetSelection()
     
    12791279                    dlg.Destroy()                   
    12801280                elif drawAtoms.GetColLabelValue(c) == 'Color':
    1281                     dlg = wx.ColourDialog(self)
     1281                    dlg = wx.ColourDialog(G2frame)
    12821282                    if dlg.ShowModal() == wx.ID_OK:
    12831283                        color = dlg.GetColourData().GetColour()
     
    13151315                    colors.SetCustomColour(0,color)
    13161316                    colors.SetColour(color)
    1317                     dlg = wx.ColourDialog(self,colors)
     1317                    dlg = wx.ColourDialog(G2frame,colors)
    13181318                    dlg.GetColourData().SetCustomColour(0,color)
    13191319                    if dlg.ShowModal() == wx.ID_OK:
     
    13281328                    event.StopPropagation()
    13291329                    UpdateDrawAtoms()
    1330             G2plt.PlotStructure(self,data)
     1330            G2plt.PlotStructure(G2frame,data)
    13311331                   
    13321332        def RowSelect(event):
     
    13491349            drawingData['selectedAtoms'] = []
    13501350            drawingData['selectedAtoms'] = drawAtoms.GetSelectedRows()
    1351             G2plt.PlotStructure(self,data)                   
     1351            G2plt.PlotStructure(G2frame,data)                   
    13521352               
    13531353        table = []
     
    13841384           if colLabels[c] not in ['Style','Label','Color']:
    13851385                drawAtoms.SetColAttr(c,attr)
    1386         self.dataFrame.setSizePosLeft([600,300])
     1386        G2frame.dataFrame.setSizePosLeft([600,300])
    13871387       
    13881388        FindBondsDraw()
    13891389        drawAtoms.ClearSelection()
    1390         G2plt.PlotStructure(self,data)
     1390        G2plt.PlotStructure(G2frame,data)
    13911391
    13921392    def DrawAtomStyle(event):
     
    14001400                styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids',
    14011401                'backbone','ribbons','schematic']
    1402             dlg = wx.SingleChoiceDialog(self,'Select','Atom drawing style',styleChoice)
     1402            dlg = wx.SingleChoiceDialog(G2frame,'Select','Atom drawing style',styleChoice)
    14031403            if dlg.ShowModal() == wx.ID_OK:
    14041404                sel = dlg.GetSelection()
     
    14101410            FindBondsDraw()
    14111411            drawAtoms.ClearSelection()
    1412             G2plt.PlotStructure(self,data)
     1412            G2plt.PlotStructure(G2frame,data)
    14131413
    14141414    def DrawAtomLabel(event):
     
    14211421            if generalData['Type'] == 'macromolecular':
    14221422                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)
    14241424            if dlg.ShowModal() == wx.ID_OK:
    14251425                sel = dlg.GetSelection()
     
    14301430            dlg.Destroy()
    14311431            drawAtoms.ClearSelection()
    1432             G2plt.PlotStructure(self,data)
     1432            G2plt.PlotStructure(G2frame,data)
    14331433           
    14341434    def DrawAtomColor(event):
     
    14371437        if indx:
    14381438            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')
    14401440            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')
    14421442            generalData = data['General']
    14431443            atomData = data['Drawing']['Atoms']
     
    14551455            for i,color in enumerate(atmColors):
    14561456                colors.SetCustomColour(i,color)
    1457             dlg = wx.ColourDialog(self,colors)
     1457            dlg = wx.ColourDialog(G2frame,colors)
    14581458            if dlg.ShowModal() == wx.ID_OK:
    14591459                for i in range(len(atmColors)):                   
     
    14691469            drawAtoms.ClearSelection()
    14701470            dlg.Destroy()
    1471             self.dataFrame.SetStatusText('')
     1471            G2frame.dataFrame.SetStatusText('')
    14721472           
    14731473    def ResetAtomColors(event):
     
    14801480        UpdateDrawAtoms()
    14811481        drawAtoms.ClearSelection()
    1482         G2plt.PlotStructure(self,data)       
     1482        G2plt.PlotStructure(G2frame,data)       
    14831483       
    14841484    def SetViewPoint(event):
     
    14891489            data['Drawing']['viewPoint'] = [atomData[indx[0]][cx:cx+3],[indx[0],0]]
    14901490            drawAtoms.ClearSelection()                                  #do I really want to do this?
    1491             G2plt.PlotStructure(self,data)
     1491            G2plt.PlotStructure(G2frame,data)
    14921492           
    14931493    def noDuplicate(xyz,atomData):                  #be careful where this is used - it's slow
     
    15091509            generalData = data['General']
    15101510            SGData = generalData['SGData']
    1511             dlg = SymOpDialog(self,SGData,False)
     1511            dlg = SymOpDialog(G2frame,SGData,False)
    15121512            try:
    15131513                if dlg.ShowModal() == wx.ID_OK:
     
    15401540            UpdateDrawAtoms()
    15411541            drawAtoms.ClearSelection()
    1542             G2plt.PlotStructure(self,data)
     1542            G2plt.PlotStructure(G2frame,data)
    15431543           
    15441544    def TransformSymEquiv(event):
     
    15541554            generalData = data['General']
    15551555            SGData = generalData['SGData']
    1556             dlg = SymOpDialog(self,SGData,False)
     1556            dlg = SymOpDialog(G2frame,SGData,False)
    15571557            try:
    15581558                if dlg.ShowModal() == wx.ID_OK:
     
    15841584            UpdateDrawAtoms()
    15851585            drawAtoms.ClearSelection()
    1586             G2plt.PlotStructure(self,data)
     1586            G2plt.PlotStructure(G2frame,data)
    15871587           
    15881588    def FillCoordSphere(event):
     
    16271627            UpdateDrawAtoms()
    16281628            drawAtoms.ClearSelection()
    1629             G2plt.PlotStructure(self,data)
     1629            G2plt.PlotStructure(G2frame,data)
    16301630           
    16311631    def FillUnitCell(event):
     
    16801680            UpdateDrawAtoms()
    16811681            drawAtoms.ClearSelection()
    1682             G2plt.PlotStructure(self,data)
     1682            G2plt.PlotStructure(G2frame,data)
    16831683           
    16841684    def FindBondsToo():                         #works but slow for large structures - keep as reference
     
    17521752            if atomA[2] in ['lines','sticks','ellipsoids','balls & sticks','polyhedra']:
    17531753                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.5A
     1754                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
    17551755                sumR = atomA[3]+Radii
    17561756                IndB = ma.nonzero(ma.masked_greater(dist-data['Drawing']['radiusFactor']*sumR,0.))                 #get indices of bonded atoms
     
    17891789            UpdateDrawAtoms()
    17901790            drawAtoms.ClearSelection()
    1791             G2plt.PlotStructure(self,data)
     1791            G2plt.PlotStructure(G2frame,data)
    17921792        event.StopPropagation()
    17931793       
     
    17961796        UpdateDrawAtoms()
    17971797        drawAtoms.ClearSelection()
    1798         G2plt.PlotStructure(self,data)
     1798        G2plt.PlotStructure(G2frame,data)
    17991799        event.StopPropagation()
    18001800       
     
    18481848        if 'pId' in data:
    18491849            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'))
    18511851        G2str.Torsion(TorsionData)
    18521852       
     
    18901890            drawingData['Zclip'] = Zclip.GetValue()
    18911891            ZclipTxt.SetLabel('Z clipping: '+'%.2fA'%(drawingData['Zclip']*drawingData['cameraPos']/100.))
    1892             G2plt.PlotStructure(self,data)
     1892            G2plt.PlotStructure(G2frame,data)
    18931893           
    18941894        def OnCameraPos(event):
     
    18961896            cameraPosTxt.SetLabel('Camera Distance: '+'%.2f'%(drawingData['cameraPos']))
    18971897            ZclipTxt.SetLabel('Z clipping: '+'%.2fA'%(drawingData['Zclip']*drawingData['cameraPos']/100.))
    1898             G2plt.PlotStructure(self,data)
     1898            G2plt.PlotStructure(G2frame,data)
    18991899
    19001900        def OnBackColor(event):
    19011901            drawingData['backColor'] = event.GetValue()
    1902             G2plt.PlotStructure(self,data)
     1902            G2plt.PlotStructure(G2frame,data)
    19031903
    19041904        def OnBallScale(event):
    19051905            drawingData['ballScale'] = ballScale.GetValue()/100.
    19061906            ballScaleTxt.SetLabel('Ball scale: '+'%.2f'%(drawingData['ballScale']))
    1907             G2plt.PlotStructure(self,data)
     1907            G2plt.PlotStructure(G2frame,data)
    19081908
    19091909        def OnVdWScale(event):
    19101910            drawingData['vdwScale'] = vdwScale.GetValue()/100.
    19111911            vdwScaleTxt.SetLabel('van der Waals scale: '+'%.2f'%(drawingData['vdwScale']))
    1912             G2plt.PlotStructure(self,data)
     1912            G2plt.PlotStructure(G2frame,data)
    19131913
    19141914        def OnEllipseProb(event):
    19151915            drawingData['ellipseProb'] = ellipseProb.GetValue()
    19161916            ellipseProbTxt.SetLabel('Ellipsoid probability: '+'%d%%'%(drawingData['ellipseProb']))
    1917             G2plt.PlotStructure(self,data)
     1917            G2plt.PlotStructure(G2frame,data)
    19181918
    19191919        def OnBondRadius(event):
    19201920            drawingData['bondRadius'] = bondRadius.GetValue()/100.
    19211921            bondRadiusTxt.SetLabel('Bond radius, A: '+'%.2f'%(drawingData['bondRadius']))
    1922             G2plt.PlotStructure(self,data)
     1922            G2plt.PlotStructure(G2frame,data)
    19231923
    19241924        def OnShowABC(event):
    19251925            drawingData['showABC'] = showABC.GetValue()
    1926             G2plt.PlotStructure(self,data)
     1926            G2plt.PlotStructure(G2frame,data)
    19271927
    19281928        def OnShowUnitCell(event):
    19291929            drawingData['unitCellBox'] = unitCellBox.GetValue()
    1930             G2plt.PlotStructure(self,data)
     1930            G2plt.PlotStructure(G2frame,data)
    19311931
    19321932        def OnShowHyd(event):
    19331933            drawingData['showHydrogen'] = showHydrogen.GetValue()
    19341934            FindBondsDraw()
    1935             G2plt.PlotStructure(self,data)
     1935            G2plt.PlotStructure(G2frame,data)
    19361936
    19371937        def OnSizeHatoms(event):
     
    19421942            drawingData['sizeH'] = value
    19431943            sizeH.SetValue("%.2f"%(value))
    1944             G2plt.PlotStructure(self,data)
     1944            G2plt.PlotStructure(G2frame,data)
    19451945           
    19461946        def OnRadFactor(event):
     
    19521952            radFactor.SetValue("%.2f"%(value))
    19531953            FindBondsDraw()
    1954             G2plt.PlotStructure(self,data)
     1954            G2plt.PlotStructure(G2frame,data)
    19551955
    19561956        dataDisplay = wx.Panel(drawOptions)
     
    20552055
    20562056        dataDisplay.SetSizer(mainSizer)
    2057         Size = mainSizer.Fit(self.dataFrame)
     2057        Size = mainSizer.Fit(G2frame.dataFrame)
    20582058        Size[1] += 26                           #compensate for status bar
    20592059        dataDisplay.SetSize(Size)
    2060         self.dataFrame.setSizePosLeft(Size)
     2060        G2frame.dataFrame.setSizePosLeft(Size)
    20612061       
    20622062    def UpdateTexture():
     
    20782078        shModels = ['cylindrical','none','shear - 2/m','rolling - mmm']
    20792079        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)
    20822082        shAngles = ['omega','chi','phi']
    20832083       
     
    20962096            textureData['SH Coeff'][1] = SetSHCoef()
    20972097            wx.CallAfter(UpdateTexture)
    2098             G2plt.PlotTexture(self,data,newPlot=False)
     2098            G2plt.PlotTexture(G2frame,data,newPlot=False)
    20992099                       
    21002100        def OnShModel(event):
     
    21032103            textureData['SH Coeff'][1] = SetSHCoef()
    21042104            wx.CallAfter(UpdateTexture)
    2105             G2plt.PlotTexture(self,data,newPlot=False)
     2105            G2plt.PlotTexture(G2frame,data,newPlot=False)
    21062106           
    21072107        def OnSHRefine(event):
     
    21162116        def OnProjSel(event):
    21172117            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)
    21202120           
    21212121        def OnColorSel(event):
    21222122            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)
    21252125           
    21262126        def OnAngRef(event):
     
    21452145            Obj.SetValue('%8.3f'%(value))
    21462146            textureData['SH Coeff'][1][ODFIndx[Obj.GetId()]] = value
    2147             G2plt.PlotTexture(self,data,newPlot=False)
     2147            G2plt.PlotTexture(G2frame,data,newPlot=False)
    21482148           
    21492149        def OnPfType(event):
     
    21512151            textureData['PlotType'] = Obj.GetValue()
    21522152            wx.CallAfter(UpdateTexture)
    2153             G2plt.PlotTexture(self,data)
     2153            G2plt.PlotTexture(G2frame,data)
    21542154           
    21552155        def OnPFValue(event):
     
    21742174                Obj.SetValue('%3.1f %3.1f %3.1f'%(xyz[0],xyz[1],xyz[2]))
    21752175                textureData['PFxyz'] = xyz
    2176             G2plt.PlotTexture(self,data)
     2176            G2plt.PlotTexture(G2frame,data)
    21772177
    21782178        if Texture.GetSizer():
     
    22162216        if 'Axial' not in textureData['PlotType']:
    22172217            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'],
    22192219                style=wx.CB_READONLY|wx.CB_DROPDOWN)
    22202220            projSel.Bind(wx.EVT_COMBOBOX,OnProjSel)
     
    22352235            choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
    22362236            choice.sort()
    2237             colorSel = wx.ComboBox(Texture,-1,value=self.ContourColor,choices=choice,
     2237            colorSel = wx.ComboBox(Texture,-1,value=G2frame.ContourColor,choices=choice,
    22382238                style=wx.CB_READONLY|wx.CB_DROPDOWN)
    22392239            colorSel.Bind(wx.EVT_COMBOBOX,OnColorSel)
     
    22772277        mainSizer.Add(angSizer,0,wx.ALIGN_CENTER_VERTICAL)
    22782278        Texture.SetSizer(mainSizer,True)
    2279         mainSizer.Fit(self.dataFrame)
     2279        mainSizer.Fit(G2frame.dataFrame)
    22802280        Size = mainSizer.GetMinSize()
    22812281        Size[0] += 40
     
    22842284        Texture.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
    22852285        Size[1] = min(Size[1],450)
    2286         self.dataFrame.setSizePosLeft(Size)
     2286        G2frame.dataFrame.setSizePosLeft(Size)
    22872287       
    22882288    def UpdateDData():
    22892289        UseList = data['Histograms']
    22902290        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)
    22932293        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)           
    22962296        generalData = data['General']       
    22972297        SGData = generalData['SGData']
     
    23042304            generalData['Data plot type'] = Obj.GetStringSelection()
    23052305            wx.CallAfter(UpdateDData)
    2306             G2plt.PlotSizeStrainPO(self,data)
     2306            G2plt.PlotSizeStrainPO(G2frame,data)
    23072307           
    23082308        def OnPOhkl(event):
     
    23182318            h,k,l = hkl
    23192319            Obj.SetValue('%3d %3d %3d'%(h,k,l))
    2320             G2plt.PlotSizeStrainPO(self,data)
     2320            G2plt.PlotSizeStrainPO(G2frame,data)
    23212321       
    23222322        def OnShowData(event):
     
    23252325            UseList[hist]['Show'] = Obj.GetValue()
    23262326            wx.CallAfter(UpdateDData)
    2327             G2plt.PlotSizeStrainPO(self,data)
     2327            G2plt.PlotSizeStrainPO(G2frame,data)
    23282328           
    23292329        def OnCopyData(event):
     
    23392339            if UseList:
    23402340                copyList = []
    2341                 dlg = wx.MultiChoiceDialog(self,
     2341                dlg = wx.MultiChoiceDialog(G2frame,
    23422342                    'Copy parameters to which histograms?', 'Copy parameters',
    23432343                    keyList, wx.CHOICEDLG_STYLE)
     
    23732373            hist = Indx[Obj.GetId()]
    23742374            UseList[hist]['Size'][0] = Obj.GetValue()
    2375             G2plt.PlotSizeStrainPO(self,data)
     2375            G2plt.PlotSizeStrainPO(G2frame,data)
    23762376            wx.CallAfter(UpdateDData)
    23772377           
     
    24052405                    pass
    24062406                Obj.SetValue("%.3f"%(UseList[hist]['Size'][1][pid]))          #reset in case of error
    2407             G2plt.PlotSizeStrainPO(self,data)
     2407            G2plt.PlotSizeStrainPO(G2frame,data)
    24082408           
    24092409        def OnSizeAxis(event):           
     
    24252425            hist = Indx[Obj.GetId()]
    24262426            UseList[hist]['Mustrain'][0] = Obj.GetValue()
    2427             G2plt.PlotSizeStrainPO(self,data)
     2427            G2plt.PlotSizeStrainPO(G2frame,data)
    24282428            wx.CallAfter(UpdateDData)
    24292429           
     
    24562456            else:
    24572457                Obj.SetValue("%.1f"%(UseList[hist]['Mustrain'][1][pid]))          #reset in case of error
    2458             G2plt.PlotSizeStrainPO(self,data)
     2458            G2plt.PlotSizeStrainPO(G2frame,data)
    24592459           
    24602460        def OnStrainAxis(event):
     
    24712471            h,k,l = hkl
    24722472            Obj.SetValue('%3d %3d %3d'%(h,k,l))
    2473             G2plt.PlotSizeStrainPO(self,data)
     2473            G2plt.PlotSizeStrainPO(G2frame,data)
    24742474           
    24752475        def OnHstrainRef(event):
     
    28892889
    28902890        DData.SetSizer(mainSizer,True)
    2891         mainSizer.FitInside(self.dataFrame)
     2891        mainSizer.FitInside(G2frame.dataFrame)
    28922892        Size = mainSizer.GetMinSize()
    28932893        Size[0] += 40
     
    28962896        DData.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
    28972897        Size[1] = min(Size[1],450)
    2898         self.dataFrame.setSizePosLeft(Size)
     2898        G2frame.dataFrame.setSizePosLeft(Size)
    28992899       
    29002900    def OnHklfAdd(event):
     
    29022902        keyList = UseList.keys()
    29032903        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)
    29062906            while item:
    2907                 name = self.PatternTree.GetItemText(item)
     2907                name = G2frame.PatternTree.GetItemText(item)
    29082908                if name not in keyList and 'HKLF' in name:
    29092909                    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)
    29122912            try:
    29132913                if dlg.ShowModal() == wx.ID_OK:
     
    29312931        keyList = UseList.keys()
    29322932        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)
    29352935            while item:
    2936                 name = self.PatternTree.GetItemText(item)
     2936                name = G2frame.PatternTree.GetItemText(item)
    29372937                if name not in keyList and 'PWDR' in name:
    29382938                    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)
    29412941            try:
    29422942                if dlg.ShowModal() == wx.ID_OK:
     
    29462946                        newList = TextList[1:]
    29472947                    for histoName in newList:
    2948                         pId = G2gd.GetPatternTreeItemId(self,self.root,histoName)
     2948                        pId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,histoName)
    29492949                        UseList[histoName] = {'Histogram':histoName,'Show':False,
    29502950                            'Scale':[1.0,False],'Pref.Ori.':['MD',1.0,False,[0,0,1],0,{}],
     
    29542954                            'HStrain':[NDij*[0.0,],NDij*[False,]],                         
    29552955                            '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'))
    29572957                        refList[generalData['Name']] = []                       
    29582958                    data['Histograms'] = UseList
     
    29682968        if UseList:
    29692969            DelList = []
    2970             dlg = wx.MultiChoiceDialog(self,
     2970            dlg = wx.MultiChoiceDialog(G2frame,
    29712971                'Which histogram to delete from this phase?', 'Delete histogram',
    29722972                keyList, wx.CHOICEDLG_STYLE)
     
    29872987                       
    29882988        def KeyEditPawleyGrid(event):
    2989             colList = self.PawleyRefl.GetSelectedCols()
     2989            colList = G2frame.PawleyRefl.GetSelectedCols()
    29902990            PawleyPeaks = data['Pawley ref']
    29912991            if event.GetKeyCode() == wx.WXK_RETURN:
     
    29962996                event.Skip(True)
    29972997            elif colList:
    2998                 self.PawleyRefl.ClearSelection()
     2998                G2frame.PawleyRefl.ClearSelection()
    29992999                key = event.GetKeyCode()
    30003000                for col in colList:
     
    30143014                2*[wg.GRID_VALUE_FLOAT+':10,2',]
    30153015            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])
    30213021                   
    30223022    def OnPawleyLoad(event):
     
    30473047            return
    30483048        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'))
    30523052        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'))
    30543054        if 'Lam' in Inst:
    30553055            wave = Inst['Lam']
     
    30753075                           
    30763076    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',
    30783078            wx.YES_NO | wx.ICON_QUESTION)
    30793079        try:
     
    30933093    def OnPageChanged(event):
    30943094        page = event.GetSelection()
    3095         text = self.dataDisplay.GetPageText(page)
     3095        text = G2frame.dataDisplay.GetPageText(page)
    30963096        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)
    31083108            FillAtomsGrid()
    31093109        elif text == 'General':
    31103110            UpdateGeneral()
    31113111        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)
    31163116            UpdateDData()
    3117             G2plt.PlotSizeStrainPO(self,data,Start=True)
     3117            G2plt.PlotSizeStrainPO(G2frame,data,Start=True)
    31183118        elif text == 'Draw Options':
    3119             self.dataFrame.SetMenuBar(self.dataFrame.DataDrawOptions)
     3119            G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.DataDrawOptions)
    31203120            UpdateDrawOptions()
    3121             G2plt.PlotStructure(self,data)
     3121            G2plt.PlotStructure(G2frame,data)
    31223122        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)
    31373137            UpdateDrawAtoms()
    3138             G2plt.PlotStructure(self,data)
     3138            G2plt.PlotStructure(G2frame,data)
    31393139        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)           
    31443144            FillPawleyReflectionsGrid()
    31453145        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)
    31493149            UpdateTexture()                       
    3150             G2plt.PlotTexture(self,data,Start=True)
     3150            G2plt.PlotTexture(G2frame,data,Start=True)
    31513151        else:
    3152             self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)
     3152            G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.BlankMenu)
    31533153        event.Skip()
    31543154       
    3155     General = wx.Window(self.dataDisplay)
    3156     self.dataDisplay.AddPage(General,'General')
     3155    General = wx.Window(G2frame.dataDisplay)
     3156    G2frame.dataDisplay.AddPage(General,'General')
    31573157    SetupGeneral()
    31583158    GeneralData = data['General']
     
    31603160
    31613161    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')
    31683168    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)
    31823182   
    31833183           
  • TabularUnified trunk/GSASIIplot.py

    r466 r468  
    301301        Page.canvas.draw()
    302302       
    303 def PlotPatterns(self,newPlot=False):
     303def PlotPatterns(G2frame,newPlot=False):
    304304    '''Powder pattern plotting package - displays single or multiple powder patterns as intensity vs
    305305    2-theta or q (future TOF). Can display multiple patterns as "waterfall plots" or contour plots. Log I
     
    309309   
    310310    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'):
    312312            event.key = cb.GetValue()[0]
    313313            cb.SetValue(' key press')
     
    317317        newPlot = False
    318318        if event.key == 'w':
    319             if self.Weight:
    320                 self.Weight = False
     319            if G2frame.Weight:
     320                G2frame.Weight = False
    321321            else:
    322                 self.Weight = True
    323             print 'plot weighting:',self.Weight
     322                G2frame.Weight = True
     323            print 'plot weighting:',G2frame.Weight
    324324        elif event.key == 'n':
    325             if self.Contour:
     325            if G2frame.Contour:
    326326                pass
    327327            else:
    328                 if self.logPlot:
    329                     self.logPlot = False
     328                if G2frame.logPlot:
     329                    G2frame.logPlot = False
    330330                else:
    331                     self.Offset[0] = 0
    332                     self.logPlot = True
     331                    G2frame.Offset[0] = 0
     332                    G2frame.logPlot = True
    333333        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:
    337337                pass
    338             elif self.Offset[0] < 100.:
    339                 self.Offset[0] += 1.
     338            elif G2frame.Offset[0] < 100.:
     339                G2frame.Offset[0] += 1.
    340340        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:
    344344                pass
    345             elif self.Offset[0] > 0.:
    346                 self.Offset[0] -= 1.
     345            elif G2frame.Offset[0] > 0.:
     346                G2frame.Offset[0] -= 1.
    347347        elif event.key == 'l':
    348             self.Offset[1] -= 1.
     348            G2frame.Offset[1] -= 1.
    349349        elif event.key == 'r':
    350             self.Offset[1] += 1.
     350            G2frame.Offset[1] += 1.
    351351        elif event.key == 'o':
    352             self.Offset = [0,0]
     352            G2frame.Offset = [0,0]
    353353        elif event.key == 'c':
    354354            newPlot = True
    355             if self.Contour:
    356                 self.Contour = False
     355            if G2frame.Contour:
     356                G2frame.Contour = False
    357357            else:
    358                 self.Contour = True
    359                 self.SinglePlot = False
    360                 self.Offset = [0.,0.]
     358                G2frame.Contour = True
     359                G2frame.SinglePlot = False
     360                G2frame.Offset = [0.,0.]
    361361        elif event.key == 'q':
    362362            newPlot = True
    363             if self.qPlot:
    364                 self.qPlot = False
     363            if G2frame.qPlot:
     364                G2frame.qPlot = False
    365365            else:
    366                 self.qPlot = True
     366                G2frame.qPlot = True
    367367        elif event.key == 's':
    368             if self.Contour:
     368            if G2frame.Contour:
    369369                choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
    370370                choice.sort()
    371                 dlg = wx.SingleChoiceDialog(self,'Select','Color scheme',choice)
     371                dlg = wx.SingleChoiceDialog(G2frame,'Select','Color scheme',choice)
    372372                if dlg.ShowModal() == wx.ID_OK:
    373373                    sel = dlg.GetSelection()
    374                     self.ContourColor = choice[sel]
     374                    G2frame.ContourColor = choice[sel]
    375375                else:
    376                     self.ContourColor = 'Paired'
     376                    G2frame.ContourColor = 'Paired'
    377377                dlg.Destroy()
    378378            else:               
    379                 if self.SinglePlot:
    380                     self.SinglePlot = False
     379                if G2frame.SinglePlot:
     380                    G2frame.SinglePlot = False
    381381                else:
    382                     self.SinglePlot = True
     382                    G2frame.SinglePlot = True
    383383        elif event.key == '+':
    384             if self.PickId:
    385                 self.PickId = False
     384            if G2frame.PickId:
     385                G2frame.PickId = False
    386386        elif event.key == 'i':                  #for smoothing contour plot
    387387            choice = ['nearest','bilinear','bicubic','spline16','spline36','hanning',
    388388               'hamming','hermite','kaiser','quadric','catrom','gaussian','bessel',
    389389               'mitchell','sinc','lanczos']
    390             dlg = wx.SingleChoiceDialog(self,'Select','Interpolation',choice)
     390            dlg = wx.SingleChoiceDialog(G2frame,'Select','Interpolation',choice)
    391391            if dlg.ShowModal() == wx.ID_OK:
    392392                sel = dlg.GetSelection()
    393                 self.Interpolate = choice[sel]
     393                G2frame.Interpolate = choice[sel]
    394394            else:
    395                 self.Interpolate = 'nearest'
     395                G2frame.Interpolate = 'nearest'
    396396            dlg.Destroy()
    397397           
    398         PlotPatterns(self,newPlot=newPlot)
     398        PlotPatterns(G2frame,newPlot=newPlot)
    399399       
    400400    def OnMotion(event):
     
    404404            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    405405            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]
    407407                Parms = dict(zip(Names,Values))
    408408                try:
     
    410410                except KeyError:
    411411                    wave = Parms['Lam1']
    412                 if self.qPlot:
     412                if G2frame.qPlot:
    413413                    xpos = 2.0*asind(xpos*wave/(4*math.pi))
    414414                dsp = 0.0
    415415                if abs(xpos) > 0.:                  #avoid possible singularity at beam center
    416416                    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)
    419419                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:
    422422                    Page.canvas.SetToolTipString('%9.3f'%(xpos))
    423                 if self.PickId:
     423                if G2frame.PickId:
    424424                    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']:
    426426                        if len(HKL):
    427427                            view = Page.toolbar._views.forward()[0][:2]
     
    435435
    436436            except TypeError:
    437                 self.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',1)
     437                G2frame.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',1)
    438438                                                   
    439439    def OnPick(event):
    440         if self.itemPicked is not None: return
    441         PatternId = self.PatternId
     440        if G2frame.itemPicked is not None: return
     441        PatternId = G2frame.PatternId
    442442        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]
    444444        except TypeError:
    445445            return
     
    449449        except KeyError:
    450450            wave = Parms['Lam1']
    451         PickId = self.PickId
     451        PickId = G2frame.PickId
    452452        pick = event.artist
    453453        mouse = event.mouseevent       
     
    456456        ind = event.ind
    457457        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':
    459459            if ind.all() != [0]:                                    #picked a data point
    460460                if 'C' in Parms['Type']:                            #CW data - TOF later in an elif
    461461                    ins = [Parms[x] for x in ['U','V','W','X','Y']]
    462                     if self.qPlot:                              #qplot - convert back to 2-theta
     462                    if G2frame.qPlot:                              #qplot - convert back to 2-theta
    463463                        xy[0] = 2.0*asind(xy[0]*wave/(4*math.pi))
    464464                    sig = ins[0]*tand(xy[0]/2.0)**2+ins[1]*tand(xy[0]/2.0)+ins[2]
    465465                    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)
    467467                    XY = [xy[0],0, xy[1],1, sig,0, gam,0]       #default refine intensity 1st
    468468                data.append(XY)
    469                 G2pdG.UpdatePeakGrid(self,data)
    470                 PlotPatterns(self)
     469                G2pdG.UpdatePeakGrid(G2frame,data)
     470                PlotPatterns(G2frame)
    471471            else:                                                   #picked a peak list line
    472                 self.itemPicked = pick
    473         elif self.PatternTree.GetItemText(PickId) == 'Limits':
     472                G2frame.itemPicked = pick
     473        elif G2frame.PatternTree.GetItemText(PickId) == 'Limits':
    474474            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)
    477477                if 'C' in Parms['Type']:                            #CW data - TOF later in an elif
    478                     if self.qPlot:                              #qplot - convert back to 2-theta
     478                    if G2frame.qPlot:                              #qplot - convert back to 2-theta
    479479                        xy[0] = 2.0*asind(xy[0]*wave/(4*math.pi))
    480480                if mouse.button==1:
     
    482482                if mouse.button==3:
    483483                    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)
    487487            else:                                                   #picked a limit line
    488                 self.itemPicked = pick
    489         elif self.PatternTree.GetItemText(PickId) == 'Reflection Lists':
    490             self.itemPicked = pick
     488                G2frame.itemPicked = pick
     489        elif G2frame.PatternTree.GetItemText(PickId) == 'Reflection Lists':
     490            G2frame.itemPicked = pick
    491491            pick = str(pick)
    492492       
    493493    def OnRelease(event):
    494         if self.itemPicked is None: return
    495         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]
    496496        Parms = dict(zip(Names,Values))
    497497        try:
     
    500500            wave = Parms['Lam1']
    501501        xpos = event.xdata
    502         PickId = self.PickId
    503         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:
    504504            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])
    507507            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:
    511511                    data[1][lineNo] = 2.0*asind(wave*xpos/(4*math.pi))
    512512                else:
    513513                    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)
    517517            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)
    520520#                print 'peaks',xpos
    521521                if event.button == 3:
    522522                    del data[lineNo-2]
    523523                else:
    524                     if self.qPlot:
     524                    if G2frame.qPlot:
    525525                        data[lineNo-2][0] = 2.0*asind(wave*xpos/(4*math.pi))
    526526                    else:
    527527                        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(')')
    533533            if 'Line' not in pick:       #avoid data points, etc.
    534534                num = Phases.keys().index(pick)
    535535                if num:
    536                     self.refDelt = -(event.ydata-self.refOffset)/(num*Ymax)
     536                    G2frame.refDelt = -(event.ydata-G2frame.refOffset)/(num*Ymax)
    537537                else:       #1st row of refl ticks
    538                     self.refOffset = event.ydata
    539         PlotPatterns(self)
    540         self.itemPicked = None   
     538                    G2frame.refOffset = event.ydata
     539        PlotPatterns(G2frame)
     540        G2frame.itemPicked = None   
    541541
    542542    xylim = []
    543543    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)
    546546        if not newPlot:
    547547            Plot = Page.figure.gca()          #get previous powder plot & get limits
     
    551551    except ValueError:
    552552        newPlot = True
    553         self.Cmax = 1.0
    554         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)
    557557        Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress)
    558558        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
     
    560560        Page.canvas.mpl_connect('button_release_event', OnRelease)
    561561    Page.SetFocus()
    562     self.G2plotNB.status.DestroyChildren()
    563     if self.Contour:
     562    G2frame.G2plotNB.status.DestroyChildren()
     563    if G2frame.Contour:
    564564        Choice = (' key press','d: lower contour max','u: raise contour max',
    565565            'i: interpolation method','s: color scheme','c: contour off')
    566566    else:
    567         if self.logPlot:
     567        if G2frame.logPlot:
    568568            Choice = (' key press','n: log(I) off','l: offset left','r: offset right',
    569569                'c: contour on','q: toggle q plot','s: toggle single plot','+: no selection')
     
    572572                'u: offset up','o: reset offset','n: log(I) on','c: contour on',
    573573                '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,
    575575        choices=Choice)
    576576    cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
    577577    cb.SetValue(' key press')
    578578   
    579     PickId = self.PickId
    580     PatternId = self.PatternId
     579    PickId = G2frame.PickId
     580    PatternId = G2frame.PatternId
    581581    colors=['b','g','r','c','m','k']
    582582    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))
    586586        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],]
    589589    else:       
    590590        PlotList = []
    591591        ParmList = []
    592         item, cookie = self.PatternTree.GetFirstChild(self.root)
     592        item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
    593593        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)
    596596                if len(Pattern) < 3:                    # put name on end if needed
    597                     Pattern.append(self.PatternTree.GetItemText(item))
     597                    Pattern.append(G2frame.PatternTree.GetItemText(item))
    598598                PlotList.append(Pattern)
    599                 ParmList.append(self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,
     599                ParmList.append(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,
    600600                    item,'Instrument Parameters'))[1])
    601             item, cookie = self.PatternTree.GetNextChild(self.root, cookie)               
     601            item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)               
    602602    Ymax = 1.0
    603603    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'))
    606606        HKL = []
    607607        if Phases:
    608             for peak in Phases[self.RefList]:
     608            for peak in Phases[G2frame.RefList]:
    609609                HKL.append(peak[:6])
    610610            HKL = np.array(HKL)
    611611    else:
    612         HKL = np.array(self.HKL)
     612        HKL = np.array(G2frame.HKL)
    613613    for Pattern in PlotList:
    614614        xye = Pattern[1]
    615615        Ymax = max(Ymax,max(xye[1]))
    616     offset = self.Offset[0]*Ymax/100.0
    617     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:
    619619        Title = 'log('+Title+')'
    620620    Plot.set_title(Title)
    621     if self.qPlot:
     621    if G2frame.qPlot:
    622622        Plot.set_xlabel(r'$q, \AA^{-1}$',fontsize=14)
    623623    else:       
    624624        Plot.set_xlabel(r'$\mathsf{2\theta}$',fontsize=14)
    625625    Plot.set_ylabel('Intensity',fontsize=12)
    626     if self.Contour:
     626    if G2frame.Contour:
    627627        ContourZ = []
    628628        ContourY = []
    629629        Nseq = 0
    630630    if len(PlotList) < 2:
    631         self.Contour = False
     631        G2frame.Contour = False
    632632    for N,Pattern in enumerate(PlotList):
    633633        Parms = ParmList[N]
     
    636636        xye = np.array(Pattern[1])
    637637        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])
    642642            X = 4*np.pi*npsind(xye[0]/2.0)/Parms[1]
    643643        else:
     
    647647        Y = xye[1]+offset*N
    648648        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:
    651651                limits = 4*np.pi*npsind(limits/2.0)/Parms[1]
    652652            Lines.append(Plot.axvline(limits[1][0],color='g',dashes=(5,5),picker=3.))   
    653653            Lines.append(Plot.axvline(limits[1][1],color='r',dashes=(5,5),picker=3.))                   
    654         if self.Contour:
     654        if G2frame.Contour:
    655655           
    656656            if lenX == len(X):
     
    661661                Plot.set_ylabel('Data sequence',fontsize=12)
    662662        else:
    663             X += self.Offset[1]*.005*N
     663            X += G2frame.Offset[1]*.005*N
    664664            if ifpicked:
    665665                Z = xye[3]+offset*N
    666666                W = xye[4]+offset*N
    667                 D = xye[5]-Ymax*self.delOffset
    668                 if self.Weight:
     667                D = xye[5]-Ymax*G2frame.delOffset
     668                if G2frame.Weight:
    669669                    W2 = np.sqrt(xye[2])
    670                     D *= W2-Ymax*self.delOffset
    671                 if self.logPlot:
     670                    D *= W2-Ymax*G2frame.delOffset
     671                if G2frame.logPlot:
    672672                    Plot.semilogy(X,Y,colors[N%6]+'+',picker=3.,clip_on=False,nonposy='mask')
    673673                    Plot.semilogy(X,Z,colors[(N+1)%6],picker=False,nonposy='mask')
     
    680680                    Plot.axhline(0.,color=wx.BLACK)
    681681                Page.canvas.SetToolTipString('')
    682                 if self.PatternTree.GetItemText(PickId) == 'Peak List':
     682                if G2frame.PatternTree.GetItemText(PickId) == 'Peak List':
    683683                    tip = 'On data point: Pick peak - L or R MB. On line: L-move, R-delete'
    684684                    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'))
    686686                    for item in data:
    687                         if self.qPlot:
     687                        if G2frame.qPlot:
    688688                            Lines.append(Plot.axvline(4*math.pi*sind(item[0]/2.)/Parms[1],color=colors[N%6],picker=2.))
    689689                        else:
    690690                            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':
    692692                    tip = 'On data point: Lower limit - L MB; Upper limit - R MB. On limit: MB down to move'
    693693                    Page.canvas.SetToolTipString(tip)
    694                     data = self.LimitsTable.GetData()
     694                    data = G2frame.LimitsTable.GetData()
    695695            else:
    696                 if self.logPlot:
     696                if G2frame.logPlot:
    697697                    Plot.semilogy(X,Y,colors[N%6],picker=False,nonposy='clip')
    698698                else:
    699699                    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]
    702702        Parms = dict(zip(Names,Values))
    703703        try:
     
    705705        except KeyError:
    706706            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'))))
    709709            for peak in peaks:
    710                 if self.qPlot:
     710                if G2frame.qPlot:
    711711                    Plot.axvline(4*np.pi*sind(peak[0]/2.0)/wave,color='b')
    712712                else:
    713713                    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:
    716716                    Plot.axvline(4*np.pi*sind(hkl[5]/2.0)/wave,color='r',dashes=(5,5))
    717717                else:
    718718                    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'))
    721721            for pId,phase in enumerate(Phases):
    722722                peaks = Phases[phase]
    723723                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:
    726726                    Plot.plot(2*np.pi/peak.T[0],pos,colors[pId%6]+'|',mew=1,ms=8,picker=3.,label=phase)
    727727                else:
     
    730730            Plot.legend(handles[::2],legends[::2],title='Phases',loc='best')    #skip every other one
    731731           
    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,
    735735            extent=[ContourX[0],ContourX[-1],ContourY[0],ContourY[-1]],aspect='auto',origin='lower')
    736736        Page.figure.colorbar(Img)
    737737    else:
    738         self.Lines = Lines
     738        G2frame.Lines = Lines
    739739    if not newPlot:
    740740        Page.toolbar.push_current()
     
    746746    else:
    747747        Page.canvas.draw()
    748     self.Pwdr = True
     748    G2frame.Pwdr = True
    749749   
    750 def PlotISFG(self,newPlot=False,type=''):
     750def PlotISFG(G2frame,newPlot=False,type=''):
    751751    ''' PLotting package for PDF analysis; displays I(q), S(q), F(q) and G(r) as single
    752752    or multiple plots with waterfall and contour plots as options
    753753    '''
    754754    if not type:
    755         type = self.G2plotNB.plotList[self.G2plotNB.nb.GetSelection()]
     755        type = G2frame.G2plotNB.plotList[G2frame.G2plotNB.nb.GetSelection()]
    756756    if type not in ['I(Q)','S(Q)','F(Q)','G(R)']:
    757757        return
     
    761761        newPlot = False
    762762        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.
    767767        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.
    772772        elif event.key == 'l':
    773             self.Offset[1] -= 1.
     773            G2frame.Offset[1] -= 1.
    774774        elif event.key == 'r':
    775             self.Offset[1] += 1.
     775            G2frame.Offset[1] += 1.
    776776        elif event.key == 'o':
    777             self.Offset = [0,0]
     777            G2frame.Offset = [0,0]
    778778        elif event.key == 'c':
    779779            newPlot = True
    780             if self.Contour:
    781                 self.Contour = False
     780            if G2frame.Contour:
     781                G2frame.Contour = False
    782782            else:
    783                 self.Contour = True
    784                 self.SinglePlot = False
    785                 self.Offset = [0.,0.]
     783                G2frame.Contour = True
     784                G2frame.SinglePlot = False
     785                G2frame.Offset = [0.,0.]
    786786        elif event.key == 's':
    787             if self.Contour:
     787            if G2frame.Contour:
    788788                choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
    789789                choice.sort()
    790                 dlg = wx.SingleChoiceDialog(self,'Select','Color scheme',choice)
     790                dlg = wx.SingleChoiceDialog(G2frame,'Select','Color scheme',choice)
    791791                if dlg.ShowModal() == wx.ID_OK:
    792792                    sel = dlg.GetSelection()
    793                     self.ContourColor = choice[sel]
     793                    G2frame.ContourColor = choice[sel]
    794794                else:
    795                     self.ContourColor = 'Paired'
     795                    G2frame.ContourColor = 'Paired'
    796796                dlg.Destroy()
    797797            else:               
    798                 if self.SinglePlot:
    799                     self.SinglePlot = False
     798                if G2frame.SinglePlot:
     799                    G2frame.SinglePlot = False
    800800                else:
    801                     self.SinglePlot = True
     801                    G2frame.SinglePlot = True
    802802        elif event.key == 'i':                  #for smoothing contour plot
    803803            choice = ['nearest','bilinear','bicubic','spline16','spline36','hanning',
    804804               'hamming','hermite','kaiser','quadric','catrom','gaussian','bessel',
    805805               'mitchell','sinc','lanczos']
    806             dlg = wx.SingleChoiceDialog(self,'Select','Interpolation',choice)
     806            dlg = wx.SingleChoiceDialog(G2frame,'Select','Interpolation',choice)
    807807            if dlg.ShowModal() == wx.ID_OK:
    808808                sel = dlg.GetSelection()
    809                 self.Interpolate = choice[sel]
     809                G2frame.Interpolate = choice[sel]
    810810            else:
    811                 self.Interpolate = 'nearest'
     811                G2frame.Interpolate = 'nearest'
    812812            dlg.Destroy()
    813         elif event.key == 't' and not self.Contour:
    814             if self.Legend:
    815                 self.Legend = False
     813        elif event.key == 't' and not G2frame.Contour:
     814            if G2frame.Legend:
     815                G2frame.Legend = False
    816816            else:
    817                 self.Legend = True
     817                G2frame.Legend = True
    818818           
    819819           
    820         PlotISFG(self,newPlot=newPlot,type=type)
     820        PlotISFG(G2frame,newPlot=newPlot,type=type)
    821821       
    822822    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):
    824824            event.key = cb.GetValue()[0]
    825825            cb.SetValue(' key press')
     
    832832            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    833833            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)
    836836                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)                   
    838838            except TypeError:
    839                 self.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1)
     839                G2frame.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1)
    840840   
    841841    xylim = []
    842842    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)
    845845        if not newPlot:
    846846            Plot = Page.figure.gca()          #get previous plot & get limits
     
    850850    except ValueError:
    851851        newPlot = True
    852         self.Cmax = 1.0
    853         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)
    856856        Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress)
    857857        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    858858   
    859859    Page.SetFocus()
    860     self.G2plotNB.status.DestroyChildren()
    861     if self.Contour:
     860    G2frame.G2plotNB.status.DestroyChildren()
     861    if G2frame.Contour:
    862862        Choice = (' key press','d: lower contour max','u: raise contour max',
    863863            'i: interpolation method','s: color scheme','c: contour off')
     
    865865        Choice = (' key press','l: offset left','r: offset right','d: offset down','u: offset up',
    866866            '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,
    868868        choices=Choice)
    869869    cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
    870870    cb.SetValue(' key press')
    871     PatternId = self.PatternId
    872     PickId = self.PickId
     871    PatternId = G2frame.PatternId
     872    PickId = G2frame.PickId
    873873    Plot.set_title(type)
    874874    if type == 'G(R)':
     
    878878    Plot.set_ylabel(r''+type,fontsize=14)
    879879    colors=['b','g','r','c','m','k']
    880     name = self.PatternTree.GetItemText(PatternId)[4:]
     880    name = G2frame.PatternTree.GetItemText(PatternId)[4:]
    881881    Pattern = []   
    882     if self.SinglePlot:
    883         name = self.PatternTree.GetItemText(PatternId)
     882    if G2frame.SinglePlot:
     883        name = G2frame.PatternTree.GetItemText(PatternId)
    884884        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)
    887887        if Pattern:
    888888            Pattern.append(name)
     
    890890    else:
    891891        PlotList = []
    892         item, cookie = self.PatternTree.GetFirstChild(self.root)
     892        item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
    893893        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)
    898898                if Pattern:
    899899                    Pattern.append(name)
    900900                    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'))
    903903    numbDen = G2pwd.GetNumDensity(PDFdata['ElList'],PDFdata['Form Vol'])
    904904    Xb = [0.,10.]
     
    909909        xye = Pattern[1]
    910910        Ymax = max(Ymax,max(xye[1]))
    911     offset = self.Offset[0]*Ymax/100.0
    912     if self.Contour:
     911    offset = G2frame.Offset[0]*Ymax/100.0
     912    if G2frame.Contour:
    913913        ContourZ = []
    914914        ContourY = []
     
    917917        xye = Pattern[1]
    918918        if PickId:
    919             ifpicked = Pattern[2] == self.PatternTree.GetItemText(PatternId)
     919            ifpicked = Pattern[2] == G2frame.PatternTree.GetItemText(PatternId)
    920920        X = xye[0]
    921921        if not lenX:
    922922            lenX = len(X)           
    923923        Y = xye[1]+offset*N
    924         if self.Contour:
     924        if G2frame.Contour:
    925925            if lenX == len(X):
    926926                ContourY.append(N)
     
    930930                Plot.set_ylabel('Data sequence',fontsize=12)
    931931        else:
    932             X = xye[0]+self.Offset[1]*.005*N
     932            X = xye[0]+G2frame.Offset[1]*.005*N
    933933            if ifpicked:
    934934                Plot.plot(X,Y,colors[N%6]+'+',picker=3.,clip_on=False)
    935935                Page.canvas.SetToolTipString('')
    936936            else:
    937                 if self.Legend:
     937                if G2frame.Legend:
    938938                    Plot.plot(X,Y,colors[N%6],picker=False,label='Azm:'+Pattern[2].split('=')[1])
    939939                else:
     
    945945            elif type == 'S(Q)':
    946946                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,
    950950            extent=[ContourX[0],ContourX[-1],ContourY[0],ContourY[-1]],aspect='auto',origin='lower')
    951951        Page.figure.colorbar(Img)
    952     elif self.Legend:
     952    elif G2frame.Legend:
    953953        Plot.legend(loc='best')
    954954    if not newPlot:
     
    962962        Page.canvas.draw()
    963963       
    964 def PlotXY(self,XY,newPlot=False,type=''):
     964def PlotXY(G2frame,XY,newPlot=False,type=''):
    965965    '''simple plot of xy data, used for diagnostic purposes
    966966    '''
     
    971971            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    972972            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)                   
    974974            except TypeError:
    975                 self.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1)
     975                G2frame.G2plotNB.status.SetStatusText('Select '+type+' pattern first',1)
    976976
    977977    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)
    980980        if not newPlot:
    981981            Plot = Page.figure.gca()
     
    985985    except ValueError:
    986986        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)
    990990        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    991991   
    992992    Page.SetFocus()
    993     self.G2plotNB.status.DestroyChildren()
     993    G2frame.G2plotNB.status.DestroyChildren()
    994994    Plot.set_title(type)
    995995    Plot.set_xlabel(r'X',fontsize=14)
     
    10111011        Page.canvas.draw()
    10121012
    1013 def PlotPowderLines(self):
     1013def PlotPowderLines(G2frame):
    10141014    ''' plotting of powder lines (i.e. no powder pattern) as sticks
    10151015    '''
     
    10201020        if xpos:                                        #avoid out of frame mouse position
    10211021            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']:
    10241024                found = []
    10251025                if len(HKL):
     
    10341034
    10351035    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)
    10381038        Page.figure.clf()
    10391039        Plot = Page.figure.gca()
    10401040    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)
    10441044        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    10451045       
     
    10471047    Plot.set_title('Powder Pattern Lines')
    10481048    Plot.set_xlabel(r'$\mathsf{2\theta}$',fontsize=14)
    1049     PickId = self.PickId
    1050     PatternId = self.PatternId
    1051     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'))
    10521052    for peak in peaks:
    10531053        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:
    10561056        Plot.axvline(hkl[5],color='r',dashes=(5,5))
    10571057    xmin = peaks[0][0]
     
    10631063    Page.toolbar.push_current()
    10641064
    1065 def PlotPeakWidths(self):
     1065def PlotPeakWidths(G2frame):
    10661066    ''' Plotting of instrument broadening terms as function of 2-theta (future TOF)
    10671067    Seen when "Instrument Parameters" chosen from powder pattern data tree
    10681068    '''
    1069     PatternId = self.PatternId
    1070     limitID = G2gd.GetPatternTreeItemId(self,PatternId, 'Limits')
     1069    PatternId = G2frame.PatternId
     1070    limitID = G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits')
    10711071    if limitID:
    1072         limits = self.PatternTree.GetItemPyData(limitID)
     1072        limits = G2frame.PatternTree.GetItemPyData(limitID)
    10731073    else:
    10741074        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'))
    10771077    if instParms[0][0] in ['PXC','PNC']:
    10781078        lam = instParms[1][1]
     
    10811081        else:
    10821082            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')
    10841084    if peakID:
    1085         peaks = self.PatternTree.GetItemPyData(peakID)
     1085        peaks = G2frame.PatternTree.GetItemPyData(peakID)
    10861086    else:
    10871087        peaks = []
    10881088   
    10891089    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)
    10921092        Page.figure.clf()
    10931093        Plot = Page.figure.gca()
    10941094    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)
    10981098    Page.SetFocus()
    10991099   
     
    11531153    Page.canvas.draw()
    11541154   
    1155 def PlotSizeStrainPO(self,data,Start=False):
     1155def PlotSizeStrainPO(G2frame,data,Start=False):
    11561156    '''Plot 3D mustrain/size/preferred orientation figure. In this instance data is for a phase
    11571157    '''
    11581158   
    1159     PatternId = self.PatternId
     1159    PatternId = G2frame.PatternId
    11601160    generalData = data['General']
    11611161    SGData = generalData['SGData']
     
    11731173    plotDict = {'Mustrain':'Mustrain','Size':'Size','Preferred orientation':'Pref.Ori.'}
    11741174    for ptype in plotDict:
    1175         self.G2plotNB.Delete(ptype)       
     1175        G2frame.G2plotNB.Delete(ptype)       
    11761176
    11771177    for item in useList:
     
    11841184
    11851185    if plotType in ['Mustrain','Size']:
    1186         Plot = mp3d.Axes3D(self.G2plotNB.add3D(plotType))
     1186        Plot = mp3d.Axes3D(G2frame.G2plotNB.add3D(plotType))
    11871187    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)
    11911191    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)
    11931193    if not Page.IsShown():
    11941194        Page.Show()
     
    13071307    Page.canvas.draw()
    13081308   
    1309 def PlotTexture(self,data,newPlot=False,Start=False):
     1309def PlotTexture(G2frame,data,newPlot=False,Start=False):
    13101310    '''Pole figure, inverse pole figure, 3D pole distribution and 3D inverse pole distribution
    13111311    plotting.
     
    13151315    shModels = ['cylindrical','none','shear - 2/m','rolling - mmm']
    13161316    SamSym = dict(zip(shModels,['0','-1','2/m','mmm']))
    1317     PatternId = self.PatternId
     1317    PatternId = G2frame.PatternId
    13181318    generalData = data['General']
    13191319    SGData = generalData['SGData']
    13201320    textureData = generalData['SH Texture']
    1321     self.G2plotNB.Delete('Texture')
     1321    G2frame.G2plotNB.Delete('Texture')
    13221322    if not textureData['Order']:
    13231323        return                  #no plot!!
     
    13411341                r = xpos**2+ypos**2
    13421342                if r <= 1.0:
    1343                     if 'equal' in self.Projection:
     1343                    if 'equal' in G2frame.Projection:
    13441344                        r,p = 2.*npasind(np.sqrt(r)*sq2),npatan2d(ypos,xpos)
    13451345                    else:
     
    13491349                    y,x,z = list(xyz/np.max(np.abs(xyz)))
    13501350                   
    1351                     self.G2plotNB.status.SetFields(['',
     1351                    G2frame.G2plotNB.status.SetFields(['',
    13521352                        'psi =%9.3f, beta =%9.3f, MRD =%9.3f hkl=%5.2f,%5.2f,%5.2f'%(r,p,ipf,x,y,z)])
    13531353                                   
     
    13591359                if z <= 1.0:
    13601360                    z = np.sqrt(z)
    1361                     if 'equal' in self.Projection:
     1361                    if 'equal' in G2frame.Projection:
    13621362                        r,p = 2.*npasind(z*sq2),npatan2d(ypos,xpos)
    13631363                    else:
    13641364                        r,p = 2.*npatand(z),npatan2d(ypos,xpos)
    13651365                    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)])
    13671367   
    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'))
    13701370    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':
    13751375        pass
    13761376    else:
     
    13781378
    13791379    Page.SetFocus()
    1380     self.G2plotNB.status.SetFields(['',''])   
     1380    G2frame.G2plotNB.status.SetFields(['',''])   
    13811381    PH = np.array(SHData['PFhkl'])
    13821382    phi,beta = G2lat.CrsAng(PH,cell,SGData)
     
    14021402            X,Y = np.meshgrid(np.linspace(1.,-1.,npts),np.linspace(-1.,1.,npts))
    14031403            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:
    14051405                R = np.where(R <= 1.,2.*npasind(R*sq2),0.0)
    14061406            else:
     
    14121412            Plot.clabel(CS,fontsize=9,inline=1)
    14131413            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])
    14151415            except ValueError:
    14161416                pass
     
    14191419                newPlot = False
    14201420            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')
    14221422                       
    14231423        else:
    14241424            X,Y = np.meshgrid(np.linspace(1.,-1.,npts),np.linspace(-1.,1.,npts))
    14251425            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:
    14271427                R = np.where(R <= 1.,2.*npasind(R*sq2),0.0)
    14281428            else:
     
    14361436            except ValueError:
    14371437                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])
    14391439            if newPlot:
    14401440#                Page.figure.colorbar(Img)    #colorbar fails - crashes gsasii
    14411441                newPlot = False
    14421442            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')
    14441444    Page.canvas.draw()
    14451445
    1446 def PlotCovariance(self,Data={}):
     1446def PlotCovariance(G2frame,Data={}):
    14471447    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'))
    14501450    if not Data:
    14511451        print 'No covariance matrix available'
     
    14661466            choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
    14671467            choice.sort()
    1468             dlg = wx.SingleChoiceDialog(self,'Select','Color scheme',choice)
     1468            dlg = wx.SingleChoiceDialog(G2frame,'Select','Color scheme',choice)
    14691469            if dlg.ShowModal() == wx.ID_OK:
    14701470                sel = dlg.GetSelection()
    1471                 self.VcovColor = choice[sel]
     1471                G2frame.VcovColor = choice[sel]
    14721472            else:
    1473                 self.VcovColor = 'RdYlGn'
     1473                G2frame.VcovColor = 'RdYlGn'
    14741474            dlg.Destroy()
    1475         PlotCovariance(self)
     1475        PlotCovariance(G2frame)
    14761476
    14771477    def OnMotion(event):
     
    14951495                    msg = '%s - %s: %5.3f'%(varyList[xpos],varyList[ypos],covArray[xpos][ypos])
    14961496                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])
    14981498    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)
    15011501        Page.figure.clf()
    15021502        Plot = Page.figure.gca()
     
    15041504            Page.Show()
    15051505    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)
    15091509        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    15101510        Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress)
    15111511
    15121512    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)
    15151515    Img = Plot.imshow(covArray,aspect='equal',cmap=acolor,interpolation='nearest',origin='lower')
    15161516    imgAx = Img.get_axes()
     
    15241524    Page.canvas.draw()
    15251525   
    1526 def PlotSeq(self,SeqData,SeqSig,SeqNames,sampleParm):
     1526def PlotSeq(G2frame,SeqData,SeqSig,SeqNames,sampleParm):
    15271527   
    15281528    def OnKeyPress(event):
    15291529        if event.key == 's' and sampleParm:
    1530             if self.xAxis:
    1531                 self.xAxis = False
     1530            if G2frame.xAxis:
     1531                G2frame.xAxis = False
    15321532            else:
    1533                 self.xAxis = True
     1533                G2frame.xAxis = True
    15341534            Draw(False)
    15351535    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)
    15381538        Page.figure.clf()
    15391539        Plot = Page.figure.gca()
     
    15411541            Page.Show()
    15421542    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)
    15461546        Page.canvas.mpl_connect('key_press_event', OnKeyPress)
    1547         self.xAxis = False
     1547        G2frame.xAxis = False
    15481548       
    15491549    def Draw(newPlot):
    15501550        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'])
    15521552        if len(SeqData):
    15531553            Plot.clear()
    1554             if self.xAxis:   
     1554            if G2frame.xAxis:   
    15551555                xName = sampleParm.keys()[0]
    15561556                X = sampleParm[xName]
     
    15661566    Draw(True)
    15671567           
    1568 def PlotExposedImage(self,newPlot=False,event=None):
     1568def PlotExposedImage(G2frame,newPlot=False,event=None):
    15691569    '''General access module for 2D image plotting
    15701570    '''
    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)
    15761576
    1577 def PlotImage(self,newPlot=False,event=None,newImage=True):
     1577def PlotImage(G2frame,newPlot=False,event=None,newImage=True):
    15781578    '''Plot of 2D detector images as contoured plot. Also plot calibration ellipses,
    15791579    masks, etc.
     
    15841584    global Data,Masks
    15851585    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'))
    15901590
    15911591    def OnImMotion(event):
     
    15941594        if event.xdata and event.ydata:                 #avoid out of frame errors
    15951595            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    1596             item = self.itemPicked
     1596            item = G2frame.itemPicked
    15971597            pixelSize = Data['pixelSize']
    15981598            scalex = 1000./pixelSize[0]
    15991599            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':
    16011601                if 'Text' in str(item):
    16021602                    Page.canvas.SetToolTipString('%8.3f %8.3fmm'%(event.xdata,event.ydata))
     
    16171617                Int = 0
    16181618                if (0 <= xpix <= sizexy[0]) and (0 <= ypix <= sizexy[1]):
    1619                     Int = self.ImageZ[ypix][xpix]
     1619                    Int = G2frame.ImageZ[ypix][xpix]
    16201620                tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data)
    16211621                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'])
    16241624                else:
    1625                     self.G2plotNB.status.SetFields(\
     1625                    G2frame.G2plotNB.status.SetFields(\
    16261626                        ['','Detector 2-th =%9.3fdeg, dsp =%9.3fA, Q = %6.5fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int)])
    16271627
    16281628    def OnImPlotKeyPress(event):
    16291629        try:
    1630             PickName = self.PatternTree.GetItemText(self.PickId)
     1630            PickName = G2frame.PatternTree.GetItemText(G2frame.PickId)
    16311631        except TypeError:
    16321632            return
     
    16461646                Masks['Arcs'].append([tth,[azm-5,azm+5],0.1])
    16471647            elif event.key == 'p':
    1648                 self.setPoly = True
     1648                G2frame.setPoly = True
    16491649                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)
    16521652        elif PickName == 'Image Controls':
    16531653            if event.key == 'c':
     
    16561656                    return
    16571657                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?',
    16591659                    'Center change',style=wx.OK|wx.CANCEL)
    16601660                try:
     
    16621662                        print 'move center to: ',Xpos,Ypos
    16631663                        Data['center'] = [Xpos,Ypos]
    1664                         G2imG.UpdateImageControls(self,Data,Masks)
     1664                        G2imG.UpdateImageControls(G2frame,Data,Masks)
    16651665                finally:
    16661666                    dlg.Destroy()
    16671667            elif event.key == 'l':
    1668                 if self.logPlot:
    1669                     self.logPlot = False
     1668                if G2frame.logPlot:
     1669                    G2frame.logPlot = False
    16701670                else:
    1671                     self.logPlot = True
    1672         PlotImage(self,newImage=True)
     1671                    G2frame.logPlot = True
     1672        PlotImage(G2frame,newImage=True)
    16731673           
    16741674    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'):
    16761676            event.key = cb.GetValue()[0]
    16771677            cb.SetValue(' key press')
     
    16801680                       
    16811681    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']:
    16831683            return
    1684         if self.setPoly:
     1684        if G2frame.setPoly:
    16851685            polygon = Masks['Polygons'][-1]
    16861686            xpos,ypos = event.mouseevent.xdata,event.mouseevent.ydata
     
    16891689                    x0,y0 = polygon[0]
    16901690                    polygon.append([x0,y0])
    1691                     self.setPoly = False
    1692                     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'])
    16931693                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)])
    16951695                    polygon.append([xpos,ypos])
    1696                 G2imG.UpdateMasks(self,Masks)
     1696                G2imG.UpdateMasks(G2frame,Masks)
    16971697        else:
    1698             if self.itemPicked is not None: return
    1699             self.itemPicked = event.artist
    1700             self.mousePicked = event.mouseevent
     1698            if G2frame.itemPicked is not None: return
     1699            G2frame.itemPicked = event.artist
     1700            G2frame.mousePicked = event.mouseevent
    17011701       
    17021702    def OnImRelease(event):
    17031703        try:
    1704             PickName = self.PatternTree.GetItemText(self.PickId)
     1704            PickName = G2frame.PatternTree.GetItemText(G2frame.PickId)
    17051705        except TypeError:
    17061706            return
     
    17111711        scaley = 1000./pixelSize[1]
    17121712        pixLimit = Data['pixLimit']
    1713         if self.itemPicked is None and PickName == 'Image Controls':
     1713        if G2frame.itemPicked is None and PickName == 'Image Controls':
    17141714#            sizexy = Data['size']
    17151715            Xpos = event.xdata
    1716             if not (Xpos and self.ifGetRing):                   #got point out of frame
     1716            if not (Xpos and G2frame.ifGetRing):                   #got point out of frame
    17171717                return
    17181718            Ypos = event.ydata
     
    17211721                    Xpix = Xpos*scalex
    17221722                    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)
    17241724                    if I and J:
    17251725                        xpos += .5                              #shift to pixel center
     
    17291729                        Data['ring'].append([xpos,ypos])
    17301730                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')
    17341734                        print 'Calibration successful'
    17351735                    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')
    17371737                        print 'Calibration failed'
    1738                     self.ifGetRing = False
    1739                     G2imG.UpdateImageControls(self,Data,Masks)
     1738                    G2frame.ifGetRing = False
     1739                    G2imG.UpdateImageControls(G2frame,Data,Masks)
    17401740                    return
    1741                 PlotImage(self,newImage=False)
     1741                PlotImage(G2frame,newImage=False)
    17421742            return
    17431743        else:
     
    17451745            if xpos:                                        #avoid out of frame mouse position
    17461746                ypos = event.ydata
    1747                 if self.ifGetRing:                          #delete a calibration ring pick
     1747                if G2frame.ifGetRing:                          #delete a calibration ring pick
    17481748                    xypos = [xpos,ypos]
    17491749                    rings = Data['ring']
     
    17531753                else:
    17541754                    tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data)
    1755                     itemPicked = str(self.itemPicked)
     1755                    itemPicked = str(G2frame.itemPicked)
    17561756                    if 'Line2D' in itemPicked and PickName == 'Image Controls':
    17571757                        if 'line1' in itemPicked:
     
    17771777                            Data['IOtth'][0],Data['IOtth'][1] = Data['IOtth'][1],Data['IOtth'][0]
    17781778                           
    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]))
    17831783                    elif 'Circle' in itemPicked and PickName == 'Masks':
    17841784                        spots = Masks['Points']
     
    17881788                            if np.allclose(np.array([spot[:2]]),newPos):
    17891789                                spot[:2] = xpos,ypos
    1790                         G2imG.UpdateMasks(self,Masks)
     1790                        G2imG.UpdateMasks(G2frame,Masks)
    17911791                    elif 'Line2D' in itemPicked and PickName == 'Masks':
    1792                         Obj = self.itemPicked.findobj()
     1792                        Obj = G2frame.itemPicked.findobj()
    17931793                        rings = Masks['Rings']
    17941794                        arcs = Masks['Arcs']
    17951795                        polygons = Masks['Polygons']
    1796                         for ring in self.ringList:
     1796                        for ring in G2frame.ringList:
    17971797                            if Obj == ring[0]:
    17981798                                rN = ring[1]
     
    18011801                                else:
    18021802                                    rings[rN][0] = G2img.GetTth(xpos,ypos,Data)+rings[rN][1]/2.
    1803                         for arc in self.arcList:
     1803                        for arc in G2frame.arcList:
    18041804                            if Obj == arc[0]:
    18051805                                aN = arc[1]
     
    18121812                                else:
    18131813                                    arcs[aN][1][1] = int(G2img.GetAzm(xpos,ypos,Data))
    1814                         for poly in self.polyList:
     1814                        for poly in G2frame.polyList:
    18151815                            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])
    18181818                                pN = poly[1]
    18191819                                for i,xy in enumerate(polygons[pN]):
    18201820                                    if np.allclose(np.array([xy]),oldPos,atol=1.0):
    18211821                                        polygons[pN][i] = xpos,ypos
    1822                         G2imG.UpdateMasks(self,Masks)
     1822                        G2imG.UpdateMasks(G2frame,Masks)
    18231823#                    else:                  #keep for future debugging
    1824 #                        print str(self.itemPicked),event.xdata,event.ydata,event.button
    1825                 PlotImage(self,newImage=True)
    1826             self.itemPicked = None
     1824#                        print str(G2frame.itemPicked),event.xdata,event.ydata,event.button
     1825                PlotImage(G2frame,newImage=True)
     1826            G2frame.itemPicked = None
    18271827           
    18281828    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)
    18311831        if not newPlot:
    18321832            Plot = Page.figure.gca()          #get previous powder plot & get limits
     
    18371837       
    18381838    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)
    18421842        Page.canvas.mpl_connect('key_press_event', OnImPlotKeyPress)
    18431843        Page.canvas.mpl_connect('motion_notify_event', OnImMotion)
     
    18471847    if not event:                       #event from GUI TextCtrl - don't want focus to change to plot!!!
    18481848        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:
    18521852        Title = 'log('+Title+')'
    18531853    Plot.set_title(Title)
    18541854    try:
    1855         if self.PatternTree.GetItemText(self.PickId) in ['Image Controls',]:
     1855        if G2frame.PatternTree.GetItemText(G2frame.PickId) in ['Image Controls',]:
    18561856            Choice = (' key press','l: log(I) on',)
    1857             if self.logPlot:
     1857            if G2frame.logPlot:
    18581858                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,
    18601860                choices=Choice)
    18611861            cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
     
    18631863    except TypeError:
    18641864        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)
    18681868        if not imagefile:
    1869             self.G2plotNB.Delete('2D Powder Image')
     1869            G2frame.G2plotNB.Delete('2D Powder Image')
    18701870            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 line
    1874         self.oldImagefile = imagefile
     1871        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
    18751875
    18761876    imScale = 1
    1877     if len(self.ImageZ) > 1024:
    1878         imScale = len(self.ImageZ)/1024
     1877    if len(G2frame.ImageZ) > 1024:
     1878        imScale = len(G2frame.ImageZ)/1024
    18791879    sizexy = Data['size']
    18801880    pixelSize = Data['pixelSize']
     
    18961896           
    18971897        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])
    18991899            MaskA = ma.getmaskarray(MA)
    19001900            A = G2img.ImageCompress(MA,imScale)
    19011901            AM = G2img.ImageCompress(MaskA,imScale)
    1902             if self.logPlot:
     1902            if G2frame.logPlot:
    19031903                A = np.where(A>0,np.log(A),0)
    19041904                AM = np.where(AM>0,np.log(AM),0)
     
    19081908            Img = Plot.imshow(A,aspect='equal',cmap=acolor,
    19091909                interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Ymax,0])
    1910             if self.setPoly:
     1910            if G2frame.setPoly:
    19111911                Img.set_picker(True)
    19121912   
     
    19661966        for x,y,d in spots:
    19671967            Plot.add_artist(Circle((x,y),radius=d/2,fc='none',ec='r',picker=3))
    1968         self.ringList = []
     1968        G2frame.ringList = []
    19691969        for iring,(tth,thick) in enumerate(rings):
    19701970            wave = Data['wavelength']
    19711971            x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data))),2)
    19721972            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 = []
    19761976        for iarc,(tth,azm,thick) in enumerate(arcs):           
    19771977            wave = Data['wavelength']
    19781978            x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data),azm)),2)
    19791979            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 = []
    19851985        for ipoly,polygon in enumerate(polygons):
    19861986            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])
    19881988            Plot.plot(x,y,'r')           
    19891989        if newImage:
     
    20042004        wx.EndBusyCursor()
    20052005       
    2006 def PlotIntegration(self,newPlot=False,event=None):
     2006def PlotIntegration(G2frame,newPlot=False,event=None):
    20072007    '''Plot of 2D image after image integration with 2-theta and azimuth as coordinates
    20082008    '''
     
    20142014        tth = event.xdata
    20152015        if azm and tth:
    2016             self.G2plotNB.status.SetFields(\
     2016            G2frame.G2plotNB.status.SetFields(\
    20172017                ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)])
    20182018                               
    20192019    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)
    20222022        if not newPlot:
    20232023            Plot = Page.figure.gca()          #get previous plot & get limits
     
    20272027       
    20282028    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)
    20322032        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    20332033        Page.views = False
     
    20362036        Page.SetFocus()
    20372037       
    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]
    20432043    Imin,Imax = Data['range'][1]
    20442044    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:])
    20462046    Plot.set_ylabel('azimuth',fontsize=12)
    20472047    Plot.set_xlabel('2-theta',fontsize=12)
     
    20662066        Page.canvas.draw()
    20672067               
    2068 def PlotTRImage(self,tax,tay,taz,newPlot=False):
     2068def PlotTRImage(G2frame,tax,tay,taz,newPlot=False):
    20692069    '''a test plot routine - not normally used
    20702070    '''
     
    20762076        tth = event.ydata
    20772077        if azm and tth:
    2078             self.G2plotNB.status.SetFields(\
     2078            G2frame.G2plotNB.status.SetFields(\
    20792079                ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)])
    20802080                               
    20812081    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)
    20842084        if not newPlot:
    20852085            Plot = Page.figure.gca()          #get previous plot & get limits
     
    20892089       
    20902090    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)
    20942094        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    20952095        Page.views = False
     
    20972097    Page.SetFocus()
    20982098       
    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'))
    21012101    Imin,Imax = Data['range'][1]
    21022102    step = (Imax-Imin)/5.
    21032103    V = np.arange(Imin,Imax,step)
    21042104    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:])
    21062106    Plot.set_xlabel('azimuth',fontsize=12)
    21072107    Plot.set_ylabel('2-theta',fontsize=12)
     
    21392139        Page.canvas.draw()
    21402140       
    2141 def PlotStructure(self,data):
     2141def PlotStructure(G2frame,data):
    21422142    '''Crystal structure plotting package. Can show structures as balls, sticks, lines,
    21432143    thermal motion ellipsoids and polyhedra
     
    21832183        im.save(Fname,mode)
    21842184        cb.SetValue(' Save as:')
    2185         self.G2plotNB.status.SetStatusText('Drawing saved to: '+Fname,1)
     2185        G2frame.G2plotNB.status.SetStatusText('Drawing saved to: '+Fname,1)
    21862186   
    21872187    def GetTruePosition(xy,Add=False):
     
    22302230                SetTestRotZ(newxy)
    22312231            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)
    22332233                               
    22342234        if event.Dragging() and not event.ControlDown():
     
    22362236                SetRotation(newxy)
    22372237                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)
    22392239            elif event.RightIsDown():
    22402240                SetTranslation(newxy)
    22412241                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)
    22432243            elif event.MiddleIsDown():
    22442244                SetRotationZ(newxy)
    22452245                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)
    22472247        Draw()
    22482248       
     
    22522252        drawingData['cameraPos'] += event.GetWheelRotation()/24
    22532253        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)
    22552255        page = getSelection()
    22562256        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()
    22592259                names = [child.GetName() for child in panel]
    22602260                panel[names.index('cameraPos')].SetLabel('Camera Position: '+'%.2f'%(drawingData['cameraPos']))
     
    22642264    def getSelection():
    22652265        try:
    2266             return self.dataDisplay.GetSelection()
     2266            return G2frame.dataDisplay.GetSelection()
    22672267        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!')
    22702270            return 0
    22712271           
     
    22732273        page = getSelection()
    22742274        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()
    22772277                names = [child.GetName() for child in panel]
    22782278                panel[names.index('viewPoint')].SetValue('%.3f, %.3f, %.3f'%(VP[0],VP[1],VP[2]))
     
    22812281        page = getSelection()
    22822282        if page:
    2283             if self.dataDisplay.GetPageText(page) == 'Draw Atoms':
    2284                 self.dataDisplay.GetPage(page).ClearSelection()      #this is the Atoms grid in Draw Atoms
    2285             elif self.dataDisplay.GetPageText(page) == 'Atoms':
    2286                 self.dataDisplay.GetPage(page).ClearSelection()      #this is the Atoms grid in Atoms
     2283            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
    22872287                   
    22882288    def SetSelectedAtoms(ind,Add=False):
    22892289        page = getSelection()
    22902290        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 Atoms
    2293             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':
    22942294                Id = drawAtoms[ind][-2]
    22952295                for i,atom in enumerate(atomData):
    22962296                    if atom[-1] == Id:
    2297                         self.dataDisplay.GetPage(page).SelectRow(i)      #this is the Atoms grid in Atoms
     2297                        G2frame.dataDisplay.GetPage(page).SelectRow(i)      #this is the Atoms grid in Atoms
    22982298                 
    22992299    def GetSelectedAtoms():
     
    23012301        Ind = []
    23022302        if page:
    2303             if self.dataDisplay.GetPageText(page) == 'Draw Atoms':
    2304                 Ind = self.dataDisplay.GetPage(page).GetSelectedRows()      #this is the Atoms grid in Draw Atoms
    2305             elif self.dataDisplay.GetPageText(page) == 'Atoms':
    2306                 Ind = self.dataDisplay.GetPage(page).GetSelectedRows()      #this is the Atoms grid in Atoms
     2303            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
    23072307        return Ind
    23082308                                       
     
    26122612            x,y,z = drawingData['testPos'][0]
    26132613#            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)
    26152615#            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)           
    26172617            RenderUnitVectors(x,y,z)
    26182618        Backbone = []
     
    27122712       
    27132713    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)       
    27162716    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)
    27202720        Page.views = False
    27212721        view = False
    27222722        altDown = False
    27232723    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,
    27252725        choices=(' save as:','jpeg','tiff','bmp'))
    27262726    cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
  • TabularUnified trunk/GSASIIpwdGUI.py

    r447 r468  
    3131asind = lambda x: 180.*math.asin(x)/math.pi
    3232   
    33 def IsHistogramInAnyPhase(self,histoName):
    34     phases = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
     33def IsHistogramInAnyPhase(G2frame,histoName):
     34    phases = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases')
    3535    if phases:
    36         item, cookie = self.PatternTree.GetFirstChild(phases)
     36        item, cookie = G2frame.PatternTree.GetFirstChild(phases)
    3737        while item:
    38             data = self.PatternTree.GetItemPyData(item)
     38            data = G2frame.PatternTree.GetItemPyData(item)
    3939            histoList = data['Histograms'].keys()
    4040            if histoName in histoList:
    4141                return True
    42             item, cookie = self.PatternTree.GetNextChild(phases, cookie)
     42            item, cookie = G2frame.PatternTree.GetNextChild(phases, cookie)
    4343        return False
    4444    else:
     
    5252        'Omega':0.0,'Chi':0.0,'Phi':0.0}   
    5353       
    54 def UpdatePeakGrid(self, data):
    55     if self.dataDisplay:
    56         self.dataFrame.Clear()
     54def UpdatePeakGrid(G2frame, data):
     55    if G2frame.dataDisplay:
     56        G2frame.dataFrame.Clear()
    5757   
    5858    def OnUnDo(event):
    5959        DoUnDo()
    60         self.dataFrame.UnDo.Enable(False)
     60        G2frame.dataFrame.UnDo.Enable(False)
    6161       
    6262    def DoUnDo():
    6363        print 'Undo last refinement'
    64         file = open(self.undofile,'rb')
    65         PatternId = self.PatternId
     64        file = open(G2frame.undofile,'rb')
     65        PatternId = G2frame.PatternId
    6666        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:
    6969                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)))
    7171                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)))
    7373                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)))
    7575            print item,' recovered'
    7676        file.close()
    7777       
    7878    def SaveState():
    79         self.undofile = self.dirname+'\\GSASII.save'
    80         file = open(self.undofile,'wb')
    81         PatternId = self.PatternId
     79        G2frame.undofile = G2frame.dirname+'\\GSASII.save'
     80        file = open(G2frame.undofile,'wb')
     81        PatternId = G2frame.PatternId
    8282        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)
    8484        file.close()
    85         self.dataFrame.UnDo.Enable(True)
     85        G2frame.dataFrame.UnDo.Enable(True)
    8686       
    8787    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)
    8890        OnPeakFit('LSQ')
    8991       
     
    9294       
    9395    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)
    9597        try:
    9698            if dlg.ShowModal() == wx.ID_OK:
     
    98100        finally:
    99101            dlg.Destroy()
    100         UpdatePeakGrid(self,peaks)
    101         G2plt.PlotPatterns(self)
     102        UpdatePeakGrid(G2frame,peaks)
     103        G2plt.PlotPatterns(G2frame)
    102104       
    103105    def OnPeakFit(FitPgm,oneCycle=False):
    104106        SaveState()
    105         controls = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root, 'Controls'))
     107        controls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.root, 'Controls'))
    106108        if not controls:
    107109            controls = {'deriv type':'analytic','min dM/M':0.0001,}     #fill in defaults if needed
    108110        print 'Peak Fitting with '+controls['deriv type']+' derivatives:'
    109         PatternId = self.PatternId
    110         PickId = self.PickId
    111         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'))
    112114        if not peaks:
    113             self.ErrorDialog('No peaks!','Nothing to fit!')
     115            G2frame.ErrorDialog('No peaks!','Nothing to fit!')
    114116            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]
    119121        wx.BeginBusyCursor()
    120122        try:
     
    122124        finally:
    123125            wx.EndBusyCursor()   
    124         UpdatePeakGrid(self,peaks)
    125         G2plt.PlotPatterns(self)
     126        UpdatePeakGrid(G2frame,peaks)
     127        G2plt.PlotPatterns(G2frame)
    126128        print 'finished'
    127129        return
    128130       
    129131    def OnResetSigGam(event):
    130         PatternId = self.PatternId
    131         PickId = self.PickId
    132         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'))
    133135        if not peaks:
    134             self.ErrorDialog('No peaks!','Nothing to do!')
     136            G2frame.ErrorDialog('No peaks!','Nothing to do!')
    135137            return
    136         inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))
     138        inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
    137139        Inst = dict(zip(inst[3],inst[1]))
    138140        print len(Inst['Type'])
     
    141143                peak[4] = Inst['U']*tand(peak[0]/2.0)**2+Inst['V']*tand(peak[0]/2.0)+Inst['W']
    142144                peak[6] = Inst['X']/cosd(peak[0]/2.0)+Inst['Y']*tand(peak[0]/2.0)
    143         UpdatePeakGrid(self,peaks)
     145        UpdatePeakGrid(G2frame,peaks)
    144146               
    145147    def RefreshPeakGrid(event):
     
    147149       
    148150        event.StopPropagation()
    149         data = self.PeakTable.GetData()
     151        data = G2frame.PeakTable.GetData()
    150152        T = []
    151153        for peak in data:T.append(peak[0])
     
    157159       
    158160    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)
    164166                   else:
    165                        self.dataDisplay.SetCellBackgroundColour(r,c,wx.WHITE)
     167                       G2frame.dataDisplay.SetCellBackgroundColour(r,c,wx.WHITE)
    166168                                                 
    167169    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)
    172174        if event.GetKeyCode() == wx.WXK_RETURN:
    173175            event.Skip(True)
     
    177179            event.Skip(True)
    178180        elif rowList:
    179             self.dataDisplay.ClearSelection()
     181            G2frame.dataDisplay.ClearSelection()
    180182            if event.GetKeyCode() == wx.WXK_DELETE:
    181                 self.dataDisplay.ClearGrid()
     183                G2frame.dataDisplay.ClearGrid()
    182184                rowList.reverse()
    183185                nDel = 0
    184186                for row in rowList:
    185                     self.PeakTable.DeleteRow(row)
     187                    G2frame.PeakTable.DeleteRow(row)
    186188                    nDel += 1
    187189                if nDel:
    188                     msg = wg.GridTableMessage(self.PeakTable,
     190                    msg = wg.GridTableMessage(G2frame.PeakTable,
    189191                        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()
    194196                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)
    197199                       
    198200        elif colList:
    199             self.dataDisplay.ClearSelection()
     201            G2frame.dataDisplay.ClearSelection()
    200202            key = event.GetKeyCode()
    201203            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:
    203205                    if key == 89: #'Y'
    204                         for row in range(self.PeakTable.GetNumberRows()): data[row][col]=True
     206                        for row in range(G2frame.PeakTable.GetNumberRows()): data[row][col]=True
    205207                    elif key == 78:  #'N'
    206                         for row in range(self.PeakTable.GetNumberRows()): data[row][col]=False
     208                        for row in range(G2frame.PeakTable.GetNumberRows()): data[row][col]=False
    207209        elif selectList:
    208             self.dataDisplay.ClearSelection()
     210            G2frame.dataDisplay.ClearSelection()
    209211            key = event.GetKeyCode()
    210212            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:
    212214                    if key == 89: #'Y'
    213215                        data[row][col]=True
    214216                    elif key == 78:  #'N'
    215217                        data[row][col]=False
    216         G2plt.PlotPatterns(self)
     218        G2plt.PlotPatterns(G2frame)
    217219           
    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)
    227229    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 = []
    231233    rowLabels = []
    232234    for i in range(len(data)): rowLabels.append(str(i+1))
     
    244246    for key in T: X.append(D[key])
    245247    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)
    251253    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       
     260def UpdateBackground(G2frame,data):
    259261    if len(data) < 2:       #add Debye diffuse & peaks scattering here
    260262        data.append({'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]})
     
    264266           
    265267    def OnBackCopy(event):
    266         histList = ['All',]+G2gd.GetPatternTreeDataNames(self,['PWDR',])
     268        histList = ['All',]+G2gd.GetPatternTreeDataNames(G2frame,['PWDR',])
    267269        copyList = []
    268         dlg = wx.MultiChoiceDialog(self,
     270        dlg = wx.MultiChoiceDialog(G2frame,
    269271            'Copy parameters to which histograms?', 'Copy parameters',
    270272            histList, wx.CHOICEDLG_STYLE)
     
    277279                    copyList = histList[1:]
    278280            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'),
    281283                    copy.copy(data))
    282284        finally:
     
    302304                for i in range(N,M):
    303305                    del(item[-1])
    304             self.PatternTree.SetItemPyData(BackId,data)
    305             UpdateBackground(self,data)
     306            G2frame.PatternTree.SetItemPyData(BackId,data)
     307            UpdateBackground(G2frame,data)
    306308           
    307309        def OnBakVal(event):
     
    317319        backSizer = wx.BoxSizer(wx.VERTICAL)
    318320        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],
    321323                choices=Choices,style=wx.CB_READONLY|wx.CB_DROPDOWN)
    322324        bakType.Bind(wx.EVT_COMBOBOX, OnNewType)
    323325        topSizer.Add(bakType)
    324326        topSizer.Add((5,0),0)
    325         bakRef = wx.CheckBox(self.dataDisplay,label=' Refine?')
     327        bakRef = wx.CheckBox(G2frame.dataDisplay,label=' Refine?')
    326328        bakRef.SetValue(bool(data[0][1]))
    327329        bakRef.Bind(wx.EVT_CHECKBOX, OnBakRef)
    328330        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)],
    331333            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    332334        bakTerms.Bind(wx.EVT_COMBOBOX,OnBakTerms)
     
    334336        topSizer.Add((5,0),0)
    335337        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)
    337339        bakSizer = wx.FlexGridSizer(1,5,5,5)
    338340        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)
    340342            bakSizer.Add(bakVal,0,wx.ALIGN_CENTER_VERTICAL)
    341343            ValObj[bakVal.GetId()] = [i+3]
     
    357359                for i in range(N,M):
    358360                    del(data[1]['debyeTerms'][-1])
    359             UpdateBackground(self,data)
     361            UpdateBackground(G2frame,data)
    360362
    361363        def KeyEditPeakGrid(event):
     
    380382        debSizer = wx.BoxSizer(wx.VERTICAL)
    381383        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)],
    385387            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    386388        debTerms.Bind(wx.EVT_COMBOBOX,OnDebTerms)
     
    389391        debSizer.Add(topSizer)
    390392        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)       
    392394            rowLabels = []
    393395            for i in range(len(data[1]['debyeTerms'])): rowLabels.append(str(i))
     
    397399            wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_BOOL]
    398400            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)
    400402            debyeGrid.SetTable(debyeTable, True)
    401403            debyeGrid.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
     
    416418                for i in range(N,M):
    417419                    del(data[1]['peaksList'][-1])
    418             UpdateBackground(self,data)
     420            UpdateBackground(G2frame,data)
    419421
    420422        def KeyEditPeakGrid(event):
     
    438440        peaksSizer = wx.BoxSizer(wx.VERTICAL)
    439441        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)],
    443445            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    444446        peaks.Bind(wx.EVT_COMBOBOX,OnPeaks)
     
    447449        peaksSizer.Add(topSizer)
    448450        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)       
    450452            rowLabels = []
    451453            for i in range(len(data[1]['peaksList'])): rowLabels.append(str(i))
     
    456458            wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_BOOL]
    457459            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)
    459461            peaksGrid.SetTable(peaksTable, True)
    460462            peaksGrid.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
     
    463465        return peaksSizer
    464466               
    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')
    474476    Choices = ['chebyschev','cosine','lin interpolate','inv interpolate','log interpolate']
    475477    mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    480482    mainSizer.Add(PeaksSizer())
    481483    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       
     487def UpdateLimitsGrid(G2frame, data):
     488    if G2frame.dataDisplay:
     489        G2frame.dataFrame.Clear()
    488490       
    489491    def RefreshLimitsGrid(event):
    490492        event.StopPropagation()
    491         data = self.LimitsTable.GetData()
     493        data = G2frame.LimitsTable.GetData()
    492494        old = data[0]
    493495        new = data[1]
     
    495497        new[1] = max(new[0],min(old[1],new[1]))
    496498        data = [old,new]
    497         G2plt.PlotPatterns(self)
     499        G2plt.PlotPatterns(G2frame)
    498500       
    499501    def OnLimitCopy(event):
    500         histList = ['All',]+G2gd.GetPatternTreeDataNames(self,['PWDR',])
     502        histList = ['All',]+G2gd.GetPatternTreeDataNames(G2frame,['PWDR',])
    501503        copyList = []
    502         dlg = wx.MultiChoiceDialog(self,
     504        dlg = wx.MultiChoiceDialog(G2frame,
    503505            'Copy limits to which histograms?', 'Copy limits',
    504506            histList, wx.CHOICEDLG_STYLE)
     
    511513                    copyList = histList[1:]
    512514            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'),
    515517                    copy.copy(data))
    516518        finally:
    517519            dlg.Destroy()
    518520       
    519     self.LimitsTable = []
     521    G2frame.LimitsTable = []
    520522    colLabels = ['Tmin','Tmax']
    521523    rowLabels = ['original','changed']
    522524    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])
    535537   
    536 def UpdateInstrumentGrid(self,data):
     538def UpdateInstrumentGrid(G2frame,data):
    537539    if len(data) > 3:                   #powder data
    538540        insVal = dict(zip(data[3],data[1]))
     
    568570       
    569571    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')))       
    572574   
    573575    def RefreshInstrumentGrid(event,doAnyway=False):
    574576        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'))
    576578            if 'P' in insVal['Type']:                                       #update powder peak parameters
    577579                for peak in peaks:
     
    583585        data = updateData(insVal,insRef)
    584586        RefreshInstrumentGrid(event,doAnyway=True)          #to get peaks updated
    585         UpdateInstrumentGrid(self,data)
     587        UpdateInstrumentGrid(G2frame,data)
    586588       
    587589    def OnInstCopy(event):
    588         histList = ['All',]+G2gd.GetPatternTreeDataNames(self,['PWDR',])
     590        histList = ['All',]+G2gd.GetPatternTreeDataNames(G2frame,['PWDR',])
    589591        copyList = []
    590         dlg = wx.MultiChoiceDialog(self,
     592        dlg = wx.MultiChoiceDialog(G2frame,
    591593            'Copy parameters to which histograms?', 'Copy parameters',
    592594            histList, wx.CHOICEDLG_STYLE)
     
    599601                    copyList = histList[1:]
    600602            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'))
    603605                if len(data) == len(instData):                          #don't mix lam & lam1/lam2 parms!
    604606                    for i,item in enumerate(data[1:]):                  #skip default values in tuple
     
    620622            data[2] = data[2][:2]+data[2][4:]
    621623            data[3] = data[3][:1]+['Lam',]+data[3][4:]           
    622         UpdateInstrumentGrid(self,data)
     624        UpdateInstrumentGrid(G2frame,data)
    623625               
    624626    def OnNewType(event):
    625627        insVal['Type'] = typePick.GetValue()
    626628        data = updateData(insVal,insRef)
    627         UpdateInstrumentGrid(self,data)
     629        UpdateInstrumentGrid(G2frame,data)
    628630       
    629631    def OnLamPick(event):
     
    632634        insVal['Lam2'] = waves[lamType][1]
    633635        data = updateData(insVal,insRef)
    634         UpdateInstrumentGrid(self,data)
     636        UpdateInstrumentGrid(G2frame,data)
    635637                 
    636638    def OnRatValue(event):
     
    681683        data = updateData(insVal,insRef)
    682684               
    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)
    690692    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)
    692694    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'],
    700702            choices=['PXC','PNC','PNT'],style=wx.CB_READONLY|wx.CB_DROPDOWN)
    701703        typePick.Bind(wx.EVT_COMBOBOX, OnNewType)
     
    708710                insRef['Azimuth'] = False
    709711            #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)
    711713            if 'Lam1' in insVal:
    712714                instSizer.Add((5,5),0)
    713715                instSizer.Add((5,5),0)
    714716                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:'),
    716718                        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'])),
    718720                        0,wx.ALIGN_CENTER_VERTICAL)
    719721                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)
    721723                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)
    723725                lamPick.Bind(wx.EVT_COMBOBOX, OnLamPick)
    724726                waveSizer.Add(lamPick,0)
    725727                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)'])),
    727729                        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)
    729731                ratVal.Bind(wx.EVT_TEXT_ENTER,OnRatValue)
    730732                ratVal.Bind(wx.EVT_KILL_FOCUS,OnRatValue)
    731733                instSizer.Add(ratVal,0)
    732                 ratRef = wx.CheckBox(self.dataDisplay,label=' Refine?')
     734                ratRef = wx.CheckBox(G2frame.dataDisplay,label=' Refine?')
    733735                ratRef.SetValue(bool(insRef['I(L2)/I(L1)']))
    734736                ratRef.Bind(wx.EVT_CHECKBOX, OnRatRef)
     
    736738               
    737739            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'])),
    739741                    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)
    741743                waveVal.Bind(wx.EVT_TEXT_ENTER,OnWaveValue)
    742744                waveVal.Bind(wx.EVT_KILL_FOCUS,OnWaveValue)
    743745                instSizer.Add(waveVal,0,wx.ALIGN_CENTER_VERTICAL)
    744746                if ifHisto:
    745                     waveRef = wx.CheckBox(self.dataDisplay,label=' Refine?')
     747                    waveRef = wx.CheckBox(G2frame.dataDisplay,label=' Refine?')
    746748                    waveRef.SetValue(bool(insRef['Lam']))
    747749                    waveRef.Bind(wx.EVT_CHECKBOX, OnWaveRef)
     
    753755                Fmt = ' %s: ('+fmt+')'
    754756                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])),
    756758                            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)
    758760                    ValObj[itemVal.GetId()] = [item,fmt]
    759761                    itemVal.Bind(wx.EVT_TEXT_ENTER,OnItemValue)
     
    761763                    instSizer.Add(itemVal,0,wx.ALIGN_CENTER_VERTICAL)
    762764                    if ifHisto:
    763                         itemRef = wx.CheckBox(self.dataDisplay,wx.ID_ANY,label=' Refine?')
     765                        itemRef = wx.CheckBox(G2frame.dataDisplay,wx.ID_ANY,label=' Refine?')
    764766                        itemRef.SetValue(bool(insRef[item]))
    765767                        RefObj[itemRef.GetId()] = item
     
    777779                    fmt = '%10.5f'
    778780                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])),
    780782                        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)
    782784                ValObj[itemVal.GetId()] = [item,fmt]
    783785                itemVal.Bind(wx.EVT_TEXT_ENTER,OnItemValue)
    784786                itemVal.Bind(wx.EVT_KILL_FOCUS,OnItemValue)
    785787                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?')
    787789                itemRef.SetValue(bool(insRef[item]))
    788790                RefObj[itemRef.GetId()] = item
     
    795797
    796798    else:                       #single crystal data
    797         typePick = wx.ComboBox(self.dataDisplay,value=insVal['Type'],
     799        typePick = wx.ComboBox(G2frame.dataDisplay,value=insVal['Type'],
    798800            choices=['SXC','SNC','SNT'],style=wx.CB_READONLY|wx.CB_DROPDOWN)
    799801        typePick.Bind(wx.EVT_COMBOBOX, OnNewType)
    800802        instSizer.Add(typePick,0,wx.ALIGN_CENTER_VERTICAL)
    801803        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'])),
    803805                    0,wx.ALIGN_CENTER_VERTICAL)
    804806        else:                                   #time of flight (neutrons)
     
    808810    mainSizer.Add(instSizer,0)
    809811    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))
    812814   
    813 def UpdateSampleGrid(self,data):
     815def UpdateSampleGrid(G2frame,data):
    814816   
    815817    def OnSampleCopy(event):
    816         histName = self.PatternTree.GetItemText(self.PatternId)
     818        histName = G2frame.PatternTree.GetItemText(G2frame.PatternId)
    817819        copyNames = ['Scale',]
    818820        dataType = data['Type']
     
    829831            copyDict[parm] = data[parm]
    830832        histList = ['All '+histType,]
    831         item, cookie = self.PatternTree.GetFirstChild(self.root)
     833        item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
    832834        while item:
    833             name = self.PatternTree.GetItemText(item)
     835            name = G2frame.PatternTree.GetItemText(item)
    834836            if histType in name and name != histName:
    835837                histList.append(name)
    836             item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     838            item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    837839        if len(histList) == 1:      #nothing to copy to!
    838840            return
    839841        copyList = []
    840         dlg = wx.MultiChoiceDialog(self,'Copy parameters from\n'+histName,
     842        dlg = wx.MultiChoiceDialog(G2frame,'Copy parameters from\n'+histName,
    841843            'Copy parameters to which histograms?',histList,wx.CHOICEDLG_STYLE)
    842844        try:
     
    848850                    copyList = histList[1:]
    849851            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'))
    852854                sampleData.update(copy.deepcopy(copyDict))
    853855        finally:
    854856            dlg.Destroy()
    855857
    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)
    864866
    865867#patch
     
    908910            data['Shift'] = [0.0,False]
    909911            data['Transparency'] = [0.0,False]
    910         self.dataDisplay.Destroy()
    911         UpdateSampleGrid(self,data)
     912        G2frame.dataDisplay.Destroy()
     913        UpdateSampleGrid(G2frame,data)
    912914       
    913915    def OnParmRef(event):
     
    932934               
    933935    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)
    935937    mainSizer.Add((5,5),0)
    936938    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: ')
    938940    scaleRef.SetValue(data['Scale'][1])
    939941    scaleRef.Bind(wx.EVT_CHECKBOX, OnScaleRef)
    940942    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,
    942944        '%.4f'%(data['Scale'][0]),style=wx.TE_PROCESS_ENTER)
    943945    scaleVal.Bind(wx.EVT_TEXT_ENTER,OnScaleVal)
     
    946948    typeSizer = wx.BoxSizer(wx.HORIZONTAL)
    947949    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,
    949951        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    950952    histoType.Bind(wx.EVT_COMBOBOX, OnHistoType)
     
    954956    for parm in parms:
    955957        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])
    957959            objList[parmRef.GetId()] = parm[0]
    958960            parmRef.SetValue(data[parm[0]][1])
    959961            parmRef.Bind(wx.EVT_CHECKBOX, OnParmRef)
    960962            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,
    962964                parm[2]%(data[parm[0]][0]),style=wx.TE_PROCESS_ENTER)
    963965        else:
    964             parmSizer.Add(wx.StaticText(self.dataDisplay,label=parm[1]),
     966            parmSizer.Add(wx.StaticText(G2frame.dataDisplay,label=parm[1]),
    965967                0,wx.ALIGN_CENTER_VERTICAL)
    966             parmVal = wx.TextCtrl(self.dataDisplay,wx.ID_ANY,
     968            parmVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,
    967969                parm[2]%(data[parm[0]]),style=wx.TE_PROCESS_ENTER)       
    968970        objList[parmVal.GetId()] = parm
     
    974976   
    975977    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)
    980982               
    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'))
     983def 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'))
    984986    Inst = dict(zip(inst[3],inst[1]))
    985987    try:
     
    990992    def RefreshIndexPeaksGrid(event):
    991993        r,c =  event.GetRow(),event.GetCol()
    992         data = self.IndexPeaksTable.GetData()
     994        data = G2frame.IndexPeaksTable.GetData()
    993995        if c == 2:
    994996            if data[r][c]:
     
    996998            else:
    997999                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()
    10011003           
    10021004    def OnReload(event):
    10031005        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'))
    10051007        for peak in peaks:
    10061008            dsp = wave/(2.0*sind((peak[0]-Inst['Zero'])/2.0))
    10071009            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)
    10101012       
    10111013    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)
    10151017        if event.GetKeyCode() == wx.WXK_RETURN:
    10161018            event.Skip(True)
     
    10201022            event.Skip(True)
    10211023        elif colList:
    1022             self.dataDisplay.ClearSelection()
     1024            G2frame.dataDisplay.ClearSelection()
    10231025            key = event.GetKeyCode()
    10241026            for col in colList:
    1025                 if self.IndexPeaksTable.GetColLabelValue(col) in ['use','refine']:
     1027                if G2frame.IndexPeaksTable.GetColLabelValue(col) in ['use','refine']:
    10261028                    if key == 89: #'Y'
    1027                         for row in range(self.IndexPeaksTable.GetNumberRows()): data[row][col]=True
     1029                        for row in range(G2frame.IndexPeaksTable.GetNumberRows()): data[row][col]=True
    10281030                    elif key == 78:  #'N'
    1029                         for row in range(self.IndexPeaksTable.GetNumberRows()): data[row][col]=False
     1031                        for row in range(G2frame.IndexPeaksTable.GetNumberRows()): data[row][col]=False
    10301032           
    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 = []
    10401042    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'))
    10431045        if cells:
    10441046            cellist = cells[2]
    10451047            dmin = cells[3]
    1046             self.HKL = []
     1048            G2frame.HKL = []
    10471049            for i,cell in enumerate(cellist):
    10481050                if cell[-1]:
    10491051                    ibrav = cell[2]
    10501052                    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:
    10541056                        hkl.append(2.0*asind(wave/(2.*hkl[3]))+Inst['Zero'])             
    10551057    rowLabels = []
     
    10591061        wg.GRID_VALUE_BOOL,wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG,
    10601062        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()):
    10681070            if c == 2:
    1069                 self.dataDisplay.SetReadOnly(r,c,isReadOnly=False)
     1071                G2frame.dataDisplay.SetReadOnly(r,c,isReadOnly=False)
    10701072            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])
    10771079 
    1078 def UpdateUnitCellsGrid(self, data):
    1079     UnitCellsId = G2gd.GetPatternTreeItemId(self,self.PatternId, 'Unit Cells List')
     1080def UpdateUnitCellsGrid(G2frame, data):
     1081    UnitCellsId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List')
    10801082    bravaisSymb = ['Fm3m','Im3m','Pm3m','R3-H','P6/mmm','I4/mmm',
    10811083        'P4/mmm','Fmmm','Immm','Cmmm','Pmmm','C2/m','P2/m','P1']
    10821084    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',
    10831085        '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'))
    10851087    Inst = dict(zip(inst[3],inst[1]))
    10861088    if 'Lam' in Inst:
     
    11371139    def OnBravSel(event):
    11381140        controls[5] = bravSel.GetString(bravSel.GetSelection())       
    1139         UpdateUnitCellsGrid(self,data)
     1141        UpdateUnitCellsGrid(G2frame,data)
    11401142       
    11411143    def OnCellChange(event):
     
    11861188       
    11871189    def OnHklShow(event):
    1188         PatternId = self.PatternId
    1189         PickId = self.PickId   
    1190         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'))
    11921194        cell = controls[6:12]
    11931195        A = G2lat.cell2A(cell)
    11941196        ibrav = bravaisSymb.index(controls[5])
    11951197        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:
    11981200            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)
    12011203        else:
    1202             G2plt.PlotPatterns(self)
     1204            G2plt.PlotPatterns(G2frame)
    12031205           
    12041206    def OnSortCells(event):
    1205         controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(UnitCellsId)
     1207        controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(UnitCellsId)
    12061208        c =  event.GetCol()
    12071209        if colLabels[c] == 'M20':
     
    12121214            return
    12131215        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)
    12161218       
    12171219    def CopyUnitCell(event):
    1218         controls,bravais,cells,dmin = self.PatternTree.GetItemPyData(UnitCellsId)
     1220        controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(UnitCellsId)
    12191221        for Cell in cells:
    12201222            if Cell[-1]:
     
    12251227        controls[6:12] = cell[1:8]
    12261228        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)
    12311233               
    12321234    def RefineCell(event):
     
    12461248                print "%s%8.3f %s%8.3f %s%8.3f %s%12.3f" % ('alpha =',cell[3],'beta =',cell[4],'gamma =',cell[5],' volume =',Vol)
    12471249             
    1248         PatternId = self.PatternId
    1249         PickId = self.PickId   
    1250         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'))
    12511253        if not peaks:
    1252             self.ErrorDialog('No peaks!', 'Nothing to refine!')
     1254            G2frame.ErrorDialog('No peaks!', 'Nothing to refine!')
    12531255            return       
    12541256        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'))
    12561258        cell = controls[6:12]
    12571259        A = G2lat.cell2A(cell)
    12581260        ibrav = bravaisSymb.index(controls[5])
    12591261        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)
    12621264        Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksZ(peaks,wave,ibrav,A,controls[1],controls[0])           
    12631265        controls[1] = Zero
     
    12651267        controls[12] = G2lat.calc_V(Aref)
    12661268        data = [controls,bravais,cells,dmin]
    1267         cells = self.PatternTree.GetItemPyData(UnitCellsId)[2]
     1269        cells = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2]
    12681270        for cell in cells:
    12691271            cell[-1] = False
    12701272        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)
    12741276        print "%s%10.3f" % ('refinement M20 = ',M20)
    12751277        print 'unindexed lines = ',X20
    12761278        cellPrint(ibrav,Aref)
    1277         for hkl in self.HKL:
     1279        for hkl in G2frame.HKL:
    12781280            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)
    12811283        else:
    1282             G2plt.PlotPatterns(self)
     1284            G2plt.PlotPatterns(G2frame)
    12831285       
    12841286    def IndexPeaks(event):
    1285         PatternId = self.PatternId   
     1287        PatternId = G2frame.PatternId   
    12861288        print 'Peak Indexing'
    12871289        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'))
    12891291            cells = []
    12901292        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')
    12921294            return
    12931295        if True not in bravais:
    1294             self.ErrorDialog('Error','No Bravais lattices selected')
     1296            G2frame.ErrorDialog('Error','No Bravais lattices selected')
    12951297            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)
    12981300        OK,dmin,cells = G2indx.DoIndexPeaks(peaks,inst[1],controls,bravais)
    12991301        if OK:
    13001302            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)
    13031305            bestCell = cells[0]
    13041306            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:
    13071309                    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)
    13101312                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)
    13161318               
    13171319    def RefreshUnitCellsGrid(event):
    1318         cells,dmin = self.PatternTree.GetItemPyData(UnitCellsId)[2:]
     1320        cells,dmin = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2:]
    13191321        r,c =  event.GetRow(),event.GetCol()
    13201322        if cells:
     
    13281330                ibrav = cells[r][2]
    13291331                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:
    13321334                    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)
    13351337                else:
    1336                     G2plt.PlotPatterns(self)
     1338                    G2plt.PlotPatterns(G2frame)
    13371339       
    13381340    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')
    13411343        else:
    1342             sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
     1344            sub = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases')
    13431345        PhaseName = ''
    13441346        dlg = wx.TextEntryDialog(None,'Enter a name for this phase','Phase Name Entry','New phase',
     
    13471349            if dlg.ShowModal() == wx.ID_OK:
    13481350                PhaseName = dlg.GetValue()
    1349                 cells = self.PatternTree.GetItemPyData(UnitCellsId)[2]
     1351                cells = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2]
    13501352                for Cell in cells:
    13511353                    if Cell[-1]:
    13521354                        break
    13531355                cell = Cell[2:10]       
    1354                 sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
     1356                sub = G2frame.PatternTree.AppendItem(parent=sub,text=PhaseName)
    13551357                E,SGData = G2spc.SpcGroup(spaceGroups[cell[0]])
    1356                 self.PatternTree.SetItemPyData(sub, \
     1358                G2frame.PatternTree.SetItemPyData(sub, \
    13571359                    {'General':{'Name':PhaseName,'Type':'nuclear','SGData':SGData,
    13581360                    'Cell':[False,]+cell[1:],
     
    13621364            dlg.Destroy()
    13631365           
    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)
    13731375   
    13741376    controls,bravais,cells,dmin = data
    13751377    if len(controls) < 13:              #add cell volume if missing
    13761378        controls.append(G2lat.calc_V(G2lat.cell2A(controls[6:12])))
    1377     self.PatternTree.SetItemPyData(UnitCellsId,data)            #update with volume
     1379    G2frame.PatternTree.SetItemPyData(UnitCellsId,data)            #update with volume
    13781380    bravaisNames = ['Cubic-F','Cubic-I','Cubic-P','Trigonal-R','Trigonal/Hexagonal-P',
    13791381        'Tetragonal-I','Tetragonal-P','Orthorhombic-F','Orthorhombic-I','Orthorhombic-C',
     
    13891391        [True,True,True,False,True,True,True],[0,1,2,0,3,4,5])]]
    13901392   
    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'))
    13961398    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)
    13991401    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)       
    14031405    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)       
    14081410    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)
    14101412    mainSizer.Add((5,5),0)
    14111413    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)
    14141416    NcNo.SetRange(1,6)
    14151417    NcNo.SetValue(controls[2])
    14161418    NcNo.Bind(wx.EVT_SPINCTRL,OnNcNo)
    14171419    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)
    14201422    startVol.Bind(wx.EVT_TEXT_ENTER,OnStartVol)
    14211423    startVol.Bind(wx.EVT_KILL_FOCUS,OnStartVol)
     
    14231425    mainSizer.Add(littleSizer,0)
    14241426    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: '),
    14261428        0,wx.ALIGN_CENTER_VERTICAL)
    14271429    mainSizer.Add((5,5),0)
     
    14301432    bravs = zip(bravais,bravaisNames)
    14311433    for brav,bravName in bravs:
    1432         bravCk = wx.CheckBox(self.dataDisplay,label=bravName)
     1434        bravCk = wx.CheckBox(G2frame.dataDisplay,label=bravName)
    14331435        bravList.append(bravCk.GetId())
    14341436        bravCk.SetValue(brav)
     
    14381440    mainSizer.Add((5,5),0)
    14391441   
    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)
    14411443    mainSizer.Add((5,5),0)
    14421444    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)
    14451447    bravSel.SetSelection(bravaisSymb.index(controls[5]))
    14461448    bravSel.Bind(wx.EVT_CHOICE,OnBravSel)
    14471449    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)
    14501452    zero.Bind(wx.EVT_TEXT_ENTER,OnZero)
    14511453    zero.Bind(wx.EVT_KILL_FOCUS,OnZero)
    14521454    littleSizer.Add(zero,0,wx.ALIGN_CENTER_VERTICAL)
    1453     zeroVar = wx.CheckBox(self.dataDisplay,label="Refine?")
     1455    zeroVar = wx.CheckBox(G2frame.dataDisplay,label="Refine?")
    14541456    zeroVar.SetValue(controls[0])
    14551457    zeroVar.Bind(wx.EVT_CHECKBOX,OnZeroVar)
    14561458    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")
    14581460    hklShow.Bind(wx.EVT_BUTTON,OnHklShow)
    14591461    littleSizer.Add(hklShow,0,wx.ALIGN_CENTER_VERTICAL)
     
    14681470    littleSizer = wx.FlexGridSizer(2,useGUI[1],5,5)
    14691471    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)
    14711473        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)
    14731475            cellVal.Bind(wx.EVT_TEXT_ENTER,OnCellChange)       
    14741476            cellVal.Bind(wx.EVT_KILL_FOCUS,OnCellChange)
     
    14761478            cellList.append(cellVal.GetId())
    14771479        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)
    14791481            volVal.SetBackgroundColour(VERY_LIGHT_GREY)
    14801482            littleSizer.Add(volVal,0,wx.ALIGN_CENTER_VERTICAL)
     
    14821484       
    14831485    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)
    14871489    if cells:
    14881490        if ibrav == 13:
     
    14901492        else:
    14911493            topSize[1] += 200
    1492     self.dataFrame.setSizePosLeft(topSize)   
     1494    G2frame.dataFrame.setSizePosLeft(topSize)   
    14931495   
    14941496    if cells:
    1495         bottomSize = self.bottom.GetSize()
     1497        bottomSize = G2frame.bottom.GetSize()
    14961498        if ibrav == 13:
    14971499            bottomSize[1] -= 240
    14981500        else:
    14991501            bottomSize[1] -= 210
    1500         wx.StaticText(parent=self.bottom,label=' Indexing Result ')
     1502        wx.StaticText(parent=G2frame.bottom,label=' Indexing Result ')
    15011503        rowLabels = []
    15021504        colLabels = ['M20','X20','use','Bravais','a','b','c','alpha','beta','gamma','Volume']
     
    15111513            if cell[-1]:
    15121514                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:
    15151517                    hkl.append(2.0*asind(wave/(2.*hkl[3]))+controls[1]+Inst['Zero'])             
    15161518            table.append(row)
    15171519        UnitCellsTable = G2gd.Table(table,rowLabels=rowLabels,colLabels=colLabels,types=Types)
    1518         gridDisplay = G2gd.GSGrid(self.bottom)
     1520        gridDisplay = G2gd.GSGrid(G2frame.bottom)
    15191521        gridDisplay.SetPosition(wx.Point(0,20))               
    15201522        gridDisplay.SetTable(UnitCellsTable, True)
    1521         self.dataFrame.CopyCell.Enable(True)
     1523        G2frame.dataFrame.CopyCell.Enable(True)
    15221524        gridDisplay.Bind(wg.EVT_GRID_CELL_LEFT_CLICK,RefreshUnitCellsGrid)
    15231525        gridDisplay.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK,OnSortCells)
     
    15331535        gridDisplay.SetSize(bottomSize)
    15341536
    1535 def UpdateReflectionGrid(self,data):
     1537def UpdateReflectionGrid(G2frame,data):
    15361538    if not data:
    15371539        print 'No phases, no reflections'
     
    15401542   
    15411543    def OnSelectPhase(event):
    1542         dlg = wx.SingleChoiceDialog(self,'Select','Phase',phases)
     1544        dlg = wx.SingleChoiceDialog(G2frame,'Select','Phase',phases)
    15431545        try:
    15441546            if dlg.ShowModal() == wx.ID_OK:
    15451547                sel = dlg.GetSelection()
    1546                 self.RefList = phases[sel]
    1547                 UpdateReflectionGrid(self,data)
     1548                G2frame.RefList = phases[sel]
     1549                UpdateReflectionGrid(G2frame,data)
    15481550        finally:
    15491551            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)
    15601562    if len(data) > 1:
    1561         self.dataFrame.SelectPhase.Enable(True)
     1563        G2frame.dataFrame.SelectPhase.Enable(True)
    15621564    rowLabels = []
    1563     refList = [refl[:11] for refl in data[self.RefList]]
     1565    refList = [refl[:11] for refl in data[G2frame.RefList]]
    15641566    for i in range(len(refList)): rowLabels.append(str(i))
    15651567    colLabels = ['H','K','L','mul','d','pos','sig','gam','Fosq','Fcsq','phase',]
    15661568    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])
    15751577
    1576 def UpdatePDFGrid(self,data):
     1578def UpdatePDFGrid(G2frame,data):
    15771579    global inst
    15781580    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)
    15801582    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'))
    15841586    inst = dict(zip(inst[3],inst[1]))
    15851587    if 'Lam' in inst:
     
    16081610            Obj.SetValue(fmt%(value))
    16091611            data[fileKey][itemKey] = value
    1610             UpdatePDFGrid(self,data)
     1612            UpdatePDFGrid(G2frame,data)
    16111613       
    16121614        def OnValueChange(event):
     
    16201622            data[fileKey][itemKey] = value
    16211623            auxPlot = ComputePDF(data)
    1622             G2plt.PlotISFG(self,newPlot=True)
     1624            G2plt.PlotISFG(G2frame,newPlot=True)
    16231625                       
    16241626        item = data[key]
    16251627        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,
    16281630            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    16291631        itemDict[fileName.GetId()] = [key,'Name','%s']
    16301632        fileName.Bind(wx.EVT_COMBOBOX,OnSelectFile)       
    16311633        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)
    16341636        itemDict[mult.GetId()] = [key,'Mult','%.3f']
    16351637        mult.Bind(wx.EVT_TEXT_ENTER,OnValueChange)       
    16361638        mult.Bind(wx.EVT_KILL_FOCUS,OnValueChange)
    16371639        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)
    16401642        itemDict[add.GetId()] = [key,'Add','%.0f']
    16411643        add.Bind(wx.EVT_TEXT_ENTER,OnValueChange)       
     
    16511653        return sumVol
    16521654        auxPlot = ComputePDF(data)
    1653         G2plt.PlotISFG(self,newPlot=True)       
     1655        G2plt.PlotISFG(G2frame,newPlot=True)       
    16541656       
    16551657    def FillElemSizer(elemSizer,ElData):
     
    16641666            data['Form Vol'] = max(10.0,SumElementVolumes())
    16651667            formVol.SetValue('%.2f'%(data['Form Vol']))
    1666             UpdatePDFGrid(self,data)
     1668            UpdatePDFGrid(G2frame,data)
    16671669            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,
    16711673            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)
    16731675        num.Bind(wx.EVT_TEXT_ENTER,OnFractionChange)       
    16741676        num.Bind(wx.EVT_KILL_FOCUS,OnFractionChange)
    16751677        elemSizer.Add(num,0,wx.ALIGN_CENTER_VERTICAL)
    1676         elemSizer.Add(wx.StaticText(parent=self.dataDisplay,
     1678        elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,
    16771679            label="f': %.3f"%(ElData['fp'])+' f": %.3f'%(ElData['fpp'])+' mu: %.2f barns'%(ElData['mu']) ),
    16781680            0,wx.ALIGN_CENTER_VERTICAL)
     
    16801682    def OnGeometry(event):
    16811683        data['Geometry'] = geometry.GetValue()
    1682         UpdatePDFGrid(self,data)
     1684        UpdatePDFGrid(G2frame,data)
    16831685        auxPlot = ComputePDF(data)
    1684         G2plt.PlotISFG(self,newPlot=True)       
     1686        G2plt.PlotISFG(G2frame,newPlot=True)       
    16851687       
    16861688    def OnDetType(event):
    16871689        data['DetType'] = detType.GetValue()
    1688         UpdatePDFGrid(self,data)
     1690        UpdatePDFGrid(G2frame,data)
    16891691        auxPlot = ComputePDF(data)
    1690         G2plt.PlotISFG(self,newPlot=True)       
     1692        G2plt.PlotISFG(G2frame,newPlot=True)       
    16911693       
    16921694    def OnFormVol(event):
     
    16981700            value = data['Form Vol']
    16991701        data['Form Vol'] = value
    1700         UpdatePDFGrid(self,data)
     1702        UpdatePDFGrid(G2frame,data)
    17011703        auxPlot = ComputePDF(data)
    1702         G2plt.PlotISFG(self,newPlot=False)       
     1704        G2plt.PlotISFG(G2frame,newPlot=False)       
    17031705       
    17041706    def OnDiameter(event):
     
    17101712            value = data['Diam']
    17111713        data['Diam'] = value
    1712         UpdatePDFGrid(self,data)
     1714        UpdatePDFGrid(G2frame,data)
    17131715        auxPlot = ComputePDF(data)
    1714         G2plt.PlotISFG(self,newPlot=False)
     1716        G2plt.PlotISFG(G2frame,newPlot=False)
    17151717       
    17161718    def OnPolaVal(event):
     
    17231725        inst['Polariz.'] = value
    17241726        polaVal.SetValue('%.2f'%(inst['Polariz.']))
    1725         UpdatePDFGrid(self,data)
     1727        UpdatePDFGrid(G2frame,data)
    17261728        auxPlot = ComputePDF(data)
    1727         G2plt.PlotISFG(self,newPlot=False)
     1729        G2plt.PlotISFG(G2frame,newPlot=False)
    17281730               
    17291731    def OnAzimVal(event):
     
    17361738        inst['Azimuth'] = value
    17371739        azimVal.SetValue('%.1f'%(inst['Azimuth']))
    1738         UpdatePDFGrid(self,data)
     1740        UpdatePDFGrid(G2frame,data)
    17391741        auxPlot = ComputePDF(data)
    1740         G2plt.PlotISFG(self,newPlot=False)
     1742        G2plt.PlotISFG(G2frame,newPlot=False)
    17411743                       
    17421744    def OnObliqCoeff(event):
     
    17521754        obliqCoeff.SetValue('%.3f'%(value))
    17531755        auxPlot = ComputePDF(data)
    1754         G2plt.PlotISFG(self,newPlot=False)
     1756        G2plt.PlotISFG(G2frame,newPlot=False)
    17551757       
    17561758    def OnRulandWdt(event):
     
    17661768        rulandWdt.SetValue('%.3f'%(value))
    17671769        auxPlot = ComputePDF(data)
    1768         G2plt.PlotISFG(self,newPlot=False)
     1770        G2plt.PlotISFG(G2frame,newPlot=False)
    17691771       
    17701772    def OnRulSlider(event):
     
    17731775        rulandWdt.SetValue('%.3f'%(data['Ruland']))
    17741776        auxPlot = ComputePDF(data)
    1775         G2plt.PlotISFG(self,newPlot=False)
     1777        G2plt.PlotISFG(G2frame,newPlot=False)
    17761778       
    17771779    def OnLorch(event):
    17781780        data['Lorch'] = lorch.GetValue()
    17791781        auxPlot = ComputePDF(data)
    1780         G2plt.PlotISFG(self,newPlot=False)       
     1782        G2plt.PlotISFG(G2frame,newPlot=False)       
    17811783                       
    17821784    def OnPacking(event):
     
    17881790            value = data['Pack']
    17891791        data['Pack'] = value
    1790         UpdatePDFGrid(self,data)
     1792        UpdatePDFGrid(G2frame,data)
    17911793        auxPlot = ComputePDF(data)
    1792         G2plt.PlotISFG(self,newPlot=False)       
     1794        G2plt.PlotISFG(G2frame,newPlot=False)       
    17931795               
    17941796    def OnSQmin(event):
     
    18021804        SQmin.SetValue('%.1f'%(value))
    18031805        auxPlot = ComputePDF(data)
    1804         G2plt.PlotISFG(self,newPlot=True)       
     1806        G2plt.PlotISFG(G2frame,newPlot=True)       
    18051807       
    18061808    def OnSQmax(event):
     
    18171819        SQmax.SetValue('%.1f'%(value))
    18181820        auxPlot = ComputePDF(data)
    1819         G2plt.PlotISFG(self,newPlot=True)
     1821        G2plt.PlotISFG(G2frame,newPlot=True)
    18201822       
    18211823    def OnResetQ(event):
     
    18261828        SQmin.SetValue('%.1f'%(data['QScaleLim'][0]))
    18271829        auxPlot = ComputePDF(data)
    1828         G2plt.PlotISFG(self,newPlot=True)       
     1830        G2plt.PlotISFG(G2frame,newPlot=True)       
    18291831
    18301832    def GetFileList(fileType,skip=None):
    18311833        fileList = [[False,'',0]]
    18321834        Source = ''
    1833         id, cookie = self.PatternTree.GetFirstChild(self.root)
     1835        id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
    18341836        while id:
    1835             name = self.PatternTree.GetItemText(id)
     1837            name = G2frame.PatternTree.GetItemText(id)
    18361838            if fileType in name:
    18371839                if id == skip:
     
    18391841                else:
    18401842                    fileList.append([False,name,id])
    1841             id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     1843            id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    18421844        if skip:
    18431845            return fileList,Source
     
    18471849    def OnCopyPDFControls(event):
    18481850        import copy
    1849         TextList,Source = GetFileList('PDF',skip=self.PatternId)
     1851        TextList,Source = GetFileList('PDF',skip=G2frame.PatternId)
    18501852        TextList[0] = [False,'All PDF',0]
    18511853        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')
    18531855            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)
    18551857        try:
    18561858            if dlg.ShowModal() == wx.ID_OK:
     
    18621864                    ifcopy,name,id = item
    18631865                    if ifcopy:
    1864                         olddata = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'PDF Controls'))
     1866                        olddata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'PDF Controls'))
    18651867                        sample = olddata['Sample']
    18661868                        olddata.update(copy.deepcopy(data))
    18671869                        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)
    18691871                Status.SetStatusText('PDF controls copied')
    18701872        finally:
     
    18791881    def OnAddElement(event):
    18801882        ElList = data['ElList']
    1881         PE = G2elem.PickElement(self,oneOnly=True)
     1883        PE = G2elem.PickElement(G2frame,oneOnly=True)
    18821884        if PE.ShowModal() == wx.ID_OK:
    18831885            El = PE.Elem
     
    18931895            data['Form Vol'] = max(10.0,SumElementVolumes())
    18941896        PE.Destroy()
    1895         UpdatePDFGrid(self,data)
     1897        UpdatePDFGrid(G2frame,data)
    18961898       
    18971899    def OnDeleteElement(event):
    18981900        ElList = data['ElList']
    18991901        choice = ElList.keys()
    1900         dlg = G2elem.DeleteElement(self,choice=choice)
     1902        dlg = G2elem.DeleteElement(G2frame,choice=choice)
    19011903        if dlg.ShowModal() == wx.ID_OK:
    19021904            del ElList[dlg.GetDeleteElement()]
    19031905        dlg.Destroy()
    1904         UpdatePDFGrid(self,data)
     1906        UpdatePDFGrid(G2frame,data)
    19051907               
    19061908    def ComputePDF(Data):
     
    19091911            name = Data[key]['Name']
    19101912            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))
    19121914                PDFname = name
    19131915        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'))
    19161918        inst = dict(zip(inst[3],inst[1]))
    19171919        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'])
    19231925        return auxPlot
    19241926       
     
    19291931        Status.SetStatusText('PDF computed')
    19301932        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)')
    19371939       
    19381940    def OnComputeAllPDF(event):
    19391941        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)
    19421944            while id:
    1943                 Name = self.PatternTree.GetItemText(id)
     1945                Name = G2frame.PatternTree.GetItemText(id)
    19441946                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'))
    19461948                    auxPlot = ComputePDF(Data)                   
    1947                 id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     1949                id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    19481950            Status.SetStatusText('All PDFs computed')
    1949             G2plt.PlotISFG(self,newPlot=True,type='G(R)')
     1951            G2plt.PlotISFG(G2frame,newPlot=True,type='G(R)')
    19501952            print ' Done calculating PDFs:'
    19511953       
    1952     def OnShowTip(self,tip):
     1954    def OnShowTip(G2frame,tip):
    19531955        print tip   
    19541956               
    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)
    19681970    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)
    19701972    mainSizer.Add((5,5),0)
    19711973    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)
    19731975#    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']))
    19761978#    azimVal.Bind(wx.EVT_TEXT_ENTER,OnAzimVal)       
    19771979#    azimVal.Bind(wx.EVT_KILL_FOCUS,OnAzimVal)
    19781980#    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.']))
    19811983#    polaVal.Bind(wx.EVT_TEXT_ENTER,OnPolaVal)       
    19821984#    polaVal.Bind(wx.EVT_KILL_FOCUS,OnPolaVal)
     
    19921994    mainSizer.Add(fileSizer,0)
    19931995    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)
    19951997    mainSizer.Add((5,5),0)   
    19961998
     
    20042006    mainSizer.Add((5,5),0)   
    20052007    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']))
    20082010    formVol.Bind(wx.EVT_TEXT_ENTER,OnFormVol)       
    20092011    formVol.Bind(wx.EVT_KILL_FOCUS,OnFormVol)
    20102012    midSizer.Add(formVol,0)
    2011     midSizer.Add(wx.StaticText(self.dataDisplay,
     2013    midSizer.Add(wx.StaticText(G2frame.dataDisplay,
    20122014        label=' Theoretical absorption: %.4f cm-1 Sample absorption: %.4f cm-1'%(Abs,Abs*data['Pack'])),
    20132015        0,wx.ALIGN_CENTER_VERTICAL)
     
    20162018
    20172019    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)
    20192021    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,
    20212023            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    20222024    geometry.Bind(wx.EVT_COMBOBOX, OnGeometry)
    20232025    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']))
    20262028    diam.Bind(wx.EVT_TEXT_ENTER,OnDiameter)       
    20272029    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????
    20292031    geoBox.Add(diam,0)
    20302032    mainSizer.Add(geoBox,0)
    20312033    mainSizer.Add((5,5),0)   
    20322034    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']))
    20352037    pack.Bind(wx.EVT_TEXT_ENTER,OnPacking)       
    20362038    pack.Bind(wx.EVT_KILL_FOCUS,OnPacking)
    20372039    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)   
    20392041    mainSizer.Add(geoBox,0)
    20402042    mainSizer.Add((5,5),0)   
    20412043       
    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)
    20432045    mainSizer.Add((5,5),0)
    20442046    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)
    20462048    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,
    20482050            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    20492051    detType.Bind(wx.EVT_COMBOBOX, OnDetType)
    20502052    sqBox.Add(detType,0)
    20512053    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']))
    20542056        obliqCoeff.Bind(wx.EVT_TEXT_ENTER,OnObliqCoeff)       
    20552057        obliqCoeff.Bind(wx.EVT_KILL_FOCUS,OnObliqCoeff)
     
    20582060       
    20592061    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,
    20622064        value=int(1000*data['Ruland']))
    20632065    sqBox.Add(rulandSldr,1,wx.EXPAND)
    20642066    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']))
    20662068    rulandWdt.Bind(wx.EVT_TEXT_ENTER,OnRulandWdt)       
    20672069    rulandWdt.Bind(wx.EVT_KILL_FOCUS,OnRulandWdt)
     
    20702072   
    20712073    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?')
    20732075    lorch.SetValue(data['Lorch'])
    20742076    lorch.Bind(wx.EVT_CHECKBOX, OnLorch)
    20752077    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]))
    20782080    SQmin.Bind(wx.EVT_TEXT_ENTER,OnSQmin)       
    20792081    SQmin.Bind(wx.EVT_KILL_FOCUS,OnSQmin)   
    20802082    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]))
    20832085    SQmax.Bind(wx.EVT_TEXT_ENTER,OnSQmax)       
    20842086    SQmax.Bind(wx.EVT_KILL_FOCUS,OnSQmax)
    20852087    sqBox.Add(SQmax,0)
    2086     resetQ = wx.CheckBox(parent=self.dataDisplay,label='Reset?')
     2088    resetQ = wx.CheckBox(parent=G2frame.dataDisplay,label='Reset?')
    20872089    sqBox.Add(resetQ,0)
    20882090    resetQ.Bind(wx.EVT_CHECKBOX, OnResetQ)
     
    20912093
    20922094    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)
    20972099   
Note: See TracChangeset for help on using the changeset viewer.