source: trunk/GSASIIgrid.py @ 84

Last change on this file since 84 was 84, checked in by vondreel, 12 years ago

remove extra imports from various modules

File size: 22.3 KB
Line 
1#GSASII - data display routines
2import wx
3import wx.grid as wg
4import time
5import cPickle
6import GSASIIpath
7import GSASIIplot as G2plt
8import GSASIIpwdGUI as G2pdG
9import GSASIIimgGUI as G2imG
10import GSASIIphsGUI as G2phG
11
12[ wxID_ATOMSEDITADD, wxID_ATOMSEDITINSERT, 
13] = [wx.NewId() for _init_coll_Atom_Items in range(2)]
14
15[ wxID_IMCALIBRATE, wxID_IMINTEGRATE, wxID_IMCLEARCALIB, wxID_SAVEINTG, 
16    wxID_IMCOPYCONTROLS, wxID_INTEGRATEALL,
17] = [wx.NewId() for _init_coll_IMAGE_Items in range(6)]
18
19[ wxID_MASKCOPY,
20] = [wx.NewId() for _init_coll_MASK_Items in range(1)]
21
22[ wxID_INSTPRMRESET,
23] = [wx.NewId() for _init_coll_INST_Items in range(1)]
24
25[ wxID_UNDO,wxID_PEAKFIT,wxID_AUTOPEAKFIT,
26] = [wx.NewId() for _init_coll_PEAK_Items in range(3)]
27
28[  wxID_INDEXPEAKS, wxID_REFINECELL, wxID_COPYCELL,
29] = [wx.NewId() for _init_coll_INDEX_Items in range(3)]
30
31class DataFrame(wx.Frame):
32    def _init_coll_BlankMenu(self,parent):
33        parent.Append(menu=self.Blank,title='')
34       
35    def _init_coll_AtomsMenu(self,parent):
36        parent.Append(menu=self.AtomEdit, title='Add atom')
37                   
38    def _init_coll_ImageMenu(self,parent):
39        parent.Append(menu=self.ImageEdit, title='Image Operations')
40       
41    def _init_coll_InstMenu(self,parent):
42        parent.Append(menu=self.InstEdit, title='Inst. Parm. Operations')
43       
44    def _init_coll_MaskMenu(self,parent):
45        parent.Append(menu=self.MaskEdit, title='Mask Operations')
46       
47    def _init_coll_PeakMenu(self,parent):
48        parent.Append(menu=self.PeakEdit, title='Peak Fitting')
49
50    def _init_coll_IndexMenu(self,parent):
51        parent.Append(menu=self.IndexEdit, title='Cell Index/Refine')
52       
53    def _init_coll_Atom_Items(self,parent):
54        parent.Append(help='',id=wxID_ATOMSEDITADD, kind=wx.ITEM_NORMAL,text='Append empty atom')
55        parent.Append(id=wxID_ATOMSEDITINSERT, kind=wx.ITEM_NORMAL,text='Insert empty atom',
56            help='Double left click on atom row to Insert before')
57           
58    def _init_coll_Image_Items(self,parent):
59        parent.Append(help='Calibrate detector by fitting to calibrant lines', 
60            id=wxID_IMCALIBRATE, kind=wx.ITEM_NORMAL,text='Calibrate')
61        parent.Append(help='Clear calibration data points and rings',id=wxID_IMCLEARCALIB, 
62            kind=wx.ITEM_NORMAL,text='Clear calibration')
63        parent.Append(help='Integrate selected image',id=wxID_IMINTEGRATE, 
64            kind=wx.ITEM_NORMAL,text='Integrate')
65        parent.Append(help='Integrate all images selected from list',id=wxID_INTEGRATEALL,
66            kind=wx.ITEM_NORMAL,text='Integrate all')
67        parent.Append(help='Save integration results as a series of 1-D powder patterns', 
68            id=wxID_SAVEINTG, kind=wx.ITEM_NORMAL,text='Save Integration')
69        parent.Append(help='Copy image controls to other images', 
70            id=wxID_IMCOPYCONTROLS, kind=wx.ITEM_NORMAL,text='Copy Controls')
71                   
72    def _init_coll_Mask_Items(self,parent):
73        parent.Append(help='Copy mask to other images', 
74            id=wxID_MASKCOPY, kind=wx.ITEM_NORMAL,text='Copy mask')
75
76    def _init_coll_Inst_Items(self,parent):
77        parent.Append(help='Reset instrument profile parameters to default', 
78            id=wxID_INSTPRMRESET, kind=wx.ITEM_NORMAL,text='Reset profile')
79
80    def _init_coll_Peak_Items(self,parent):
81        self.UnDo = parent.Append(help='Undo last least squares refinement', 
82            id=wxID_UNDO, kind=wx.ITEM_NORMAL,text='UnDo')
83        self.PeakFit = parent.Append(id=wxID_PEAKFIT, kind=wx.ITEM_NORMAL,text='PeakFit', 
84            help='Do single cycle of peak fitting least-squares refinement' )
85        self.AutoPeakFit = parent.Append(id=wxID_AUTOPEAKFIT, kind=wx.ITEM_NORMAL, 
86            text='AutoPeakFit',help='Do peak fitting least-squares to convergence' )
87           
88    def _init_coll_Index_Items(self,parent):
89        self.IndexPeaks = parent.Append(help='', id=wxID_INDEXPEAKS, kind=wx.ITEM_NORMAL,
90            text='Index Cell')
91        self.CopyCell = parent.Append( id=wxID_COPYCELL, kind=wx.ITEM_NORMAL,text='Copy Cell', 
92            help='Copy selected unit cell from indexing to cell refinement fields')
93        self.RefineCell = parent.Append( id=wxID_REFINECELL, kind=wx.ITEM_NORMAL, 
94            text='Refine Cell',help='Refine unit cell parameters from indexed peaks')
95
96    def _init_utils(self):
97        self.BlankMenu = wx.MenuBar()
98       
99        self.AtomsMenu = wx.MenuBar()
100        self.ImageMenu = wx.MenuBar()
101        self.MaskMenu = wx.MenuBar()
102        self.InstMenu = wx.MenuBar()
103        self.PeakMenu = wx.MenuBar()
104        self.IndexMenu = wx.MenuBar()
105        self.AtomEdit = wx.Menu(title='')
106        self.ImageEdit = wx.Menu(title='')
107        self.MaskEdit = wx.Menu(title='')
108        self.InstEdit = wx.Menu(title='')
109        self.PeakEdit = wx.Menu(title='')
110        self.IndexEdit = wx.Menu(title='')
111        self._init_coll_AtomsMenu(self.AtomsMenu)
112        self._init_coll_Atom_Items(self.AtomEdit)
113        self._init_coll_ImageMenu(self.ImageMenu)
114        self._init_coll_Image_Items(self.ImageEdit)
115        self._init_coll_MaskMenu(self.MaskMenu)
116        self._init_coll_Mask_Items(self.MaskEdit)
117        self._init_coll_InstMenu(self.InstMenu)
118        self._init_coll_Inst_Items(self.InstEdit)
119        self._init_coll_PeakMenu(self.PeakMenu)
120        self._init_coll_Peak_Items(self.PeakEdit)
121        self._init_coll_IndexMenu(self.IndexMenu)
122        self._init_coll_Index_Items(self.IndexEdit)
123        self.UnDo.Enable(False)
124        self.PeakFit.Enable(False)
125        self.AutoPeakFit.Enable(False)
126        self.IndexPeaks.Enable(False)
127        self.CopyCell.Enable(False)
128        self.RefineCell.Enable(False)
129               
130    def _init_ctrls(self, parent,name=None,size=None,pos=None):
131        wx.Frame.__init__(self,parent=parent,style=wx.DEFAULT_FRAME_STYLE ^ wx.CLOSE_BOX,
132            size=size,pos=pos,title='GSAS-II data display')
133        self._init_utils()
134        if name:
135            self.SetLabel(name)
136        self.Show()
137       
138    def __init__(self,parent,data=None,name=None, size=None,pos=None):
139        self._init_ctrls(parent,name,size,pos)
140        self.data = data
141        self.screenSize = wx.DisplaySize()
142        Size = self.GetSize()
143        xPos = self.screenSize[0]-Size[0]
144        self.SetPosition(wx.Point(xPos,250))
145        self.dirname = ''
146        self.AtomGrid = []
147        self.selectedRow = 0
148       
149    def setSizePosLeft(self,Width):
150        screenSize = wx.DisplaySize()
151        self.SetSize(Width)
152        self.SetPosition(wx.Point(screenSize[0]-Width[0],250))
153       
154    def Clear(self):
155        self.ClearBackground()
156        self.DestroyChildren()
157                   
158class GSGrid(wg.Grid):
159    def __init__(self, parent, name=''):
160        wg.Grid.__init__(self,parent,-1,name=name)                   
161        self.SetSize(parent.GetClientSize())
162           
163    def Clear(self):
164        wg.Grid.ClearGrid(self)
165       
166    def SetCellStyle(self,r,c,color="white",readonly=True):
167        self.SetCellBackgroundColour(r,c,color)
168        self.SetReadOnly(r,c,isReadOnly=readonly)
169       
170class GSNoteBook(wx.Notebook):
171    def __init__(self, parent, name='',size = None):
172        wx.Notebook.__init__(self, parent, -1, name=name, style= wx.BK_TOP)
173        if size: self.SetSize(size)
174                                                     
175    def Clear(self):       
176        GSNoteBook.DeleteAllPages(self)
177       
178class Table(wg.PyGridTableBase):
179    def __init__(self, data=[], rowLabels=None, colLabels=None, types = None):
180        wg.PyGridTableBase.__init__(self)
181        self.colLabels = colLabels
182        self.rowLabels = rowLabels
183        self.dataTypes = types
184        self.data = data
185       
186    def AppendRows(self, numRows=1):
187        self.data.append([])
188        return True
189       
190    def CanGetValueAs(self, row, col, typeName):
191        if self.dataTypes:
192            colType = self.dataTypes[col].split(':')[0]
193            if typeName == colType:
194                return True
195            else:
196                return False
197        else:
198            return False
199
200    def CanSetValueAs(self, row, col, typeName):
201        return self.CanGetValueAs(row, col, typeName)
202
203    def DeleteRow(self,pos):
204        data = self.GetData()
205        self.SetData([])
206        new = []
207        for irow,row in enumerate(data):
208            if irow <> pos:
209                new.append(row)
210        self.SetData(new)
211       
212    def GetColLabelValue(self, col):
213        if self.colLabels:
214            return self.colLabels[col]
215           
216    def GetData(self):
217        data = []
218        for row in range(self.GetNumberRows()):
219            data.append(self.GetRowValues(row))
220        return data
221       
222    def GetNumberCols(self):
223        try:
224            return len(self.colLabels)
225        except TypeError:
226            return None
227       
228    def GetNumberRows(self):
229        return len(self.data)
230       
231    def GetRowLabelValue(self, row):
232        if self.rowLabels:
233            return self.rowLabels[row]
234       
235    def GetRowValues(self, row):
236        data = []
237        for col in range(self.GetNumberCols()):
238            data.append(self.GetValue(row, col))
239        return data
240       
241    def GetTypeName(self, row, col):
242        try:
243            return self.dataTypes[col]
244        except TypeError:
245            return None
246
247    def GetValue(self, row, col):
248        try:
249            return self.data[row][col]
250        except IndexError:
251            return None
252           
253    def InsertRows(self, pos, rows):
254        for row in range(rows):
255            self.data.insert(pos,[])
256            pos += 1
257       
258    def IsEmptyCell(self,row,col):
259        try:
260            return not self.data[row][col]
261        except IndexError:
262            return True
263       
264    def OnKeyPress(self, event):
265        dellist = self.GetSelectedRows()
266        if event.GetKeyCode() == wx.WXK_DELETE and dellist:
267            grid = self.GetView()
268            for i in dellist: grid.DeleteRow(i)
269               
270    def SetColLabelValue(self, col, label):
271        numcols = self.GetNumberCols()
272        if col > numcols-1:
273            self.colLabels.append(label)
274        else:
275            self.colLabels[col]=label
276       
277    def SetData(self,data):
278        for row in range(len(data)):
279            self.SetRowValues(row,data[row])
280               
281    def SetRowLabelValue(self, row, label):
282        self.rowLabels[row]=label
283           
284    def SetRowValues(self,row,data):
285        self.data[row] = data
286           
287    def SetValue(self, row, col, value):
288        def innerSetValue(row, col, value):
289            try:
290                self.data[row][col] = value
291            except TypeError:
292                return
293            except IndexError:
294                print row,col,value
295                # add a new row
296                if row > self.GetNumberRows():
297                    self.data.append([''] * self.GetNumberCols())
298                elif col > self.GetNumberCols():
299                    for row in range(self.GetNumberRows):
300                        self.data[row].append('')
301                print self.data
302                self.data[row][col] = value
303        innerSetValue(row, col, value)
304       
305def UpdateNotebook(self,data):       
306    if data:
307        self.dataFrame.SetLabel('Notebook')
308        self.dataDisplay = wx.TextCtrl(parent=self.dataFrame,size=self.dataFrame.GetClientSize(),
309            style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP)
310        for line in data:
311            self.dataDisplay.AppendText(line+"\n")
312            self.dataDisplay.AppendText('Notebook entry @ '+time.ctime()+"\n")
313           
314def UpdateControls(self,data):
315    if data:
316        self.dataFrame.SetLabel('Controls')
317       
318     
319def UpdateComments(self,data):                   
320    if data:
321        self.dataFrame.SetLabel('Comments')
322        self.dataDisplay = wx.TextCtrl(parent=self.dataFrame,size=self.dataFrame.GetClientSize(),
323            style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP)
324        for line in data:
325            self.dataDisplay.AppendText(line+"\n")
326             
327def UpdateHKLControls(self,data):
328   
329    def OnScaleSlider(event):
330        scale = int(scaleSel.GetValue())/1000.
331        scaleSel.SetValue(int(scale*1000.))
332        data['Scale'] = scale*10.
333        G2plt.PlotSngl(self)
334       
335    def OnLayerSlider(event):
336        layer = layerSel.GetValue()
337        data['Layer'] = layer
338        G2plt.PlotSngl(self)
339       
340    def OnSelZone(event):
341        data['Zone'] = zoneSel.GetValue()
342        G2plt.PlotSngl(self,newPlot=True)
343       
344    def OnSelType(event):
345        data['Type'] = typeSel.GetValue()
346        G2plt.PlotSngl(self)
347       
348    def SetStatusLine():
349        Status.SetStatusText("look at me!!!")
350                                     
351    if self.dataDisplay:
352        self.dataDisplay.Destroy()
353    if not self.dataFrame.GetStatusBar():
354        Status = self.dataFrame.CreateStatusBar()
355    SetStatusLine()
356    zones = ['100','010','001']
357    HKLmax = data['HKLmax']
358    HKLmin = data['HKLmin']
359    if data['ifFc']:
360        typeChoices = ['Fosq','Fo','|DFsq|/sig','|DFsq|>sig','|DFsq|>3sig']
361    else:
362        typeChoices = ['Fosq','Fo']
363    self.dataDisplay = wx.Panel(self.dataFrame)
364    self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)
365    mainSizer = wx.BoxSizer(wx.VERTICAL)
366    mainSizer.Add((5,10),0)
367   
368    scaleSizer = wx.BoxSizer(wx.HORIZONTAL)
369    scaleSizer.Add(wx.StaticText(parent=self.dataDisplay,label=' Scale'),0,
370        wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
371    scaleSel = wx.Slider(parent=self.dataDisplay,maxValue=1000,minValue=100,
372        style=wx.SL_HORIZONTAL,value=int(data['Scale']*100))
373    scaleSizer.Add(scaleSel,1,wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
374    scaleSel.SetLineSize(100)
375    scaleSel.SetPageSize(900)
376    scaleSel.Bind(wx.EVT_SLIDER, OnScaleSlider)
377    mainSizer.Add(scaleSizer,1,wx.EXPAND|wx.RIGHT)
378   
379    zoneSizer = wx.BoxSizer(wx.HORIZONTAL)
380    zoneSizer.Add(wx.StaticText(parent=self.dataDisplay,label=' Zone  '),0,
381        wx.ALIGN_CENTER_VERTICAL)
382    zoneSel = wx.ComboBox(parent=self.dataDisplay,value=data['Zone'],choices=['100','010','001'],
383        style=wx.CB_READONLY|wx.CB_DROPDOWN)
384    zoneSel.Bind(wx.EVT_COMBOBOX, OnSelZone)
385    zoneSizer.Add(zoneSel,0,wx.ALIGN_CENTER_VERTICAL)
386    zoneSizer.Add(wx.StaticText(parent=self.dataDisplay,label=' Plot type  '),0,
387        wx.ALIGN_CENTER_VERTICAL)       
388    typeSel = wx.ComboBox(parent=self.dataDisplay,value=data['Type'],choices=typeChoices,
389        style=wx.CB_READONLY|wx.CB_DROPDOWN)
390    typeSel.Bind(wx.EVT_COMBOBOX, OnSelType)
391    zoneSizer.Add(typeSel,0,wx.ALIGN_CENTER_VERTICAL)
392    zoneSizer.Add((10,0),0)   
393    mainSizer.Add(zoneSizer,1,wx.EXPAND|wx.RIGHT)
394       
395    izone = zones.index(data['Zone'])
396    layerSizer = wx.BoxSizer(wx.HORIZONTAL)
397    layerSizer.Add(wx.StaticText(parent=self.dataDisplay,label=' Layer'),0,
398        wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
399    layerSel = wx.Slider(parent=self.dataDisplay,maxValue=HKLmax[izone],minValue=HKLmin[izone],
400        style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS,value=0)
401    layerSel.SetLineSize(1)
402    layerSel.SetLineSize(5)
403    layerSel.Bind(wx.EVT_SLIDER, OnLayerSlider)   
404    layerSizer.Add(layerSel,1,wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
405    layerSizer.Add((10,0),0)   
406    mainSizer.Add(layerSizer,1,wx.EXPAND|wx.RIGHT)
407
408       
409    mainSizer.Layout()   
410    self.dataDisplay.SetSizer(mainSizer)
411    self.dataDisplay.SetSize(mainSizer.Fit(self.dataFrame))
412    self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))
413       
414                         
415def GetPatternTreeItemId(self, parentId, itemText):
416    item, cookie = self.PatternTree.GetFirstChild(parentId)
417    while item:
418        if self.PatternTree.GetItemText(item) == itemText:
419            return item
420        item, cookie = self.PatternTree.GetNextChild(parentId, cookie)
421    return 0               
422
423def MovePatternTreeToGrid(self,item):
424   
425    oldPage = 0
426    if self.dataFrame:
427        self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)
428        if self.dataFrame.GetLabel() == 'Comments':
429            data = [self.dataDisplay.GetValue()]
430            self.dataDisplay.Clear() 
431            Id = GetPatternTreeItemId(self,self.root, 'Comments')
432            if Id: self.PatternTree.SetItemPyData(Id,data)
433        if self.dataFrame.GetLabel() == 'Notebook':
434            data = [self.dataDisplay.GetValue()]
435            self.dataDisplay.Clear() 
436            Id = GetPatternTreeItemId(self,self.root, 'Notebook')
437            if Id: self.PatternTree.SetItemPyData(Id,data)
438        if 'Phase Data for' in self.dataFrame.GetLabel():
439            if self.dataDisplay: 
440                oldPage = self.dataDisplay.GetSelection()
441        self.dataFrame.Clear()
442        self.dataFrame.SetLabel('')
443    else:
444       self.dataFrame = DataFrame(parent=self.mainPanel)
445
446    self.dataFrame.Raise()           
447    self.PickId = 0
448    parentID = self.root
449    self.ExportPattern.Enable(False)
450    if item != self.root:
451        parentID = self.PatternTree.GetItemParent(item)
452    if self.PatternTree.GetItemParent(item) == self.root:
453        self.PatternId = item
454        self.PickId = item
455        if self.PatternTree.GetItemText(item) == 'Notebook':
456            self.PatternId = 0
457            self.ExportPattern.Enable(False)
458            data = self.PatternTree.GetItemPyData(item)
459            UpdateNotebook(self,data)
460        elif self.PatternTree.GetItemText(item) == 'Controls':
461            self.PatternId = 0
462            self.ExportPattern.Enable(False)
463            data = self.PatternTree.GetItemPyData(item)
464            UpdateControls(self,data)
465        elif 'IMG' in self.PatternTree.GetItemText(item):
466            self.Image = item
467            G2plt.PlotImage(self,newPlot=True)
468        elif 'PKS' in self.PatternTree.GetItemText(item):
469            G2plt.PlotPowderLines(self)
470        elif 'PWDR' in self.PatternTree.GetItemText(item):           
471            self.ExportPattern.Enable(True)
472            G2plt.PlotPatterns(self,newPlot=True)
473        elif 'SXTL' in self.PatternTree.GetItemText(item):
474            self.Sngl = item
475            G2plt.PlotSngl(self,newPlot=True)
476           
477    elif self.PatternTree.GetItemText(parentID) == 'Phases':
478        self.PickId = item
479        data = self.PatternTree.GetItemPyData(item)
480        G2phG.UpdatePhaseData(self,item,data,oldPage)
481    elif self.PatternTree.GetItemText(item) == 'Comments':
482        self.PatternId = self.PatternTree.GetItemParent(item)
483        self.PickId = item
484        data = self.PatternTree.GetItemPyData(item)
485        UpdateComments(self,data)
486    elif self.PatternTree.GetItemText(item) == 'Image Controls':
487        self.dataFrame.SetTitle('Image Controls')
488        self.PickId = item
489        self.Image = self.PatternTree.GetItemParent(item)
490        data = self.PatternTree.GetItemPyData(item)
491        G2imG.UpdateImageControls(self,data)
492        G2plt.PlotImage(self)
493    elif self.PatternTree.GetItemText(item) == 'Masks':
494        self.dataFrame.SetTitle('Masks')
495        self.PickId = item
496        self.Image = self.PatternTree.GetItemParent(item)
497        data = self.PatternTree.GetItemPyData(item)
498        G2imG.UpdateMasks(self,data)
499        G2plt.PlotImage(self)
500    elif self.PatternTree.GetItemText(item) == 'HKL Plot Controls':
501        self.PickId = item
502        self.Sngl = self.PatternTree.GetItemParent(item)
503        data = self.PatternTree.GetItemPyData(item)
504        UpdateHKLControls(self,data)
505        G2plt.PlotSngl(self)               
506    elif self.PatternTree.GetItemText(item) == 'Peak List':
507        self.PatternId = self.PatternTree.GetItemParent(item)
508        self.ExportPeakList.Enable(True)
509        self.PickId = item
510        data = self.PatternTree.GetItemPyData(item)
511        G2pdG.UpdatePeakGrid(self,data)
512        G2plt.PlotPatterns(self)
513    elif self.PatternTree.GetItemText(item) == 'Background':
514        self.PatternId = self.PatternTree.GetItemParent(item)
515        self.PickId = item
516        data = self.PatternTree.GetItemPyData(item)
517        G2pdG.UpdateBackgroundGrid(self,data)
518        G2plt.PlotPatterns(self)
519    elif self.PatternTree.GetItemText(item) == 'Limits':
520        self.PatternId = self.PatternTree.GetItemParent(item)
521        self.PickId = item
522        data = self.PatternTree.GetItemPyData(item)
523        G2pdG.UpdateLimitsGrid(self,data)
524        G2plt.PlotPatterns(self)
525    elif self.PatternTree.GetItemText(item) == 'Instrument Parameters':
526        self.PatternId = self.PatternTree.GetItemParent(item)
527        self.PickId = item
528        data = self.PatternTree.GetItemPyData(item)
529        G2pdG.UpdateInstrumentGrid(self,data)
530        G2plt.PlotPeakWidths(self)
531    elif self.PatternTree.GetItemText(item) == 'Index Peak List':
532        self.PatternId = self.PatternTree.GetItemParent(item)
533        self.ExportPeakList.Enable(True)
534        self.PickId = item
535        data = self.PatternTree.GetItemPyData(item)
536        G2pdG.UpdateIndexPeaksGrid(self,data)
537        if 'PKS' in self.PatternTree.GetItemText(self.PatternId):
538            G2plt.PlotPowderLines(self)
539        else:
540            G2plt.PlotPatterns(self)
541    elif self.PatternTree.GetItemText(item) == 'Unit Cells List':
542        self.PatternId = self.PatternTree.GetItemParent(item)
543        self.PickId = item
544        data = self.PatternTree.GetItemPyData(item)
545        if not data:
546            data.append([0,0.1,4,25.0,0,'P1',1,1,1,90,90,90]) #zero error flag, max zero error, max Nc/No, start volume
547            data.append([0,0,0,0,0,0,0,0,0,0,0,0,0,0])      #Bravais lattice flags
548            data.append([])                                 #empty cell list
549            data.append([])                                 #empty dmin
550            self.PatternTree.SetItemPyData(item,data)                             
551        G2pdG.UpdateUnitCellsGrid(self,data)
552        self.dataFrame.RefineCell.Enable(True)
553        self.dataFrame.IndexPeaks.Enable(True)
554        if 'PKS' in self.PatternTree.GetItemText(self.PatternId):
555            G2plt.PlotPowderLines(self)
556        else:
557            G2plt.PlotPatterns(self)
Note: See TracBrowser for help on using the repository browser.