Changeset 468


Ignore:
Timestamp:
Feb 2, 2012 11:27:53 AM (10 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
  • 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:
  • 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:
  • 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)
  • 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))   
  • 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           
  • 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 <