source: trunk/GSASIIgrid.py @ 85

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

threshold masks operational
add index peak list load/reload menu & remove delete key method
plotting of threshold masks
remove "U" in image open command; implement reading of MAR CCD tif images

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