source: trunk/GSASIIgrid.py @ 83

Last change on this file since 83 was 83, checked in by vondreel, 13 years ago

further splits of G2gd --> GSASIIphsGUI.py & GSASIIimgGUI.py
Modify GSASIIpath.py to reverse order of 1st two path entries. G2elem couldn't find atmdata!

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