source: trunk/GSASIIgrid.py @ 102

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

move all fortran to fsource
add gray for readonly textctrl
do polygon insert, show in imageGUI and make mask
fix to ReadPDBphase to use correct crystal to cartesian transformation matrix

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